Funzione hash fingerprinting

2

Ai fini dell'impronta digitale dei dati con il minimo rischio di collisione la combinazione della lunghezza (come un intero senza segno a 32 bit memorizzato in aggiunta all'hash) dei dati di input e / o il campionamento di alcuni byte dall'ingresso rafforzeranno significativamente la risultato risultante combinato con l'hash?

Ad esempio:

sha256(data) + length + first_2_bytes_of_data = 304 bits

Nota: (aggiornato)

  • La privacy dei dati di input non è fondamentale, più la capacità di rilevare se i dati sono cambiati.
  • Anche io uso una funzione di hash a 256 bit in questo esempio, ma la domanda è meno sulla scelta finale della funzione di hash e molto altro sull'aggiunta del 6 aiuto extra di byte.
  • La lunghezza in byte dei dati di input sarà sempre variabile ma sempre inferiore o uguale a 2 alla potenza di 32.
  • L'output risultante verrà utilizzato sia per la verifica dell'integrità sia come chiave del dizionario per un massimo di 2 ^ 64 elementi (se la collisione della chiave è considerata non pratica o impossibile)
posta Bernie White 21.06.2012 - 10:54
fonte

4 risposte

5

No, aggiungere tali informazioni secondarie in realtà non aiuta a rafforzare la resistenza alle collisioni, per una funzione hash crittograficamente protetta come SHA-256 tiene già conto della lunghezza (attraverso l'inclusione esplicita nel padding, vedi §5.1.1, pagina 13 del FIPS 180-3 standard ) così come ogni singolo bit dei dati di input per calcolare il digest. Non c'è alcuna collisione nota per SHA-256, né esiste un metodo promettente pubblicamente noto per trovarne uno.

    
risposta data 21.06.2012 - 16:45
fonte
1

SHA-256 è ampiamente creduto come una costruzione di hash sicura e è lo standard di fatto per gli hash crittografici forti . Non aggiungerai ulteriore sicurezza aggiungendo la lunghezza o alcuni byte, entrambi possono essere facilmente imitati (mentre l'hash SHA-256 non può).

L'inclusione della lunghezza del messaggio ha un vantaggio pratico: quando trovi un messaggio con l'hash sbagliato e cerchi di indagare se può essere un problema accidentale, conoscere la lunghezza può aiutare a indirizzare la tua indagine verso un messaggio troncato , o alcuni tipi di corruzione tipica (ad esempio, un messaggio che dovrebbe essere compresso e che è lungo circa 1 / 256th potrebbe avere le sue nuove righe convertite da unix in formato Windows come se fosse stato testo).

Includere i primi due byte del messaggio è quasi completamente inutile. È inutile per la sicurezza ed è raramente utile per il debug, tranne occasionalmente per rilevare che hai inviato il messaggio nel formato sbagliato. Potrebbe essere utile verificare che il messaggio sembri essere nel formato desiderato, ma in genere ciò richiede alcuni byte in più, e un tipo MIME o un'indicazione di formato simile servirebbe meglio a questo scopo.

    
risposta data 21.06.2012 - 19:32
fonte
0

Tutte le funzioni di hash che accettano un input di lunghezza arbitraria hanno collisioni: è ciò che è una funzione di hash. Infatti, data una distribuzione equa dei valori all'interno dell'output dell'hash e un intervallo infinito di input, è anche possibile che ci sia un numero infinito di input in collisione per ogni dato valore hash.

Idealmente quelle collisioni sono rare e raramente viste, ma è molto meno probabile che due stringhe collidenti abbiano la stessa lunghezza.

Quindi ha perfettamente senso usare la lunghezza dell'hash plus per identificare in modo univoco una stringa, e non sei la prima persona a pensarla. Tuttavia, questi due elementi da soli sono probabilmente sufficienti. Includere qualsiasi "testo in chiaro" dal contenuto stesso probabilmente non aggiunge alcun valore misurabile.

    
risposta data 23.06.2012 - 08:35
fonte
-2

Sembra un modo eccellente (meccanismo) per ridurre / minimizzare le possibilità di collisione dell'hash. Non molto sicuro delle caratteristiche e delle specifiche degli algoritmi di hash; Matematicamente ci sono alcune preoccupazioni:

  1. se 2 dati della stessa dimensione aventi la stessa lunghezza con i primi 2 byte stessi producono lo stesso hash, la logica fallirà e così anche il rilevamento della manipolazione dei dati da parte del ricevitore. Sì, AFAIK che dispone di un insieme di dati di questo tipo non è praticamente possibile e anche se qualcuno li trova tali dati non hanno alcun caso aziendale.
risposta data 21.06.2012 - 13:37
fonte

Leggi altre domande sui tag