Quali sono le implicazioni degli hash di inversione

0

Oggi mi è stato proposto che

  1. sha256 ha un dominio abbastanza grande da non incontrare mai una collisione e
  2. questo perché è un dominio così grande e dato che per esso è stata creata una funzione inversa, che renderebbe obsoleta la compressione corrente. È possibile creare file di grandi dimensioni invertendo uno sha256.

Capisco che gli hash sono funzioni unidirezionali, deterministiche, ma se ci fosse un hash reversibile ciò sarebbe vero, oppure il potenziale di collisione è davvero eccezionale se si crea davvero un hash unico?

    
posta virus.cmd 18.01.2017 - 01:08
fonte

2 risposte

5

Gli hash reversibili non sono compressi

Anche gli hash che possiamo invertire non possono essere usati come compressione. Supponendo che potremmo invertire sha256 non renderebbe obsoleta la compressione corrente, perché ci sono infinitamente molti file di grandi dimensioni, ma infinitamente molti (2 ^ 256) valori di sha256, quindi infinitamente molti file di grandi dimensioni avranno lo stesso hash sha256 - questo è noto come principio del piccione . L'inversione dell'hash potrebbe farti uno o tutti dei possibili file di grandi dimensioni, ma non puoi garantire o realisticamente sperare che questo sia esattamente quello che hai compresso.

Per un esempio banale, se vuoi comprimere file di 33 byte (264 bit) allora ci sono 2 ^ 256 diversi sha256 hash e 2 ^ 264 possibili diversi file da 33 byte - in media ogni 2 ^ 8 tali i file avranno lo stesso hash sha256. Anche se è poco plausibile che tu accidentalmente ti capiti una collisione (1/2 ^ 256 possibilità), è anche improbabile che su un "rovescio" ti capiti per caso di ottenere lo stesso file che hai compresso (1/2 ^ 8 possibilità). In crittografia dire "prova di collisione" non significa che non ci siano collisioni (ovviamente ci sono, ci deve essere) ma piuttosto che le collisioni sono difficili da trovare e manipolare.

    
risposta data 18.01.2017 - 07:37
fonte
1

Non ho lo sfondo matematico per spiegarlo correttamente, ma nessun hash di dimensioni fisse è abbastanza grande da fornire un output unico per ogni singolo input. Pertanto, ci sarebbero collisioni e sarebbe impossibile stabilire quale input è stato inizialmente fornito.

Ma anche se ignoriamo ciò, la proprietà del grande spazio di output e la proprietà che non può essere invertita non è correlata. Persino MD5 non può essere annullato matematicamente. È solo che MD5 è piccolo e abbastanza veloce da poter creare dizionari inversi per mappare gli hash a potenziali input. Puoi farlo anche con SHA1 o SHA256.

La parte che rende poco pratico l'uso della compressione è che dovresti comunque memorizzare l'input da qualche parte per eseguire l'inversione, che manca completamente il punto.

    
risposta data 18.01.2017 - 07:20
fonte

Leggi altre domande sui tag