Userebbe le tabelle arcobaleno per rilevare le password degli utenti deboli fattibili?

3

Come comprendo nella maggior parte delle falle nella sicurezza in cui l'elenco delle password hash viene compromesso, gli hacker usano la forza bruta per cercare di trovare una password debole e, invariabilmente, ne trovano sempre un po '(come nella recente violazione di Github).

Se non sbaglio nella maggior parte dei casi quando un utente crea un account, la password viene inviata, crittografata (a causa di TLS / SSL), al sito Web che aggiunge un po 'di sale e salva hash + salt.

Anche nei casi più sofisticati (come quando viene utilizzato bcrypt), al momento della creazione dell'account c'è un punto nel tempo in cui il server ha la password in chiaro.

La mia domanda è: non potresti usare, proprio in quel momento in cui hai la password in chiaro che l'utente sta cercando di usare per il suo nuovo account, una gigantesca tavola arcobaleno sul lato server per verificare la presenza di miliardi e miliardi di password deboli in uno split-nanosecondo?

Quindi se rilevi che viene utilizzata una password debole, devi semplicemente dire all'utente che la sua password è troppo semplice e che, no, usare "edcrfvtgb1" non è intelligente.

Voglio dire: se gli hacker riescono a forzare la password debole anche se devono affrontare il problema di salt , i server non potrebbero trarre vantaggio dal fatto che, quando gli utenti creano un nuovo account, conoscono la password in chiaro per semplicemente cercarlo in un grande tavolo arcobaleno quando l'utente crea il suo account?

Non sembra difficile implementare e vedere dimensioni di dischi rigidi al giorno d'oggi, probabilmente non è problematico archiviare una grande tavola arcobaleno sul lato server.

Mi manca qualcosa di ovvio o questo mi aiuta a catturare un lotto di password deboli e, quindi, a mitigare il continuo compromesso dei conti che continuiamo a vedere quasi quotidianamente?

    
posta Cedric Martin 20.11.2013 - 17:26
fonte

2 risposte

7

Il tempo di ricerca sarebbe trascurabile, quindi questo è un modo fattibile per impedire l'uso di password deboli. Tuttavia, come @thorsten menziona nel suo commento, se stai implementando questo su altri requisiti di contenuto della password e alcuni utenti inseriscono una password che soddisfa quei requisiti ma è anche nella tua tabella, sarebbe difficile descrivere all'utente esattamente cosa ha sbagliato la password in un modo che è facile da capire per chiunque.

Poiché @Mike è sfuggito a un commento, questo tipo di misura di sicurezza non sarebbe stato implementato con una tabella arcobaleno (che come ha detto è una mappa di hash in stringhe in chiaro), sarebbe implementata con un semplice elenco di password deboli. In questo caso non hai bisogno degli hash.

    
risposta data 20.11.2013 - 17:49
fonte
6

TL; DR - sì & no. Sì, può essere fatto ma no, non dovrebbe essere fatto come suggerisci.

My question is: couldn't you use, at that very moment when you have the password in the clear that the user is trying to use for his new account, a gigantic rainbow-table on the server side to check for billions and billions of weak passwords in a split-nanosecond?

No, non puoi - o almeno, non come hai suggerito.

Per rendere l'approccio da te suggerito, sarebbe necessario compromettere la sicurezza del sito. E ci sono modi migliori per realizzare ciò che vuoi fare.

Perché? Il problema è un fraintendimento su come funzionano le tavole arcobaleno . E qui ci sono i problemi.

  • Una tabella arcobaleno è precalcolata
  • Un sale aggiunto alla password di un nuovo utente per l'hashing dovrebbe essere casuale

Un buon sale sarà lungo almeno 10 - 16 caratteri (vedi 1 , 2 , 3 ), che aggiungerà ~ 80-128 bit in più di entropia per la password complessiva. Anche con un carattere di 10 caratteri e una password di 8 caratteri (entrambi deboli), si tratta di 2,2 x 10 ^ 43 combinazioni potenziali. Una tabella arcobaleno con così tante combinazioni richiederebbe più spazio su disco di quanto la maggior parte possa permettersi.

