2.1. Authenticated Encryption (Cifratura autenticata)
2.1. Authenticated Encryption (Cifratura autenticata)
L'operazione di cifratura autenticata ha quattro ingressi, ciascuno dei quali è una stringa di ottetti:
Una chiave segreta K, che DEVE essere generata in modo uniformemente casuale o pseudo-casuale.
Un nonce N. Ogni nonce fornito a invocazioni distinte dell'operazione di cifratura autenticata DEVE essere distinto, per ogni valore particolare della chiave, a meno che ogni nonce abbia lunghezza zero. Le applicazioni in grado di generare nonce distinti DOVREBBERO usare il metodo di formazione del nonce definito nella sezione 3.2 e POSSONO usare qualsiasi altro metodo che soddisfi il requisito di unicità. Le altre applicazioni DOVREBBERO usare nonce di lunghezza zero.
Un testo in chiaro P, che contiene i dati da cifrare e autenticare.
I dati associati A, che contengono i dati da autenticare ma non da cifrare.
Vi è un'unica uscita:
Un testo cifrato C, lungo almeno quanto il testo in chiaro, oppure
un'indicazione che l'operazione di cifratura richiesta non può essere eseguita.
Tutti gli ingressi e le uscite sono stringhe di ottetti a lunghezza variabile, le cui lunghezze rispettano i seguenti vincoli:
Il numero di ottetti nella chiave K è compreso tra 1 e 255. Per ogni algoritmo AEAD, la lunghezza di K DEVE essere fissa.
Per ogni valore particolare della chiave, vale una delle due condizioni: 1) ogni nonce fornito a invocazioni distinte dell'operazione di cifratura autenticata DEVE essere distinto, oppure 2) ogni nonce DEVE avere lunghezza zero. Se con una data chiave si usano nonce di lunghezza zero, allora ogni nonce usato con quella chiave DEVE avere lunghezza zero. In caso contrario, il numero di ottetti nel nonce DOVREBBE essere dodici (12). POSSONO essere usati con una data chiave nonce di lunghezze diverse. Alcuni algoritmi non possono essere usati con nonce di lunghezza zero, altri sì; vedere la sezione 4. Le applicazioni che rispettano la lunghezza di nonce raccomandata eviteranno di dover costruire nonce di lunghezze diverse a seconda dell'algoritmo in uso. Questa guida aiuta a tenere fuori dalle applicazioni la logica specifica dell'algoritmo.
Il numero di ottetti nel testo in chiaro P PUÒ essere zero.
Il numero di ottetti nei dati associati A PUÒ essere zero.
Il numero di ottetti nel testo cifrato C PUÒ essere zero.
Questa specifica non impone una lunghezza massima al nonce, al testo in chiaro, al testo cifrato o ai dati autenticati aggiuntivi. Tuttavia, un particolare algoritmo AEAD PUÒ ulteriormente restringere le lunghezze di tali ingressi e uscite. Una particolare implementazione di AEAD PUÒ ulteriormente restringere le lunghezze dei propri ingressi e uscite. Se un'implementazione di un algoritmo AEAD riceve la richiesta di elaborare un ingresso al di fuori dell'intervallo di lunghezze ammissibili, o al di fuori dell'intervallo supportato da quell'implementazione, DEVE restituire un codice di errore e NON DEVE emettere alcun'altra informazione. In particolare, NON DEVONO essere restituiti dati parzialmente cifrati o parzialmente decifrati.
Sul testo in chiaro P sono fornite sia la riservatezza sia l'autenticazione del messaggio. Quando la lunghezza di P è zero, l'algoritmo AEAD funge da codice di autenticazione del messaggio (Message Authentication Code, MAC) sull'ingresso A.
I dati associati A servono a proteggere informazioni che devono essere autenticate ma non mantenute riservate. Usando un AEAD per proteggere un protocollo di rete, ad esempio, questo ingresso può includere indirizzi, porte, numeri di sequenza, numeri di versione del protocollo e altri campi che indicano come il testo in chiaro o cifrato debba essere gestito, inoltrato o elaborato. In molte situazioni è desiderabile autenticare tali campi, pur lasciandoli in chiaro per consentire il corretto funzionamento della rete o del sistema. Quando tali dati sono inclusi nell'ingresso A, si ottiene l'autenticazione senza copiare i dati nel testo in chiaro.
La chiave segreta K NON DEVE essere inclusa in nessuno degli altri ingressi (N, P e A). (Questa restrizione non significa che i valori di tali ingressi debbano essere controllati per assicurarsi che non contengano sottostringhe uguali alla chiave; significa invece che la chiave non deve essere copiata esplicitamente in tali ingressi.)
Il nonce è autenticato internamente all'algoritmo e non è necessario includerlo nell'ingresso AD. Il nonce PUÒ essere incluso in P o in A se ciò è comodo per l'applicazione.
Il nonce PUÒ essere memorizzato o trasportato insieme al testo cifrato, oppure PUÒ essere ricostruito immediatamente prima dell'operazione di decifratura autenticata. È sufficiente fornire al modulo di decifratura informazioni sufficienti per costruire il nonce. (Ad esempio, un sistema può usare un nonce costituito da un numero di sequenza in un formato particolare, nel qual caso può essere dedotto dall'ordine dei testi cifrati.) Poiché il processo di decifratura autenticata rileva valori di nonce errati, non deriva alcun fallimento di sicurezza se un nonce è ricostruito in modo errato e immesso in un'operazione di decifratura autenticata. Qualsiasi metodo di ricostruzione del nonce dovrà tenere conto della possibilità di perdita o riordino dei testi cifrati tra i processi di cifratura e decifratura.
Le applicazioni NON DEVONO presumere alcuna struttura o formattazione particolare del testo cifrato.