Paillier-Kryptosystem
Das Paillier-Kryptosystem wurde 1999 von Pascal Paillier an der Eurocrypt vorgestellt[1]. Es handelt sich dabei um ein asymmetrisches Kryptosystem, dessen Sicherheit darauf beruht, dass für einen zusammengesetzten Modul nicht effizient geprüft werden kann, ob ein eine -te Wurzel modulo besitzt oder nicht.
Das Verfahren wird oft als Nachfolger des Okamoto–Uchiyama-Kryptosystems bezeichnet. Desweiteren ist es ein Spezialfall des Damgård-Jurik-Kryptosystems.
Verfahren
Im folgenden beschreiben wir die Schlüsselerzeugung, und die Algorithmen zur Ver- und Entschlüsselung von Nachrichten.
Erzeugung des öffentlichen und privaten Schlüssels
Das Schlüsselpaar wird folgendermaßen generiert:
- Man generiert zwei zufällige Primzahlen , sodass gilt. In der Praxis sollte n zumindest 1024, besser jedoch 1536 oder 2048 Binärstellen haben. Man setzt dann sowie .
- Man wählt zufällig in , sodass die Ordnung von teilt, indem man prüft, ob existiert.
- Dabei beschreibt die logarithmische Funktion, dh., es ist , wobei die Division nicht modulo , sondern in den ganzen Zahlen durchzuführen ist (bei nicht-ganzzahligen ist abzurunden.
Der öffentliche Schlüssel besteht aus , der private Schlüssel aus </math>(\lambda,\mu)</math>.
Vereinfachung: Die Schlüsselerzeugung kann auch folgendermassen vereinfacht werden:
- Man wählt einen Sicherheitsparameter , und die beiden Primzahlen zufällig in , also mit gleicher Bitlänge.
- Man definiert , sowie und .
Verschlüsseln von Nachrichten
Um eine Nachricht zu verschlüsseln, verfährt man wie folgt:
- Zuerst wählt man ein zufälliges .
- Die verschlüsselte Nachricht ist dann gegen durch .
Entschlüsseln von Nachrichten (Decodierung)
Zum Entschlüsseln eines Schlüsseltexts verfährt man wie folgt:
- Man setzt , wobei die logarithmische Funktion von oben ist.
Sicherheit
Unter der Decisional Compisite Residuosity-Annahme kann gezeigt werden, dass das Verfahren semantisch sicher gegen gewählte-Klartext Angriffe ist. Diese Annahme besagt, dass für einen zusammengesetzten Modul nicht effizient geprüft werden kann, ob ein eine -te Wurzel modulo besitzt oder nicht.
Aufgrund der nachstehenden Homomorphieeigenschaften ist das Verfahren allerdings nicht sicher unter gewählten Schlüsseltext-Angriffen. Es gibt in der Literatur jedoch mehrere Lösungen für dieses Problem[2][3].
Probleme der Homomorphieeigenschaften
Das Paillier-Kryptosystem ist additiv-homomorph, wodurch durch Operationen auf Schlüsseltexte unbekannte Klartexte addiert werden können:
- Durch Multiplikation von zwei Schlüsseltexten werden die verschlüsselten Klartexte addiert:
- .
- Dabei sind manchmal zwei Sonderfälle von besonderem Interesse:
- Durch Multiplikation eines Schlüsseltextes mit kann ein beliebiger Wert zum verschlüsselten Klartext addiert werden:
- Durch Multiplikation eines Schlüsseltextes mit kann ein eine Verschlüsselung von erneut randomisiert werden, ohne die Nachricht zu ändern:
- Durch Exponentiation eines Schlüsseltexts mit einer natürlichen Zahl kann die verschlüsselte Nachricht ver-w-facht werden
- .
Allerdings gibt es keine bekannte Möglichkeit, um durch Operationen auf zwei Schlüsseltexten die enthaltenen Nachrichten miteinander zu multiplizieren.
Links und Quellen
Referenzen
- ↑ Pascal Paillier: Public-Key Cryptosystems Based on Composite Degree Residuosity Classes In: Eurocrypt 99, Springer Verlag, 1999, S. 223-238 (englisch).
- ↑ Eiichiro Fujisaki und Tatsuako Okamoto: How to Enhance the Security of Public-Key Encryption at Minimum Cost In: PKC 99, Springer Verlag, 1999, S. 53-68 (englisch).
- ↑ Pascal Paillier und David Pointcheval: Efficient Public-Key Cryptosystems Provably Secure Against Active Adversaries In: ASIACRYPT 99, Springer Verlag, 1999, S. 53-68 (englisch).
Externe Links
- thep implementiert das Paillier-Kryptosystem in Java.