Digitale Signatur

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel behandelt den technischen/kryptographischen Begriff digitale Signatur. Dagegen befasst sich der Artikel elektronische Signatur mit einem rechtlichen Begriff. Ausführlicheres unter der Überschrift Abgrenzung zur digitalen Signatur im Artikel zur elektronischen Signatur.

Eine digitale Signatur, auch digitales Signaturverfahren, ist ein asymmetrisches Kryptosystem, bei dem ein Sender mit Hilfe eines geheimen Signaturschlüssels (dem Private Key) zu einer digitalen Nachricht (d. h. zu beliebigen Daten) einen Wert berechnet, der ebenfalls digitale Signatur genannt wird. Dieser Wert ermöglicht es jedem, mit Hilfe des öffentlichen Verifikationsschlüssels (dem Public Key) die nichtabstreitbare Urheberschaft und Integrität der Nachricht zu prüfen. Um eine mit einem Signaturschlüssel erstellte Signatur einer Person zuordnen zu können, muss der zugehörige Verifikationsschlüssel dieser Person zweifelsfrei zugeordnet sein.

Mit digitalen Signaturen lassen sich sichere elektronische Signaturen (fortgeschrittene elektronische Signaturen gem. § 2 Nr. 2 SigG bzw. qualifizierte elektronische Signaturen gem. § 2 Nr. 3 SigG) erzeugen. Die Begriffe digitale Signatur und elektronische Signatur sind jedoch nicht inhaltsgleich: Erstens müssen (zumindest fortgeschrittene) elektronische Signaturen nicht zwangsläufig auf digitalen Signaturen basieren; zweitens ist digitale Signatur ein mathematischer bzw. technischer Begriff, während elektronische Signatur ein juristischer Begriff ist.

Das Grundprinzip[Bearbeiten]

Aus den zu signierenden Daten und dem privaten Signaturschlüssel wird durch eine eindeutige Rechenvorschrift die Signatur berechnet. Verschiedene Daten müssen mit an Sicherheit grenzender Wahrscheinlichkeit zu einer anderen Signatur führen, und die Signatur muss für jeden Schlüssel einen anderen Wert ergeben. Bei deterministischen digitalen Signaturverfahren ist die digitale Signatur durch die Nachricht und den Schlüssel eindeutig festgelegt, bei probabilistischen digitalen Signaturverfahren gehen Zufallswerte in die Signaturberechnung ein, so dass die digitale Signatur zu einer Nachricht und einem Schlüssel viele verschiedene Werte annehmen kann.

Bei einer digitalen Signatur wird der private Schlüssel in der Regel nicht direkt auf die Nachricht angewendet, sondern auf deren Hash-Wert, der mittels einer Hashfunktion (wie z. B. SHA-1) aus der Nachricht berechnet wird. Um Angriffe zu verhindern, muss diese Hashfunktion kollisionsresistent sein, d. h. es muss praktisch unmöglich sein, zwei Nachrichten zu finden, deren Hash-Wert identisch ist.

Soweit der öffentliche Schlüssel mittels eines digitalen Zertifikats einer Person zugeordnet wurde, kann auf Grund dessen, dass es nur einen zum öffentlichen Schlüssel korrespondierenden privaten Schlüssel gibt, über das öffentliche Verzeichnis des Zertifizierungsdiensteanbieters (ZDA) die Identität des Signaturerstellers ermittelt bzw. überprüft werden. Die Gesamtheit der technischen Infrastruktur, mit der die Zertifikate und Informationen zu ihrer Gültigkeit erzeugt und öffentlich bereitgestellt werden, wird als PKI (Public Key Infrastructure) bezeichnet.

Da beim RSA-Signaturverfahren, dem am häufigsten verwendeten digitalen Signaturverfahren, die eingesetzten Operationen fast identisch zu denen der RSA-Verschlüsselung sind, wird bei der Erstellung einer digitalen Signatur gelegentlich von der „Verschlüsselung“ oder „Entschlüsselung“ des Hashwertes gesprochen. Diese Terminologie ist jedoch unpassend, da eine Signaturerstellung syntaktisch etwas anderes ist als eine Ver- oder Entschlüsselung. Bei den meisten digitalen Signaturverfahren (z. B. bei DSA) trifft diese Gleichsetzung deshalb nicht zu. Dort wird bei der Verifikation keineswegs der („verschlüsselte“) Hashwert aus der Signatur rekonstruiert.

Sicherheit[Bearbeiten]

