![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
Fr, 9. Mai 2008
DER GROSSE BRUDER
2000 - 2006 |
OpenPGPOpenPGP definiert ein bekanntes Verschlüsselungsformat, wie wir es in Programmen wie dem GNU Privacy Guard Pretty Good Privacy finden. Dieser Beitrag gibt einen umfassenden Überblick über Entstehung, Technik und Praxis von OpenPGP.
Autor(en): Peter Ulber. Letzte Änderung am: 30.09.2006.
Betrifft: International.
OpenPGP definiert ein Verschlüsselungsformat gemäß Internet Engineering Task Force (IETF) Standard 2440 und RFC 3156. OpenPGP basiert auf der ursprünglich von Phil Zimmermann entwickelten Software Pretty Good Privacy (PGP) in der Version 5. Die beiden bekanntesten OpenPGP Softwarepakete sind das kommerzielle PGP und das unter der GNU General Public License (GPL) veröffentlichte GnuPG (Gnu Privacy Guard). Heute findet OpenPGP vorzugsweise bei der Verschlüsselung von Emails Verwendung. Wir werden uns in diesem Artikel zuerst mit der Entstehungsgeschichte von OpenPGP beschäftigen. Anschließend wenden wir uns den grundlegenden technischen Konzepten zu. Beschließen wollen wir den Artikel mit Hinweisen zum praktischen Einsatz von OpenPGP. Hier der Überblick:
A. GeschichteA.1 Phil Zimmermann und die Geburt von PGP
1991 veröffentlichte der Softwareentwickler
Abbildung 1: Phil ZimmermannQuelle: Wikipedia, Deutschland Lizenz: GFDL 1.0 Konkreter Hintergrund der Freigabe von PGP 1.0 Anfang 1991 war der im Raum stehende Gesetzesentwurf Nr. 266 des US-Senats, der die verpflichtende Einrichtung von Hintertüren in Verschlüsselungsoftware zum Zwecke der Strafverfolgung vorsah. Diesem wollte Zimmermann zuvorkommen.
"It is the sense of Congress that providers of electronic communications services and manufacturers of electronic communications service equipment shall ensure that communications systems permit the government to obtain the plain text contents of voice, data, and other communications when appropriately authorized by law."
Quelle: US Senate Bill 266
Kurz nach der Veröffentlichung von PGP 1.0 strich jedoch der Senat Anfang Juni 1991 die Kryptographie-Klausel aus dem Entwurf. Ungeachtet dessen verbreitete sich PGP schnell über Bulletin Boards und das Internet weltweit. Und so erschien bereits ein Jahr später PGP 2.0.
PGP 2.0 enthielt einige technische Verbesserungen gegenüber dem Erstlingswerk. Während PGP 1.0 noch Zimmermanns eigenen symmetrischen Algorithmus Base-O-Matic benutzte, kam jetzt der deutlich sicherere IDEA-Algorithmus zu Einsatz. Ebenso wurde der in PGP 1.0 verwendetet Hash-Algorithmus
A.2 Exportbeschränkungen und Patentstreitigkeiten
In beiden Versionen 1 und 2 setzte Zimmermann
Im Februar 1993 trat zusätzlich die US-Regierung auf den Plan. Jim Bidzos, Chef von PKP und
Die US-Regierung begann also ihre Untersuchung zu dieser vermeintlichen Patentverletzung. Wenig später geriet nun ein anderer Aspekt von PGP ins Visier der Ermittler: PGP verletze mit Verwendung insbesondere von RSAREF die Exportbeschränkungen für Waffen (
Ergebnis der patentrechtlichen Auseinandersetzungen mit RSA Inc. und der Regierung waren zwei verschiedene Versionen von PGP. Die US-Ausgabe - jetzt durch das MIT vertrieben - verwendete in Übereinkunft mit PKP bzw RSA ab Version 2.5 die Shareware-Bibliothek RSAREF. Die internationale Version Um den weiteren Quellcode von PGP auch im Ausland legal nutzen zu können, veröffentlichte Zimmermann diesen in Buchform, so daß er sich trotz ITAR exportieren ließ. In Europa wurden die über 6000 Seiten des zwölfbändigen Buches dann gescannt und wieder in elektronische Form übersetzt. An PGP 5.0i waren daher über 70 Freiwillige mit insgesamt mehr als 1000 Arbeitsstunden beteiligt. Die letzte so entwickelte PGPi-Auflage war die in der Schweiz gescannte Version 6.5.1i. Als die USA ihre Exportbeschränkungen 1999 gelockert hatten, war dieser umständliche Verbreitungsweg von PGP nicht mehr notwendig.
A.3 PGP 5 und der neue Standard OpenPGP
Nachdem die US-Regierung die Ermittlungen gegen Zimmermann Anfang 1996 eingestellt hatte, gründete er und sein Team zusammen mit Viacrypt (bis dahin Inhaber der kommerziellen Verwertungsrechte von PGP und RSA-Lizenznehmer) die Firma So enstand auf der Basis von PGP 2.x die Viacrypt-Version PGP 4. Um Konfusionen mit den Versionsnummern zu vermeiden, erhielt der im Mai 1997 vom Zimmermann-Team fertiggestellte Nachfolger der Viacrypt-Ausgabe nicht die Nummer 3, sondern wurde PGP 5 getauft.
PGP hatte sich bis zu diesem Zeitpunkt weltweit zu einem der am meist verwendeten Kryptographiesysteme gemausert. Anderweitige Implementierungen waren daher gefragt, aber nur begrenzt machbar (z.B. Veridis), da kein allgemeiner Standard verfügbar war. So trug PGP Inc. im Juli 1997 der
Nach einem Jahr Entwicklung veröffentlichte die OpenPGP-Arbeitsgruppe im Juli 1998 ihr Ergebnis: Der Internet-Standard
RFC 2440 befindet sich weiter in der aktiven Entwicklung. Den aktuellen Status kann man bei der IETF einsehen. Der 2440er Entwurf wurde ergänzt um den Standard
A.4 OpenPGP heute
OpenPGP gilt heute neben Sinnvolle Anwendung findet OpenPGP zum Beispiel bei der signierten Verteilung von Software über das Internet, um die Quelle der Software überprüfen zu können. Auch beim Signieren persönlicher Dateien oder der Verschlüsselung sensibler Daten etwa auf der eigenen Festplatte ist der Standard nützlich.
Die beiden bekanntesten Implementierungen sind das kommerzielle PGP und das unter der GNU General Public License (GPL) angebotene GnuPG (Gnu Privacy Guard) der
Zu nennen ist hier vor allem das belgische Unternehmen
Noch ein Blick auf PGP: Pretty Good Privacy wurde ab 1997 zwischenzeitlich von Network Associates (NAI) vertrieben. Nachdem NAI (heute
Wichtige Entwickler, darunter Zimmermann selbst, verließen NAI. Das Unternehmen kündigte daraufhin an, von PGP Abstand nehmen zu wollen und bot die Rechte im Oktober 2001 zum Verkauf an. 2002 kaufte die von ehemaligen PGP-Entwicklern neu gegründete Firma
Da PGP 5 selbst noch nicht vollständig standardkonform war, gilt der
B. TechnikOpenPGP soll zwei Haupt- und zwei Nebenfunktionen erfüllen. Hauptfunktionen: OpenPGP definiert erstens einen Standard zur Verschlüsselung und zweitens einen Standard zur Signierung von Daten. Nebenfunktionen: Im Rahmen dessen sind Angaben zur Komprimierung und Umwandlung der Daten für den Transport notwendig. OpenPGP als hybrides KryptosystemOpenPGP beschreibt ein hybrides Kryptosystem dar, d.h. man verwendet eine Kombination aus symmetrischer und asymmetrischer Verschlüsselung (public key Verschlüsselung) und bündelt so die Vorteile beider Verfahren, ohne deren Nachteile in Kauf nehmen zu müssen. Zwar sind symmetrische Mechanismen gerade bei größeren Datenmengen deutlich schneller als asymmetrische, dafür stehen wir bei ersteren vor dem Problem der sicheren Schlüsselübertragung. Denn symmetrisch bedeutet: Der Empfänger benötigt zum Entschlüsseln exakt denselben Schlüssel wie der Sender zum Verschlüsseln. Doch dazu muß der Sender dem Empfänger den Schlüssel auf einem von der Nachricht getrennten und abhörsicheren Wege übergeben, was in der Praxis kaum durchführbar ist. Daher kommt an dieser Stelle die asymmetrische Verschlüsselung ins Spiel: Mit ihrer Hilfe können wir den symmetrischen Schlüssel zusammen mit der Nachricht sicher an den Empfänger senden. Denn asymmetrisch bedeutet: Sender und Empfänger verfügen über ein komplementäres Schlüsselpaar, bestehend aus einem geheimen und einem öffentlichen Schlüssel (Schlüssel-Schloß-Prinzip). Seinen geheimen Schlüssel (private key) kennt nur der Empfänger selbst, seinen öffentlichen Schlüssel (public key) kann jener aber an jeden möglichen Sender verteilen. Dieser verschlüsselt dann damit den symmetrischen Schlüssel und schickt ihn zusammen mit der symmetrisch verschlüsselten Nachricht zum Empfänger. Da nur letzterer über den geheimen Schlüssel verfügt, kann auch nur er den symmetrischen Schlüssel dekodieren und damit die Nachricht lesen.
Ein weitere Vorteil hybrider Kryptosysteme ist der Schutz gegen
B.1 Verschlüsseln - Daten geschützt übermittelnOpenPGP benutzt also zwei kryptographische Verfahren: Ein symmetrisches und ein asymmetrisches. Beim symmetrischen Algorithmus (symmetric encryption algorithm) verwenden wir einen Einwegschlüssel (session key) zum Verschlüsseln der Daten. Weil er nur einmal genau für einen Datensatz verwendet wird, ist der Einwegschlüssel an diesen gebunden. Daher muß er mit der Nachricht übermittelt werden. Dafür benutzen wir dann den asymmetrischen Algorithmus (public key algorithm), mit dem wir den Einwegschlüssel sicher an den Empfänger übermitteln können. Der Ablauf einer verschlüsselten Kommunikation mit OpenPGP sieht folglich so aus: Nachrichten verschlüsseln mit OpenPGP
Abbildung 2: Nachricht verschlüsselnQuelle: Kai Raven Lizenz: Creative Commons (by-nc-sa 2.0)
Abbildung 3: Nachricht entschlüsselnQuelle: Kai Raven Lizenz: Creative Commons (by-nc-sa 2.0) Die Komprimierung der Daten vor der Verschlüsselung hat zweierlei Vorteile: Erstens wird die Verschlüsselung aufgrund der verminderten Datenmenge beschleunigt. Zweitens verringert das Komprimierung die Redundanz der Nachricht und erschwert so einen möglichen Angriff durch Kryptoanalyse.
B.2 Signieren - Die Echtheit von Daten prüfen
Das Signieren, also Unterschreiben von Nachrichten, dient der Echtheitsprüfung um Manipulationen an den Daten zu verhindern. Dafür wird ein sogenannter Nachrichten signieren mit OpenPGP
Abbildung 4: Nachricht signierenQuelle: Kai Raven Lizenz: Creative Commons (by-nc-sa 2.0)
Abbildung 5: Signatur überprüfenQuelle: Kai Raven Lizenz: Creative Commons (by-nc-sa 2.0)
Wichtig beim Signieren ist, daß der Hashwert eindeutig der Nachricht zuzuordnen ist, d.h. daß keine zwei verschiedenen Nachrichten denselben Hashwert ergeben dürfen ( Nun kann es vorkommen, daß wir eine Nachricht zugleich verschlüsseln und signieren wollen. Auch dies ist mit OpenPGP möglich. Dazu wird zuerst die Signatur nach obigem Schema erzeugt und an die Nachricht angehängt. Anschließend wird die Nachricht zusammen mit der Signatur mit dem symmetrischen Einwegschlüssel chiffriert. Der Einwegschlüssel wird dann wieder mit dem öffentlichen Schlüssel des Empfängers verschlüsselt und der restlichen Nachricht vornangestellt.
B.3 Algorithmen - OpenPGPs Mathematik
Der OpenPGP Standard legt nicht fest, welche Algorithmen für die Verschlüsselung verwendet werden müssen. Für die symmetrische Verschlüsselung gilt: Jeder Anwender kann seine eigene Liste präferierter symmetrischer Algorithmen in seinem eigenen (Sub-)Schlüssel (vgl. 2.5) hinterlegen. Damit diese Liste niemals leer ist, sieht OpenPGP vor, daß Symmetrische Algorithmen: TripleDES, AES und andere
Der Name TDES geht auf
TripleDES erhöht die Schlüssellänge durch dreimalige Verschlüsselung von 56 auf 112 Bits. Für Kundige: Die theoretisch möglichen 168 Bit verringern sich wegen möglicher
Abbildung 6: Bruce SchneierQuelle: Wikipedia, Deutschland Lizenz: GFDL 1.0
Viele Anwendungen - nicht nur gemäß OpenPGP - verwenden daher standardmäßig nicht mehr TripleDES, sondern eine AES-Variante mit 128, 192 oder 256 Bit Schlüssellänge. Neben AES kennt OpenPGP die patentierten symmetrischen Algorithmen Asymmetrische Algorithmen
Kommen wir zu den asymmetrischen Algorithmen (public key algorithm). Zwar legt OpenPGP auch hier nicht fest, welche Algorithmen der Anwender benutzen muß - gewöhnlich wählt der Benutzer die Algorithmen bei der Schlüsselerzeugung aus - aber laut Spezifikation müssen bestimmte symmetrische Algorithmen unterstützt werden:
Die Sicherheit von ElGamal basiert in Anlehnung an das
Tabelle 1: Überblick über aktuell gemäß OpenPGP verfügbarer Algorithmen
Ein möglicher Signaturalgorithmus für die Zukunft könnte der japanische Efficient Signature Algorithm (
Weitere asymmetrische Algorithmen sind der zu DSA ähnliche Kompressionsverfahren
Bei den Kompressionsverfahren verweist OpenPGP auf drei Algorithmen, deren Implementierung aber wiederum nicht verpflichtend ist. Empfohlen wird als Standard Hash-Algorithmen
Nun fehlen uns noch die Hash-Algorithmen. Hier sieht OpenPGP die Unterstützung von
Gegen SHA1 und auch gegen MD5 sind
Bis bessere Algorithmen gefunden sind, kann man gemäß OpenPGP auf SHA256, SHA384 und SHA512 mit entsprechend längeren Schlüsseln ausweichen. Weitere Hash-Algorithmen sind
B.4 Kodieren - ASCII und MIME
Wir kommen nun zum 7Bit-Problem. OpenPGP stellt verschlüsselte Nachrichten standardmäßig durch binäre Zeichenfolgen mit einer Länge von 8 Bit dar. Zum interoperablen, sicheren Transport der Daten wird deren binäre Darstellung mit Nicht nur die verschlüsselte Nachricht kann ASCII-kodiert werden, sondern auch Signaturen und die einzelnen Schlüssel. Um die verschiedenen Inhalte unterscheiden zu können, wird jeder ASCII-Hülle ein ensprechender Kopf vorangestellt (header), aus dem hervorgeht, ob es sich um eine Nachricht, eine Signatur oder einen öffentlichen bzw. privaten Schlüssel handelt. Eine gemäß PGP/Inline verschlüsselte Nachricht
-----BEGIN PGP MESSAGE----- Version: OpenPrivacy 0.99 . yDgBO22WxBHv7O8X7O/jygAEzol56iUKiXmV+XmpCtmpqQUKiQrFqclFqUDBovzS vBSFjNSiVHsuAA== =njUN -----END PGP MESSAGE-----
Mit der soeben geschilderten Methode lassen sich verschlüsselte Inhalte direkt im Nachrichtentext einer Email übermitteln (PGP/Inline). Mögliche Anhänge müssen jedoch separat verschlüsselt werden. Dieses Problem kann man lösen, indem man OpenPGP mit dem
Bereits 1995 wurde im Verschlüsselte wie signierte Nachrichten gemäß PGP/MIME bestehen aus zwei Teilen. Bei verschlüsselten Nachrichten besteht der erste Teil (application/pgp-encrypted) lediglich aus der Versionsnummer und der zweite Teil aus der eigentlich verschlüsselten Nachricht (application/octet-stream). Bei signierten Nachrichten ist es gerade umgekehrt: Der erste Teil ist die signierte Nachricht (z.B. text/plain) und der zweite Teil die Signatur (application/pgp-signature). Zusätzlich ist bei signierten MIME-Nachrichten der verwendete Hashalgorithmus angegeben. Eine gemäß PGP/MIME verschlüsselte Nachricht
From: Peter Ulber
Soll eine Nachricht signiert und verschlüsselt werden, so wird sie nach RFC1847 zuerst signiert und dann verschlüsselt (eine weitere kombinierte Variante wird in RFC3156, Kapitel
B.5 Schlüssel - Formate und EigenschaftenZur asymmetrischen Verschlüsselung und Signierung werden entsprechende Schlüsselpaare gebraucht, bestehend aus einem privaten und einem öffentlichen Schlüssel. Merke: Der private Schlüssel umfaßt immer auch den zugehörigen öffentlichen Schlüssel, nicht aber umgekehrt. OpenPGP macht nun genauere Angaben über das Format dieser Schlüsselpaare. Schlüsselversionen V3 und V4Grundsätzlich unterscheiden wir das ältere von PGP 2.6.3 stammende V3-Format und das neuere V4-Format, welches bei OpenPGP den eigentlichen Standard darstellt. V3-Schlüsselpaare wurden für RSA entwickelt und dienen gleichermaßen der Signierung und der Verschlüsselung mit RSA. V3 legt auch die anderen zu verwendenden Algorithmen fest: IDEA für symmetrische Chiffrierung und MD5 für den Hash. Die maximale RSA-Schlüssellänge beträgt hier 2048 Bit. Gemäß V4 unterscheiden wir zwischen Hauptsignierschlüssel und mehreren möglichen Unterschlüsseln zur Verschlüsselung oder Signierung. Damit haben wir es gewöhnlich mit mindestens zwei Schlüsselpaaren zu tun: Einem Hauptschlüsselpaar zur Signierung und einem Unterschlüsselpaar zur Verschlüsselung. Es können also zum Signieren und Verschlüsseln verschiedene Algorithmen verwendet werden. OpenPGP schreibt vor, daß DSA zum Signieren und ElGamal zum Verschlüsseln unterstützt werden müssen, und empfiehlt vor allem zur Abwärtskompatibilität die Unterstützung von RSA. V4 macht keine verbindlichen Vorgaben über die zu verwendenden Algorithmen, sondern setzt stattdessen auf eine vom Benutzer konfigurierbare Liste von präferierten symmetrischen bzw. Hash- und Kompressionsverfahren. Mit V4 hat man außerdem das Schlüsselvertrauen (via Signatur) um das Benutzervertrauen (owner trust) ergänzt (vgl. 2.6). Schließlich wurden gegenüber V3 einige kleinere Sicherheitslücken geschlossen. Schlüssel identifizieren: ID und FingerabdruckZur Identifikation des Schlüssels benutzt man eine Schlüssel-ID (key id) und den Fingerabdruck (fingerprint). Die ID besteht bei V3 aus den letzten 64 Bit des öffentlichen RSA-Schlüssels und bei V4 aus den letzten 64 Bit des Fingerabdrucks. Der Fingerabdruck ist bei V3 ein MD5-Hash und bei V4 ein SHA1-Hash (160 Bit) des Schlüsselmaterials. Somit ist klar, daß zur sicheren Identifikation eines V4-Schlüssels letztlich der gesamte Fingerabdruck heranzuziehen ist und nicht bloß die Schlüssel-ID. ID und Fingerabdruck eines OpenPGP-Schlüssels (v4)
Key ID = F16ADF3C Fingerprint = 87D4 D237 859F 890C C15A 1D3F 8DB5 E59B F16A DF3C Um eine (Sub-)Schlüssel an einen bestimmten Benutzer zu binden, werden Benutzer-IDs (uid), bestehend aus Name und Email-Adresse, verwendet. Jeder Benutzer-ID - zum Beispiel für verschiedene Email-Adressen - können eigene Listen für bevorzugte Algorithmen zugeordnet werden. Der Hauptsignierschlüssel wird dann der primären Benutzer-ID zugeordnet. Ändern sich die Angaben der Benutzer-ID, kann diese durch eine entsprechende Signatur widerrufen werden. Beispielhafte User-IDs und Subschlüssel (v4)
pub 1024D/F16ADF3C 2006-10-15
Key fingerprint = 87D4D237 859F890C C15A1D3F 8DB5E59B F16ADF3C
uid Peter Ulber
Schlüssel widerrufenSchlüssel können bei Bedarf oder nach einer festgelegten Zeit widerrufen werden. Letzteres geschieht dadurch, daß man bei der Erstellung eines neuen Schlüssels seine Lebensdauer angibt. Mit deren Ablauf wird der Schlüssel als 'widerrufen' signiert (revoked). Der Widerruf kann bei Bedarf manuell entweder unter Verwendung eines separaten Widerrufszertifikats geschehen - dieses wird dann zum Zeitpunkt X dem zu widerrufenden Schlüssel zugeordnet - oder direkt durch eine entsprechende Widerrufssignatur. Beim Schlüsselwiderruf können entweder einzelne Unterschlüssel als ungültig markiert werden - dies beeinträchtigt nicht die Funktion der anderen Subschlüssel - oder der Hauptsignierschlüssel. Wenn man den Hauptsignierschlüssel widerruft, werden automatisch alle Unterschlüssel mit ungültig gemacht. Privater Teil eines OpenPGP-Schlüssels (v4)
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)
.
mRWH4MbexVAXoOFnECmdTDVJgRkP0Tu0cAbsEmMAAwUH/j08pEwexaw/oMUiBR1x
TyF4zghFNeCZPaaCI1LdCwFun4ydAlEEQJZi2RAIAOIkRJzufidS5pWSUkazsnvv
fBhU8Y9oHGJBfi3x7O8E6JSxSH3LSGdtd7a4q3kvml2JikX6IdYPEX0lyVwakTua
9GAAB8BEwY1CuoYeV/gvO1SEmgDfHCPufWyPAr1o4vvQArQnUGV0ZXIgVWxiZXIg
PHBldGVyQGRlcmdyb3NzZWJydWRlci5vcmc+iFcEExECABcFAkCWYsYFCwcKAwQD
FQMCAxYCAQIXgAAKCRDCZqyeBZYp+dkKAKCewLgsq1tjiJ2ejTF9+B+hVHRSDQCf
TyF4zghFNeCZPaaCI1LdCwFun4ydAlEEQJZi2RAIAOIkRJzufidS5pWSUkazsnvv
eAzdplkfbS/YajiGvbb1KnNX7LczWbhOo4iiIpwcyii9q20W7cRTQ8sxqwOC4/D9
GFPongzqptV/sW8u/txieGdB2pzoHm0EEteCVmHH7W0DRwLc0QNUbOPMk3qxNTFj
RtbBDpmqG1CjuSRc88eFJyQ6VKt7rttxU/XsxPK4KqtRfSMQOZRTg/Ckr3oaDtBw
EohvOq93zV/dYIKopBIiM5JM16LXUCkVsS56PSCwq0O3wXu4tEV9dz2dVwCgxqH7
iyhk9cViYtJzUgQlP1wSrLji9gcA2YIVMyQiFaY6cgV5NVQ7e/WmHz7kZnDoTBmk
bQgAreu7WxhJxxNXygnBnLImGm2/71g0wFMQ85n2s5kwdz4k3k1lXjgg6fw5ID1A
rIn3l/5H7cf3e9jnvfoMA21jlQ70Pb4djj8ElirmA62s1Fpqg6y+zijbTB9/FsEV
kVlZOUApnb/bEiAUiHIwi8eyylCphSL3Fb2wUoZQAeFrJ4i8Wrc4gM1cs7a1iX5X
gnZvT1SSvUUFfXiauso7xxSQmRWH4MbexVAXoOFnECmdTDVJgRkP0Tu0cAbsEmMA
AwUH/j08pEwexaw/oMUiBR1xAmEfRdkc2duvhf8Bn+vmuj5/cg3mEu3iSLjGnkyx
/9Dq5U+jpqMDHGxRS4hIFBED/18zlgwhk+kcGG7jBq8EpfKdx8AX2F+AxmUkttyx
Zdjp9yhJFSuA7sgZZeV2pSsWQPGwva8Udsxedb0pDi5rHNIwh/j8yCTE6u3FjRTB
pLGVtMhf6meX9frag0ytsZuyRw98WMb2KQh5htgjGGCbn6qVBQ5d26PVVeKdPQuF
lqpEBACABrWnQptNbpBBsaocdiRz+LAezvGJJ/lKl+6tUvd1RHCGimhVjOqer6hN
4pdPiYEzrl1LflcS3bwSmtrJFsQk5Wr4aRID65fp9bIUduQDL3IIMfDIuceLxk8g
CwePz4xD2ZYlH/cY+o9dBpdpJD4iSpenJa+RPzvJVmlCSkztF/8DAwKmBjIQMmI7
f11yKF4PKlD4jRrsj9LYdSzz/NCTvQO05braBKaxTrrhlSjNjHZ+D4acEIhj/nbT
ldPuDiP/f9IM+xmbSQehWk9VNPr/AwMCpgYyEDJiO/BgRaD2cpqSY1Y2vo+SHu+7
lQHPBECWYsYRBACZohN2L/Or2x7lfsM3aLar11bol/LLm/ijws91u9BhKYRT5jMg
BQJAlmLZAAoJEMJmrJ4Flin5PGkAoLQTtfPLQSoX9pvC3idUTwoB2WYeAJ0UO0Ff
6vTfU4dVY1MxvPY46+LPXQ==
=4U9b
-----END PGP PRIVATE KEY BLOCK-----
Weitere Schlüsselattribute (Signaturen) sind folglich der Zeitpunkt der Erstellung, ein mögliches Ablaufdatum, die Gültigkeit des Schlüssels und Benutzervertrauen (owner trust), sowie eine mögliche Widerrufsignatur. Bevor wir uns der Gültigkeit und dem Vertrauen zuwenden, sei noch kurz etwas zur Aufbewahrung der Schlüssel gesagt. Üblicherweise werden die privaten und öffentlichen Schlüssel in je einem Schlüsselbund (meist eine Datei) lokal aufbewahrt. Die privaten Schlüssel werden zudem durch ein Paßwort geschützt. Jeder Schlüssel kann prinzipiell aus einem Schlüsselbund exportiert oder umgekehrt in einen solchen importiert werden. Diese Verfahren dienen vor allem dem Austausch öffentlicher Schlüssel im Rahmen des Web of Trust (vgl. 2.6) Um den Export zu verhindern, kann der Schlüssel als nicht-exportierbar markiert werden. Öffentlicher Teil eines OpenPGP-Schlüssels (v4)
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)
.
TyF4zghFNeCZPaaCI1LdCwFun4ydAlEEQJZi2RAIAOIkRJzufidS5pWSUkazsnvv
AmEfRdkc2duvhf8Bn+vmuj5/cg3mEu3iSLjGnkyxeAzdplkfbS/YajiGvbb1KnNX
/NCTvQO05braBKaxTrrhlSjNjHZ+D4acEIhj/nbTldPuDiP/f9IM+xmbSQehWk9V
NPqIRgQYEQIABgUCQJZi2QAKCRDCZqyeBZYp+TxpAKC0E7Xzy0EqF/abwt4nVE8K
mQGiBECWYsYRBACZohN2L/Or2x7lfsM3aLar11bol/LLm/ijws91u9BhKYRT5jMg
fBhU8Y9oHGJBfi3x7O8E6JSxSH3LSGdtd7a4q3kvml2JikX6IdYPEX0lyVwakTua
EohvOq93zV/dYIKopBIiM5JM16LXUCkVsS56PSCwq0O3wXu4tEV9dz2dVwCgxqH7
/9Dq5U+jpqMDHGxRS4hIFBED/18zlgwhk+kcGG7jBq8EpfKdx8AX2F+AxmUkttyx
Zdjp9yhJFSuA7sgZZeV2pSsWQPGwva8Udsxedb0pDi5rHNIwh/j8yCTE6u3FjRTB
pLGVtMhf6meX9frag0ytsZuyRw98WMb2KQh5htgjGGCbn6qVBQ5d26PVVeKdPQuF
lqpEBACABrWnQptNbpBBsaocdiRz+LAezvGJJ/lKl+6tUvd1RHCGimhVjOqer6hN
4pdPiYEzrl1LflcS3bwSmtrJFsQk5Wr4aRID65fp9bIUduQDL3IIMfDIuceLxk8g
9gcA2YIVMyQiFaY6cgV5NVQ7e/WmHz7kZnDoTBmkbQgAreu7WxhJxxNXygnBnLIm
rMHD2bzQC/nWv6JKCGIe0LQnUGV0ZXIgVWxiZXIgPHBldGVyQGRlcmdyb3NzZWJy
dWRlci5vcmc+iFcEExECABcFAkCWYsYFCwcKAwQDFQMCAxYCAQIXgAAKCRDCZqye
BZYp+dkKAKCewLgsq1tjiJ2ejTF9+B+hVHRSDQCfTyF4zghFNeCZPaaCI1LdCwFu
n4y5Ag0EQJZi2RAIAOIkRJzufidS5pWSUkazsnvviyhk9cViYtJzUgQlP1wSrLji
7LczWbhOo4iiIpwcyii9q20W7cRTQ8sxqwOC4/D9GFPongzqptV/sW8u/txieGdB
2pzoHm0EEteCVmHH7W0DRwLc0QNUbOPMk3qxNTFjRtbBDpmqG1CjuSRc88eFJyQ6
VKt7rttxU/XsxPK4KqtRfSMQOZRTg/Ckr3oaDtBwf11yKF4PKlD4jRrsj9LYdSzz
ylCphSL3Fb2wUoZQAeFrJ4i8Wrc4gM1cs7a1iX5XgnZvT1SSvUUFfXiauso7xxSQ
Gm2/71g0wFMQ85n2s5kwdz4k3k1lXjgg6fw5ID1ArIn3l/5H7cf3e9jnvfoMA21j
lQ70Pb4djj8ElirmA62s1Fpqg6y+zijbTB9/FsEVkVlZOUApnb/bEiAUiHIwi8ey
CwePz4xD2ZYlH/cY+o9dBpdpJD4iSpenJa+RPzvJVmlCSkztF4hJBCARAgAJBQJA
lmUTAh0CAAoJEMJmrJ4Flin52mIAnjzRHXHLmrxZqCi9TVgyvs7dZMEiAJ9tcBkW
AdlmHgCdFDtBX+r031OHVWNTMbz2OOviz10=
=3WiQ
-----END PGP PUBLIC KEY BLOCK-----
Achtung: Schlüsselattribute sind Signaturen und Signaturen werden etwa imRahmen von Schlüsselvalidierungen auch Zertifikate genannt. Wir unterscheiden wie bei den Schlüsseln zwei Versionen V3 und V4 von Signaturen. Die obigen Ausführungen zu den Schlüsselattributen beziehen sich nur auf V4-Signaturen. V3-Signaturen bieten diese Möglichkeiten gar nicht und wurden nur der geforderten Abwärtskompatibilität zu PGP 2.6 wegen aufgeführt.
B.6 Vertrauen - Das Web of TrustAllein die Stärke der Algorithmen macht die verschlüsselte Kommunikation nicht sicher. Wir müssen auch einen Weg finden, die Echtheit der Schlüssel überprüfen und mögliche Manipulationen erkennen können. Dafür benutzt OpenPGP zwei interagierende Konzepte: Die Gültigkeit des Schlüssels und das Vertrauen in den Benutzer (owner trust). Durch Interaktion beider Konzepte kann sich zwischen den verschiedenen Kommunikationspartnern nach und nach ein Netzwerk des Vertrauens bilden (Web of Trust). Schlüsselgültigkeit versus BenutzervertrauenWir bezeichnen dann einen Schlüssel als gültig, wenn wir von seiner Echtheit überzeugt sind. Wir vertrauen dann einem anderen Benutzer, wenn wir überzeugt sind, daß jener bei der Echtheitsprüfung von Schlüsseln mindestens genauso sorgfältig vorgeht wie man selbst. Der Ausspruch des Vertrauens bestimmt so den Wert der Echtheitsprüfung des anderen Benutzers. Und die Erklärung der Gültigkeit eines Schlüssels bezieht sich auf dessen Echtheit. Schauen wir uns zuerst die Bestimmung der Echtheit eines Schlüssels an. Erhalten wir von unserem Kommunikationspartner etwa per Email seinen öffentlichen Schlüssel, können wir nie sicher sein, daß der Schlüssel wirklich unverfälscht bei uns angekommen ist. Daher müssen wir den Schlüssel vor der Verwendung prüfen. Am besten geht dies, indem wir uns von unserem Kommunikationspartner zumindest den Fingerabdruck plus eventuell andere Attribute seines Schlüssels auf einem sicheren Kanal geben lassen (etwa persönlich). Dann generieren wir unsererseits aus dem empfangenen Schlüssel ebenfalls dessen Fingerabdruck und vergleichen beide. Stimmen sie überein, sind die Schlüssel echt, und wir können dies mit einer Signatur des fremden Schlüssels durch unseren geheimen (Haupt-)signierschlüssel bestätigen. Damit erkennen wir den neuen Schlüssel als gültig an. Diese Signatur kann lokal auf unseren Schlüsselbund beschränkt oder zusammen mit dem signierten Schlüssel exportierbar sein. Vertrauensniveau und VertrauensmengeErst nach der Gültigkeitsprüfung eines Schlüssels können wir zusätzlich das Benutzervertrauen des betreffenden Schlüsselinhabers einstellen. Hierbei unterscheiden wir verschiedene Vertrauensniveaus (trust level 0,...,n) und die Vertrauensmenge (trust amount 0-255) auf dem gewählten Level. Die Idee: Stufen wir eine Schlüssel auf Level i ein, so ist dessen Besitzer für uns vertrauenswürdig andere Schlüssel mit einem Level kleiner i auf Echtheit zu prüfen. Level 0 ist demnach äquivalent mit der bloßen Echtheitsprüfung. Level 1 bedeutet, daß wir die Signaturen des Betreffenden unter Schlüssel vom Level 0 anerkennen. Damit haben wir es quasi mit einer Zertifikatsauthorität (CA) zu tun. Level 2 heißt demzufolge, daß Schlüssel mit Level 0 oder 1 signiert werden können und von uns anerkannt werden, und so weiter. Auf dem gesetzten Vertrauensniveau können wir nun noch die Vertrauensmenge festlegen. Dabei unterscheidet OpenPGP grundsätzlich zwischen teilweise (Werte kleiner 120) und vollem Vertrauen (120-255). Anwendungen sollten 60 für marginales (teilweises) und 120 für volles Vertrauen verwenden. Dieses Unterscheidung wird eingesetzt, um die Anzahl der Signaturen zu bestimmen, die notwendig sind, damit ein Schlüssel als gültig erachtet wird. Wir könnten dann zum Beispiel mindestens eine voll vertrauenswürdige Unterschrift oder zwei teilweise vertrauenswürdige Unterschriften verlangen. Schauen wir uns dazu die Idee des Web of Trust (WoT) kurz an einem Beispiel an: Unser fiktives WoT bestehe aus Jan, Ines und Udo. Ines könnte nun ihren öffentlichen Schlüssel Jan persönlich übergeben, so daß Jan ihren Schlüssel signiert und damit für gültig erklärt. Dann gibt er Ines den signierten Schlüssel zurück und behält seinerseits eine Kopie davon. Wollte nun Ines mit Udo kommunizieren, sendet sie ihm eine Kopie des von Jan signierten Schlüssels. Udo verfüge nun bereits über Jans öffentlichen Schlüssel und Udo vertraue den Echtheitsprüfungen von Jan (Level 1). Dann braucht Udo nur noch die Unterschrift von Jan mit Hilfe des öffentlichen Schlüssels von Jan verifizieren und kann dann den Schlüssel von Ines als gültig bestätigen ohne selbst mit Ines reden zu müssen.
Abbildung 7: Größeres Beispiel eines fiktiven Web of Trust zum NachdenkenQuelle: Peter Ulber Lizenz: GFDL 1.1 Diese Methode hat den Vorteil, daß man nicht jeden einzelnen Schlüssel per Hand überprüfen muß, sondern je nach Vertrauen auf bereits vorhandene Signaturen eines zu prüfenden Schlüssel zurückgreifen kann. Zusammen erlauben Benutzervertrauen und Schlüsselgültigkeit ein flexibles Schlüsselmanagement auf Basis eines flachen Web of Trust und bzw. oder hierarchischer Zertifizierungsinstanzen. Ein wesentlicher Unterschied zwischen Benutzervertrauen und Schlüsselgültigkeit ist, daß die Gültigkeitssignaturen mit dem Schlüssel exportiert werden können, nicht aber das Benutzervertrauen (trust packet). Das Benutzervertrauen ist nur für den lokalen Schlüsselbund gültig und wird zum Beispiel bei der Implentierung von OpenPGP in GnuPG in einer separaten Datei gespeichert.
B.7 Sicherheit - Möglichkeiten und GrenzenVon Laien wird die Sicherheit eines Kryptosystems oft mit der Sicherheit der verwendendeten Algorithmen gleichgesetzt. Dem ist natürlich nicht so. Die Sicherheit des Kryptosytems hängt von einer Vielzahl von Faktoren ab. Schauen wir uns also jetzt die wichtigsten Sicherheitsaspekte von OpenPGP an. Einige wurden bereits in vorhergehenden Abschnitten angeschnitten. Da OpenPGP keine abschließende Liste mit zu benutzenden Algorithmen angibt, kann man in dieser Hinsicht nur bedingt über die Sicherheitsrisiken sprechen. Zwar setzt OpenPGP auf Standardverfahren wie TDES, DSA und ElGamal, an deren Zuverlässigkeit die Sicherheit von OpenPGP aber nicht zwingend gebunden ist. Bessere Algorithmen lassen sich ja bei Bedarf hinzufügen, wie das Beispiel AES zeigt. Klar ist: Die Sicherheit der Algorithmen beruht nicht auf deren Geheimhaltung, sondern auf ihrem mathematischen Verfahren. Asymmetrische Kryptosysteme mit einem Schlüsselpaar setzen dabei auf die Schwierigkeit, den privaten aus dem öffentlichen Schlüssel zu berechnen. Damit lassen sich die zur Chiffrierung notwendigen Schlüssel auch über unsichere Kanäle verteilen, ohne den Schlüssel zur Dechiffrierung zu gefährden. In Verbindung mit den symmetrischen Sitzungsschlüsseln kann zudem chosen-plaintext Angriffen vorgebeugt werden.
Bei der Verteilung öffentlicher Schlüssel dienen die Signaturen im Rahmen des Web of Trust potentiellen EigensignaturenAn dieser Stelle sei auf den Sinn von Eigensignaturen eingegangen. Das sofortige Signieren der User-IDs neu erzeugter Schlüssel beugt Denial of Service Attacken (DOS) vor, d.h. jemand kann mir die Zustellung an mich gerichteter Nachrichten vorenthalten. Hintergrund: Die User-IDs in unsignierten öffentlichen Schlüsseln können beliebig verändert werden, z.B. kann ein Angreifer die Email-Adresse manipulieren, so daß die an mich gerichteten Emails jetzt an ihn gesendet werden. Wurde die User-ID hingegen vorher von mir selbst signiert, würde eine mögliche Manipulation auffallen, da der Signaturhash Informationen der User-ID beinhaltet. Der Fingerabdruck würde nicht weiterhelfen, da Änderungen an der User-ID nicht in den Fingerabdruck eingehen. Merke weiter: Eigensignaturen sind keine Echtheitsprüfungen im Sinne des Web of Trust, da ein Angreifer, der den ganzen Schlüssel fälscht, diesen mit dem passenden geheimen Schlüssel unterschrieben haben könnte. Neben der Eigensignatur der User-ID (certification signatures) gegen DOS-Angriffe kann man nach OpenPGP auch die einzelnen Unterschlüssel unterschreiben (subkey binding signature) und beugt in Ergänzung zum Fingerabdruck Verfälschungen der Schlüssel vor. Auch kann der der gesamte Schlüssel inklusive aller Unterschlüssel und User-IDs signiert werden (direct-key signature). SchlüsselserverDie Eigensignatur zumindest der User-ID ist von Bedeutung, da öffentliche Schlüssel meist über frei zugängliche Schlüsselserver verteilt werden, welche die Identität des Benutzers bis dato nicht prüfen. Zu den Schlüsselservern merke man sich außerdem, daß zwar immer neue Schlüssel auf den Server hochgeladen werden können, das Löschen einzelner - auch der eigenen - Schlüssel aber bis dato aus genanntem Grund unmöglich ist.
Schlüsselserver der zweiten Generation mit neuen Funktionen befinden sich noch in der Entwicklung. Hinweis: Die PGP Corporation bietet bereits einen
Abbildung 8: Schlüsselserver der PGP Corporation Quelle: Peter Ulber Lizenz: GFDL 1.1 Der private Schlüssel bedarf im Gegensatz zum öffentlichen eines ungleich stärkeren Schutzes. Gewöhnlich bedient man sich einer sicheren Passphrase als letzte Hürde, so daß selbst ein sich im Besitz des privaten Schlüssel(bundes) befindender Angreifer nicht ohne weiteres Zugriff auf den geheimen Schlüssel erhält. Grundsätzlich sollte aber darauf geachtet werden, daß kein Dritter überhaupt in den Besitz des privaten Schlüssel(bundes) gelangt. An dieser Stelle kommen sichere und ordentlich administrierte Systeme sowie sichere Hardware ins Spiel. Schlüssel widerrufenSollte der geheime Schlüsssel doch einmal kompromittiert worden sein, so bietet OpenPGP die Möglichkeit des Widerrufs. Dazu wird mit Hilfe eines entsprechenden Widerrufsschlüssels (revocation key4) eine Widerrufssignatur an den Schlüssel angefügt, der ihn als ungültig markiert. Neben der Kompromittierung des Schlüssels oder der User-ID sind auch profanere Gründe für einen Widerruf denkbar: Vielleicht möchte der Besitzer auf einen stärkeren Schlüssel umsteigen oder erneuert prinzipiell alle Jahre seine Schlüssel. Der Grund des Rückrufs geht in den Widerruf mit ein. Um auch bei Verlust des privaten Schlüssels einen Widerruf durchführen zu können, ist es zu empfehlen, den Widerrufsschlüssel (auch Widerrufszertifikat genannt) sofort nach Erzeugen des eigentlichen Schlüsselpaares zu generieren und separat von diesem aufzubewahren. Neben dem Schlüssel kann auch lediglich die Signatur eine User-ID widerrufen werden (cert revocation), etwa weil man die Email-Adresse in der User-ID ändern möchte. Der Widerruf wird allgemein als das schwächste Glied des ganzen Systems angesehen, da es keine Garantie gibt, daß der widerrufene Schlüssel nicht doch von irgendjemand benutzt wird. Ein Grund kann etwa sein, daß der Widerruf nicht alle Betroffenen erreicht. Neue Funktionen zukünftiger Schlüsselserver wie bei dem der PGP Corporation könnten hier Verbesserungen bringen.
Der Vollständigkeit halber sei ein wichtiger Vorteil von OpenPGP gegenüber
C. PraxisC.1 Implementierung: GnuPG und Co.
Die beiden bekanntesten Implementierungen von OpenPGP sind gewiß GnuPG und PGP. Der
Abbildung 9: Werner KochQuelle: Skåne Sjælland Linux User Group Lizenz: Creative Commons (by-sa v1.0)
Wesentliches Merkmal von GnuPG ist die freie Verfügbarkeit inklusive Quellcode gemäß der
GnuPG gibt es für alle gängigen Betriebssysteme. Während GnuPG am Anfang für Laien nur schwer zu bedienen war, machen graphischen Oberflächen die Benutzung heute auch für Einsteiger machbar. Unter Unix bzw. GNU/Linux seien neben
GnuPG kann jeder auf der Projektseite - dort finden sich auch weitere Informationen - kostenlos herunterladen Die aktuelle, stabile Version 1.4.5 wurde im August 2006 freigegeben. Zukünftig wird GnuPG neben OpenPGP auch
Das zweite bekannte Produkt ist PGP, ursprünglich von Diesem Nachteil von PGP gegenüber GnuPG stehen die Vorteile der leichteren Bedienbarkeit und besseren Dokumentation vor allem für Laien gegenüber. PGP wird in verschiedenen Ausführungen für Privatpersonen, Unternehmen, für den Desktop oder Server angeboten. Die aktuellen Desktop- und Kommandozeilenausgaben tragen die Versionsnummer 9.
Neben GnuPG und PGP gibt es zahlreiche weitere Implementierungen des OpenPGP Standards, zum Beispiel McAfees
Aufmerksam sei schließlich auf die Implementierung von OpenPGP in Webmail gemacht. Derzeit gibt es zumindest zwei Lösungen: Den Emailprovider Hushmail und Freenigma.
Abbildung 10: Hushmail unterstützt OpenPGP für WebmailQuelle: Peter Ulber Lizenz: GFDL 1.1
Neben Hushmail gibt es seit Mitte 2006
C.2 Anwendung: Email und Co.Kommen wir zum Schluß zur Frage, was man mit OpenPGP Software denn so alles anstellen kann. Die beiden grundlegenden Funktionen von OpenPGP sind das Signieren und das Verschlüsseln. Also frage man sich, welche Daten man signieren bzw. verschlüsseln möchte. Ein, wenn nicht der Einsatzbereich ist Email. Gewöhnliche Emails ähneln Postkarten, die prinzipiell jeder lesen oder manipulieren kann. OpenPGP kann helfen, einerseits Manipulationen von Emails zu verhindern (Signieren) und andererseits vertrauliche Nachrichten gegenüber den neugieren Augen Dritter zu schützen (Verschlüsseln).
Gerade GnuPG und PGP bieten hier einfache Lösungen für die gängigen Mailprogramme an. Unter Unix und GNU/Linux unterstützen viele Mailreader GnuPG von Haus aus, wie etwa Mutt und Mutt-NG, Pine, Kmail, Evolution, oder Sylpheed Claws. Für Mozilla Thunderbird gibt es systemübergreifend die Erweiterung
Abbildung 11: Mozilla Thunderbird mit OpenPGP-Erweiterung EnigmailQuelle: Peter Ulber Lizenz: GFDL 1.1 Weiterhin hat OpenPGP eine wichtige Bedeutung für sicheres Instant Messaging, d.h. für elektronische Kurznachrichten. So bietet beispielsweise Jabber eine gute Unterstützung von GnuPG an. Folgende Clients eigenen sich für GnuPG mit Jabber: Psi und JBother unter Windows, Linux und MacOS gleichermaßen; unter Linux Kopete für KDE, Gajim für Gnome und Centericq für die Konsole. Neben Nachrichten können auch andere Daten, wie Bilder, Textdokumente oder Filme verschlüsselt bzw. signiert werden. PGP bietet zudem mit Whole Disk Encryption die Möglichkeit, ganze Datenträger zu verschlüsseln. Auch der serverseitige Einsatz mit PGP, GnuPG oder mit dem McAfee E-Business Server ist möglich.
Eine wichtige Rolle spielt das Signieren gemäß OpenPGP außerdem bei der Echtheitsprüfung von Software. So bietet zum Beispiel
Dieser Artikel ist geschützt durch: GFDL 1.1.
![]()
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||