Perché SHA256 non può essere decodificato? [chiuso]

-3

Da molti forum ho visto che i dati SHA256 non possono essere decifrati? Se ciò è vero, allora i dati vengono verificati? A che cosa serve solo crittografare i dati? La stessa domanda vale per le firme digitali (che credo siano il valore hash e la chiave privata)?

    
posta Gaurav Mathur 14.12.2016 - 10:36
fonte

2 risposte

6

Innanzitutto, c'è una differenza tra hashing e la crittografia . SHA256 è una funzione di hashing, non una funzione di crittografia.

In secondo luogo, poiché SHA256 non è una funzione di crittografia, non può essere decodificato. Ciò che intendi è probabilmente invertirlo. In tal caso, SHA256 non può essere annullato perché è una funzione unidirezionale . L'inversione causerebbe un attacco preimage , che sconfigge il suo obiettivo di progettazione.

In terzo luogo, la verifica SHA256 funziona calcolandola nuovamente e confrontando il risultato con il risultato in questione. Se entrambi i risultati corrispondono, la verifica ha esito positivo. Lo sfondo teorico è che è difficile trovare un altro input che dia lo stesso risultato di hash. La violazione di questo crea un attacco di seconda preimage , che sconfigge il suo obiettivo di design.

Infine, le firme digitali non sono semplicemente combinazioni hash e chiave . Ma una funzione di hash può migliorare la sua sicurezza.

    
risposta data 14.12.2016 - 11:09
fonte
2

SHA256 non è una funzione di crittografia ma una funzione di hash . La differenza fondamentale è che mentre la crittografia è una funzione bidirezionale (data la chiave) l'hash è solo una funzione unidirezionale: dati alcuni dati è possibile calcolare l'hash, dato l'hash è difficile (e matematicamente impossibile) avere i dati indietro .

Ho detto che è matematicamente impossibile trovare i dati dall'hash perché tipicamente una funzione hash ha un piccolo codominio (ad esempio 256 bit per SHA256) ma un dominio grande (puoi cancellare qualsiasi stringa), quindi ci saranno collisioni: stringhe diverse con lo stesso hash.

Per questo motivo se la tua password è salvata in un modulo con hash, allora esistono password infinite (ma possono essere molto lunghe) che sbloccano il tuo account.

La buona notizia è che le collisioni sono rare quando usi le funzioni di hash crittografiche crittografiche , quindi il tuo account è ancora al sicuro.

Rispondendo alla prima parte della domanda, la verifica dei dati è semplice: se Alice invia a Bob un file con il checksum hash, Bob può facilmente calcolare l'hash del file che ha ricevuto e confrontarlo con l'hash ricevuto da Alice. Questo di solito è sufficiente per scoprire se c'è stato qualche errore durante la trasmissione (quindi il file è corrotto), ma non è sufficiente se la trasmissione è stata alterata da qualche malintenzionato che ha anche alterato l'hash. Quindi Alice e Bob hanno bisogno di un canale sicuro per trasmettere l'hash (ad esempio una pagina https con un certificato valido) o devono firmare l'hash in qualche modo.

Quindi passiamo alla risposta alla tua seconda domanda: Alice può firmare l'hash utilizzando la sua chiave privata prima di inviarla a Bob, in questo modo un utente malintenzionato non può manometterlo senza invalidare la firma.

Ora potresti chiederti perché Alice firma con la sua chiave RSA (o simile) solo l'hash e non tutti i messaggi, perché l'elaborazione di RSA è più lenta del calcolo di un hash (quindi deve fare la cosa lenta solo su piccola stringa: l'hash). Questo era vero soprattutto quando PGP è stato creato e i computer erano più lenti.

    
risposta data 14.12.2016 - 11:14
fonte

Leggi altre domande sui tag