L'algoritmo dell'involucro chiave può essere immaginato come un esteso schema Feistel che utilizza AES come funzione rotonda, combinato con un stato di esecuzione che funge da MAC . Se guardi la definizione dell'algoritmo, vedrai che per ognuno dei round s , un blocco di dati a 64 bit viene aggiornato, con una funzione di combinazione che include una chiamata AES e un'altra a 64 bit bloccare. I blocchi vengono anche "ruotati" in modo che il prossimo round aggiorni un altro blocco, e così via. Questo è molto simile alla definizione di un grande codice a blocchi che funziona su tutto il testo in chiaro come un unico "blocco".
Come sistemi di crittografia simmetrica, questo è piuttosto inefficiente, perché comporta una media di 1.5 chiamata AES per input byte (12 invocazione AES per un blocco a 64-bit), mentre GCM utilizza solo la chiamata AES 0,0625 per byte di input (un AES ogni blocco a 128 bit). Inoltre, ha bisogno di elaborare ogni byte di input più volte, quindi l'intero messaggio in chiaro deve essere completamente bufferizzato: questo sarà inadeguato per la crittografia di massa.
L'algoritmo dell'involucro chiave è stato progettato per proteggere le chiavi e soffre di un eccessivo esagerato rituale: molte invocazioni accumulate di AES con la speranza che faccia così tanto scalpore che il risultato sarà strong. Questa non è una scommessa sbagliata; se la consideriamo come una cifra estesa di Feistel, allora ci sono alcuni dati empirici che molti colpi porteranno sicurezza. Ciò meriterebbe comunque qualche analisi decente e, per quanto ne so, questo non si è ancora verificato. Questo è probabilmente legato al fatto che questo algoritmo di avvolgimento delle chiavi sembra non essere molto usato in natura.
Le buone proprietà dell'algoritmo dell'involucro chiave AES includono quanto segue:
-
Non ha bisogno di casualità . La casualità è una risorsa scarsa su molti sistemi embedded, quindi avere uno schema che è sicuro senza di essa è bello.
-
Non ha bisogno dello stato . Nessuna EEPROM o bit Flash da modificare, se non altro per conservare un contatore.
-
È deterministico. Ciò significa che avvolgere lo stesso testo in chiaro con la stessa chiave produrrà la stessa sequenza di byte. Il determinismo è per lo più neutro, ma a volte utile in alcuni protocolli.
-
Utilizza una singola primitiva, che è "l'AES": la dimensione del codice è anche una risorsa scarsa sui sistemi incorporati.
-
Ha un overhead size basso: aggiunge solo 64 bit alle dimensioni dell'input e include un MAC, quindi è circa il più piccolo di quello che si può ottenere.
Le proprietà errate sono principalmente queste:
-
L'algoritmo è inefficiente, con un elevato costo della CPU per byte e la necessità di un buffer completo. Questo è il motivo per cui l'algoritmo è inteso per key wrapping , dove "chiavi" sono entità corte, mantenendo i costi di wrapping sotto limiti ragionevoli.
-
Nonostante i suoi 12 anni, l'algoritmo di avvolgimento dei tasti AES non ha beneficiato di molte analisi o persino dell'attenzione della comunità crittografica, probabilmente a causa dei suoi casi d'uso restrittivi.