Das El Gamal Verschlüsselungsverfahren basiert im wesentlichen auf dem Diffie-Hellmann Schlüsseltausch. Dieses asymetrische Kryptosystem eignet sich vor allem für kleine Nachrichten wie Kreditkartennummern oder URLs die zwischen Sender und Empfänger ausgetauscht werden. ElGamal erspart uns hierbei die Aufwendige Kombination von Schlüsselaustausch und einem AES oder RSA Algorithmus.
Betrachten wir den Diffi-Hellmann Schlüsseltausch erneut in Protokollform:
| Alice | Bob |
| wählt einen KA_privat = δ aus { 2, 3, ...., P-2} |
wählt einen KB_privat = φ aus { 2, 3, ...., P-2} |
| berechnet öffentlichen Schlüssel KA_pub = A = αδ | berechnet öffentlichen Schlüssel KB_pub = B = αφ |
| Sende KA_pub an Bob | Sende KB_pub an Alice |
| Berechne Sitzungsschlüssel Ksitzung = KB_pubδ | Berechne Sitzungsschlüssel Ksitzung = KA_pubφ |
Nehmen wir nun eine kleine Nachricht m (Message) die wir mit Diffie-Hellmann verschlüsseln wollen. Auf den ersten Blick wäre y = m XOR KSitzung eine gute Wahl. Diese Methode würde auf dem One Time Pad basieren und wäre halbwegs sicher. Allerdings verwendet die El Gamal Verschlüsselung eine weitere Möglichkeit: y = m * KSitzung
El Gamal Verschlüsselung
- vorgeschlagen im Jahr 1985
Initialisierungsphase
- wähle eine große Primzahl P
- wähle primitives Element A
- wähle privaten Schlüssel a aus { 2; 3; ... ; P - 2 }
- berechne Β = Aα mod P
- Kpub = ( P; A; B)
Ablauf der El Gamal Verschlüsselung
| Alice | Bob |
| Initalisierung; Übertrage Kpub = ( P; A; B) zu Bob | |
|
wählt i aus { 2; 3; ...; P - 2} KSitzung = Bi mod P K = Ai mod P y = m * KSitzungmod P übertrage (y, K) in einer Verbindung |
|
| (Kα)-1 mod P = KSitzung-1 | |
| m = y * KSitzung-1 mod P |
Das Protokoll hält sich nicht an den Ablauf des Diffie-Hellmann Protokolls, dies macht die Verschlüsselung effizienter da praktisch nur zwei Verbindungen nötig sind um Schlüsseltausch und Nachrichtenübertragung durchzuführen.
Korrektheit von El Gamal
wir weisen nach dass bei der Entschlüsselung wieder der Klartext heraus kommt.
y * KSitzung-1 = y * (Kα)-1 = m * KSitzung * ((Ai)α)-1 = m * Bi * A-iα = Aiα * A-iα * m = Aiα-iα * m = A0 * m = m q.e.d.
Praktische Aspekte von El Gamal
Komplexität des Algorithmus
Angenommen Alice und Bob bleiben die gleichen, sind für jede Nachricht m die folgenden Rechenoperationen nötig:
Verschlüsselung:
- Exponentation: KSitzung = Bi mod P
- Exponentation: K = Ai mod P
- Multiplikation: y = m * KSitzungmod P
Entschlüsselung:
- Exponentation: Kα
- Invertierung: (Kα)-1
- Multiplikation: m = y * (Kα)-1
Bei der Entschlüsselung lassen sich die Exponensation und Invertierung in einem Schritt zusammenfassen:
Nach Eulers Theorem gilt Aφ(P) = 1 mod P und AP - 1 = 1 mod P. Daraus folgt für diese Anwendung: (Kα)-1 = K-α * 1 mod P = K-α * KP-1 = KP-1-α mod P
Sicherheit von El Gamal
El Gamal beruht auf der Schwierigkeit den diskreten Logarithmus in ZP* zu berechnen, von daher sollte P > 21024 Bit sein. Des weiteren muss A gewisse Eigenschaften aufweisen auf die ich hier vorerst nicht eingehen werde.
Aktualisiert (Montag, den 26. Juli 2010 um 22:56 Uhr)


