GnuPG Anleitung - Seite 2
Kryptografische Verfahren bei GnuPG
Secret-Key Verschlüsselung
Mit GnuPG können zwei Verschlüsselungsmethoden eingesetzt werden. Bei der ersten Methode wird aus einer Passphrase und einem symmetrischen Algorithmus ein geheimer Schlüssel gebildet, um mit dem geheimen Schlüssel Daten zu verschlüsseln.
Kryptographische Algorithmen, auch Ciphers genannt, sind mathematische Berechnungsverfahren, die Regeln folgen und Operationen ausführen, die vom Autoren des Algorithmus definiert wurden, bei denen als zusätzliche Komponenten zufällige Zahlen und Zeichen und nur dem Anwender des Algorithmus bekannte Zeichenketten bei den Berechnungen einfließen.
Zur Entschlüsselung wird der gleiche Schlüssel verwendet und die Passphrase benötigt. Diese Methode wird deshalb auch als symmetrische, konventionelle oder Secret-Key Verschlüsselung bezeichnet.
Wie aus der Abbildung hervorgeht, wird der Absender beim symmetrischen Verschlüsselungsverfahren die ursprünglichen, im Klartext vorliegenden Daten mit einem Schlüssel verschlüsseln, der auf einem symmetrischen Algorithmus basiert und durch eine Passphrase, auf die sich Absender und Empfänger verständigen, verschlüsselt bzw. geschützt wird. Das Ergebnis, die als Geheimtext („Ciphertext“) vorliegenden, verschlüsselten Daten, werden dem Empfänger übermittelt. Der Empfänger muss wiederum die gleiche Passphrase angeben, damit der gleiche Schlüssel, der auf Seiten des Absenders noch zur Verschlüsselung eingesetzt wurde, als Entschlüsselungsschlüssel den Geheimtext in Klartext entschlüsselt.
Damit der Empfänger überhaupt den Entschlüsselungsvorgang starten kann, muss ihm zuvor durch den Absender die Passphrase über einen abhör- und abfangsicheren Kanal (persönliches Treffen, abhörsichere Telefonleitung) zugegangen sein. Angesichts globaler Kommunikation ein Problem, denn man kann z. B. nicht für einen neuen Kommunikationspartner, der sich in China aufhält, nach China reisen, um eine Passphrase auszutauschen. Außerdem könnte der Absender, wenn ein absolut sicherer Kanal die Vorbedingung ist und dieser existiert, gleich den Klartext über diesen sicheren Kanal an den Empfänger weitergeben, ohne eine Verschlüsselung einsetzen zu müssen.
Aus diesem Grund ist das symmetrische Verfahren nur sinnvoll, wenn es entweder von ein und derselben Person verwendet wird, wie dem Anwender, der seine Dateien auf der eigenen Festplatte verschlüsseln möchte oder in einem Umfeld, wo Daten für zwei Personen verfügbar vorliegen sollen, aber keiner dritten Person und diese zwei Personen die Möglichkeit haben, die gemeinsame Passphrase persönlich auszutauschen – z. B. zwei Kollegen, die ein gemeinsames Projekt in einer Firma bearbeiten.
Der Vorteil der Public-Key Verschlüsselung im Gegensatz zur Secret-Key Verschlüsselung besteht darin, dass der sichere Kanal nicht vorliegen muss, um Daten abhörsicher über grosse Entfernungen austauschen zu können, da auch der Austausch einer Passphrase keine Vorbedingung darstellt.
Public-Key Verschlüsselung
Bei der zweiten Methode werden mit Public-Key Algorithmen Schlüsselpaare gebildet und zur Verschlüsselung und Entschlüsselung verwendet. Das Schlüsselpaar besteht aus einem öffentlichen und einem privaten Schlüssel. Während der öffentliche Schlüssel an Kommunikationspartner weitergegeben wird, die ihn zur Verschlüsselung und Überprüfung von Signaturen benutzen, verbleibt der private Schlüssel beim Schlüsselbesitzer, der mit seinem privaten Schlüssel Daten entschlüsselt, die ihm verschlüsselt übermittelt wurden. Die Methode wird als asymmetrische oder Public-Key Verschlüsselung bezeichnet und mit GnuPG meistens zur Verschlüsselung von Kommunikation in Form von E-Mails oder Chats benutzt.
Bei der Public-Key Verschlüsselung kommt auch die symmetrische Verschlüsselung zum Einsatz, weil die Kommunikationsdaten zuerst mit einem einmaligen Sitzungsschlüssel, der auf einem symmetrischen Algorithmus basiert, verschlüsselt werden und anschließend der Sitzungsschlüssel mit dem öffentlichen Schlüssel des Schlüsselbesitzers verschlüsselt wird. Deshalb spricht man bei GnuPG auch von hybrider Verschlüsselung.
Public-Key Verschlüsselung. Absender und Empfänger tauschen gegenseitig ihre öffentlichen Schlüssel (A/E-pub) aus, der private Schlüssel (A/E-priv) verbleibt beim Schlüsselbesitzer.
Der private Schlüssel ("Private Key")
GnuPG bildet aus der gewählten Passphrase und zusätzlicher, zufällig ausgewählter Zeichen, die als „Salt“ bezeichnet werden, einen Hashwert, den geheimen Schlüssel („Secret Key“). Mit dem geheimen Schlüssel, einer Hashfunktion (z. B. SHA) und einem symmetrischen Algorithmus (Twofish, AES usw.) wird das Schlüsselmaterial der privaten DSA, RSA und Elgamal Schlüssel verschlüsselt und dann im privaten Schlüsselring – der secring.gpg Datei – gespeichert. Somit wird der private Schlüssel direkt durch den geheimen Schlüssel und indirekt durch die dem geheimen Schlüssel zugrunde liegende Passphrase geschützt.
Die Informationen über die verwendeten Verfahren und Bestandteile im Datenpaket der privaten Haupt- und Unterschlüssel kann man mit GnuPG einsehen, wenn man den privaten Schlüssel als Datei aus dem Schlüsselring exportiert und sich anschließend die Pakete mit dem Kommando gpg --list-packets Datei
anzeigen lässt. Danach sollte die Datei mit dem privaten Schlüssel wieder sicher gelöscht werden.
Der öffentliche Schlüssel ("Public Key")
Die eigenen öffentlichen Schlüssel und die öffentlichen Schlüssel aller Kommunikationspartner werden nach der Erzeugung des Schlüsselpaars im öffentlichen Schlüsselring – der pubring.gpg Datei – gespeichert.
Wie aus den Abbildungen hervorgeht, kommt bei der Public-Key Verschlüsselung auf Seiten des Absenders der öffentliche RSA oder Elgamal Schlüssel des Empfängers und ein symmetrischer Sitzungsschlüssel zum Einsatz, aber keine Passphrase. Auf Seiten des Empfängers kommt der private Schlüssel des Empfängers, der nur ihm vorliegt und sonst keiner anderen Person, seine Passphrase und der symmetrische Sitzungsschlüssel zum Einsatz.
Der Ablauf noch einmal in Form einer Liste:
- Der Klartext wird komprimiert und mit einem für jede Nachricht neuen und einzigartigen Sitzungsschlüssel, der aus gesammelten Zufallsdaten und einem der symmetrischen Algorithmen gebildet wird, verschlüsselt. Das Ergebnis ist der Geheim- bzw. Ciphertext.
- Der Sitzungsschlüssel wird mit dem öffentlichen Schlüssel des Empfängers mit einem der Public-Key Algorithmen (RSA, Elgamal) verschlüsselt.
- Der Geheimtext zusammen mit dem verschlüsselten Sitzungsschlüssel in eine ASCII Transporthülle „verpackt“ und das Gesamtpaket dem Enpfänger zugestellt.
- Der Empfänger entschlüsselt mit seiner Passphrase, bzw. dem geheimen Schlüssel seinen privaten Schlüssel.
- Mit dem privaten Schlüssel wird der Sitzungsschlüssel entschlüsselt.
- Mit dem Sitzungsschlüssel wird der Klartext aus dem Geheimtext entschlüsselt.
Während bei der symmetrischen Verschlüsselung der sichere Kanal zum Austausch der Passphrase Voraussetzung ist, müssen sich bei der Public-Key Verschlüsselung beide Kommunikationspartner absolut sicher sein, dass sie jeweils einen echten Schlüssel des anderen verwenden. Dazu müssen sie die Zugehörigkeit der Benutzer-ID zum Schlüssel und die Schlüsselmerkmale über einen sicheren Kanal beim anderen abfragen bzw. überprüfen. Die Methode der Überprüfung wird in Das OpenPGP Web of Trust erklärt.
Digitale Signierung
Der private Schlüssel wird nicht nur zur Entschlüsselung benutzt, sondern auch zur Verschlüsselung einer Prüfsumme bzw. Hashwertes, der von GnuPG mithilfe von Hash Algorithmen zu einem Datum erzeugt wird. Das Produkt aus Hashwert und Verschlüsselung bildet die Digitale Signatur.
Über die Prüfung des Hashwertes und der Informationen, die der Absender durch die Verschlüsselung mit seinem privaten Schlüssel in die Signatur einbringt, kann der Empfänger zum einen feststellen, ob das Datum auf dem Weg zu ihm verändert wurde, sprich sich der Datenintegrität vergewissern und zum anderen Gewissheit über die Urheberschaft eines Datums erlangen, sprich sich der Datenauthentizität vergewissern. Der öffentliche Schlüssel dient dem Kommunikationspartner also nicht nur zur Verschlüsselung, sondern zusätzlich der Überprüfung von digitalen Signaturen, die vom Schlüsseleigentümer erstellt wurden. Mit GnuPG können Daten auch kombiniert mit dem eigenen privaten Schlüssel signiert und mit dem öffentlichen Schlüssel des Kommunikationspartners verschlüsselt werden.
Die grafischen Abbildungen stammen aus der Anleitung Einführung in die Kryptographie von Network Associates, jetzt PGP Corporation, zu PGP 6.5.1 International.
Schlüsselserver
Schlüsselserver („Keyserver“) sind Rechner, auf denen die Schlüsselserver Software läuft. Auf Schlüsselserver kann man den eigenen öffentlichen Schlüssel hochladen, nach Schlüsseln anderer Personen suchen oder ihre Schlüssel herunterladen und in den öffentlichen Schlüsselring importieren lassen. Einmal hochgeladene Schlüssel können aktualisiert werden, z. B. wenn ein Zertifikat oder Unterschlüssel hinzugefügt oder ein Schlüssel zurückgezogen wurde (dazu später mehr), sie sind aber nicht von den Schlüsselservern zu löschen. Schlüsselserver dienen also der Verbreitung und Veröffentlichung von Schlüsseln und Änderungen an Schlüsseln. Eine weitere Funktion besteht in der Vorhaltung der Informationen, mit denen sich das OpenPGP Web of Trust abbilden lässt.
Es gibt eine große Anzahl von Schlüsselservern, von denen die meisten miteinander vernetzt Schlüsselserververbände bilden, die ihre Schlüsselringe miteinander synchronisieren. Schlüsselserver können über das WWW mit Webinterfaces oder direkt mit GnuPG bedient werden.
Die Sicherheit der Public-Key Verschlüsselung
Sicherheit und Schutz der PGP Public-Key Verschlüsselung beruhen z. B. bei RSA Schlüsseln auf dem Problem, dass es für einen Angreifer sehr kosten-, rechen- und zeitintensiv ist, ein sehr großes Produkt zweier Primzahlen in die einzelnen Primzahlen oder Primfaktoren zu zerlegen, bzw. aus dem öffentlichen den privaten Schlüssel zu berechnen. Außerdem werden nicht alle Nachrichten zuerst mit ein und demselben symmetrischen Schlüssel verschlüsselt, sondern für jede Nachricht wird aus Zufallswerten ein einmaliger, symmetrischer Sitzungsschlüssel verwendet.
Ein weiteres Problem, das sich für einen Angreifer ergibt, wenn er im Besitz des privaten Schlüsselrings wäre, aber den privaten Schlüssel selbst aufgrund mathematischer Probleme nicht berechnen kann, ist die Verschlüsselung des privaten Schlüssels mit einem symmetrischen Algorithmus und der Passphrase, die eine möglichst lange aus möglichst zufälligen Zeichen des gesamten ASCII Zeichensatz bestehende Zeichenkette darstellt. Ein Angreifer müsste diese Zeichenkette ebenfalls berechnen oder „erraten“ lassen, um eine GnuPG verschlüsselte Nachricht entschlüsseln zu können. Bei einer Passphrase mit bestimmter Länge und Qualität würde sich aber für einen Angreifer eine sehr große Zahl von Möglichkeiten ergeben, die zu berechnen wären. Besteht eine Passphrase aus Wörtern oder Wortbestandteilen, die in einer Sprache existieren, kann der Angreifer mit Hilfe von Wörterbüchern aller Sprachen die Passphrase über eine Wörterbuchanalyse (Dictionary Attack) berechnen lassen.
Andersherum wäre das GnuPG Public-Key Verschlüsselungssystem als unsicher oder geschwächt anzusehen, wenn die Algorithmen nur Schlüssel mit einer kleinen Zahl generieren würden und auf mathematischen Problemen beruhen würden, die leicht zu lösen sind, bzw. wenn mathematische Verfahren gefunden würden, die es ermöglichen, den privaten Bestandteil des Schlüsselpaares in kürzester Zeit zu berechnen. Ist dies der Fall, bezeichnet man einen Algorithmus bestenfalls als „geschwächt“, schlimmstenfalls als „gebrochen“. Ein mathematisches Verfahren zur Erprobung kryptografischer Algorithmen und Verfahren wird als Kryptoanalyse oder auch als „Angriff“ bezeichnet. Ebenso würde die Verwendung eines immer gleichen Sitzungsschlüssels, die Nutzung von Zufallswerten in zu geringer Menge oder deterministischen Werten und die Verwendung von einfachsten Passphrases mit realen Wörtern das Public-Key Verschlüsselungssystem schwächen.
Die Sicherheit derzeit bekannter Verschlüsselungsverfahren beruht auch auf der Annahme, dass auch die Mathematiker und Kryptologen so großer Geheimdienste wie der NSA den gleichen mathematischen Problemen unterworfen sind und das es selbst solchen Geheimdiensten mit ihren gewaltigen Finanz-, Hardware- und Know-How-Ressourcen nur zu einer unvertretbaren Kosten-Nutzen-Zeit Relation möglich wäre, verschlüsselte Daten zu entschlüsseln, private Schlüssel zu berechnen oder Passphrases computergestützt „erraten“ zu lassen. Da den Geheimdiensten aufgrund ihrer staatlich gewährten Finanzmittel und Ressourcen trotzdem ein Vorsprung zuerkannt wird, stellt die Entwicklung und Verbesserung starker Kryptosysteme und die Kryptoanalyse eine permanente Herausforderung und Aufgabe für Kryptologen und Autoren kryptografischer Anwendungen dar.
Die Sicherheit der Anwendung von Kryptografie wird außerdem durch äußere Faktoren beeinflußt. Betriebssysteme und Programme, die anfällig für die Installation von Viren, Spyware und Trojanern sind, stellen grundsätzlich ein unsicheres Umfeld für kryptografische Anwendungen dar, weil der Anwender nicht gewährleisten kann, dass der private Schlüssel und die Passphrase nicht abgefangen, ausgelesen und an einen Angreifer übermittelt wird. Aus der Relevanz, die dem privaten Schlüssel und der Passphrase zukommt, ergibt sich, dass der private Schlüssel sicher gespeichert wird. Zum Beispiel auf einem externen Medium, dass nur während des Zeitraums der Anwendung zugänglich ist und über den Schutz von Verzeichnissen und Dateien über die Steuerung der Zugriffsrechte.
Ein Anwender, der seinen privaten Schlüssel aus Bequemlichkeit mit einem einfachen und leicht zu erratenden Passwort wie „NameGeburtsdatum“ sichert, spielt einem Angreifer, der in den Besitz des privaten Schlüsselrings gelangt, in die Hände. Gegen einen direkten Angriff durch Geheimdienste vermag auch GnuPG nichts auszurichten. Wenn ein Geheimdienst auf oder in dem Rechner des Anwenders einen Keylogger installiert oder in das Betriebssystem einen Trojaner einschleusen oder den Bildschirminhalt per Videoüberwachung oder TEMPEST-Angriff abgreifen kann, nutzt die beste Verschlüsselung nichts.
Beispiel: Der Scarfo-Fall
Der bekannteste Fall des Jahres 1999, wo zum ersten Mal ein Software-Keylogger (als Bestandteil eines umfassenderen Keyloggersystems) eingesetzt wurde, war die Ermittlung des FBI gegen Nicodemo Scarfo, einem Angehörigen der Gambiano Mafiafamilie.
Das FBI war in das Büro von Scarfo eingebrochen und hatte die Festplatte seines Windows Computers kopiert. Wichtige Daten hatte Scarfo aber mit PGP verschlüsselt. Deshalb suchte das FBI, nur mit einem Durchsuchungsbefehl ausgestattet, das Büro nochmals auf und installierte im Computer das, was der Deputy Assistant Director der Investigative Technology Branch der FBI Laboratory Division, Randall S. Murch, in einer Gerichtsanhörung als „Key Logger System (KLS)“ bezeichnete. Murch beschrieb das KLS so:
(…)
The KLS, depending upon the hardware and software configuration of a targeted computer and the use of that computer, can, and typically will, have multiple components.
(…)
A component of the KLS deployed in this case was a „keystroke capture“ component that was designed to record, under certain conditions described below, each keystroke typed on the keyboard.
(…)
In conclusion, the KLS, by design, prohibited the capture of keyboard keystrokes whenever the computer modem was on; other component(s), described above, limited their capture to only the passphrase and key-related information.
Über den installierten Keylogger konnte das FBI die Passphrase aufzeichnen, die Scarfo eingab, um an die verschlüsselten Inhalte seiner Festplatte zu gelangen und so auch den kopierten Festplatteninhalt entschlüsseln. Längst werden auch Keyloggersysteme erprobt, die wie das „Magic Lantern“ Programm des FBI über Trojaner beim Anwender eingeschleust werden sollen.
Schlüsselpaare und -typen
Das Schlüsselpaar aus privatem und öffentlichen Schlüssel kann bei GnuPG aus verschiedenen Schlüsseltypen bestehen, die sich in der Wahl der verwendeten Public-Key Algorithmen und des Schlüsselformats unterscheiden.
Das ältere v3 Schlüsselformat wurde von der PGP Version 2.6.3 für RSA Schlüssel verwendet und wird bei PGP als „RSA Legacy“ bezeichnet. Laut OpenPGP Spezifikation sind Schlüssel im v3 Schlüsselformat als veraltet eingestuft und sollten von OpenPGP Implementationen wie GnuPG nicht erzeugt werden. RSA Schlüssel im v3 Format sind auf eine Länge von 2048-bit begrenzt. Hauptmerkmale des v3 Schlüsselformats sind die Festlegung auf IDEA als symmetrischen Verschlüsselungsalgorithmus und MD5 als Hash Algorithmus. Zur Verschlüsselung und Signierung wird beim v3 Schlüsselformat ein RSA Schlüssel verwendet.
Das v4 Schlüsselformat wurde mit dem Einsatz von DSA / Elgamal Schlüsseln eingeführt und später auch für RSA Schlüssel verwendet. Hauptmerkmale des v4 Schlüsselformats sind die Verwendung verschiedener symmetrischer Algorithmen und Hash Algorithmen. Zur Signierung wird ein eigener Hauptsignierschlüssel und zur Verschlüsselung ein oder mehrere Unterschlüssel verwendet. Hauptsignier- und Unterschlüssel können auf verschiedenen Public-Key Algorithmen basieren.
In der GnuPG Anleitung wird nur auf Schlüsseltypen im v4 Schlüsselformat eingegangen.
RSA Schlüssel zum Verschlüsseln
Die Bezeichnung des RSA Algorithmus setzt sich aus den Anfangsbuchstaben der Namen seiner Erfinder Rivest, Shamir und Adleman zusammen, die das RSA Public-Key Kryptosystem 1977 entwickelten. Es beruht auf dem mathematischen Faktorisierungsproblem, d. h. der Zerlegung einer großen Zahl in ihre Primfaktoren. RSA wird seit langer Zeit zur Verschlüsselung eingesetzt und gilt als gut untersucht und geprüft. RSA wurde im Public-Key Cryptography Standard (PKCS) Nr. 1 von den RSA-Laboratorien u. a. unter dem Namen „RSA Cryptography Standard“ und im IETF RFC 3447 standardisiert. RSA Schlüssel haben bei GnuPG eine Schlüssellänge von 1024-bit bis 4096-bit und werden zumeist als Unterschlüssel angelegt.
Von 1991 bis 2007 führte RSA Security RSA Factoring Challenges durch, an denen sich jeder beteiligen konnte. Ziel dieser mit Preisgeldern versehenen Wettbewerbe war es, RSA Zahlen zu faktorisieren und dabei neue kryptoanalytische Verfahren und Algorithmen zu erproben. Gleichzeitig geben die Challenges Aufschluß darüber, wie lang ein RSA Schlüssel mindestens sein muss, um als sicher zu gelten und wie stark der RSA Algorithmus bzw. die Public-Key Algorithmen noch sind. Die letzte RSA Zahl mit 768-bit wurde am 12. Dezember 2009 faktorisiert und das ist die 2048-bit RSA Zahl, die mit 200000 US$ dotiert werden sollte, wenn sie faktorisiert wird:
251959084756578934940271832400483985714292821262040320277771378360436620207075955562640 185258807844069182906412495150821892985591491761845028084891200728449926873928072877767 359714183472702618963750149718246911650776133798590957000973304597488084284017974291006 424586918171951187461215151726546322822168699875491824224336372590851418654620435767984 233871847744479207399342365848238242811981638150106748104516603773060562016196762561338 441436038339044149526344321901146575444541784240209246165157233507787077498171257724679 629263863563732899121548314381678998850404453640235273819513786365643912120103971228221 20720357
Dem gleichen Zweck dienten die RSA Secret-Key Challenges, die RSA Security von 1997 bis 2007 durchführte, bei denen es um die Berechnung geheimer Schlüssel symmetrischer Algorithmen ging, mit denen Ciphertexte verschlüsselt wurden.
Als Ergebnis dieser Challenges wurde z. B. im Jahr 1998 im Rahmen der RSA DES Challenge-II ein geheimer DES 56-bit Schlüssel von der Electronic Frontier Foundation (EFF) mit ihrer legendären DES Cracker Machine in 3 Tagen berechnet. Ein halbes Jahr später gelang dies im Rahmen von DES Challenge-III mit dem distributed.net Rechnernetz von 100000 PCs und dem DES Cracker in 22 Stunden 15 Minuten.
distributed.net führt die Secret-Key Challenges nach Einstellung durch RSA Security in Eigenregie fort. Ein weiterer symmetrischer Algorithmus, der im Fokus der Secret-Key Challenges steht, ist der von Ron Rivest für RSA Security im Jahr 1975 entwicklete RC5 Algorithmus. Für einen RC5 Schlüssel mit 64-bit wurden 1757 Tage zur Berechnung des geheimen Schlüssels benötigt. Das Ergebnis lag am 14 Juli 2002 vor. Danach begann distributed.net mit der Berechnung eines RC5 72-bit Schlüssels.
Elgamal Schlüssel zum Verschlüsseln
Elgamal wird bei PGP als „Diffie-Hellmann“ (DH) bezeichnet, weil Elgamal auf der Diffie-Hellmann Verschlüsselung beruht. Die Bezeichnung setzt sich aus den Namen Whitfield Diffie und Martin E. Hellman zusammen. Beide Kryptologen hatten 1976 ein Schlüsselaustauschprotokoll und Public-Key Algorithmus entwickelt, das zum sicheren Austausch von Schlüsseln diente und dessen Bestandteil der Einsatz eines Schlüsselpaares aus öffentlichem und privatem Schlüssel war. Es begründete das asymmetrische Public-Key Verschlüsselungsverfahren, wie wir es auch bei GnuPG kennen. Fünf Jahre zuvor war im Auftrag der Government Communications Headquarters (GCHQ), dem britischen NSA Pendant, ein ähnliches Konzept von James Ellis entwickelt worden, blieb aber geheim und unveröffentlicht.
Der Diffie-Hellmann Algorithmus basiert auf einem anderen mathematischen Problem als beim RSA Algorithmus, das man als Problem diskreter Logarithmen (Discrete Logarithm Problem, DLP) bezeichnet. Basierend auf dem Diffie-Hellmann Algorithmus und dem DLP entwickelte der Kryptologe Taher Elgamal 1985 seinen Elgamal Algorithmus, der bei GnuPG für Unterschlüssel zur Verschlüsselung von Daten eingesetzt wird. Die Elgamal Unterschlüssel können mit einer Länge von 1024 bis 4096-bit erzeugt werden.
DSA und RSA "DSA" zum Signieren und Zertifzieren
DSS ist die Abkürzung für den Digital Signature Standard. Dieser Standard wurde als Teil des „Capstone“ Programmes der US-Regierung vom National Institute of Standards and Technology (NIST) in Zusammenarbeit mit der NSA, die „offiziell“ eine „beratende“ Funktion beim NIST ausübt, 1994 zum digitalen Beglaubigungsstandard der US-Regierung erklärt.
Im Federal Information Processing Standard (FIPS) 186 werden die Algorithmen für den DSS definiert und festgelegt. Nach FIPS-186 sind das der Digital Signature Algorithm (DSA), RSA „DSA“ und ECDSA (Elliptic Curve Digital Signature Algorithm) .
Laut FIPS-186 dürfen DSA und RSA DSA Schlüssel 1024-bit, 2048-bit oder 3072-bit lang sein. Während bei GnuPG die maximale Länge von DSA Schlüsseln ebenfalls 3072-bit beträgt, können RSA Schlüssel maximal 4096-bit lang sein.
Das Ganze im Überblick:
Jeder GnuPG Schlüssel besteht aus einem Hauptsignierschlüssel (auch als Master-Signing-Key oder primärer Schlüssel bezeichnet), der so genannt wird, weil er nur der Erzeugung von Signaturen und / oder Schlüsselzertifikaten dient und einem oder mehreren Schlüsseln, den Unterschlüsseln (auch als Sub-Keys oder Zweitschlüssel bezeichnet), die der Verschlüsselung oder Signierung dienen und dem Hauptsignierschlüssel zu- bzw. untergeordnet sind.
Typ | Hauptsignierschlüssel | Zweck | Unterschlüssel | Zweck |
---|---|---|---|---|
A | DSA oder RSA | Signieren und Zertifizieren | (1) Elgamal oder RSA | Verschlüsseln |
B | DSA oder RSA | Zertifizieren | (1) DSA oder RSA (2) Elgamal oder RSA | Signieren Verschlüsseln |
Hashalgorithmen und -werte
Zur Erzeugung digitaler Signaturen und bei der Generierung des Schlüsselpaares spielen Hashalgorithmen und die damit erzeugten Hashwerte eine große Rolle bei GnuPG. Ein Hashalgorithmus ist ein Berechnungsverfahren, mit dem über mathematische Transformationen, den Hash- und Kompressionsfunktionen, zu einem Datum beliebiger Größe eine Zeichenkette mit festgelegter Länge berechnet wird, die man als Hashwert, Textprüfsumme oder Message Digest bezeichnet.
Je nach eingesetztem Hashalgorithmus ist der Hashwert 128, 160, 224, 256, 384 oder 512-bit lang. Da ein bestimmter Hashwert mit fester Länge für ein bestimmtes Datum beliebiger Länge steht, spricht man auch vom digitalen Fingerabdruck oder Destillat eines Datums. Bei sicheren Hashfunktionen kann das Ursprungsdatum nicht aus dem Hashwert zurückberechnet werden und jeder Hashwert ist einzigartig, d. h. die Hashfunktionen werden nicht für zwei unterschiedliche Daten ein und denselben Hashwert erzeugen. Wird für unterschiedliche Daten derselbe Hashwert erzeugt, spricht man von Kollisionen der Hashfunktion und der Hashalgorithmus wird als schwach angesehen.
Während die Schlüssel im v3 Schlüsselformat auf dem MD5 Hashalgorithmus festgelegt waren, kann für die Schlüssel im v4 Format eine ganze Reihe von Hashalgorithmen eingesetzt werden.
Beispiel
printf "Die Prüfsumme des Satzes:" | gpg --print-md MD5 E8 28 74 CE 0C 47 3C 74 E3 FA D8 BB 1B BB 96 B2 printf "Die Prüfsumme des Satzes:" | gpg --print-md SHA1 BA6F D679 F881 FB0D F8BA 2323 F173 63B9 8AC7 0CCD printf "Die Prüfsumme des Satzes:" | gpg --print-md SHA256 244CA836 EEEE87B4 50421930 96A7EF8F 09A1EEE2 A2570981 88B6311B DBFDC0BF
MD5
MD5 ist die Abkürzung für Message Digest 5, ein Hashalgorithmus, mit dem 128 bit lange Hashwerte erzeugt werden. MD5 wurde als Nachfolger des schwachen MD4 im Jahr 1991 von Ronald L. Rivest entwickelt, der auch an der Entwicklung von RSA beteiligt war.
Im Jahr 1996 veröffentlichte der Kryptologe Hans Dobbertin, damals beim BSI angestellt, die Ergebnisse seiner Kryptoanalyse Cryptoanalysis of MD5 Compress. Thema der Kryptoanalyse war die Kompressionsfunktion des MD5 Algorithmus. Das Resultat der Analyse bestand darin, dass MD5 durch Kollisionen geschwächt ist. Die Kollisionen entdeckte Dobbertin nach 10 Stunden auf einem damals herkömmlichen Pentium PC. In der Untersuchung gab Dobbertin die Empfehlung: „…We think that this might be reason enough to substitute MD5 in future applications. Alternatives for MD5 are SHA-1 and on the other hand RIPEMD-160…“
Laut OpenPGP Spezifikation und Empfehlungen des NIST wird der MD5 Algorithmus – auch wegen seiner Schwäche – als veraltet eingestuft und sollte von OpenPGP Implementationen nicht mehr zur Erzeugung von Hashwerten herangezogen werden. MD5 wird trotz der Empfehlungen und Warnungen immer noch von Softwareautoren zur Überprüfung ihrer Produkte angeboten.
RIPEMD-160
RIPEMD ist die Abkürzung für RACE Integrity Primitives Evaluation Message Digest. Der 1996 veröffentlichte RIPEMD-160 Hashalgorithmus erzeugt wie SHA-1 160 bit lange Hashwerte. Entwickelt wurde RIPEMD u.a. von Hans Dobbertin auf der Basis von MD4 und als Ersatz für MD5.
SHA und der SHS
Der bereits erwähnte Secure Hash Algorithmus (SHA), der statt MD5 benutzt werden soll, wird als Hashalgorithmus für die Schlüssel des DSS im Secure Hash Signature Standard (SHS) FIPS-180 festgelegt. Im Oktober 2008 veröffentliche das NIST die Endfassung von FIPS-180-3, der den SHA in den fünf Ausprägungen SHA-1, SHA-224, SHA-256, SHA-384 und SHA-512 bzw. mit Hashwertenlängen von 160 bis 512-bit festlegte.
Der SHA-1 erzeugt 160 bit lange Hashwerte und war der erste Hashalgorithmus im SHS. Im August 2002 hatte das NIST den neuen SHS FIPS-180-2 veröffentlicht, der neben SHA-1 die zusätzlichen Hashalgorithmen SHA-256, SHA-384 und SHA-512 spezifiziert und im Dezember 2003 um SHA-224 ergänzt (sogenannte „SHA-2 Familie“), die ebenfalls mit GnuPG verwendet werden können. Die zusätzlichen SHA Algorithmen mit längeren Hashwerten waren notwendig und möglich geworden, weil ab 2005 in Folge neue Angriffsmethoden bekannt wurden, die SHA-1 geschwächt haben und FIPS-186 Schlüssellängen einführte, die länger als 1024-bit sind, denn um Hashalgorithmen mit längeren Hashwerten sicher verwenden zu können, müssen die Signierschlüssel ebenfalls über eine entsprechende Länge verfügen.
SHA-3 (Keccak)
Wegen der Fortschritte auf dem Gebiet der Kryptoanalyse von Hashalgorithmen, insbsondere der Angriffen gegen SHA-1 und den Diskussionsergebnissen der NIST Workshops über Hashalgorithmen hatte das NIST am 2. November 2007 ähnlich wie zur Entwicklung des AES (Rijndael) die Durchführung des offenen Wettbewerbs um den Nachfolger des Hashalgorithmus SHA-1 und der SHA-2 Familie eröffnet, der den Namen „SHA-3“ bekommt und für den Kryptologen bis Ende Oktober 2008 ihre Kandidaten einreichen konnten. Der Kandidat musste wie die SHA-2 Familie Hashwerte mit den Längen 224, 256, 384 und 512 bits anbieten, während 160 bit wie bei SHA-1 und RIPEMD-160 nicht mehr vorgesehen ist, weil „der 160-bit Hashwert zu klein für die Verwendung für digitale Signaturen wird“, mindestens die Sicherheitsstärke der SHA-2 Familie aufweisen und Angriffsmethoden, die möglichweise gegen die SHA-2 Familie praktikabel sind, erfolgreich widerstehen.
Für die dritte und letzte Runde des Wettbewerbs wurden im Dezember 2010 die Hashalgorithmen BLAKE, Grøstl, JH, Keccak und Skein ausgewählt. Am 2. Oktober 2012 wurde Keccak als Gewinner des Wettbewerbs und zukünftiger SHA-3 vom NIST verkündet.
Symmetrische Algorithmen
Mit GnuPG können zur rein symmetrischen Verschlüsselung, für die Verschlüsselung des privaten Schlüssels und für die symmetrischen Sitzungsschlüssel zur Public-Key Verschlüsselung fünf verschiedene Algorithmen verwendet werden.
AES (Rijndael)
Der Advanced Encryption Standard (AES) wurde im Jahr 2000 vom NIST zum neuen Verschlüsselungsstandard der US-Regierung erklärt und löste damit den DES ab. Der Entscheidung war ein offener Wettbewerb vorausgegangen, in dem sich die eingereichten Algorithmen in mehreren Runden bewähren mussten. Aus den Finalisten der Endrunde wurde vom NIST und der NSA schließlich RIJNDAEL von Joan Daemen und Vincent Rijmen als Algorithmus des AES ausgewählt. RIJNDAEL ist eine Blockchiffre mit 128 Bit Blockgröße und Schlüssellängen von 128, 192 oder 256 Bit.
TWOFISH / BLOWFISH
TWOFISH wurde von Bruce Schneier entwickelt, der auch den BLOWFISH Algorithmus konstruierte und der Autor des bekannten Grundlagenwerks der Kryptografie Angewandte Kryptografie ist. TWOFISH belegte in der Endausscheidung zum AES den dritten Platz. Wie RIJNDAEL arbeitet TWOFISH mit 128 Bit Blockgröße und Schlüssellängen von 128, 192 und 256 Bit. TWOFISH wird von GnuPG mit 256 Bit Schlüsseln implementiert, BLOWFISH mit 128 Bit langen Schlüsseln. Den zweiten Platz beim AES Wettbewerb belegte übrigens SERPENT von Ross Anderson, Eli Biham und Lars Knudsen.
Triple-DES (3DES)
Triple-DES ist eine Abwandlung des Data Encryption Algorithm (DEA) des ausgelaufenen Data Encryption Standard (DES). Triple-DES arbeitet mit 64 Bit Blöcken, die mit drei verschiedenen 56 Bit DES Schlüsseln verschlüsselt werden, woraus sich ein 168 Bit 3DES Schlüssel ergibt, dem eine effektive Schlüsselstärke von ca. 112 Bit zugesprochen wird.
CAMELLIA
Camellia wurde im Jahr 2000 von der Nippon Telegraph and Telephone Corporation (NTT) und der Mitsubishi Electric Corporation vorgestellt. Camellia arbeitet ebenfalls mit 128 Bit Blockgröße und Schlüssellängen von 128, 192 und 256 Bit.
CAST
CAST ist wie RIJNDAEL nach den Namen seiner beiden Erfinder Carlisle Adams and Stafford Tavares benannt, die den Algorithmus für die Northern Telecom (Nortel) entwickelten. CAST arbeitet mit 64 Bit Blockgröße und einer Schlüssellänge von 128 Bit. CAST wurde 1996 zum Patent angemeldet aber zur kostenlosen Verwendung freigegeben.
IDEA
IDEA ist die Abkürzung für International Data Encryption Algorithm. Der IDEA Algorithmus wurde von James L. Massey und Xuejia Lai an der ETH in Zürich entwickelt und 1990 veröffentlicht. IDEA arbeitet mit 64 Bit Blockgröße und 128 Bit langen Schlüsseln. Bei IDEA handelt es sich um einen patentierten Algorithmus, dessen Verwendung an eine Lizenzvergabe durch das Unternehmen MediaCrypt gebunden ist, das als Distributor für die Firma Ascom, dem Besitzer von MediaCrypt und des IDEA Patents, fungiert.
IDEA wird von GnuPG aufgrund des Patents und der Lizenzvergabe offiziell nicht unterstützt. IDEA ist nur noch von Bedeutung, wenn für Anwender des veralteten PGP 2.6.3 verschlüsselt werden muss, weil PGP 2.6.3 und das v3 Schlüsselformat nur IDEA unterstützen.
ECC
Elliptic Curve Cryptography (ECC) für asymmetrische Algorithmen ist ein im Vergleich zu anderen Public-Key Algorithmen neueres Verfahren, das auf Elliptischen Kurven und dem gleichen mathematischen Problem („Discrete Logarithm Problem“) basiert wie beim Digital Signature Algorithmus (DSA) und Elgamal, aber komplexer ist. ECC bietet im Vergleich zu RSA kleinere Schlüssellängen bei gleicher Stärke und geringerem Rechenaufwand.
Im Oktober 2003 schloß die NSA ein Geschäft mit dem Unternehmen Certicom (2009 von RIM – seit 2013: BlackBerry – aufgekauft) ab, das eine Reihe von Patenten auf ECC besitzt. Im Rahmen des Abschlusses erhielt die NSA für 25 Millionen US$ eine Lizenz für das MQV (Menezes-Qu-Vanstone, ein Schlüsseleinigungsverfahren zur Erzeugung eines gemeinsamen Sitzungsschlüssels) basierte ECC System, das Certicom entwickelt und patentiert hatte. Die Lizenz umfasst Rechte an 14 Patentfamilien, die 26 Patente von Certicom beinhalten. Der Anwendungsbereich, den die Lizenz festlegt, bezieht sich auf Implementierungen durch die NSA, wo ECC größer als GF(2256) ist, d. h. auf arithemtische Verfahren mit Primzahlen größer 2256.
Wie u. a. das Magazin eWeek berichtete, will die NSA (und damit andere U.S. Geheimdienste) 512-bit ECC Schlüssel mit dem Certicom ECC Verfahren nutzen, um als SECRET und TOP SECRET eingestufte Dokumente und Datentransporte innerhalb des Global Information Grid (GIG) zu verschlüsseln. Ein 512-bit ECC Schlüssel entspricht einem 15360-bit langen RSA- oder 256-bit langen AES Schlüssel.
Auf der 14. RSA Konferenz in San Francisco stellte Daniel G. Wolf, Leiter des Direktoriums für die Absicherung von Informationssystemen (IAD) der NSA, am 16.02.2005 die neue Strategie der NSA zur Absicherung der Kommunikation der US-Regierungsbehörden vor, die zum US-Standard der kryptografischen Absicherung für das nächste Jahrzehnt wird. Die Strategie sieht vor, dass für die Absicherung nur noch bestimmte Algorithmen benutzt werden, die in einer als Suite B genannten Klasse zusammengefasst sind. Dazu gehören als Public-Key Algorithmen Elliptic Curve Menezes-Qu-Vanstone (ECMQV) und Elliptic Curve Diffie-Hellman (ECDH), Elliptic Curve Digital Signature Algorithm (ECDSA) für Signaturen, AES-128/256 für die symmetrischen Schlüssel und SHA-256/384 für das Hashing. Die ECC Algorithmen der Suite B basieren auf den Certicom Entwicklungen.
Der Certicom Gründer Dr. Scott Vanstone deutete in der Pressemitteilung NSA Names ECC as the Exclusive Technology for Key Agreement and Digital Signature Standards for the U.S. Government zur Ankündigung der neuen NSA Kryptostrategie an, dass ECC in 75% der 1,3 Millionen Kryptogeräte, die zum Invetar der US-Behörden gehören, eingesetzt würden, die im nächsten Jahrzehnt im Zuge des U. S. Kryptografie Modernisierungsprogramms (CMP) ausgetauscht werden.
Im Jahr 2013 wurde im Rahmen der Snowden-Enthüllungen und auch davor von Seiten verschiedener Kryptologen der Verdacht geäußert, dass Parameter der ECC Kurven der „Suite B“ bzw. vom NIST in Standards übernommenen ECC Kurven von der NSA bewußt manipuliert bzw. ausgewählt wurden, um damit verschlüsselte Geheimtexte im Rahmen ihrer SIGINT/COMINT Überwachungssysteme leichter entschlüsseln zu können.
Der Einsatz von ECDH und ECDSA mit GnuPG wurde im Rahmen des gnupg-ecc Projekts parallel mit dem IETF Standard RFC 6637 „Elliptic Curve Cryptography (ECC) in OpenPGP“ realisiert und ist ab GnuPG 2.1 möglich. Neben den „Suite B“ (NIST/NSA) Kurven integriert GnuPG 2.1 die Brainpool Kurven und die Curve 25519 Kurve von Daniel J. Bernstein. Da die Integration noch nicht vollständig abgeschlossen ist und viele Kommunikationspartner noch eine längere Zeit GnuPG 1.X und 2.0.X einsetzen werden, sollte man auf Schlüssel verzichten, die nur auf ECC basieren.
Informationen und Empfehlungen
Hinweise, Hintergrundinformationen und Empfehlungen zur Auswahl von Algorithmen und Schlüssellängen erhält man hier:
- BlueKrypt
Cryptographic Key Length Recommendation - Bundesnetzagentur
QES Algorithmenkatalog