Bei digitalen Signaturen soll es praktisch unmöglich sein, eine Signatur zu fälschen oder zu verfälschen, oder eine zweite Nachricht zu erzeugen, für die diese Signatur ebenfalls gültig ist. Dies setzt voraus, dass sich der private Schlüssel nicht aus den damit erzeugten digitalen Signaturen und dem öffentlichen Schlüssel berechnen lässt. Es ist jedoch möglich, dass ein digitales Signaturverfahren unsicher ist (d. h. dass sich Signaturen fälschen oder verfälschen lassen), ohne dass der private Schlüssel berechnet werden kann. Ein Beispiel dafür ist RSA ohne Verwendung einer Hashfunktion oder eines Paddings: Aus den Signaturen S(x) \equiv x^d \bmod n und S(y) \equiv y^d \bmod n der Nachrichten x und y lässt sich die Signatur von xy durch die Formel

S(x\cdot y) \equiv (x\cdot y)^d \equiv x^d\cdot y^d \equiv S(x)\cdot S(y) \bmod n

berechnen, ohne dass dabei der private Schlüssel ermittelt wird bzw. werden kann.

Eine weitere wichtige Eigenschaft eines Signaturverfahrens ist die Nichtabstreitbarkeit der Signatur (engl. Non-repudiation). Wenn eine Signatur mit einem öffentlichen Schlüssel verifiziert wurde, sollte damit auch bewiesen sein, dass die Signatur mit dem zugehörigen privaten Schlüssel erzeugt wurde. Viele Signaturverfahren erfüllen diese Eigenschaft nicht, wenn nicht vor dem Signieren der öffentliche Verifikationsschlüssel an die Nachricht angehängt wird.[1] Andernfalls kann ein Angreifer zu einer gegebenen Signatur mit einem passenden Verifikationsschlüssel ein weiteres Schlüsselpaar erzeugen, mit dessen Verifikationsschlüssel diese Signatur als gültig verifiziert wird (Key-Substitution-Angriff).

Die Sicherheit eines digitalen Signaturverfahrens hängt in erster Linie von den gewählten Parametern ab; insbesondere müssen die Schlüssel eine Mindestlänge aufweisen, um Angriffe abzuwehren. Außerdem hängt die Sicherheit eines Signaturverfahrens auch von der verwendeten Hashfunktion ab. Diese muss in der Regel kollisionsresistent sein, um eine sichere digitale Signatur zu gewährleisten. Außerdem gibt es oft effektive Angriffe auf bestimmte Implementierungen (theoretisch sicherer) digitaler Signaturverfahren, z. B. Seitenkanal-Angriffe oder das Ermitteln des privaten Schlüssels aus einer unzureichend geschützten persönlichen Sicherheitsumgebung (PSE).

Die theoretische Untersuchung der Sicherheit von digitalen Signaturen ist Gegenstand der Kryptoanalyse. Dabei werden unterschiedliche Angriffsziele und -szenarien betrachtet. Sicherheitsbeweise fußen meist auf einer Reduktion der Sicherheit eines digitalen Signaturverfahrens auf die Schwierigkeit eines bekannten Berechnungsproblems.

Bekannte Verfahren[Bearbeiten]

Das mit Abstand bekannteste und am meisten eingesetzte digitale Signaturverfahren ist RSA, für das verschiedene Verfahren zum Auffüllen des Hash-Wertes (Padding), wie das in PKCS#1 standardisierte PSS, verwendet werden können. Die Sicherheit von RSA basiert auf der Schwierigkeit, große Zahlen in ihre Primfaktoren zu zerlegen (Faktorisierung). Dies ist auch Grundlage für die Sicherheit des Signaturverfahrens von Rabin.

Viele digitale Signaturverfahren basieren auf dem diskreten Logarithmus in endlichen Körpern, wie z. B. DSA, das El-Gamal, die Schnorr-Signatur, die Pointcheval-Stern-Signatur, XTR oder die Cramer-Shoup-Signatur. Auf dem diskreten Logarithmus in elliptischen Kurven beruht die Sicherheit von ECDSA, ECGDSA oder Nyberg-Rueppel-Signaturen – diese Verfahren gehören zu den Elliptische-Kurven-Kryptosystemen. Alle Verfahren, die auf dem diskreten Logarithmus (in endlichen Körpern oder auf elliptischen Kurven) beruhen, sind probabilistisch und verwenden neben der Schlüssellänge weitere öffentliche Parameter.

Andere digitale Signaturverfahren basieren auf linearen Codes, wie die McEliece-Niederreiter-Signatur, oder auf Gittern, wie die Goldreich-Goldwasser-Halevi-Signatur oder NTRU. Die Merkle-Signatur verwendet Hash-Bäume und basiert allein auf der Sicherheit der verwendeten Hashfunktion.

Manche digitale Signaturverfahren besitzen bestimmte Eigenschaften, wie z. B. nicht-abstreitbare digitale Signaturen (undeniable signatures) oder blinde Signaturen (blind signatures), bei denen der Signierende nicht weiß, was er signiert; andere ermöglichen es, die signierte Nachricht aus der Signatur wiederherzustellen (message recovery), wie z. B. die Nyberg-Rueppel-Signatur oder RSA mit dem Padding-Verfahren nach ISO 9796.

