La velocità MD4 o MD5 dipende dai dati o solo dalla dimensione dei dati?

3

Mi sto solo chiedendo ... Diciamo, voglio calcolare un hash MD5 da un dato buffer che è un buffer vuoto ( memset(buffer, ' ', sizeof(buffer)); ) con dimensione di 512. Voglio anche calcolare l'hash MD5 sul buffer della stessa dimensione ma non vuoto: memset(buffer, 'a', sizeof(buffer)); .

Ho ragione che la velocità del calcolo dovrebbe essere la stessa per quei 2 buffer? Voglio dire, voglio chiedere se la velocità MD4 / MD5 (algoritmi crittografici in generale) dipende solo dalla dimensione dei dati, non anche dal contenuto dei dati?

    
posta mazix 14.07.2013 - 19:35
fonte

1 risposta

5

Per quanto riguarda le prestazioni, il tempo per calcolare un hash MD5 o qualsiasi altro hash crittografico dipende esclusivamente dal numero di byte. Non importa cosa siano i byte.

Si noti che memset(buffer, ' ', sizeof(buffer)); non crea un "buffer vuoto" - non c'è nulla come un byte vuoto in memoria. Riempie il buffer con caratteri di spazio, che sono byte come 'a' o qualsiasi altro.

Per quanto riguarda la sicurezza, il tempo di calcolare un hash può variare molto leggermente a seconda dei dati. Ciò potrebbe consentire a un utente malintenzionato che non conosce i dati ma può misurare con precisione il tempo necessario per cancellarlo per ottenere alcune informazioni sui dati. Per un calcolo hash, è molto improbabile che gli attacchi temporali funzionino nella pratica, perché i tempi dipendono poco dai dati. Gli attacchi a tempo sono per lo più efficaci su operazioni su interi di grandi dimensioni coinvolti nella crittografia asimmetrica, e soprattutto quando l'attaccante può influenzare i dati e la velocità di esecuzione. Ad esempio, se l'implementazione utilizza una tabella che non rientra in una singola riga della cache e l'utente malintenzionato può eseguire codice sullo stesso processore, l'utente malintenzionato potrebbe provare a utilizzare la cache nel proprio processo, in modo che il calcolo dell'hash continui a recuperare parti della tabella dalla RAM, consentendo all'aggressore di osservare quando avvengono le ricerche RAM. L'implementazione può contrastare questo essendo cache-ignaro .

In pratica, non mi preoccuperei degli attacchi temporali ai calcoli hash. Confronto hash, sì (quando si confrontano due hash MD5, uno dei quali è segreto, è necessario confrontare tutti i 16 byte e non fermarsi alla prima differenza). Numero di calcoli hash o confronti in un algoritmo che coinvolge molti di questi, sì. Ma non per lo stesso calcolo dell'hash.

    
risposta data 14.07.2013 - 19:58
fonte

Leggi altre domande sui tag