Elliptic Curve Integrated Encryption Scheme
# Elliptic Curve Integrated Encryption Scheme

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 $E$ und Entschlüsselungsalgorithmus $D$

## Systemparameter

* $\mathbb {F} _{p}$, $p$ Primzahl
* Elliptische Kurve E: $Y^{2}=X^{3}+aX+b$ über dem Körper $\mathbb {F} _{p}$
* $P\in E(\mathbb {F} _{p})$ mit $ord(P)=n$ prim
* $h={\frac {\mid E(\mathbb {F} _{p})\mid }{n}}$

## Schlüsselerzeugung

Ein Teilnehmer $A$ wählt einen geheimen Schlüssel $d_{A}\in \{1,...,n-1\}$ zufällig und berechnet daraus seinen öffentlichen Schlüssel $EK_{A}=d_{A}P$.

## Verschlüsselung

Um eine Nachricht $m\in \{0,1\}^{*}$ mit einem öffentlichen Schlüssel $EK_{A}$ zu verschlüsseln, wird ein Diffie-Hellman-Schlüsselaustausch in einer elliptischen Kurve mit einem symmetrischen Verfahren kombiniert.
* Wähle eine Zufallszahl $k\in \{1,...,n-1\}$
* Berechne $R=kP$ und $Z=hk\cdot EK_{A}$
* Bestimme die symmetrischen Schlüssel $k_{1}||k_{2}=KDF(Z_{x})$. $Z_{x}$ ist die x-Koordinate von $Z$
* Berechne $C=E_{k_{1}}(m)$ und $T=MAC_{k_{2}}(C)$
* Sende $(R,C,T)$

## Entschlüsselung

Um ein Chiffrat $(R,C,T)$ mit einem geheimen Schlüssel $d_{A}$ zu entschlüsseln, werden die folgenden Schritte durchgeführt.
* Berechne $Z=hd_{A}R$
* Bestimme die beiden Schlüssel $k_{1}||k_{2}=KDF(Z_{x})$
* Prüfe ob $T=MAC_{k_{2}}(C)$ ist
* Erhalte $m=D_{k_{1}}(C)$

## Fazit

ECIES arbeitet korrekt, wenn $Z$ korrekt berechnet wird. Da $hd_{A}R=hk\cdot EK_{A}=hd_{A}kP$ ist, ist dies validiert.

## Quellen

* Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone: Handbook of Applied Cryptography. CRC Press, ISBN 0-8493-8523-7 (uwaterloo.ca).
* Victor Shoup: A proposal for an ISO standard for public key encryption, Version 2.1, December 20, 2001 (PDF, 384 kB).