(zu , Kryptographie)
Neben der Verschlüsselung von Nachrichten (Vertraulichkeit) ist es in der Praxis sehr wichtig, dass auch nachgewiesen werden kann, dass eine Nachricht von einer ganz bestimmten Person stammt (Authentifizierung). Dies wird durch die digitale Unterschrift möglich.
Das Elgamal-Verfahren eignet sich zum Signieren von Nachrichten. Dazu sind einerseits wieder die Primzahl p, die Basis g und die beiden geheimen und öffentlichen Schlüssel a, b, α und β erforderlich. Eine wesentliche Voraussetzung für den Signatur-Algorithmus ist nun das Bestimmen der Modulo-Inversen. Dies ist für eine Zahl r möglich, die zu p - 1 teilerfremd ist:
(mod p - 1).
Hat man eine zu (p-1) teilerfremde Zufallszahl r (zwischen 1 und (p - 1)) gefunden, bestimmt man
(mod p).
Will Alice eine Nachricht N signieren, so bestimmt sie mit Hilfe der Inversen r-1 den folgenden Ausdruck:
(mod p - 1)
Die digitale Unterschrift ist nun durch das Paar (k, s) gegeben.
Sendet Alice (k, s) an Bob, so muss Bob überprüfen, ob
(mod p)
gilt - Bob kennt jedenfalls den öffentlichen Schlüssel α von Allice und das Paar (k, s). Wir rechnen (mod p) nach:
(mod p)
Aus (mod p-1) erhalten wir (mod p-1) und daraus (mod p-1). Diese Modulo-Gleichung kann mit Hilfe der Unbekannten x durch die folgende Gleichung ausgedrückt werden:
Damit können wir die obige Umformung fortsetzen:
Wieder wenden wir den Kleinen Satz von Fermat an: (mod p), sodass wir das gewünschte Ergebnis erhalten:
(mod p)
Wähle im folgenden GeoGebra-Beispiel p,g, die Zufallszahlen a, b und eine zu (p-1) teilerfremde Zahl r. Bestimme dann die Modulo-Inverse rinv und weise diese in der Eingabezeile der Variablen r_{inv} zu. Gib dann eine Nachricht N ein und überprüfe aus der Sicht von Bob, ob die Signatur tatsächlich von Alice stammt!
Zurück zu Lernpfad Kryptographie | Elgamal | GeoGebra 3.2: Texte codieren, Listen bearbeiten, Restklassenarithmetik ...