it-swarm-eu.dev

Quale criterio password è più sicuro: una password di lunghezza 9 rispetto a due password ciascuna di lunghezza 8?

Cosa c'è di più sicuro, con una password di lunghezza 9 (salata e con hash) o con due password diverse, ognuna con lunghezza 8 (salata e con hash usando due diversi sali)?

19
Carlos

Come ha notato John Deters, 2x8 è quasi certamente peggio, ma i motivi per cui prendere un po 'di spiegazione.

Ci sono stati un paio di problemi con gli hash LANMAN (il classico caso di rompere una password a metà, andato storto):

  • Poiché le password tendono ad essere generate dall'uomo e in qualche modo brevi, se una singola password era solo un po 'più lunga della prima metà (diciamo, 8 caratteri), allora decifrare la seconda metà richiederebbe drammaticamente meno tempo - e potrebbe persino dare via quello che probabilmente sarebbe stato il primo tempo

  • LANMAN era così maledettamente veloce (per l'attaccante, nelle operazioni di hash al secondo)

  • LANMAN ha tagliato le password in due a una sfortunata lunghezza (7), che era abbastanza suscettibile al completo esaurimento (e persino alla maggior parte delle moderne GPU)

Tuttavia, la tua domanda è leggermente diversa dal caso LANMAN:

  • Non indica che le password 2x8 sono in realtà una singola password divisa a metà (potrebbero essere generate in modo indipendente e casuali)
  • Indica esplicitamente che le due password sono di lunghezza 8 (anziché, diciamo, una di lunghezza 8 e l'altra di lunghezza 1, il famoso caso peggiore di LANMAN)
  • A meno che i tuoi sali non siano banalmente piccoli, la costruzione di tabelle Rainbow sarebbe impossibile - che è lo scopo della salatura (a differenza degli hash LANMAN, che erano completamente non salati)

Quindi è una domanda interessante - una che ha ampiamente risposto guardando la matematica associata.

Facciamo alcune ipotesi:

  • Entrambi gli approcci 9x1 e 8x2 sono salati e sottoposti a hash con gli stessi algoritmi e lunghezze di sale
  • Peggior caso per l'attaccante: le password sono generate casualmente dal stampabile ASCII (95 caratteri), con sali ragionevolmente lunghi. (La domanda sarebbe meno interessante se le password fossero generate dall'uomo) , perché in pratica cadono di solito in attacchi facili molto prima che l'attaccante debba ricorrere alla forza bruta)

  • Hardware e velocità moderni sono un gioco equo

  • L'algoritmo hash può essere o meno compatibile con il parallelismo

Alla luce di quanto sopra, mi aspetterei approssimativamente:

  • L'hash 1x9 verrebbe esaurito al 100% in 95 ^ 9 (6.302 × 10 ^ 17) operazioni di hashing (che potrebbero essere parallelizzate bene o male).
  • Gli hash 2x8 sarebbero esauriti congiuntamente al 100% in (95 ^ 8) x2 (1.326 × 10 ^ 16) operazioni di hash (e non importa l'algoritmo, potrebbero facilmente essere parallelamente ingenui semplicemente facendo craccare ogni hash su un sistema diverso - ma spesso può essere parallelizzato in modo molto efficiente anche su un singolo sistema, a seconda dell'algoritmo).

In altre parole:

  • Quel 9 ° personaggio aggiunge 95 volte il lavoro allo scarico e potrebbe essere difficile parallelizzare
  • Due password di 8 caratteri raddoppia solo la quantità di lavoro necessaria, e può essere banalmente parallelizzata

Un altro modo di pensarci è che l'aggiunta di un altro carattere crea approssimativamente lo stesso lavoro di dover rompere 95 password di otto caratteri ! (Se questo non è intuitivo, inizia con casi semplici confrontando casi più piccoli come 1x1 vs 1x2, fino a quando non lo capisci).

A parità di altre condizioni, 1x9 dovrebbe quasi sempre essere migliore di 2x8 .

E davvero, questa non è solo una semplice illustrazione del potere della parallelizzazione, ma dovrebbe anche rendere ovvio il motivo per cui è più importante consentire password più lunghe. Ciascuno carattere aggiuntivo nel modello precedente aggiunge 95 volte di lavoro allo spazio chiavi generale. Quindi l'aggiunta di due caratteri aggiunge 95 ^ 2 - o 9025 volte - il lavoro. La forza bruta diventa rapidamente impossibile, anche per hash molto veloci e non salati.

Ciò farebbe un'ottima domanda per i compiti. ;)

48
Royce Williams

A partire dal punto di vista della matematica ... (per semplificare il calcolo presumo solo le password delle cifre)

Situazione A: 2 parti di password di 8 cifre, 'l'attacco bruteforce alla prima parte richiede un massimo di 10 ^ 8 hash, lo stesso per la parte. Totale di max 2 * 10 ^ 8 hash richiesti '

Situazione B: 1 password di 9 cifre parte, 'attacco bruteforce richiede max 10 ^ 9 hash'

La matematica dice che è B è migliore di A

In poche parole

aggiunta di un aumento della password forza bruta di moltiplicazione di numero di parti (in questo scenario è 2x)

aggiungendo un aumento di più cifre forza bruta di potenza di numero di cifre (in questo scenario è x10 ^ 1)

8
WaltZie

La suddivisione della password è quasi certamente peggiore. Consente di creare una tabella Rainbow di otto caratteri. Implica che tutte le password nel sistema saranno suddivise in 8 parti di caratteri. (Questo è esattamente il modo in cui le password di LANMAN NT sono state violate.) Nel tuo caso, richiederebbe semplicemente due tabelle Rainbow.

Il sistema di password di nove caratteri non presenta un tale difetto visibile, il che implica che se si immetteva una password di 14 caratteri corretta, sarebbe memorizzata in modo sicuro come un singolo hash.

5
John Deters

Nessuna risposta significativa è possibile senza sapere qual è il tuo scenario di minaccia. Da cosa stai cercando di proteggere? Sei preoccupato per la forza bruta o il cracking dell'hash? Nel primo caso, dobbiamo conoscere la tua procedura di accesso (ad esempio, inserisco le password in sequenza o in parallelo?). Inoltre, se la procedura di accesso non mi blocca dopo migliaia o milioni di tentativi di accesso non riusciti, viene interrotta. Non è una questione di forza della password.

Che dire degli utenti che scrivono le cose? Spalla surf? Phishing? Qual è il modello dietro le password?

Esistono usi legittimi di due password, ad esempio una password di accesso in lettura e una password di abilitazione modifica separata. Dubito che tu lo abbia in mente a causa della tua alternativa di password di 9 lettere, semplicemente lanciandola là fuori per mostrare che la realtà è più complicata di una domanda accademica sulla forza della password basata solo sulla lunghezza.

4
Tom

I sistemi di password comportano compromessi tra la sicurezza e l'accesso illegittimo rispetto alla resistenza agli attacchi denial-of-service. Un potenziale vantaggio dei sistemi con password divisa è che le due metà del sistema possono applicare diversi compromessi. Ad esempio, la resilienza contro gli attacchi denial-of-service può richiedere che la funzione di hash del primo tempo sia abbastanza veloce da tenere il passo con i tentativi di accesso spammati, ma ciò non sarebbe così necessario per la funzione del secondo tempo poiché solo un attaccante che aveva rotto la password del primo tempo sarebbe stato in grado di tentare l'accesso con il secondo.

Se Fred Jones venisse avvisato ogni volta che qualcuno tentava un accesso con una prima credenziale errata, un attaccante poteva facilmente inondare Mr. Jones con così tante notifiche che sarebbero diventate inutili, indipendentemente dal fatto che l'attaccante avrebbe mai avuto una reale probabilità di ottenere l'accesso. Informare Mr. Jones se qualcuno inserisce la prima password corretta ma non riesce a inserire una seconda password corretta, tuttavia, sarebbe molto più utile. A meno che il signor Jones non fosse la persona che tentava di accedere all'account, tale notifica sarebbe stata un avvertimento molto tempestivo e utile che la password principale era stata violata ed entrambe le password avrebbero dovuto essere cambiate al più presto.

2
supercat

Indipendentemente dai dettagli dell'hash o dei meccanismi di crack plausibili, il fatto è che lo sforzo necessario per decifrare due password n - bit non è 2n bit. È n + 1 bit.

Supponiamo quindi che le password di otto caratteri, P1 e P2, abbiano ciascuna, diciamo, un equivalente di forza di 30 bit. (Non importa, sto solo cercando di scegliere un numero per essere concreto. Quindi ci vogliono 30 bit di sforzo [Vedi nota] per craccare ciascuno. Per craccare entrambi, non ci vogliono 60 bit. Invece ci vogliono 31 un po 'di sforzo.

Supponiamo ora di prendere P1 e semplicemente aggiungere una cifra che viene scelta in modo uniforme (tiri un D10) e attaccala alla fine. Quindi il tuo P1 aumentato richiederà circa 33,3 bit di sforzo per rompersi. Questo è più di quattro volte più lavoro che andare dietro a entrambi P1 e P2.

Se scegli una singola lettera minuscola o cifra (quindi 36 possibilità) a caso da aggiungere alla fine di P1, allora questa nuova password è più di 5 bit più forte, e quindi ci vorranno 16 volte più congetture per decifrare questa. volontà di rompere entrambi P1 e P2.

Casseforti di sicurezza più elevate?

Lavoro per 1Password, un gestore di password. E riceviamo richieste per avere volte all'interno delle volte. Questa è una Master Password per sbloccare generalmente 1Password e quindi una seconda password per sbloccare alcuni dati di sicurezza più elevati. Abbiamo rifiutato quelle richieste per i motivi che io (e altri qui) ho sottolineato.

Il risultato sopra descritto è contro-intuitivo è contro-intuitivo. Le persone percepiranno usando sia P1 che P2 per essere più sicure di un aumento leggermente più lungo di P1. Consideriamo anche la scelta della password principale da parte di una persona come il punto più debole della sicurezza di 1Password (oltre a funzionare su una macchina compromessa), quindi non vogliamo introdurre cose che potrebbero incoraggiare le persone a utilizzare password principali più deboli di quanto altrimenti farebbero . Vorremmo anche che le persone ottenessero la massima sicurezza per lo sforzo, e fare e ricordare una piccola aggiunta a una password principale è meno sforzo che creare e ricordare un'altra password.


Appunti:

"bit di sforzo": n bit di sforzo significa approssimativamente che ci vogliono in media 2 ^ (n - 1) indovinare per trovare la password corretta.

2
Jeffrey Goldberg