Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Erzeugung der ElGamal-Signatur: Um die Signatur zu m ∈ {0, 1} ∗ zu<br />
erzeugen wählt User X zufällig ein k ≥ 2 <strong>und</strong> berechnet<br />
S X (m) = ( g k , [k] −1 [h(m) − d<br />
}{{}<br />
X h ′ (g k )]).<br />
} {{ }<br />
=:γ∈G<br />
=:s∈Z/l<br />
[x] steht für die Restklasse von x in Z/l. Dabei ist unbedingt für jede<br />
Nachricht ein neues k zu verwenden. User X könnte die bereits verwendeten<br />
k’s wie Tan-Nummern abstreichen.<br />
Satz 5.5.1 Es gilt γ s E h′ (γ)<br />
X<br />
= g h(m) .<br />
Beweis: γ s = g [k][k]−1 ([h(m)]−[d X h ′ (g k ))]) = g h(m) g −d X h ′ (γ) = g h(m) E −h′ (γ)<br />
X<br />
. □<br />
Man beachte: In die Formel für S X (m) geht der geheime Exponent d X ein. Dies<br />
führt dazu, daß nur Xaver S X (m) aus m berechnen kann. Ganz im Gegensatz<br />
dazu kann jeder, der γ <strong>und</strong> s vorgelegt bekommt, die beiden in obigem Satz<br />
vorkommenden Werte γ s E h′ (γ)<br />
X<br />
<strong>und</strong> g h(m) berechnen. Dazu braucht man nur<br />
den öffentlichen Schlüssel E X von User X <strong>und</strong> die öffentlichen Hashfunktionen<br />
h <strong>und</strong> h ′ zu benutzen.<br />
Verifizieren einer ElGamal-Signatur: Der Verifizierer V bekommt (m, S)<br />
vorgelegt, wobei S = (γ, s) ∈ G × Z/l. Er soll prüfen, ob S eine gültige Unterschrift<br />
von X zu der Nachricht m ist.<br />
V berechnet γ s E h′ (γ)<br />
X .<br />
V berechnet g h(m)<br />
Nur wenn diese beiden Werte übereinstimmen akzeptiert V die Unterschrift.<br />
Zur Sicherheit:<br />
a) Natürlich gilt d X = Log g (E X ). Dieser Logarithmus ist praktisch nicht<br />
berechenbar. Wenn es einem Angreifer dennoch gelingt ihn zu berechnen,<br />
so kommt er in den Besitz von d X . Wer d X hat, der kann zu beliebigen<br />
Nachrichten m Unterschriften von X erzeugen.<br />
b) Sei m eine Nachricht <strong>und</strong> S X (m) = (γ, s) eine Unterschrift von X zu m.<br />
Viele Leute können in den Besitz von (m, S X (m)) = (m, γ, s) kommen;<br />
zumindest der Empfänger <strong>und</strong> die potentiellen Verifizierer.<br />
Nimm an, Oskar kennt eine gültige, signierte Nachricht (m, γ, s) von X <strong>und</strong><br />
es gelingt ihm, k = Log g (γ) zu berechnen. Es gilt [k]s = [h(m)]−[d X h ′ (γ)]<br />
<strong>und</strong> somit<br />
[d X ] = [h ′ (γ)] −1 ([h(m)] − [k]s).<br />
Mit dieser Gleichung kann Oskar [d X ] berechnen. (Er kennt alle Größen<br />
der rechten Seite dieser Gleichung.) In Kenntnis von [d X ] kann er nach<br />
Belieben Unterschriften von X zu beliebigen Nachrichten erzeugen.<br />
Dieser Angriff scheitert üblicherweise, da der diskrete Logarithmus k =<br />
Log g (γ) praktisch nicht berechnet werden kann.<br />
80