Passa al contenuto principale

2.13. Generazione del materiale di chiave

2.13. Generazione del materiale di chiave​

Nel contesto della IKE SA, vengono negoziati quattro algoritmi crittografici: un algoritmo di cifratura, un algoritmo di protezione di integrità, un gruppo Diffie-Hellman, e una funzione pseudo-casuale (PRF). La PRF è usata per la costruzione del materiale di chiave per tutti gli algoritmi crittografici usati sia nella IKE SA che nelle Child SA.

Assumiamo che ciascun algoritmo di cifratura e algoritmo di protezione di integrità usi una chiave di dimensione fissa e che qualsiasi valore di tale dimensione fissa scelto casualmente possa servire da chiave appropriata. Per gli algoritmi che accettano una chiave di lunghezza variabile, una dimensione di chiave fissa DEVE essere specificata come parte della trasformazione crittografica negoziata (vedere la sezione 3.3.5 per la definizione dell'attributo di trasformazione della lunghezza della chiave). Per gli algoritmi per cui non tutti i valori sono chiavi valide (come DES o 3DES con parità della chiave), l'algoritmo mediante il quale le chiavi sono derivate da valori arbitrari DEVE essere specificato dalla trasformazione crittografica.

Per le funzioni di protezione di integrità basate su Hashed Message Authentication Code (HMAC), la dimensione di chiave fissa è la dimensione dell'output della funzione hash sottostante.

Si assume che le PRF accettino chiavi di qualsiasi lunghezza, ma abbiano una dimensione di chiave preferita. La dimensione di chiave preferita DEVE essere usata come lunghezza di SK_d, SK_pi, e SK_pr (vedere sezione 2.14). Per le PRF basate sulla costruzione HMAC, la dimensione di chiave preferita è uguale alla lunghezza dell'output della funzione hash sottostante. Altri tipi di PRF DEVONO specificare la loro dimensione di chiave preferita.

Il materiale di chiave sarà sempre derivato come output dell'algoritmo PRF negoziato. Poiché la quantità di materiale di chiave necessaria può essere maggiore della dimensione dell'output della PRF, la PRF è usata in modo iterativo. Il termine "prf+" descrive una funzione che emette un flusso pseudo-casuale basato sugli input di una funzione pseudo-casuale chiamata "prf".

Nel seguito, | indica concatenazione. prf+ è definita come:

prf+ (K,S) = T1 | T2 | T3 | T4 | ...

dove: T1 = prf (K, S | 0x01) T2 = prf (K, T1 | S | 0x02) T3 = prf (K, T2 | S | 0x03) T4 = prf (K, T3 | S | 0x04) ...

Questo continua finché tutto il materiale necessario per calcolare tutte le chiavi richieste non è stato emesso da prf+. Le chiavi sono prese dalla stringa di output senza riguardo ai confini (es., se le chiavi richieste sono una chiave Advanced Encryption Standard (AES) a 256 bit e una chiave HMAC a 160 bit, e la funzione prf genera 160 bit, la chiave AES proverrà da T1 e dall'inizio di T2, mentre la chiave HMAC proverrà dalla restante parte di T2 e dall'inizio di T3).

La costante concatenata alla fine di ciascuna funzione prf è un singolo ottetto. La funzione prf+ non è definita oltre 255 volte la dimensione dell'output della funzione prf.