Zum Inhalt springen

Elliptic Curve Integrated Encryption Scheme

aus Wikipedia, der freien Enzyklopädie

Das Elliptic Curve Integrated Encryption Scheme (ECIES) ist ein hybrides Verschlüsselungsverfahren, dem elliptische Kurven zugrunde liegen. Als Hybridverfahren kombiniert es ein asymmetrisches Verfahren, das zum Versenden eines symmetrischen Schlüssels benutzt wird, mit einem symmetrischen Verschlüsselungsverfahren, das mit diesem symmetrischen Schlüssel die Nachricht verschlüsselt. ECIES ist im Random-Oracle-Modell sicher gegen Chosen-Ciphertext-Angriffe.

Einrichtung des Schemas

Folgende Hilfsmittel werden benötigt:

  • KDF (Key Derivation Function): eine kryptographische Hashfunktion, die Schlüssel beliebiger Länge erzeugen kann
  • MAC (Message Authentication Code)
  • Ein symmetrisches Verschlüsselungsverfahren mit Verschlüsselungsalgorithmus <math>E</math> und Entschlüsselungsalgorithmus <math>D</math>

Systemparameter

  • <math>\mathbb F_{p}</math>, <math>p</math> Primzahl
  • Elliptische Kurve E: <math>Y^{2}=X^{3}+aX+b</math> über dem Körper <math>\mathbb F_{p}</math>
  • <math>P \in E(\mathbb F_{p})</math> mit <math>ord(P)= n</math> prim
  • <math>h = \frac{\mid E(\mathbb F_{p}) \mid}{n}</math>

Schlüsselerzeugung

Ein Teilnehmer <math>A</math> wählt einen geheimen Schlüssel <math>d_A \in \{1,...,n-1\}</math> zufällig und berechnet daraus seinen öffentlichen Schlüssel <math>EK_A = d_A P</math>.

Verschlüsselung

Um eine Nachricht <math>m\in\{0,1\}^{*}</math> mit einem öffentlichen Schlüssel <math>EK_A</math> zu verschlüsseln, wird ein Diffie-Hellman-Schlüsselaustausch in einer elliptischen Kurve mit einem symmetrischen Verfahren kombiniert.

  1. Wähle eine Zufallszahl <math> k\in\{1,...,n-1\}</math>
  2. Berechne <math>R=kP</math> und <math>Z=hk \cdot EK_A</math>
  3. Bestimme die symmetrischen Schlüssel <math>k_1||k_2 = KDF(Z_x)</math>. <math>Z_x</math> ist die x-Koordinate von <math>Z</math>
  4. Berechne <math>C = E_{k_1}(m)</math> und <math>T = MAC_{k_2}(C)</math>
  5. Sende <math>(R, C, T)</math>

Entschlüsselung

Um ein Chiffrat <math>(R, C, T)</math> mit einem geheimen Schlüssel <math>d_A</math> zu entschlüsseln, werden die folgenden Schritte durchgeführt.

  1. Berechne <math>Z=hd_A R</math>
  2. Bestimme die beiden Schlüssel <math>k_1||k_2 = KDF(Z_x)</math>
  3. Prüfe ob <math>T = MAC_{k_2}(C)</math> ist
  4. Erhalte <math>m = D_{k_1}(C)</math>

Fazit

ECIES arbeitet korrekt, wenn <math>Z</math> korrekt berechnet wird. Da <math>hd_A R = hk \cdot EK_A = h d_A k P</math> ist, ist dies validiert.

Quellen