Una password può essere uguale al suo hash?

5

Quindi io e il mio amico abbiamo riflettuto sul motivo per cui le password hanno una lunghezza massima (e trovato la risposta qui ) e ho avuto un pensiero strano .. potrebbe una password essere la stessa del suo hash?
Mi rendo conto che gli hash salati sono basati su RNG ma è possibile? Se sì, quali sono le possibilità?

    
posta Tyler.I 16.01.2016 - 09:44
fonte

3 risposte

5

In teoria, sì. Per provarlo, tutto ciò che devi fare è eseguire l'hash di ogni possibile hash di output e vedere se uno di essi ha lo stesso valore di input.

Questo potrebbe richiedere un po 'di tempo.

In pratica, pochissime persone usano password che sono esse stesse uscite valide per le funzioni hash, poiché questo riscriverebbe ricordando una stringa di caratteri di 30+ composta da cifre e le lettere da A a F (assumendo una rappresentazione esadecimale). Inoltre, l'uso di sale nei moderni algoritmi di hashing avrebbe ulteriormente confuso il problema: la password avrebbe dovuto far parte del proprio hash e il sale sarebbe stata la parte rimanente.

    
risposta data 16.01.2016 - 09:56
fonte
1

Nel caso di password che sono state sottoposte a hash senza l'uso di un salt è probabile, ma non certo che esista una password che sarà hash a se stessa. Una dimostrazione formale che esista o meno non è fattibile, ma si possono fare i calcoli assumendo un oracolo casuale invece di una funzione di hash. In tal caso, è possibile calcolare la probabilità di una password esistente e risulterebbe approssimativamente del 63%. I calcoli completi possono essere visualizzati in una risposta su crypto SE.

Tuttavia, la best practice consiste nell'utilizzare un salt quando si esegue l'hashing di una password. Questo cambia i calcoli, ma rende anche la domanda leggermente ambigua. Ci sono almeno due modi per interpretare la domanda, ognuno dei quali può essere risolto separatamente.

Esiste una password che sarà sempre hash a se stessa indipendentemente da quale sale è scelto?

No.

Il motivo è che il sale è incluso nell'hash della password. E quando chiediamo che l'hash della password e della password siano identici, l'implicazione è che la password stessa dovrebbe contenere il sale. E per qualsiasi altra scelta di sale, la password non verrà cancellata da solo.

Esiste una password che per almeno una scelta di sale verrà cancellata da solo?

Molto probabilmente sì. L'analisi è simile al caso di password non salate. Ma a causa dell'input che ha più entropia dell'output, i numeri usciranno in modo molto diverso.

Esaminiamo il calcolo utilizzando alcuni numeri concreti che sono ampiamente utilizzati. Sale: 48 bit, Uscita hash: 512 bit.

Questo significa che ci sono 2⁵⁶⁰ ingressi possibili ognuno dei quali ha una probabilità di corrispondenza di 1 / 2⁵¹². La probabilità che nessuno di loro corrisponda sarà quindi solo (1 - 1 / 2⁵¹²) ^ (2⁵⁶⁰) usando l'approssimazione di prima di dire che (1 - 1 / 2⁵¹²) ^ (2⁵¹²) ≃ 27% la probabilità che nessuno di essi corrisponda quindi esce come 27% ^ (2⁴⁸) ≃ 0.

    
risposta data 16.01.2016 - 14:29
fonte
0

Di tanto in tanto, quanto interessante sarebbe se l'output di un hash o hash salato fosse lo stesso dell'input.

Gli algoritmi di hash non hanno in genere alcuna protezione contro questo come parte dei criteri di progettazione. In effetti, sarebbe molto semplice aggiungere un ulteriore passaggio, affermando che se l'output corrisponde (parte di) l'input, commuta il primo bit nella parte corrispondente, impedendo in tal modo una tale ricerca.

Trovare un input / output corrispondente sarebbe certamente affascinante per me, tuttavia, ciò che lo rende non tanto interessante, è quando si considera, quale rappresentazione dell'hash dovrebbe corrispondere all'input?

L'input è in genere una serie di byte da 8 bit, sia come testo in varie codifiche, sia come binario non elaborato.

L'output è un numero fisso di byte grezzi, 8 bit, rappresentati spesso come rappresentazione esadecimale big-endian dei valori di n * 8 bit come numero.

Sarebbe sicuramente una curiosità se l'output dell'MD5 di un numero decimale (o binario) in formato stringa (ad esempio "12345 ....") fosse un numero esadecimale corrispondente allo stesso numero esatto, giusto?

Ma se l'output, interpretato come un numero elevato in un formato binario, sarebbe lo stesso numero esatto, (se stampato in formato decimale), la maggior parte di noi non si accorgerebbe nemmeno dell'equivalenza. Ma sarebbe altrettanto teoricamente interessante.

Un altro esempio potrebbe essere molto sospetto, ma si noterà che questo (falso) output MD5 è in realtà in testo ASCII?

48454c5021496d207472617070656421

Se fosse emesso come codifica Base64, sarebbe molto difficile per la maggior parte di noi vedere questo fatto.

    
risposta data 16.01.2016 - 14:46
fonte

Leggi altre domande sui tag