Optimal Asymmetric Encryption Padding

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 23. Juni 2012 um 14:50 Uhr durch MarioS (Diskussion | Beiträge) (Referenzen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Optimal Asymmetric Encryption Padding, auf Deutsch etwa Optimales asymmetrisches Verschlüsselungs-Padding, oft auch abgekürzt als OAEP, ist ein kryptographisches Paddingverfahren. Es ist eine spezielle Form eines Feistelnetzwerks, mit welchem im Zufallsorakel-Modell aus einer beliebigen Falltürpermutation ein gegen Gewählte-Klartext-Angriffe semantisch sicheres Kryptosystem gebaut werden kann. Das Verfahren wurde 1994 von Mihir Bellare und Philipp Rogaway veröffentlicht.[1]

Verfahren

 
Ablauf der OAEP Schemas. In der Grundversion des Verfahrens ist k1=0.
Die Ausgabe X, Y dienst als Eingabewert für die Falltürpermutation f.

Es sei   ein Sicherheitsparameter, und   so, dass ein Angreifer nur deutlich weniger als   Rechenschritte ausführen kann.

Weiters seien   eine Falltürpermutation auf Nachrichten mit   Bits, und   die Länge der Nachrichten, welche übertragen werden sollen.

Schließlich seien   und   kryptographische Hashfunktionen.

Verschlüsselung

Um eine  -Bit Nachricht   zu verschlüsseln, verfährt man nun wie folgt:

  • Man wählt   als eine zufällige Folge von   Bits.
  • Dann berechnet man
  und  .
  • Der Schlüsseltext   ist dann gegeben als:
 ,
wobei   hier für Konkatenation steht.

Entschlüsselung

Um die Nachricht   zu rekonstruieren, führt man die folgenden Schritte aus:

  • Zuerst verwendet man die Falltür, um
 
zu berechnen.
  • Nun rekonstruiert man den Zufallswert   als
 .
  • Schließlich erhält man die Nachricht   wieder als
  .

Varianten

Durch eine einfache Modifikation des obigen Protokolls kann man auch IND-CCA1 Sicherheit, also Sicherheit gegen Gewählte-Schlüsseltext-Angriffe erreichen. Dazu reduziert man die Länge der Nachricht   auf   Bits, und konkatiniert sie mit   Nullen. Beim Entschlüsseln prüft man, ob der rekonstruierte Wert die korrekte Form hat, und bricht ansonsten ab.

Victor Shoup präsentierte eine Erweiterung des Verfahrens, mit welcher für jede beliebige Falltürpermutation auch IND-CCA2 Sicherheit erreicht werden kann.[2]

RSA-OAEP

Der Grund für die Entwicklung von OAEP war die Suche nach einer Möglichkeit, mit RSA sicher (im Sinn von IND-CCA2-Sicherheit) zu verschlüsseln. Wird bei OAEP als Falltürpermutation RSA verwendet, so wird das Verfahren als RSA-OAEP bezeichnet. Obwohl OAEP im allgemeinen Fall dieses Sicherheitsniveau nicht erreicht, ist RSA-OAEP im Zufallsorakel-Modell und unter der RSA-Annahme IND-CCA2-sicher.[3]

Da das Ergebnis des OAEP-Encodings eine Zahl zwischen 0 und   ist, der  -bit RSA-Modulus   aber kleiner als   ist, kann es vorkommen, dass das Ergebnis des OAEP-Encodings einen größeren numerischen Wert hat als der RSA-Modulus. Dies darf aber nicht passieren, da in diesem Fall die Entschlüsselung nicht mehr eindeutig ist. Daher muss in einem solchen Fall das OAEP-Encoding mit neuem Zufall   wiederholt werden.

RSA-OAEP wurde in PKCS#1 und RFC 3447 standardisiert, wobei die verwendete Hashfunktion ein Parameter der Verfahrens ist, also nicht festgelegt wurde. Unter diesen Umständen, also ohne Zufallsorakel, ist RSA-OAEP unter der Phi-hiding Annahme IND-CPA sicher, falls die verwendete Hashfunktion t-wise independent ist.[4] Bei der Standardisierung wurde allerdings eine Änderung vogenommen, durch die das Verfahren nicht mehr beweisbar sicher ist: Um das oben angesprochene Wiederholen des OAEP-Encodings zu vermeiden wurde festgelegt, dass das Ergebnis von OAEP um 8 Bit kürzer sein muss als der RSA-Modulus; die ersten 8 Bit werden mit 0 aufgefüllt. Der Empfänger muss beim Entschlüsseln überprüfen, ob die ersten 8 Bit den Wert 0 haben, und abbrechen, falls nicht. Falls ein Angreifer unterscheiden kann, ob eine Entschlüsselung aus diesem oder aus einem anderen Grund abgebrochen wurde, gibt es einen Angriff, der ohne den geheimen Schlüssel den kompletten Klartext zurückgewinnt.[5] Dafür benötigt er nur ca. 1000 Anfragen an ein Fehlerorakel, das lediglich ausgibt ob und aus welchem Grund ein Entschlüsselungsversuch gescheitert ist. Solche Orakel können beispielsweise bei TLS/SSL-Verbindungen auftreten, dort wurde der Angriff auch in der Praxis durchgeführt.

Referenzen

  1. Mihir Bellare und Philipp Rogaway: Optimal Asymmetric Encryption -- How to encrypt with RSA. (PDF) In: EUROCRYPT 94. Springer Verlag, S. 92-111, abgerufen am 21. Juni 2012 (englisch).
  2. Victor Shoup: OAEP Reconsidered. (PDF) In: CRYPTO 01. Springer Verlag, S. 239-259, abgerufen am 21. Juni 2012 (englisch).
  3. Eiichiro Fujisaki, Tatsuaki Okamoto, David Pointcheval, Jacques Stern: RSA-OAEP is Secure under the RSA Assumption. In: Journal of Cryptology. Band 17, Nr. 2. Springer, 2004, S. 81−104 (ens.fr [PDF]).
  4. Eike Kiltz, Adam O'Neill, Adam Smith: Instantiability of RSA-OAEP under Chosen-Plaintext Attack. In: CRYPTO 2010 (= Lecture Notes in Computer Science). vol. 6223. Springer, 2010, S. 295−313 (iacr.org [PDF]).
  5. James Manger: A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0. In: CRYPTO 2001 (= Lecture Notes in Computer Science). vol. 2139. Springer, 2001, S. 260−274 (ethz.ch [PDF]).