Calcolo dell'entopia usando md5sum, sha256sum ecc

0

Possiamo calcolare l'Entropia S di una stringa in questo modo:

S = L * log_2(N)

Dove L sta per caratteri usati nella stringa

E N per ogni possibile carattere

Esempio: Vogliamo calcolare l'entropia per un PIN a 4 cifre.

Il nostro N sarebbe 10 . Perché abbiamo 10 numeri (0-9). Il nostro L è 4 ovviamente.

Quindi abbiamo un'entrata di circa 13,28 bit (o 3,32 bit per carattere)

Ma come calcoliamo l'entropia per dire una "stringa vuota" usando per es. md5sum, sha256sum

E soprattutto: Che cos'è

posta Azrion 02.07.2018 - 11:03
fonte

1 risposta

1

TL; DR: la tua formula è troppo semplice.

Quindi il problema è perché "" ha un'entropia se 0 con la tua formula, ma MD5 ("") non ha 0.

Come già detto nei commenti, la tua formula funziona solo se i dati sono perfettamente casuali (distribuzione uniforme, tutti i bit indipendenti, ecc.).
Esempio per caso casuale: il calcolo del PIN con 4 cifre tra 0 e 9.
Ma se hai eg. un valore che può essere 2222 o 7777 e nient'altro, l'entropia è solo 1 bit. Ci sono ancora 4 cifre, ma la maggior parte dei numeri a 4 cifre non è possibile, quindi la tua formula non funziona più.

Lo stesso vale per il tuo hash - hashing una stringa di lunghezza 0 dà esattamente un output, sempre lo stesso. Non ci sono 256 ^ 16 possibilità che gli hash da 16 byte possano avere.

Una formula migliore:

H(X) = sum (-p[i] * log2 p[i])

dove p[i] è la probabilità dell'i-esimo valore possibile (non cifra ecc., ma valore - il PIN ha 9999 valori possibili e ognuno ha la sua probabilità).

Con questa formula e l'unico valore di hash possibile, ottieni anche 0.

In generale, un hash come questo non può mai aumentare l'entropia. Può essere uguale o inferiore a quello del valore originale (meno specialmente se i dati sono più lunghi dell'hash, cioè l'hash ha meno valori possibili)

    
risposta data 02.07.2018 - 11:32
fonte

Leggi altre domande sui tag