„Optimal Asymmetric Encryption Padding“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
gewählt bezieht sich nicht auf den Angriff |
tk kl |
||
(6 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''Optimal Asymmetric Encryption Padding''', auf Deutsch etwa ''Optimales asymmetrisches Verschlüsselungs-Padding'', oft auch abgekürzt als '''OAEP''', ist ein [[Kryptographie|kryptographisches]] [[Padding (Informatik)|Paddingverfahren]]. Es ist eine spezielle Form eines [[Feistelchiffre|Feistelnetzwerks]], mit welchem im [[Zufallsorakel]]-Modell aus einer beliebigen [[Einwegfunktion#Einwegfunktionen mit Falltür (Trapdoor-Einwegfunktionen)|Falltürpermutation]] ein gegen [[Ciphertext Indistinguishability#Definition von IND-CPA|Gewählter-Klartext-Angriffe]] semantisch sicheres Verschlüsselungsverfahren gebaut werden kann. Wenn OAEP mit der Falltürpermutation RSA verwendet wird, ist das nun RSA-OAEP genannte Verfahren sogar sicher gegen Gewähltes-Chiffrat-Angriffe ([[IND-CCA]]). Das Verfahren wurde 1994 von [[Mihir Bellare]] und [[Phillip Rogaway]] veröffentlicht.<ref name="BR">{{Literatur | |
'''Optimal Asymmetric Encryption Padding''', auf Deutsch etwa ''Optimales asymmetrisches Verschlüsselungs-Padding'', oft auch abgekürzt als '''OAEP''', ist ein [[Kryptographie|kryptographisches]] [[Padding (Informatik)|Paddingverfahren]]. Es ist eine spezielle Form eines [[Feistelchiffre|Feistelnetzwerks]], mit welchem im [[Zufallsorakel]]-Modell aus einer beliebigen [[Einwegfunktion#Einwegfunktionen mit Falltür (Trapdoor-Einwegfunktionen)|Falltürpermutation]] ein gegen [[Ciphertext Indistinguishability#Definition von IND-CPA|Gewählter-Klartext-Angriffe]] semantisch sicheres Verschlüsselungsverfahren gebaut werden kann. Wenn OAEP mit der Falltürpermutation RSA verwendet wird, ist das nun RSA-OAEP genannte Verfahren sogar sicher gegen Gewähltes-Chiffrat-Angriffe ([[IND-CCA]]). Das Verfahren wurde 1994 von [[Mihir Bellare]] und [[Phillip Rogaway]] veröffentlicht.<ref name="BR">{{Literatur |Autor=[[Mihir Bellare]], [[Phillip Rogaway]] |Titel=Optimal Asymmetric Encryption – How to encrypt with RSA |Sammelwerk=EUROCRYPT 94 |Reihe=Lecture Notes in Computer Science |Band=950 |Verlag=Springer |Datum=1994 |Seiten=92–111 |Online=http://cseweb.ucsd.edu/~mihir/papers/oae.pdf |Format=PDF |KBytes= |Abruf=}} {{Webarchiv |url=http://cseweb.ucsd.edu/~mihir/papers/oae.pdf |text=Optimal Asymmetric Encryption – How to encrypt with RSA. |wayback=20181105145454 |archiv-bot=2022-12-24 02:56:06 InternetArchiveBot}} cseweb.ucsd.edu</ref> |
||
== Verfahren == |
== Verfahren (Grundvariante) == |
||
[[Datei:Oaep-diagram-20080305.png| |
[[Datei:Oaep-diagram-20080305.png|mini|300px|Ablauf der OAEP-Schemas in der CCA-Variante (siehe Abschnitt ''Varianten''). In der Grundversion des Verfahrens ist ''k<sub>1</sub>=0'', d. h., es werden keine Nullen angehängt.<br />Die Ausgabe ''X, Y'' dient als Eingabewert für die Falltürpermutation ''f''.]] |
||
Es sei <math>n</math> ein Sicherheitsparameter, und <math>k_0</math> so groß, dass ein Angreifer nur deutlich weniger als <math>2^{k_0}</math> Rechenschritte ausführen kann. |
Es sei <math>n</math> ein Sicherheitsparameter, und <math>k_0</math> so groß, dass ein Angreifer nur deutlich weniger als <math>2^{k_0}</math> Rechenschritte ausführen kann. |
||
Zeile 12: | Zeile 12: | ||
=== Verschlüsselung === |
=== Verschlüsselung === |
||
Um eine <math>k</math>-Bit Nachricht <math>m</math> zu verschlüsseln, verfährt man nun wie folgt: |
Um eine <math>k</math>-Bit Nachricht <math>m</math> zu verschlüsseln, verfährt man nun wie folgt: |
||
*Man wählt <math>r\in\{0,1\}^{k_0}</math> als eine zufällige Folge von <math>k_0</math> Bits. |
* Man wählt <math>r\in\{0,1\}^{k_0}</math> als eine zufällige Folge von <math>k_0</math> Bits. |
||
*Dann berechnet man |
* Dann berechnet man |
||
** <math>X = m\oplus G(r)</math> und <math>Y=r\oplus H(m\oplus G(r))</math>. |
|||
*Der Schlüsseltext <math>c</math> ist dann gegeben als: |
* Der Schlüsseltext <math>c</math> ist dann gegeben als: |
||
** <math>c = f(X||Y)</math>,<br /> wobei <math>||</math> hier für [[Konkatenation (Listen)|Konkatenation]] steht. |
|||
:wobei <math>||</math> hier für [[Konkatenation (Listen)|Konkatenation]] steht. |
|||
=== Entschlüsselung === |
=== Entschlüsselung === |
||
Um die Nachricht <math>m</math> zu rekonstruieren, führt man die folgenden Schritte aus: |
Um die Nachricht <math>m</math> zu rekonstruieren, führt man die folgenden Schritte aus: |
||
* Zuerst verwendet man die Falltür, um |
* Zuerst verwendet man die Falltür, um zu berechnen: |
||
** <math>Z=(X||Y)=f^{-1}(c)</math> |
|||
:zu berechnen. |
|||
* Nun rekonstruiert man den Zufallswert <math>r</math> als |
* Nun rekonstruiert man den Zufallswert <math>r</math> als |
||
** <math>r=Y\oplus H(X)</math>. |
|||
* Schließlich erhält man die Nachricht <math>m</math> wieder als |
* Schließlich erhält man die Nachricht <math>m</math> wieder als |
||
** <math>m=X\oplus G(r)</math>. |
|||
== Varianten == |
== Varianten == |
||
Durch eine einfache Modifikation des obigen Protokolls kann man auch IND-CCA1 Sicherheit, also Sicherheit gegen [[Ciphertext Indistinguishability#IND-CCA|Gewählte-Schlüsseltext-Angriffe]] erreichen. Dazu reduziert man die Länge der Nachricht <math>m</math> auf <math>k-k_1</math> Bits, und konkateniert sie mit <math>k_1</math> Nullen. Beim Entschlüsseln prüft man, ob der rekonstruierte Wert die korrekte Form hat, und bricht ansonsten ab. |
Durch eine einfache Modifikation des obigen Protokolls kann man auch IND-CCA1 Sicherheit, also Sicherheit gegen [[Ciphertext Indistinguishability#IND-CCA|Gewählte-Schlüsseltext-Angriffe]] erreichen. Dazu reduziert man die Länge der Nachricht <math>m</math> auf <math>k-k_1</math> Bits, und konkateniert sie mit <math>k_1</math> 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.<ref name="Shoup">{{Literatur | |
[[Victor Shoup]] präsentierte eine Erweiterung des Verfahrens, mit welcher für jede beliebige Falltürpermutation auch IND-CCA2 Sicherheit erreicht werden kann.<ref name="Shoup">{{Literatur |Autor=Victor Shoup |Titel=OAEP Reconsidered |Sammelwerk=CRYPTO 2001 |Reihe=Lecture Notes in Computer Science |Band=vol. 2139 |Verlag=Springer |Datum=2001 |Seiten=239–259 |Online=http://www.shoup.net/papers/oaep.pdf}}</ref> |
||
== RSA-OAEP == |
== RSA-OAEP == |
||
Zeile 39: | Zeile 37: | ||
Da das Ergebnis des OAEP-Encodings eine Zahl zwischen 0 und <math>2^n</math> ist, der <math>n</math>-bit RSA-Modulus <math>N</math> aber kleiner als <math>2^n</math> 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 <math>r</math> wiederholt werden. |
Da das Ergebnis des OAEP-Encodings eine Zahl zwischen 0 und <math>2^n</math> ist, der <math>n</math>-bit RSA-Modulus <math>N</math> aber kleiner als <math>2^n</math> 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 <math>r</math> wiederholt werden. |
||
RSA-OAEP wurde in [[PKCS |
RSA-OAEP wurde in [[Public-Key Cryptography Standards|PKCS#1]] und <nowiki>RFC 3447</nowiki><ref>{{RFC-Internet |RFC=3447 |Titel=Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1 |Datum=2003-02}}</ref> standardisiert, wobei die verwendete Hashfunktion ein Parameter des 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.<ref name="KONS" /> |
||
Bei der Standardisierung wurde allerdings eine Änderung vorgenommen, 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 |
Bei der Standardisierung wurde allerdings eine Änderung vorgenommen, 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.<ref name="Manger" /> 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 [[Transport Layer Security|TLS/SSL]]-Verbindungen auftreten, dort wurde der Angriff auch in der Praxis durchgeführt. |
||
== |
== Einzelnachweise == |
||
<references> |
<references> |
||
<ref name="FOPS">{{Literatur |
<ref name="FOPS"> |
||
{{Literatur |
|||
| |
|Autor=Eiichiro Fujisaki, Tatsuaki Okamoto, David Pointcheval, Jacques Stern |
||
| |
|Titel=RSA-OAEP is Secure under the RSA Assumption |
||
| |
|Sammelwerk=Journal of Cryptology |
||
| |
|Band=17 |
||
| |
|Nummer=2 |
||
| |
|Verlag=Springer |
||
| |
|Datum=2004 |
||
| |
|Seiten=81–104 |
||
| |
|Online=http://www.di.ens.fr/users/pointche/Documents/Papers/2004_joc.pdf}} |
||
</ref> |
|||
<ref name="Manger">{{Literatur |
<ref name="Manger"> |
||
{{Literatur |
|||
| |
|Autor=James Manger |
||
| |
|Titel=A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0 |
||
| |
|Sammelwerk=CRYPTO 2001 |
||
| |
|Reihe=Lecture Notes in Computer Science |
||
| |
|Band=2139 |
||
| |
|Verlag=Springer |
||
| |
|Datum=2001 |
||
| |
|Seiten=260–274 |
||
| |
|Online=http://archiv.infsec.ethz.ch/education/fs08/secsem/Manger01.pdf |
||
|Format=PDF |
|||
⚫ | |||
|KBytes= |
|||
⚫ | |||
|Abruf=}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
| Sammelwerk=CRYPTO 2010 |
|||
{{Literatur |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
| |
|Sammelwerk=CRYPTO 2010 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
|Datum=2010 |
|||
⚫ | |||
⚫ | |||
|Format=PDF |
|||
|KBytes= |
|||
|Abruf=}} |
|||
⚫ | |||
</references> |
</references> |
||
Aktuelle Version vom 29. Juni 2023, 17:49 Uhr
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ählter-Klartext-Angriffe semantisch sicheres Verschlüsselungsverfahren gebaut werden kann. Wenn OAEP mit der Falltürpermutation RSA verwendet wird, ist das nun RSA-OAEP genannte Verfahren sogar sicher gegen Gewähltes-Chiffrat-Angriffe (IND-CCA). Das Verfahren wurde 1994 von Mihir Bellare und Phillip Rogaway veröffentlicht.[1]
Verfahren (Grundvariante)
[Bearbeiten | Quelltext bearbeiten]
Die Ausgabe X, Y dient als Eingabewert für die Falltürpermutation f.
Es sei ein Sicherheitsparameter, und so groß, dass ein Angreifer nur deutlich weniger als Rechenschritte ausführen kann.
Weiter seien eine Familie von Falltürpermutationen auf Nachrichten mit Bits, und die Länge der Nachrichten, welche übertragen werden sollen.
Schließlich seien und kryptographische Hashfunktionen. Das Verschlüsselungsverfahren -OAEP ist nun wie folgt definiert. Die Schlüsselerzeugung besteht in der Wahl von .
Verschlüsselung
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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 konkateniert 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
[Bearbeiten | Quelltext bearbeiten]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 IND-CCA2-Sicherheit nicht erreicht, ist dies für RSA-OAEP im Zufallsorakel-Modell und unter der RSA-Annahme der Fall.[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[4] standardisiert, wobei die verwendete Hashfunktion ein Parameter des 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.[5] Bei der Standardisierung wurde allerdings eine Änderung vorgenommen, 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.[6] 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.
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Mihir Bellare, Phillip Rogaway: Optimal Asymmetric Encryption – How to encrypt with RSA. In: EUROCRYPT 94 (= Lecture Notes in Computer Science). Band 950. Springer, 1994, S. 92–111 (ucsd.edu [PDF]). Optimal Asymmetric Encryption – How to encrypt with RSA. ( des vom 5. November 2018 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. cseweb.ucsd.edu
- ↑ Victor Shoup: OAEP Reconsidered. In: CRYPTO 2001 (= Lecture Notes in Computer Science). vol. 2139. Springer, 2001, S. 239–259 (shoup.net [PDF]).
- ↑ 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]).
- ↑ RFC: – Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1. Februar 2003 (englisch).
- ↑ Eike Kiltz, Adam O’Neill, Adam Smith: Instantiability of RSA-OAEP under Chosen-Plaintext Attack. In: CRYPTO 2010 (= Lecture Notes in Computer Science). Band 6223. Springer, 2010, S. 295–313 (iacr.org [PDF]).
- ↑ 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). Band 2139. Springer, 2001, S. 260–274 (ethz.ch [PDF]).