Qual è lo scopo della derivazione della crittografia e delle chiavi di autorizzazione dalla chiave principale?

2

Utilizziamo AES-CBC e HMAC per crittografare e autenticare i nostri messaggi (utilizzando il metodo encrypt-then-authenticate).

A volte vedo soluzioni (come questo ) che stanno derivando chiavi di crittografia e autorizzazione dalla singola chiave master AES:

K enc = AES (K master , P + "1")

K auth = AES (K master , P + "2")

Domande

In qualche modo migliora la sicurezza (nel caso in cui P e l'algoritmo di derivazione siano noti agli aggressori)? In tal caso, derivare K enc da K master è davvero un passaggio necessario?

    
posta Dmitry Zaytsev 25.03.2014 - 17:05
fonte

1 risposta

3

L'uso della stessa chiave per due distinti algoritmi incorre nel rischio di interazioni. Un esempio estremo è quando si utilizza sia AES / CBC per la crittografia che CBC-MAC come algoritmo MAC: se si utilizza la stessa chiave per entrambi, è ovvio che il MAC può essere banalmente utilizzato. Per AES / CBC + HMAC, il sentimento della maggior parte dei crittografi è che i due algoritmi sono sufficientemente "diversi" l'uno dall'altro che queste interazioni non avvengono, ma mettendo una precisa definizione matematica sotto quel termine sembra impegnativo.

Fondamentalmente, questo è territorio inesplorato, quindi non farlo. Derivare una chiave di crittografia e una chiave MAC da una determinata chiave master, utilizzando una funzione di derivazione chiave , è il metodo prudente e sicuro : assicura che non possano verificarsi interazioni mortali. Dato che hai un codice HMAC, usa HKDF per tale derivazione: è facile da implementare e ha ricevuto la benedizione di molti crittografi.

In alternativa , puoi abbandonare CBC e HMAC e invece utilizzare una modalità di crittografia autenticata che combina crittografia e MAC con la stessa chiave. Queste sono modalità specializzate in cui le interazioni sono state analizzate in modo approfondito e tutti i dettagli cattivi hanno funzionato. GCM e EAX sono utilizzabili senza problemi legali e vanno bene; GCM è anche uno standard NIST e sta iniziando a essere ampiamente utilizzato (ad esempio come parte di SSL / TLS ).

    
risposta data 25.03.2014 - 19:19
fonte

Leggi altre domande sui tag