Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Elgamal-Signaturverfahren

Das Elgamal-Signaturverfahren ist ein Verfahren für digitale Signaturen, welches auf dem mathematischen Problem des diskreten Logarithmus aufbaut.

Inhalt5 Abschnitte
  1. 1. Grundidee und Einsatz
  2. 2. Öffentliche Grundlagen
  3. 3. Schlüsselpaar bilden
  4. 4. Nachricht signieren
  5. 5. Signatur prüfen

Grundidee und Einsatz

Das Elgamal-Signaturverfahren ist ein Verfahren für digitale Signaturen. Es beruht auf dem mathematischen Problem des diskreten Logarithmus und dient dazu, die Echtheit einer Nachricht anhand einer Signatur zu prüfen. Es ist vom Elgamal-Verschlüsselungsverfahren zu unterscheiden, auch wenn beide Verfahren 1984 von Taher Elgamal im selben Artikel veröffentlicht wurden.

Eine Variante wurde später als Digital Signature Algorithm (DSA) standardisiert und weit verbreitet. Das ursprüngliche Verfahren wird wegen seines vergleichsweise hohen Rechenaufwands und großer Signaturen, besonders im Vergleich zu DSA, nur selten eingesetzt. Es war beispielsweise nie Bestandteil von TLS und wurde weder von OpenSSL noch von GnuTLS implementiert.

Öffentliche Grundlagen

Wie bei Verfahren mit diskretem Logarithmus wird in einer abelschen Gruppe G mit einem Erzeuger g gearbeitet. Ein Erzeuger ist ein Gruppenelement, mit dessen Potenzen alle Elemente der betreffenden Gruppe erzeugt werden können.

In der Originalversion ist G eine Untergruppe großer Primordnung q der multiplikativen Gruppe ℤₚ* modulo einer Primzahl p. Das Verfahren kann aber auch auf anderen endlichen Gruppen beruhen, insbesondere auf einer elliptischen Kurve.

Für die Elgamal-Signatur wird eine Primzahl q so gewählt, dass p = 2q + 1 ebenfalls prim ist. Dann erzeugen alle Elemente außer 1 und −1 von ℤₚ* entweder die gesamte Gruppe der Ordnung 2q = p − 1 oder die Untergruppe der Ordnung q. Als g wird ein Element gewählt, das die Untergruppe multiplikativ erzeugt; üblicherweise die Restklasse von 2 oder 3 in ℤₚ*.

Die Werte p, q und g können für alle Teilnehmer gleich sein. Die Größe von q bestimmt die Sicherheit. Außerdem wird eine kollisionsresistente Hashfunktion H festgelegt; sie soll es schwer machen, zwei verschiedene Nachrichten mit demselben Hashwert zu finden.

Schlüsselpaar bilden

Ein Teilnehmer wählt gleichverteilt zufällig einen geheimen Wert a ∈ {2, …, p − 2}. Anschließend berechnet er mittels modularer Exponentiation

A = gᵃ mod p.

A beziehungsweise das Tripel (p, g, A) ist der öffentliche Schlüssel und darf bekanntgegeben werden. Der Wert a ist der private Schlüssel und muss geheim bleiben. Dasselbe Schlüsselpaar kann auch zur Verschlüsselung mit dem Elgamal-Verschlüsselungsverfahren verwendet werden.

Nachricht signieren

Für jede zu signierende Nachricht m wählt der Unterzeichner eine Zufallszahl k mit 0 < k < p − 1 und ggT(k, p − 1) = 1. Dadurch existiert das modulare Inverse k⁻¹ mod (p − 1), das mit dem erweiterten euklidischen Algorithmus berechnet werden kann.

Dann werden die beiden Signaturwerte berechnet:

  • r ≡ gᵏ mod p
  • s ≡ (H(m) − a · r)k⁻¹ mod (p − 1)

Falls s = 0 ist, müssen diese Schritte wiederholt werden. Das Paar (r, s) ist die digitale Signatur der Nachricht m. Die Schritte, insbesondere die Wahl von k, werden für jede Signatur erneut ausgeführt.

Signatur prüfen

Der Empfänger prüft zunächst, ob 0 < r < p und 0 < s < p − 1 gilt. Außerdem muss die Gleichung

gᴴ⁽ᵐ⁾ ≡ Aʳrˢ mod p

erfüllt sein.

Treffen beide Bedingungen zu, akzeptiert der Empfänger die Signatur; andernfalls weist er sie zurück.

Weiterlesen