Funzione Hash reversibile?

11

C'è una funzione hash reversibile?

Le funzioni di hash come SHA e MD5 non sono reversibili. Vorrei sapere se esistono alcune funzioni di hash reversibili?

    
posta Geek 13.07.2014 - 18:40
fonte

4 risposte

19

La definizione di una funzione hash crittografica include la resistenza alle preimmagini: dato h (x) , non dovrebbe essere possibile recuperare x . Una funzione di hash che è "reversibile" è l'esatto opposto di quella proprietà. Pertanto, non puoi avere più una "funzione di hash reversibile" di quanto tu possa avere un pesce allergico all'acqua.

Forse potresti volere una funzione di hash che, per la maggior parte delle persone, è una funzione di hash crittografica con tutte le sue proprietà, ma che include anche una sorta di botola che consente di invertirla se conosci qualche specifico segreto. Questo tipo di cose potrebbe esistere ma richiede una matematica, come la crittografia asimmetrica. Non sono a conoscenza di una tale costruzione in questo momento, ma si potrebbe eventualmente creare un jury-rig basato su un modulo RSA, o forse una curva ellittica con coordinate prese modulo modulo RSA (non ho un progetto preciso in mente, ma Ho intuizione che può essere fatto in questo modo).

    
risposta data 13.07.2014 - 18:50
fonte
5

Anche un hash non crittografico di solito non può essere invertito (cioè indipendentemente da altre proprietà speciali degli hash crittografici, come la resistenza alla collisione / preimage). Il motivo per cui di solito non è possibile è che semplicemente non hai abbastanza informazioni.

Una funzione di hash (in genere) trasforma N bit di input in M bit di output, dove M è una piccola costante e il più delle volte N > M è true. Ovviamente N non deve essere più grande di M , è perfettamente possibile generare per es. un hash SHA da un singolo byte, ma solitamente il messaggio hash è più lungo (spesso molto più lungo) del valore hash.

Questo significa non più né meno che per invertire l'hash e ripristinare il messaggio originale, dovresti usare magia divinatoria per inserire le informazioni mancanti. Esistono 2 soluzioni N-M e ognuna di esse è corretta come tutte le altre.

Quindi, se hai un hash, ad esempio una stringa di 36 byte con SHA e provi a invertirla, ci sono 2 soluzioni 128 , tutte ugualmente corrette.
Se l'input è noto per avere alcune proprietà ben note (come iniziare con una sequenza ben nota, come From: , o un'entropia particolarmente bassa), potresti essere in grado di escludere la maggior parte delle soluzioni e alla fine trovare un testo in chiaro plausibile , forse anche quella giusta - ma questo non è affatto banale, e non puoi mai dimostrare di averne uno corretto, a meno che tu non lo sapessi già prima o hai un altro modo di verificare.

    
risposta data 14.07.2014 - 16:54
fonte
1

Forse stai cercando qualcosa come PKI, dove una stringa può essere crittografata con una chiave pubblica a un'estremità e non crittografata con una chiave privata dall'altra. Ovviamente non un hash, ma un modo per crittografare / decifrare una stringa per passare un segreto.

    
risposta data 28.10.2016 - 16:16
fonte
1

Alcuni algoritmi di hash, come i CRC (come ho notato sopra) sono reversibili. Vedi questo documento per un approccio per farlo. (I CRC sono veloci da calcolare e ideali per proteggere i dati dalla corruzione laddove non vi sono requisiti di sicurezza).

Il design degli hash crittograficamente sicuri mira a garantire che non ci sia tale scorciatoia e che trovare una corrispondenza hash richiede una ricerca completa dello spazio delle chiavi.

    
risposta data 11.04.2017 - 07:05
fonte

Leggi altre domande sui tag