Crittografia basata su hash

1

Diciamo che prendi una chiave a 256 bit e non usarla mai per crittografare qualsiasi cosa. Si riceve un messaggio con un sale unico generato a caso da 16 caratteri pre-peso. Si salta la chiave con il carattere da 16 caratteri e la si esegue tramite SHA-256 per creare la chiave di crittografia utilizzata per il primo blocco con AES-256. Successivamente, si prende la prima chiave hash-risultante, si aggiunge la chiave di crittografia originale non utilizzata, si esegue l'hash del risultato con SHA-256 e si crea la chiave utilizzata per crittografare il blocco successivo. La chiave di crittografia di ogni blocco è la chiave precedente aggiunta con la chiave di crittografia mai utilizzata con SHA-256. Supponiamo che tu abbia usato questo metodo in modalità CBC. In che modo sarebbe paragonabile a AES-256 utilizzato nella modalità CBC della chiave segreta convenzionale in termini di sicurezza e prestazioni?

Inoltre, questo si qualificherebbe ancora come crittografia a cifrario a blocchi o sto parlando di qualcosa che sta quasi iniziando ad assomigliare a un codice di flusso qui?

    
posta Bob Larson 03.10.2015 - 07:34
fonte

1 risposta

1

Le prestazioni saranno molte volte più lente di AES, qualsiasi vantaggio di sicurezza percepito sarà minimo.

Il trasferimento di chiave aggiuntivo e la generazione di sottochiavi per ogni blocco potrebbero creare un vettore di attacco di temporizzazione e ora stai caricando la chiave primaria in memoria per ogni blocco, contro solo AES che esegue un'espansione a chiave singola, quindi salva le sottochiavi in XMM registri (quando si utilizza l'accelerazione hardware), dove può quindi essere protetto dall'accesso da altri processi.

Il metodo che stai descrivendo trasforma una cifratura di flusso basata su hash in un KDF per generare chiavi per ogni blocco. Questo potrebbe essere accettabile se stai utilizzando la modalità CTR e stai cercando di prevenire qualcosa che non sia riutilizzabile, e poi usi la nuova chiave per ogni nuovo messaggio, piuttosto che ogni blocco.

Dal punto di vista delle prestazioni, per ogni blocco eseguito in media, 2 iterazioni hash, 1 espansione chiave e 14 cicli di crittografia. SHA-256 prende qualcosa come 550 cicli di clock (qualcuno può confermare?) Per iterazione, 14 round di AES con addizione chiave richiede qualcosa come 101 cicli di clock, e l'espansione chiave è fino a 136 cicli di clock. Ciò ti dà 1337 orologi contro 101, uno 13.2 tempi di svantaggio delle prestazioni. Inoltre, a causa del modo in cui vengono generati i tasti, non è possibile trarre vantaggio da più core, un altro svantaggio 4X, sebbene sia possibile utilizzare la modalità ECB poiché la chiave è diversa per ogni blocco.

In tutto, se confrontato con la modalità ECB e CTR su una CPU quad-core, dovresti essere 52 volte più lento e 13 volte più lento di CBC.

    
risposta data 03.10.2015 - 09:55
fonte

Leggi altre domande sui tag