4. Exporter Definition (Definizione dell'esportatore)
4. Exporter Definition (Definizione dell'esportatore)
L'output dell'esportatore è destinato ad essere utilizzato in un singolo ambito, che è associato alla sessione TLS, all'etichetta e al valore di contesto.
L'esportatore accetta tre valori di input:
-
una stringa di etichetta disambiguante,
-
un valore di contesto per associazione fornito dall'applicazione che utilizza l'esportatore, e
-
un valore di lunghezza.
Se non viene fornito alcun contesto, calcola:
PRF(SecurityParameters.master_secret, label,
SecurityParameters.client_random +
SecurityParameters.server_random
)[length]
Se viene fornito un contesto, calcola:
PRF(SecurityParameters.master_secret, label,
SecurityParameters.client_random +
SecurityParameters.server_random +
context_value_length + context_value
)[length]
Dove PRF è la funzione pseudocasuale TLS in uso per la sessione. L'output è una stringa di bit pseudocasuale di length byte generata dal master_secret. (Questa costruzione consente l'interoperabilità con costruzioni di tipo esportatore più vecchie che non utilizzano valori di contesto, ad esempio [RFC5281]).
Le etichette qui hanno la stessa definizione che in TLS, ovvero una stringa ASCII senza NULL terminante. I valori di etichetta che iniziano con "EXPERIMENTAL" POSSONO essere utilizzati per uso privato senza registrazione. Tutti gli altri valori di etichetta DEVONO essere registrati tramite Specification Required come descritto da RFC 5226 [RFC5226]. Si noti che le etichette dell'esportatore hanno il potenziale di collidere con etichette PRF esistenti. Per prevenire ciò, le etichette DOVREBBERO iniziare con "EXPORTER". Questo non è un DEVE perché ci sono usi esistenti che hanno etichette che non iniziano con questo prefisso.
Il valore di contesto consente all'applicazione che utilizza l'esportatore di mescolare i propri dati con il PRF TLS per l'output dell'esportatore. Un esempio in cui questo potrebbe essere utile è un'impostazione di autenticazione in cui le credenziali del client sono valide per più di un'identità; il valore di contesto potrebbe quindi essere utilizzato per mescolare l'identità prevista nel materiale chiave, prevenendo così attacchi di sostituzione. La lunghezza del valore di contesto è codificata come una quantità senza segno a 16 bit (uint16; vedere [RFC5246], Sezione 4.4) che rappresenta la lunghezza del valore di contesto. Il contesto PUÒ avere lunghezza zero. Poiché il valore di contesto è mescolato con il master_secret tramite il PRF, è sicuro mescolare informazioni riservate nell'esportatore, a condizione che il master_secret non sia noto all'attaccante.