Optimal Asymmetric Encryption Padding

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 pur non essendo in grado di invertire la funzione botola su cui si basa l'algoritmo di crittazione.

FunzionamentoModifica

 
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.  
  5.   riduce gli   bit di   a   bit.
  6.  
  7. 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 funziona crittografica di hash cambia completamente il risultato,   e   devono essere interamente ottenute. Questo garantisce l'integrità del messaggio.

NoteModifica

  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)

Voci correlateModifica