Optimal Asymmetric Encryption Padding: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m {{Categorizzare|informatica}}
Corretto: "anche se fosse"
 
(9 versioni intermedie di 8 utenti non mostrate)
Riga 1:
In [[crittografia]], '''Optimal Asymmetric Encryption Padding''' ('''OAEP''') è uno schema di [[padding (crittografia)|padding]] spesso utilizzato assieme a [[RSA (crittografia)|RSA]]. OAEP è stato introdotto da [[Mihir Bellare|Bellare]] e [[Phillip Rogaway|Rogaway]],<ref>[[Mihir Bellare|M. Bellare]], [[Phillip Rogaway|P. Rogaway]]. ''Optimal Asymmetric Encryption -- How to encrypt with RSA''. L'abstract completo può essere trovato in: Advances in Cryptology - [[Eurocrypt]] '94 Proceedings, Lecture Notes in Computer Science Vol. 950, A. De Santis ed, [[Springer-Verlag]], 1995. [http://www-cse.ucsd.edu/users/mihir/papers/oae.pdf Versione integrale (pdf)] {{Webarchive|url=https://web.archive.org/web/20080708233234/http://www-cse.ucsd.edu/users/mihir/papers/oae.pdf |date=8 luglio 2008 }}</ref> e successivamente standardizzato in [[PKCS1|PKCS #1v2]] and#1 v2 e RFC 2437.
{{S|crittografia}}
 
In [[crittografia]], '''Optimal Asymmetric Encryption Padding''' ('''OAEP''') è uno schema di [[padding (crittografia)|padding]] spesso utilizzato assieme a [[RSA]]. OAEP è stato introdotto da [[Mihir Bellare|Bellare]] e [[Phillip Rogaway|Rogaway]],<ref>[[Mihir Bellare|M. Bellare]], [[Phillip Rogaway|P. Rogaway]]. ''Optimal Asymmetric Encryption -- How to encrypt with RSA''. L'abstract completo può essere trovato in: Advances in Cryptology - [[Eurocrypt]] '94 Proceedings, Lecture Notes in Computer Science Vol. 950, A. De Santis ed, [[Springer-Verlag]], 1995. [http://www-cse.ucsd.edu/users/mihir/papers/oae.pdf Versione integrale (pdf)]</ref> e successivamente standardizzato in [[PKCS1|PKCS #1v2]] and RFC 2437.
L'algoritmo OAEP è una sorta di [[rete di Feistel]] che utilizza coppie di [[Oracolo random|oracoli random]] <math>G</math> e <math>H</math> per effettuare un preprocessing su un messaggio da [[Crittografia asimmetrica|cifrare asimmetricamente]]. Se usato in combinazione con una [[funzione botola]] sicura, questo metodo è considerato [[Sicurezza semantica|semanticamente sicuro]] all'interno del modello a [[oracolo random]] contro attacchi di tipo ''[[Attacco con testo in chiaro scelto|chosen plaintext]]''. In casi particolari (ad esempio, con [[RSA (crittografia)|RSA]]), OAEP è stato provato essere sicuro anche contro attacchi di tipo ''[[Attacco con testo cifrato scelto|chosen ciphertext]]''. OAEP può essere utilizzato per costruire una trasformazione ''all-or-nothing'' ("tutto o niente"), come spiegato [[#Funzionamento|in seguito]].
 
OAEP soddisfa i due obiettivi seguenti:
#Aggiunge una componente di casualità che può essere usata per convertire uno schema di crittazione deterministico (come [[RSA (crittografia)|RSA]]) in uno probabilistico.
#Fa in modo che un possibile avversario non possa recuperare alcuna porzione del testo in chiaro, anche se fosse in grado di invertire la [[funzione botola]] su cui si basa l'algoritmo di crittazione.
 
== Funzionamento ==
[[File:Oaep-diagram-20080305.png|thumb|Diagramma dell'algoritmo OAEP]]
 
Nel diagramma a destra:
* <math>n</math> è il numero di bit nel modulo [[RSA (crittografia)|RSA]].
* <math>k_0</math> e <math>k_1</math> sono costanti intere fissate nel protocollo.
* <math>m</math> è il messaggio in chiaro, una stringa lunga <math>n-k_0-k_1</math> bit
* <math>G</math> e <math>H</math> sono due [[Funzione crittografica di hash|funzioni crittografiche di hash]] fissate nel protocollo.
* ⊕ è l'operatore [[XOR]].
 
Per cifrare:
# al messaggio ''m'' va applicato un [[padding]] di <math>k_1</math> zeri per arrivare ad una lunghezza di <math>n-k_0</math> bit.
# <math>r</math> è una stringa casualmente generata lunga <math>k_0</math> bit.
# <math>G</math> espande i <math>k_0</math> bit di <math>r</math> a <math>n-k_0</math> bit.
# <math>X = m00..0 \oplus G(r)</math>
# <math>H</math> riduce gli <math>n-k_0</math> bit di <math>X</math> a <math>k_0</math> bit.
# <math>Y = r \oplus H(X)</math>
# L'output è <math>X \| Y</math>, ovvero la concatenazione di <math>X</math> e <math>Y</math>.
 
Per decifrare:
# recuperare <math>r</math> calcolando <math>Y \oplus H(X)</math>;
# recuperare il messaggio <math>m</math> tramite <math>m00..0 = X \oplus G(r)</math>.
 
La proprietà ''all-or-nothing'' deriva dal fatto che per recuperare il messaggio <math>m</math> si ha bisogno delle intere stringhe <math>X</math> e <math>Y</math>. <math>X</math> è richiesto per ottenere <math>r</math> da <math>Y</math>, e <math>r</math> è richiesta per ottenere <math>m</math> da <math>X</math>. Dato anche una piccolissima modifica all'input di una funzione crittografica di ''hash'' cambia completamente il risultato, <math>X</math> e <math>Y</math> devono essere interamente ottenute. Questo garantisce l'[[Integrità dei dati|integrità]] del messaggio.
 
== Note ==
<references/>
 
== Voci correlate ==
* [[RSA (crittografia)|RSA]]
* [[Key encapsulation]]
 
{{portale|crittografia|sicurezza informatica}}
 
[[Categoria:Crittografia]]
{{CategorizzareDaBot}}
{{Categorizzare|informatica}}