DSA steht für Digital Signature Algorithm und ist seit 1994 der
Standard für Digitale Unterschriften in den USA. DSA ist eine Variante
der Unterschriftsalgorithmen von Schnorr und ELGamal.
p ist eine Primzahl der Länge L Bit, wobei L von 512 bis
1024 reichen kann und ein vielfaches von 64 Bit ist.
q ist ein 160 Bit langer Primfaktor von p - 1
Die Schlüsselvergabestelle wählt die Zahl h zwischen 1 und
p-1 und berechnet daraus
g=hp-1qmod p
so daß gilt g>1.
Die Schlüsselvergabestelle wählt die Zahl x, die
kleiner als q ist und bildet
y=gxmod p
Der Algorithmus verwendet außerdem eine Einweg-Hashfunktion
H(m). Der Standard legt dafür den Secure Hash
Algorithm fest.
Die Zahlen p, q und g sind öffentlich
bekannt und können innerhalb einer Benutzergruppe konstant sein. Der
private Schlüssel ist x, der öffentliche Schlüssel
ist y.
Möchte ein Teilnehmer seine Nachricht m signieren, so ist der
folgende Ablauf notwendig:
Alice generiert eine Zufallszahl k, die kleiner q
ist.
Alice erzeugt r und s bilden die Signatur die Alice an Bob sendet.
Sie werden an den Klartext angehängt und versendet.
r=(gkmod p) mod q
s=(k-1(H(m)+x*r)) mod q
Bob verifiziert die Signatur indem er folgende Werte
berechnet:
u1=(H(m)*w) mod q
w=s-1mod q
u2=(r*w) mod q
v=((gu1*yu2) mod p) mod q
Wenn v=r gilt ist die Signatur verifiziert.
Das Dokument wird hierbei nicht verschlüsselt. Es wird die Echtheit
des Dokuments durch die Einweg-Hashfunktion Secure Hash Algorithm (SHA)
überprüft und die Signatur bestätigt. Gegebenenfalls kann der
Klartext noch mit dem RSA-Verfahren verschlüsselt werden. Das DSA eignet
sich aber hauptsächlich zur digitalen Unterschrift. Es gibt aber auch
Implementierungen, die eine RSA-Verschlüsselung unterstützen.