Digitale Unterschriften

Eine Hash-Funktion [1] ist eine kryptographische Pr�fsumme. Durch eine eindeutige Funktion wird aus einer Datei eine wesentlich k�rzere Datensequenz erzeugt, die ein eindeutiges Abbild der Ursprungsdatei ist.

Die digitale Unterschrift eines Dokumentes ist das Ergebnis der Anwendung einer Hash-Funktion auf das Dokument. Um f�r digitale Unterschriften brauchbar zu sein, mu� die Hash-Funktion jedoch zwei wichtige Eigenschaften haben:

Erstens sollte es unm�glich sein, zwei Dokumente zu finden, die dasselbe Hash-Ergebnis haben. Zweitens sollte es bei einem gegebenen Hash-Ergebnis schwer sein, das urspr�nglich Dokument wiederherzustellen, aus dem dieser Hash erzeugt wurde.

Einige Public-Key-Verfahren k�nnten auch zum Unterschreiben von Dokumenten benutzt werden.[2] Der Unterzeichner verschl�sselt das Dokument mit seinem privaten Schl�ssel. Jeder, der die Unterschrift pr�fen und das Dokument sehen will, benutzt einfach den �ffentlichen Schl�ssel des Unterzeichners, um das Dokument zu entschl�sseln. Dieses Verfahren besitzt in der Tat die beiden Eigenschaften, die eine gute Hash-Funktion braucht, doch ist es in der Praxis zu langsam, um effektiv nutzbar zu sein.

Besser ist es, spezielle Hash-Algorithmen zu benutzen, welche diese beiden wichtigen Eigenschaften aufweisen; wie beispielsweise SHA1 und RIPE-MD160. Bei einem solchen Verfahren wird der Hash-Wert eines Dokumentes als Unterschrift verwendet. Man kann die Unterschrift dadurch pr�fen, da� man auf die Kopie des Dokumentes ebenfalls die Hash-Funktion anwendet und den Hash-Wert, den man erh�lt, mit dem Hash-Wert des Originaldokumentes vergleicht. Wenn beide Werte �bereinstimmen, dann sind beide Dokumente identisch.

Das Problem ist jetzt nat�rlich, Hash-Funktionen f�r digitale Unterschriften zu benutzen, ohne einem Angreifer das Manipulieren der Unterschrift zu erm�glichen. Wenn das Dokument und die Unterschrift unverschl�sselt geschickt werden, k�nnte ein Angreifer das Dokument ver�ndern und eine entsprechende neue Unterschrift erzeugen, ohne da� der Empf�nger es merkt. Wenn nur das Dokument verschl�sselt wird, k�nnte ein Angreifer die Unterschrift verf�lschen und so das Scheitern einer Unterschriftspr�fung verursachen.

Eine dritte M�glichkeit besteht darin, ein hybrides Verfahren zu benutzen, um sowohl die Unterschrift als auch das Dokument zu verschl�sseln. Der Unterzeichner benutzt seinen privaten Schl�ssel, und jedermann kann dessen �ffentlichen Schl�ssel benutzen, um die Unterschrift und das Dokument zu pr�fen. Dies klingt zwar gut, ist aber in Wirklichkeit Unsinn. Wenn dieses Verfahren das Dokument wirklich sichern k�nnte, w�rde es dieses auch gegen Verf�lschung sichern, und dann w�re die Unterschrift gar nicht n�tig. Das ernstlichere Problem ist jedoch, da� dies keinen Schutz gegen Verf�lschung bietet, weder f�r die Unterschrift noch f�r das Dokument. Bei diesem Verfahren wird nur der Sitzungsschl�ssel f�r die symmetrische Verschl�sselung unter Benutzung des privaten Schl�ssels des Unterzeichners verschl�sselt. Jeder kann den �ffentlichen Schl�ssel benutzen, um den Sitzungsschl�ssel wiederherzustellen. Deshalb ist es f�r einen Angreifer einfach, den Sitzungsschl�ssel wiederherzustellen und ihn zum Verschl�sseln von Ersatzdokumenten und Ersatzunterschriften zu benutzen, die er dann im Namen des Absenders an andere schickt.

Ein wirklich funktionierendes Verfahren ist es, nur die Unterschrift mit einem Public-Key-Verfahren zu verschl�sseln. Das hei�t, es wird der geheime Schl�ssel des Unterzeichners benutzt, um die digitale Unterschrift zu erzeugen, die dann jeder mit dem dazugeh�rigen �ffentlichen Schl�ssel checken kann. Das unterzeichnete Dokument kann man unverschl�sselt verschicken, wenn es �ffentlich ist oder verschl�sselt, wenn es vertraulich ist. Wenn das Dokument nach dem Unterzeichnen ver�ndert wurde, wird die Unterschriftspr�fung negativ ausfallen. Der von GnuPG standardm��ig benutzte Digital Signature Algorithm (DSA) arbeitet nach dieser Methode.

Fu�noten

[1]

Eine einfache Hash-Funktion ist f(x) = 0 f�r alle ganzen Zahlen x. Eine interessantere Hash-Funktion ist f(x) = x mod 37, welche x auf den Rest von x dividiert durch 37 abbildet.

[2]

Die Verschl�sselung mu� die Eigenschaft haben, da� der aktuelle �ffentliche oder private Schl�ssel vom Verschl�sselungsverfahren als der �ffentliche Schl�ssel benutzt werden k�nnte. RSA ist ein Beispiel eines solchen Verfahrens, ElGamal dagegen nicht.