Optimal Asymmetric Encryption Padding

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

In crittografia, Optimal Asymmetric Encryption Padding (OAEP) è uno schema di padding spesso utilizzato assieme a RSA. OAEP è stato introdotto da Bellare e Rogaway,[1] e successivamente standardizzato in PKCS #1 v2 e RFC 2437.

L'algoritmo OAEP è una sorta di rete di Feistel che utilizza coppie di oracoli random e per effettuare un preprocessing su un messaggio da cifrare asimmetricamente. Se usato in combinazione con una funzione botola sicura, questo metodo è considerato semanticamente sicuro all'interno del modello a oracolo random contro attacchi di tipo chosen plaintext. In casi particolari (ad esempio, con RSA), OAEP è stato provato essere sicuro anche contro attacchi di tipo chosen ciphertext. OAEP può essere utilizzato per costruire una trasformazione all-or-nothing ("tutto o niente"), come spiegato in seguito.

OAEP soddisfa i due obiettivi seguenti:

  1. Aggiunge una componente di casualità che può essere usata per convertire uno schema di crittazione deterministico (come RSA) in uno probabilistico.
  2. 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[modifica | modifica wikitesto]

Diagramma dell'algoritmo OAEP

Nel diagramma a destra:

  • è il numero di bit nel modulo RSA.
  • e sono costanti intere fissate nel protocollo.
  • è il messaggio in chiaro, una stringa lunga bit
  • e sono due funzioni crittografiche di hash fissate nel protocollo.
  • ⊕ è l'operatore XOR.

Per cifrare:

  1. al messaggio m va applicato un padding di zeri per arrivare ad una lunghezza di bit.
  2. è una stringa casualmente generata lunga bit.
  3. espande i bit di a bit.
  4. riduce gli bit di a bit.
  5. L'output è , ovvero la concatenazione di e .

Per decifrare:

  1. recuperare calcolando ;
  2. recuperare il messaggio tramite .

La proprietà all-or-nothing deriva dal fatto che per recuperare il messaggio si ha bisogno delle intere stringhe e . è richiesto per ottenere da , e è richiesta per ottenere da . Dato anche una piccolissima modifica all'input di una funzione crittografica di hash cambia completamente il risultato, e devono essere interamente ottenute. Questo garantisce l'integrità del messaggio.

Note[modifica | modifica wikitesto]

  1. ^ M. Bellare, 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. Versione integrale (pdf) Archiviato l'8 luglio 2008 in Internet Archive.

Voci correlate[modifica | modifica wikitesto]