Prinzipiell kann jedes digitale Signaturverfahren mit beliebigen Hashfunktionen kombiniert werden, solange die Länge der Hashwerte für die gewählten Parameter des Signaturverfahrens geeignet ist. Internationale und nationale Standards legen jedoch oftmals mit dem Signaturverfahren auch die Hashfunktion fest (z. B. FIPS-PUB 186-2) oder geben zumindest Empfehlungen (z. B. ANSI X9.62).

Gesetzliche Normen[Bearbeiten]

Deutschland[Bearbeiten]

Die Bundesnetzagentur veröffentlicht jedes Jahr eine Liste mit Mindestanforderungen für kryptographische Algorithmen für die Erzeugung qualifizierter elektronischer Signaturen.[2] In der „Bekanntmachung zur elektronischen Signatur nach dem Signaturgesetz und der Signaturverordnung“ vom 18. Januar 2012 werden als geeignete digitale Signaturverfahren RSA , DSA und DSA-Varianten die auf elliptischen Kurven basierend (z. B. EC-DSA, EC-KDSA, EC-GDSA) empfohlen. Zu jedem dieser Verfahren werden die Mindestlängen für die Schlüssel sowie weitere Anforderungen an die Parameter und die Hashfunktion angegeben. [3]

USA[Bearbeiten]

In den USA veröffentlicht die NSA die Suite B - eine Sammlung zulässiger kryptographischer Algorithmen. Diese wurde zuletzt 2005 aktualisiert.

Einsatz in der Praxis[Bearbeiten]

PGP-Systeme[Bearbeiten]

PGP steht für Pretty good Privacy und wurde von 1986 bis 1991 von Phil Zimmermann entwickelt. PGP ist selbst kein Verschlüsselungsalgorithmus, sondern ein Softwareprodukt, das viele, zum Teil recht komplexe, Verfahren zur symmetrischen und asymmetrischen Verschlüsselung sowie zur elektronischen Signatur zusammenfasst.

PGP-Systeme ermöglichen es, dass sich jeder Kommunikationspartner jederzeit ein Schlüsselpaar erzeugen kann. Das Vertrauen in die Zuordnung der Schlüssel zu einer Person soll durch eine Art gegenseitiger elektronischer Beglaubigungen gewährleistet werden. Dadurch entsteht ein Web of Trust, das auf transitiven Vertrauensbeziehungen beruht. Falls eine Person A einer Person B vertraut und diese Person B einer dritten Person C vertraut, so bedeutet dies, dass Person A auch der Person C vertraut, ohne dass eine explizite Vertrauensbeziehung besteht. Der Vorteil dieses Verfahrens besteht in den geringen Voraussetzungen an den einzelnen Benutzer.

Das ist auch gleichzeitig die große Schwäche von PGP. Es müssen mit jedem Teilnehmer bi-lateral Schlüssel und Echtheitsinformationen für den Schlüssel auf vertrauenswürdigem Weg ausgetauscht werden. Es gibt keine Möglichkeit, „verlorene“ oder bekannt gewordene Schlüssel generell aus dem Verkehr zu ziehen.

Verbreitete Varianten der ursprünglich von Phil Zimmermann entwickelten Software sind PGP (kommerziell) und GnuPG (GNU-GPL). Das GNU Privacy Projekt kümmerte sich um ein auf GnuPG basierendes graphisches Frontend für alle gängigen Betriebssysteme. Seit 2003 scheint das Projekt nicht besonders viel Aktivität zu zeigen. Das Programm WinPT (Windows Privacy Tools), das auch auf GnuPG aufsetzt, bietet unter Windows ebenfalls eine grafische Oberfläche zur komfortableren Bedienung digitaler Signierungen.

Für die Mailclients Mozilla Thunderbird, Mozilla Mail und Netscape Mail gibt es das komfortable Plugin Enigmail, das es dem Benutzer erlaubt, die von GnuPG bereitgestellten Funktionen der Verschlüsselung und Signatur direkt im Mailprogramm zu nutzen. Das Plugin ist Open Source und unter die GNU-GPL sowie unter die Mozilla Public License gestellt. Das Programm The Bat kann von Haus aus mittels OpenPGP ebenfalls entsprechende Verschlüsselungs- und Signierfunktionen anbieten.

Auch mit dem v. a. unter Linux verbreiteten Mail- und Groupwareclient Novell Evolution können die Funktionen zur Verschlüsselung und Signatur von GnuPG direkt und ohne Plugin genutzt werden. Auch Evolution ist Open Source und steht unter der GNU-GPL.

Die Desktop-Suite KDE erlaubt ebenfalls die Nutzung von GnuPG in vielen der mitgelieferten Programme (z. B. Kopete und KMail).

