BCrypt Tabelle per numeri a 6 cifre 000000-999999

0

Questo è un esempio di un progetto bcrypt su cui sto lavorando. 2a e 04 vengono sempre utilizzati e la password è un numero a 6 cifre da 000000 a 999999

Usando 2a e 4 round c'è una tabella hash o una calcolatrice là fuori da qualche parte che mostra quale sia il numero di 6 cifre (password) in questo esempio?

$2a$04$lzzo9IuiAWyIs2H4NI4w1.KDxgxgUi2h34k9rDaMP/PjEv/WktiMm

    
posta jfrost1121 08.12.2017 - 04:40
fonte

1 risposta

4

Quello che stai cercando, in teoria, è una cosa chiamata "tavolo arcobaleno", una tabella di ricerca degli hash alle loro uscite originali. Ce ne sono molti online (e tendono ad essere enormi, contenenti molto più dei semplici milioni di voci per "000000" a "999999"). Sono più comuni per hash semplici (MD5, SHA1, ecc.).

Sfortunatamente per te, bcrypt richiede l'uso di una tecnica molto standard per sconfiggere le tabelle dell'arcobaleno: un salt che è combinato con la password prima dell'hash, il che significa che l'intervallo di password che devi controllare è essenzialmente molti ordini di grandezza più grandi del semplice milione di valori che stai verificando.

Bcrypt in realtà richiede un sale , quindi ce n'è sicuramente uno in là. Credo che nel tuo esempio sia la parte lzzo9IuiAWyIs2H4NI4w1. (i primi 22 caratteri codificati in base64 che seguono il terzo $ , come per Descrizione di Wikipedia dell'algoritmo). Il sale deve essere memorizzato in testo normale, ma significa che qualsiasi tabella arcobaleno creata senza l'uso di quel sale specifico è inutile per crackare l'output (e nessuna tabella pre-calcolata utilizzerà quel sale casuale specifico).

Qualcuno potrebbe riutilizzare un singolo salt (con almeno alcune implementazioni di bcrypt, questo è possibile) ma i sali sono supposti da generare in modo univoco per ciascuna password. Controlla se la prima parte degli hash (dopo l'ultimo $ ) che vuoi invertire è diversa per ogni valore. In ogni caso, l'esistenza di sali significa che una tabella arcobaleno pre-generata non aiuterà.

D'altra parte, un milione di voci è uno spazio di ricerca piuttosto piccolo. Bcrypt è un algoritmo di hashing della password un po 'vecchio (in particolare, manca il parametro sintonizzabile del costo di memoria che hanno le nuove funzioni, sebbene la maggior parte delle persone non abbia un facile accesso all'hardware che può forzarlo più rapidamente). Per il semplice utilizzo di una CPU commodity, la difficoltà della forzatura bruta dipende dal parametro "costo" o "fattore di lavoro". Nel tuo esempio, questo è 04 (il numero tra il secondo e il terzo $ ), che è basso per gli standard moderni. Si può certamente forzare la bruta forza a qualsiasi data password di 6 cifre in meno di un giorno (il caso peggiore, che richiede appena meno di 12 hash al secondo, che dovrebbe essere facile al costo 4). Se non non usano sali unici, questo equivale a costruire la tua tabella arcobaleno e consente di invertire tutti gli hash.

Costruire un tavolo arcobaleno consiste semplicemente nel tritare un mucchio di input (in questo caso, il pieno milione di possibilità), preservando la password < > mappatura hash e ordinamento tramite le uscite hash. Possono impiegare un po 'di tempo per calcolare, a seconda di quanto sia lenta la funzione hash (per un "costo" di 4, piuttosto veloce), quanto puoi parallelizzare (se hai una macchina multi-core, ogni core può lavorare su un diverso set di password, le moderne cache della CPU non hanno alcun problema con il costo della memoria di bcrypt) e quante voci si provano (alcune tabelle arcobaleno hanno un miliardo di voci, un milione non è nulla). Richiedono anche spazio di archiviazione, ma per una tabella con solo un milione di voci dovrebbero essere necessari meno di 100 MB di spazio di archiviazione.

    
risposta data 08.12.2017 - 07:16
fonte

Leggi altre domande sui tag