2.13. Generating Keying Material (Generazione del materiale di chiave)
2.13. Generating Keying Material (Generazione del materiale di chiave)
Nel contesto dell'IKE SA si negoziano quattro algoritmi crittografici: crittografia, protezione dell'integrità, gruppo Diffie-Hellman e funzione pseudo-casuale (PRF). La PRF costruisce il materiale di chiave (keying material) per tutti gli algoritmi usati nell'IKE SA e nelle Child SA.
Si assume che ogni algoritmo di crittografia e integrità usi una chiave di dimensione fissa e che qualsiasi valore casuale di quella dimensione sia una chiave valida. Per chiavi di lunghezza variabile, una lunghezza fissa DEVE essere specificata nella trasformazione negoziata (sezione 3.3.5, attributo Key Length). Per algoritmi in cui non tutti i valori sono chiavi valide, la trasformazione DEVE specificare la derivazione. Per funzioni HMAC-based, la dimensione fissa è l'output del hash sottostante.
Si assume che le PRF accettino chiavi di qualsiasi lunghezza ma abbiano una lunghezza preferita. SK_d, SK_pi e SK_pr DEVONO usare la lunghezza preferita della PRF concordata (sezione 2.14). Per PRF HMAC-based, la lunghezza preferita coincide con l'output del hash. Altri tipi di PRF DEVONO specificare la lunghezza preferita.
Il materiale di chiave è sempre l'output della PRF negoziata. Se serve più materiale dell'output della PRF, questa si usa in modo iterativo. Il termine "prf+" indica una funzione che produce un flusso pseudo-casuale dagli input di una PRF "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)
...
Si continua finché non è stato prodotto tutto il materiale necessario. Le chiavi si estraggono dalla stringa di output senza rispettare confini tra blocchi. La costante concatenata a ogni prf è un ottetto singolo. prf+ non è definita oltre 255 volte la dimensione dell'output di prf.