Für die Desktopumgebung Gnome, die unter anderem bei Ubuntu verwendet wird, gibt es mit Seahorse ein Frontend für GnuPG.

Zertifikatbasierte Systeme[Bearbeiten]

In zertifikatbasierten Systemen erhält jeder Benutzer ein digitales Zertifikat, welches Angaben zu seiner Identität und den öffentlichen Schlüssel enthält. Jedes Zertifikat ist von einer ausgebenden Stelle beglaubigt, die ihrerseits wieder von höheren Stellen beglaubigt sein kann. Das Vertrauenssystem dieser PKI ist streng hierarchisch. Den gemeinsamen Vertrauensanker bildet ein sog. Wurzelzertifikat (Root Certificate).

Zertifikatbasierte Systeme passen sich gut in Unternehmenshierarchien ein. Nachteilig sind die hohen Kosten für Aufbau und Betrieb sowie die technische Komplexität einer Public-Key-Infrastruktur (PKI).

Der Standard S/MIME baut auf digitalen Zertifikaten auf.

Ein Zertifikat verknüpft Daten eines kryptographischen Schlüssels (oder Schlüsselpaars, bestehend aus öffentlichem und geheimem Schlüssel) mit Daten des Inhabers und einer Zertifizierungsstelle sowie weitere Spezifikationen wie Version, Gültigkeitsdauer, Verwendungszweck und Fingerprint. Die Definitionen nach PKCS legen das Inhaltsformat fest, der Standard X.509 (genauer: ITU x.509 v3 nach RFC 3280, basierend auf ASN.1 Format) beschreibt das Binärdatenformat, oftmals als DER bzw. als DER - Base-64 kodiert.

Beim Web-Datenaustausch überträgt der Server sein Zertifikat mit dem öffentlichen Schlüssel an den Client. Der Client, in dem Fall der Webbrowser des Nutzers, prüft, ob er dem empfangenen Zertifikat trauen kann. Dazu schaut er in die Liste seiner Zertifikate, die ihm bei der Installation mitgegeben wurden bzw. der Benutzer selbst installiert hat und versucht die Signatur des Server-Zertifikats mit einem der im Browser integrierten Zertifikate zu verifizieren. Konnte das Zertifikat verifiziert werden, startet er eine verschlüsselte Datenübertragung. Ansonsten wird der Benutzer über einen Dialog gefragt, ob er das Zertifikat überprüfen und akzeptieren will. Fatal ist es, wenn einem Zertifikat aus Leichtsinn Vertrauenswürdigkeit ausgesprochen wurde.

Beispiel: Ein betrügerischer Server gibt vor, die Hausbank zu sein. Der Webbrowser stellt beim ersten Besuch fest, dass er das Zertifikat des Betrügers nicht kennt. Der Benutzer des Webbrowsers, weil er es nicht besser weiß, klickt auf Zertifikat annehmen. Daraufhin kommunizieren der Server des Betrügers und der Client des Benutzers über eine abhörsichere Web-Verbindung. Die Gewissheit, mit dem richtigen Partner zu kommunizieren, ist durch die Leichtfertigkeit des Nutzers, das unbekannte Zertifikat anzunehmen, nicht mehr gegeben. Schlimmer noch: Dadurch, dass der Browser das Zertifikat speichert, werden nicht nur spätere Besuche des Betrüger-Servers als sicher eingestuft, sondern auch Zertifikate, die der Betrüger-Server signiert hat.

Literatur[Bearbeiten]

  • Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone: Handbook of Applied Cryptography. CRC Press, Boca Raton FL u. a. 1997, ISBN 0-8493-8523-7.
  • Judith Balfanz, Jan C. E. Wendenburg (Hrsg.): Digitale Signaturen in der Praxis. Leitfaden zur Prozessoptimierung und Kostenreduktion in Unternehmen und Behörden. AWV-Verlag, Eschborn 2003, ISBN 3-931193-47-0.

Einzelnachweise[Bearbeiten]

  1.  Alfred Menezes, Nigel Smart: Security of signature schemes in a multi-user setting. In: Designs, Codes and Cryptography. Bd. 33, Nr. 3, 2004, ISSN 0925-1022, S. 261–274, doi:10.1023/B:DESI.0000036250.18062.3f (http://www.cacr.math.uwaterloo.ca/techreports/2001/corr2001-63.ps).
  2. Geeignete Algorithmen
  3. Bundesnetzagentur für Elektrizität, Gas, Telekommunikation, Post und Eisenbahnen: Bekanntmachung zur elektronischen Signatur nach dem Signaturgesetz und der Signaturverordnung. (Übersicht über geeignete Algorithmen). Vom 18. Februar 2013, (PDF; 189 KB).

Weblinks[Bearbeiten]