Optimal Asymmetric Encryption Padding

Optimal Asymmetric Encryption Padding – schemat szyfrowania przypominający sieć Feistela, wymyślony w 1994 przez Bellare’a i Rogawaya. OAEP jest często stosowany w połączeniu z RSA do wstępnego zaszyfrowania wiadomości. OAEP wykorzystuje dwie funkcje haszujące, a także dodaje element losowości, przez co jest schematem niedeterministycznym. OAEP zapewnia bezpieczeństwo „all-or-nothing”, co oznacza, że adwersarz nie może odszyfrować części kryptogramu niezależnie od jego całości. Wynika to z faktu zastosowania funkcji haszujących.

Schemat OAEP

Schemat OAEP
  • n {\displaystyle n} – długość w bitach modułu RSA,
  • k 0 {\displaystyle k_{0}} i k 1 {\displaystyle k_{1}} – ustalone liczby całkowite,
  • m {\displaystyle m} – wiadomość długości ( n k 0 k 1 ) {\displaystyle (n-k_{0}-k_{1})} bitów,
  • G {\displaystyle G} i H {\displaystyle H} – ustalone funkcje haszujące.

Algorytm szyfrowania:

  • konkatenujemy wiadomość m {\displaystyle m} z ciągiem k 1 {\displaystyle k_{1}} zer, otrzymując ciąg m 00...0 {\displaystyle m00...0} długości ( n k 0 ) {\displaystyle (n-k_{0})} bitów,
  • generujemy losowy ciąg r {\displaystyle r} długości k 0 {\displaystyle k_{0}} bitów,
  • wykonujemy G ( r ) , {\displaystyle G(r),} otrzymując ciąg długości ( n k 0 ) {\displaystyle (n-k_{0})} bitów,
  • X = m 00...0 G ( r ) , {\displaystyle X=m00...0\oplus G(r),}
  • Y = H ( X ) r , {\displaystyle Y=H(X)\oplus r,}
  • wynikiem jest konkatenacja X | | Y . {\displaystyle X||Y.}

Algorytm deszyfrowania:

  • r = Y H ( X ) , {\displaystyle r=Y\oplus H(X),}
  • m 00...0 = X G ( r ) . {\displaystyle m00...0=X\oplus G(r).}