Digital Signature Algorithm (DSA)

Der DSA wurde 1991 vom NIST zum Standard erklärt für die Signatur von Dokumenten. Es setzt seine Sicherheit darin, dass man diskrete Logarithmen modulo einer Primzahl im allgemeinen nicht effizient berechnen kann. Zusätzlich braucht man noch eine kollisionsresistente Hashfunktion, welche man auf den Inhalt oder das Dokument anwendet.

Erzeugung Öffentlicher Schlüssel

Es werden eine Reihe von Zahlen mit modulo-Rechnung ermittelt. Der öffentliche Schlüssel ist hierbei (q, p, g, A), der geheime Schlüssel a. Ersterer hat Bitgröße 160+(3*(512+t*64)), letzterer die Bitgröße 160.

Erzeugung digitale Signatur

Es werden zwei Werte ermittelt für die Signatur. Aus allen Daten des Textes x wird ein Hashwert berechnet, der nur schwer umkehrbar ist, d.h. zu einem Hashwert kann nur sehr schwer ein anderer, sinnvoller Text gefunden werden. Die Hashfunktion hat hierbei keine weiteren Parameter. Die Signatur ist hierbei (r, s), k bleibt geheim. Ersterer hat die Bitgröße 2*160, letzterer die Bitgröße 160.

Prüfung einer Signatur

Folgende Schritte sind zu tun: Anm.: die Modulo-Rechnung ist nicht kommutativ in der Reihenfolge vertauschbar, wie das Beispiel 11, 7, und 3 zeigen kann:
(13 % 7) % 3 = 6 % 3 = 0
(13 % 3) % 7 = 1 % 7 = 1
Damit kann der berechnete Wert mit r aus der Signatur verglichen werden. Im Fall der Ungleichheit wird der Inhalt nicht als authentisch akzeptiert und verworfen.

Angriffe auf die Signatur

Um Dokumente zu fälschen und mit einer gültigen Signatur zu versehen, so dass der Empfänger getäuscht wird, muss das geheime a geknackt werden. Dann kann man damit Paare (r, s) zum geänderten Text erzeugen. Der öffentliche und geheime Schlüssel des Senders muss ja unverändert bleiben, wird z.B. über eine PKI bereitgestellt.

Java-Testprogramm mit dem DSA-Verfahren

... folgt noch ...