Cramer-Shoup-Kryptosystem

Das Cramer-Shoup-Kryptosystem ist ein von Ronald Cramer und Victor Shoup entwickeltes asymmetrisches Kryptosystem, das als eine Erweiterung des Elgamal-Verschlüsselungsverfahrens aufgefasst werden kann.[1] Es war das erste praktikable Verschlüsselungsverfahren, das im Standardmodell (ohne Zufallsorakel) gegen adaptive Chosen-Ciphertext-Angriffe sicher war. Die Sicherheit des Verfahrens beruht auf der Schwierigkeit des Decisional-Diffie-Hellman-Problems.

Das Verfahren

Wie alle asymmetrischen Verschlüsselungen besteht auch das Cramer-Shoup-Verfahren aus drei Algorithmen.

Schlüsselerzeugung

  • Zuerst wählt man eine (hier multiplikativ geschriebene) zyklische Gruppe G {\displaystyle G} von Primordnung q {\displaystyle q} und in dieser zwei Erzeuger g 1 , g 2 {\displaystyle g_{1},g_{2}} . Zusätzlich muss noch eine kryptologische Hashfunktion H {\displaystyle H} festgelegt werden. Diese Werte sind öffentliche Parameter und können von mehreren Benutzern gleichzeitig genutzt werden.
  • Dann werden als geheimer Schlüssel zufällige x 1 , x 2 , y 1 , y 2 , z Z q {\displaystyle x_{1},x_{2},y_{1},y_{2},z\in \mathbb {Z} _{q}} gewählt.
  • Aus diesen wird der öffentliche Schlüssel c = g 1 x 1 g 2 x 2 , d = g 1 y 1 g 2 y 2 , h = g 1 z {\displaystyle c=g_{1}^{x_{1}}g_{2}^{x_{2}},d=g_{1}^{y_{1}}g_{2}^{y_{2}},h=g_{1}^{z}} berechnet.

Verschlüsselung

Um eine Nachricht m G {\displaystyle m\in G} mit dem öffentlichen Schlüssel ( c , d , h ) {\displaystyle (c,d,h)} zu verschlüsseln geht man wie folgt vor:

  • Es wird ein zufälliges r Z q {\displaystyle r\in \mathbb {Z} _{q}} gewählt.
  • u 1 = g 1 r , u 2 = g 2 r {\displaystyle u_{1}=g_{1}^{r},u_{2}=g_{2}^{r}}
  • e = h r m {\displaystyle e=h^{r}m} Das ist die Verschlüsselung der Nachricht wie bei ElGamal.
  • α = H ( u 1 , u 2 , e ) {\displaystyle \alpha =H(u_{1},u_{2},e)} , wobei H {\displaystyle H} eine universal-one-way Hashfunktion oder eine kollisionsresistente Hashfunktion ist.
  • v = c r d r α {\displaystyle v=c^{r}d^{r\alpha }} . Dieses Element stellt sicher, dass ein Angreifer nicht Teile des Chiffrats benutzen kann um weitere Chiffrate zu erzeugen und sichert so die für die Sicherheit notwendige Nicht-Verformbarkeit

Das Chiffrat besteht dann aus ( u 1 , u 2 , e , v ) {\displaystyle (u_{1},u_{2},e,v)} .

Entschlüsselung

Um ein Chiffrat ( u 1 , u 2 , e , v ) {\displaystyle (u_{1},u_{2},e,v)} mit dem geheimen Schlüssel ( x 1 , x 2 , y 1 , y 2 , z ) {\displaystyle (x_{1},x_{2},y_{1},y_{2},z)} zu entschlüsseln führt man zwei Schritte durch.

  • Zuerst berechnet man α = H ( u 1 , u 2 , e ) {\displaystyle \alpha =H(u_{1},u_{2},e)} und überprüft ob u 1 x 1 u 2 x 2 ( u 1 y 1 u 2 y 2 ) α = v {\displaystyle u_{1}^{x_{1}}u_{2}^{x_{2}}(u_{1}^{y_{1}}u_{2}^{y_{2}})^{\alpha }=v} . Falls das nicht der Fall ist, wird die Entschlüsselung abgebrochen und eine Fehlermeldung ausgegeben.
  • Falls nicht, berechnet man den Klartext m = e / ( u 1 z ) {\displaystyle m=e/(u_{1}^{z})} .

Korrektheit

Die Korrektheit des Verfahrens folgt aus

u 1 z = g 1 r z = h r {\displaystyle u_{1}^{z}=g_{1}^{rz}=h^{r}} und m = e / h r {\displaystyle m=e/h^{r}} .

Instanziierung

Als Sicherheitsniveau wählen wir die Standardlänge für generische Anwendungen von 128 bit.[2] Daraus ergibt sich eine Ausgabelänge von 256 bit für die Hashfunktion.[2] SHA-256 kann als kollisionsresistent angenommen werden.[3]

Man braucht eine Gruppe, in welcher das Decisional-Diffie-Hellman-Problem schwierig zu berechnen ist, wie etwa Z p {\displaystyle \mathbb {Z} _{p}^{*}} . Dazu wählt man eine Primzahl p {\displaystyle p} mit einer Länge von 3248 bit, so dass die Gruppe eine multiplikative Untergruppe von Primordnung q {\displaystyle q} hat, wobei q {\displaystyle q} eine Länge von 256 bit haben sollte[2]. Das heißt, dass q | ( p 1 ) {\displaystyle q|(p-1)} gelten muss. Aus der Wahl der Parameter ergibt sich eine Länge von 5 256 = 1280 {\displaystyle 5\cdot 256=1280} bit für den geheimen Schlüssel, und 3 3248 = 9744 {\displaystyle 3\cdot 3248=9744} bit für den öffentlichen Schlüssel. Ein Chiffrat ist 4 3248 = 12992 {\displaystyle 4\cdot 3248=12992} bit lang.

Einzelnachweise

  1. Ronald Cramer and Victor Shoup: A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack. In: Proceedings of Crypto 1998. 1998, S. 13–25 (englisch, cwi.nl). 
  2. a b c European Network of Excellence in Cryptology II (Hrsg.): ECRYPT II Yearly Report on Algorithms and Keysizes (2009–2010). 2010, S. 30–32 (englisch, ecrypt.eu.org [PDF; 2,4 MB]).  Originals vom 21. August 2010 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.@1@2Vorlage:Webachiv/IABot/www.ecrypt.eu.org
  3. European Network of Excellence in Cryptology II (Hrsg.): ECRYPT II Yearly Report on Algorithms and Keysizes (2009–2010). 2010, S. 52 (englisch, ecrypt.eu.org [PDF; 2,4 MB]).  PDF 2,4MB (Memento des Originals vom 21. August 2010 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.@1@2Vorlage:Webachiv/IABot/www.ecrypt.eu.org