Se si è utilizzato un valore fisso (che non è consigliato in quanto compromette la sicurezza), sarà possibile costruire in modo relativamente semplice una tabella arcobaleno che potrebbe essere utilizzata come suggerito. Ma un sale fisso in parte sconfigge lo scopo di usare un sale per cominciare.

Le tabelle arcobaleno sono utili vettori di attacco quando non si usano sali o quando il sale è una lunghezza fissa. Senza un salt casuale, è abbastanza facile prendere il valore hash dal file della password e cercare la password cleartext nella tabella arcobaleno.

L'uso di sali casuali obbliga un utente malintenzionato a usare la forza bruta per decifrare la password. Ci sono troppe combinazioni da memorizzare per rendere un approccio di ricerca utile. I progressi tecnologici hanno anche reso più pratico l'approccio alla forza bruta. A partire dal dicembre 2012, alcuni dei più veloci sistemi di cracking delle password con forza bruta supportati da GPU potrebbero elaborare 350 miliardi di password al secondo. (vedi qui per riferimento ) Con gli avanzamenti tecnologici, tale frequenza aumenterà solo.

Am I missing something obvious or would this help catch a lot of weak passwords and, hence, mitigate the endless accounts compromise we keep seeing on a nearly daily basis?

Sì, ti manca qualcosa sui tavoli arcobaleno, ma noi battiamo quel soggetto nel terreno con quanto sopra.

Come ho accennato prima, ci sono modi più semplici per fare ciò che stai suggerendo. Possono anche essere fatti lato client tramite javascript in modo da non dover incorrere in una penalità di andata e ritorno per il server per dire al client / nuovo utente che la loro password è troppo debole.

I vault delle password come KeePass * hanno un indicatore di entropia della password incorporato. Usando l'esempio di password "edcrfvtgb1" che hai fornito, vediamo che ha solo 50 bit di entropia, che è relativamente debole. Le raccomandazioni attuali sono di avere password da 98 a 128 bit di entropia a seconda di quanto sia sicuro che sia necessario.

Potrestiusareunpluginjavascriptchemisural'entropiadellapasswordperfornireunfeedbackimmediatoalnuovoutenteoall'utentechestacambiandolapassword. Questo link entra in dettaglio con il codice effettivo e contrasta anche con i metodi di gestione più vecchi Le password. Esecuzione di una ricerca sul Web contro javascript password strength meter torna con un numero di accessi più che sufficiente per avviare ulteriori ricerche.

Quindi il tuo pensiero originale è buono, e sì la domanda più ampia che stai facendo può essere fatta. Dalla mia osservazione, ho visto un certo numero di siti iniziare a incorporare misuratori di forza della password per aiutare gli utenti nella selezione delle password.

* Mi è appena capitato di sapere di KeePass, ci sono molti altri eccellenti vault della password che offrono la stessa funzionalità.

... e il link xkcd obbligatorio. Punta di cappello a Marjan Venema per averlo postato per primo in un commento.

Quindiquantidatisarebbero?

10bytedisale+8bytedipasswordrestituiscono144bit.
2^144è~2.2x10^43combinazioni.
Ognicombinazioneavràbisognodialmeno18bytepersale+passworde60byteperunhashbcrypt.(vedi qui ) per un totale di (almeno) 78 byte per combinazione.
2.2x10 ^ 42 combinazioni * 78 byte = ~ 1.7x10 ^ 45 byte.
Riducendo un po 'i rendimenti: 1,438,846,037,749,345,026,048 YB ( yotta byte )

O forse potremmo chiamare 1,4 byte penta-yotta. Lo chiamo "molto".

    
risposta data 21.11.2013 - 15:30
fonte

Leggi altre domande sui tag