Nachfolgend einige Basisinformationen zu PGP (Pretty Good Privacy). Seit ich in der IT tätig bin, war ich einerseits von IT Sicherheit fasziniert (weshalb ich mich jetzt auch hauptberuflich damit beschäftige), zum anderen speziell von PGP. Gründe dafür sind sicherlich die spezielle Geschichte von PGP sowie des Erfinders Phil Zimmerman, aber auch die Qualität und Funktionalität des Produkts PGP.
PGP eignet sich aufgrund der verwendeten Mechanismen sowie der ausgezeichneten Dokumentation, sich eingehend wie auch einleitend mit Kryptografie zu beschäftigen. Obwohl PGP seit langem ein kommerzielles Produkt ist, ist es aus meiner Sicht eines der vertrauenswürdigsten Sicherheitsprodukte, die erhältlich sind. Obwohl ein kommerzielles Produkt, wird der Source Code Drittstellen für die unabhängige (Sicherheits)-Analyse zur Verfügung gestellt.
Wichtige Funktionen von PGP
Dies hängt davon ab, welches Produkt aus der Produktpallete verwendet wird. Wichtige Funktionen sind:
- Mailverschlüsselung
- PGP-Disk; eine PGP-Disk ist ein in der Grösse variabel wählbarer Bereich auf der Festplatte, der dann sicher verschlüsselt wird. Dieser Bereich (die PGP-Disk) wird anschliessend als Laufwerksbuchstabe angesprochen. Alternativ kann die Disk auch in das Dateisystem gehängt (gemountet) werden (wie unter UNIX)
- Festplattenverschlüsselung; z.B. verschlüsseln der Festplatte eines Notebooks
- PGP-VPN; etablieren eines sicheren Kanals über öffentliche Verbindungen (z.B. das Internet)
- Verschlüsseln von Dateien und Verzeichnissen auf Netzwerkservern
- Zentrales Management von Schlüsseln und PGP-Applikationen
- etc. etc.
Geschichte von PGP
Phil Zimmermann war der erste, der die asymmetrische Kryptographie (Public Key-Kryptographie) als Software der Allgemeinheit leicht zugänglich machte. Aufgrund dessen sah sich Zimmernann einer drei Jahre lang dauernden Untersuchtung der US-Zollbehörden ausgesetzt. Die Regierung war der Ansicht, dass US-amerikanische Exportbeschränkungen für kryptographische Software verletzt worden waren.
1991 wurde PGP als Freeware im Internet veröffentlicht und trat einen Siegeszug um die Welt an. Interessant ist auch die Geschichte der Veröffentlichung. Der Source Source von PGP wurde in Buchform exportiert und in der Schweiz wieder assembliert. Anfangs 1996 wurde der Fall von der US-Regierung ohne Anklage fallengelassen, anschliessend gründete Zimmermann die PGP Inc., die im Dezember 1997 von Network Associates Inc. übernommen wurde. Zimmermann hatte dort für die die Funktion eines "Senior Fellow". 2002 wurde PGP der Network Associates von einer neuen Firma namens PGP Corporation abgekauft, wo Zimmermann als spezieller Berater tätig ist.
Am Stanford Law School's Center for Internet and Society amtet Zimmermann zudem als "Fellow".
Kryptografische Verfahren in PGP
PGP verwendet verschiedene kryptografische Verfahren, um die Verschlüsselung vorzunehmen. Zur Verschlüsselung werden Geheimschlüssel-Algorithmen wie AES, Blowfish, Twofish und IDEA verwendet. Es sind synchrone Verfahren, die den selben Schlüssel zum de- und chiffrieren verwenden. Algorithmen wie AES und Blowfish gelten zum heutigen Zeitpunkt als sicher. Zum Übertragen der Geheimschlüssel werden Public-Key-Verfahren wie Diffie-Hellman oder RSA (Rivest, Shamir und Adlemann) verwendet. Zum Verschlüsseln werden also symmetrische Verfahren, zum Übertragen der Geheimschlüssel asymmetrische verwendet.
Schon jetzt ist eine wesentliche Schwachstelle auszumachen: Damit die Verschlüsselung sicher ist, müssen die Geheimschlüssel für die symmetrische Verschlüsselung auf eine absolut sicherere Weise allen Beteiligten zugänglich gemacht werden. Gelangen die Geheimschlüssel in falsche Hände, ist die Verschlüsselung nicht mehr länger sicher. Meistens werden symmetrische Verfahren wie die eingangs erwähnten für die Verschlüsselung eingesetzt, weil diese im Vergleich mit asymmetrischen Verfahren wie Diffie-Hellman und RSA um ein vielfaches schneller sind.
Mögliche Schwachpunkte in PGP
Schwachpunkte in PGP können einerseits durch Fehler in der Implementierung der Kryptoverfahren in PGP auftreten, zum anderen können die genannten symmetrischen und asymmetrischen Verfahren selber Schwachstellen aufweisen. Solche Schwachstellen resp. Angriffspunkte zu finden ist die Aufgabe von Kryptologen. Ist ein Verfahren erst einmal kompromittiert worden, sollte es anschliessend nicht weiter verwendet werden. Beispiele für Verfahren, die Angriffspunkte für kryptologische Analysen bieten resp. geboten haben sind DES (asymmetrisches Verfahren) oder auch MD5 und in neuester Zeit sogar SHA-1 (beides Hash resp. Signierverfahren).
Aber auch Verfahren, die zum Zeitpunkt x als sicher gelten und keine Designfehler aufweisen, können zum Zeitpunkt y unsicher werden. Kryptografische Verfahren hängen zum heutigen Zeitpunkt stark von der Länge der zum Einsatz kommenden Schlüssel ab. Ein symmetrischer Schlüssel ist heute zum Beispiel 128 - 256 Bit lang, während ein asymmetrischer Schlüssel 1024 - 4096 Bit lang sein kann. Kryptoverfahren unterliegen auch Brute-Force Attacken, bei denen nicht nach Schwachstellen gesucht wird, sondern mit purer Rechenkraft alle möglichen Kombinationen durchgerechnet werden, bis die richtige Kombination gefunden ist. Die Zeitspanne auf der Achse x zu y ist umso kürzer, je kleiner die verwendeten Schlüssel und je grösser die Rechenkraft von Computern wird. Da die Rechenkraft potentiell steigt, müssen auch die Schlüssel länger werden. Symmetrische Verfahren die Schlüssel von 56 Bit Länge verwenden, gelten als nicht mehr sicher, da ein solcher Schlüssel schon mit gängigen Computern in Minuten errechnet werden kann.
Public-Key-Verfahren nach Diffie-Hellman
Werder und Bremen tauschen ihre öffentlichen Schlüssel aus. Dies kann z.B. mittels eines Zertifikats erfolgen, das die Identität gegenseitig sicherstellt. Auf dieser Weise können beide Seiten sicher sein, dass der öffentliche Schlüssel zum Gegenüber gehört. Die Identität muss unbedingt sichergestellt werden, sonst ist ein Angriff möglich. Anschliessend wird ein gemeinsames "Secret" berechnet. Aufgrund des Schlüsselaustausches und der mathematischen Verwandschaft eines jeden Private/Public Schlüsselpaars, errechnen beide Seiten das gleiche "Secret".
Public-Key-Kryptografie mit RSA - Funktionsweise
Das folgende Bild zeigt die Funktionsweise der Public-Key-Kryptografie anhand des RSA Verfahrens. Werder besorgt sich den öffentlichen Schlüssel (siehe oben) von Bremen. Die Nachricht verschlüsselt Werder mit dem öffentlichen Schlüssel von Bremen. Anschliessend wird die Nachricht übertragen. Die Übertragung kann dabei über eine ungesicherte Verbindung erfolgen - niemand kann die Nachricht lesen, weil sie verschlüsselt ist. Bremen erhält die verschlüsselte Nachricht und kann sie mit dem eigenen privaten Schlüssel wieder entschlüsseln. Dies ist möglich, weil ein Public-Key Schlüsselpaar über eine mathematische Beziehung verfügt.
Wichtig bei diesem Vorgang für die Sicherheit sind:
- Werder muss sicher sein, dass er den öfffentlichen Schlüssel von Bremen für die Verschlüsselung verwendet. Die Identität kann dabei über ein Zertifikat oder auch den Fingerabdruck des Schlüssels verifiziert werden
- Der private Schlüssel muss unbedingt sicher verwahrt werden. Nur der Besitzer darf Zugriff auf den privaten Schlüssel haben. Der private Schlüssel muss mit einem starken Passwort gesichert werden. Demgegenüber kann der öffentliche Schlüssel der Allgemeinheit zugänglich gemacht werden. Will jemand den öffentlichen Schlüssel eines Kommunikationspartners verwenden, muss er aber zuvor die Identität sicherstellen
Allgemeine Bemerkung: Eine Nachricht kann nicht nur verschlüsselt, sondern auch signiert werden. Neben der Verschlüsselung, die die Vertraulichkeit einer Nachricht sicherstellt, kann mit der Signatur die Integrität der Nachricht sowie die Identität des Absenders überprüft werden.
Generieren von Schlüsseln für das RSA-Verfahren
Das folgende Bild zeigt, wie ein Schlüsselpaar mittels des RSA-Verfahrens erzeugt wird. Zwischen dem Schlüsselpaar besteht eine mathematische Beziehung.
- Nach der Wahl des öffentlichen Schlüssels (normalerweise eine Konstante) werden zwei grosse Primzahlen P und Q generiert
- Der private Schlüssel wird nun aus P, Q und dem öffentlichen Schlüssel abgeleitet
- Die öffentlichen Schlüsseldaten umfassen den konstanten öffentlichen Schlüssel sowie das Modul N, das das Produkt aus P und Q darstellt
- Ein Angreifer kann den privaten Schlüssel nicht berechnen, da es keine praktikable Möglichkeit zur Berechnung von P und Q durch Faktorisierung von N gibt
Schwachpunkte in der Public-Keys-Kryptografie
Die Sicherheit von Public-Key-Verfahren beruht auf der Tatsache, dass die Kombination von Zahlen durch Multiplikation oder Potenzierung sehr schwer umzukehren ist. Daraus resultiert eine Schwäche bezüglich Brute-Force-Angriffen auf die Schlüssel (es könnten alle Kombinationen durchgerechnet werden).
Beim Austausch von öffentlichen Schlüsseln muss absolut sichergestellt werden, dass der erhaltene öffentliche Schlüssel auch wirklich zum Absender gehört (Einsatz von digitalen Zertifikaten einer Root-CA).
Der öffentliche Schlüssel muss, obwohl er sogar so weit als nur möglich frei zugänglich gemacht werden soll, vor Manipulationen geschützt werden. Der Schutz des öffentlichen Schlüssels ist die eigentliche Achillesferse eines Public-Key-Kryptosystems.
Public-Key Kryptografie ist aufgrund der Länge der Schlüssel sehr langsam.
Web of Trust
PGP vertraut unter anderen auf ein spezielles Verfahren, um die Herkunft von öffentlichen Schlüsseln zu verifizieren. Eines ist der Gebrauch von Zertifikaten, ein anderes die Überprüfung des Fingerprints eines Schlüssels, plus das Verfahren, um das es im Folgenden gehen soll, Web of Trust.
Beim Web of Trust unterschreiben (signieren) Personen den öffentlichen Schlüssel derjenigen Personen, die sie kennen und vertrauen. Ein Schlüssel kann von zig Personen unterschrieben werden. Da beim Web of Trust davon ausgegangen wird, dass die Internet Community über eine überschaubare Anzahl von Beziehungsschritten miteinander verbunden ist, ensteht so ein Authentisierungsgefüge. Dies kann dann funktionieren, wenn eine genügend grosse Anzahl von Mitgliedern gegenseitig ihre Schlüssel unterschreiben.
Angenommen, die Person X kennt die Person Y, vertraut dieser und hat auch ihren Schlüssel signiert. Die Person Y wiederum kennt und vertraut der Person Z und hat deren Schlüssel signiert. Will die Person X jetzt mit Person Z verschlüsselt kommunizieren, besorgt sie sich deren Schlüssel. X muss nun die Authentizität des Schlüssels der Person Z verifizieren. Sie überprüft, welche Personen den Schlüssel von Z unterschrieben haben. In diesem Beispiel hat Person Y den Schlüssel von Z unterschrieben. Da X der Person Y vertraut und Y den Schlüssel von Z unterschrieben hat, kann X implizit darauf vertrauen, dass der Schlüssel zu Z gehört. Diese Theorie hat in der Praxis tatsächlich mehr oder weniger funktioniert.
Verifizieren der Herkunft von öffentlichen Schlüsseln mittels einer CA
Wie erwähnt, kann die Herkunft eines Schlüssels auch mittels einer CA (Certificate Authority) überprüft werden. Im Bild unten gibt es eine Root CA - Beispiel dafür ist z.B. Verisign. Es gibt auch in der Schweiz eine oder mehrere Root CA Entität(en). Die Root CA bezeugt die Authentzität einer Firmen CA. Die Root-Firmen CA wiederum bezeugt die Echheit der ausstellenden CA in einer Firma, also derjeningen Certificate Authority, welche Zertifikate für Personen und/oder Server in der Firma ausstellt. Auf diese Weise entsteht eine Vertrauenskette (chain of trust), welche die Authentizität von Personen und/oder Servern bezeugt.
Bemerkung: Die Anzahl der untergeordneten CA's hängen von der Grösse der Entität ab, die Zertifikate benötigt. Unter der Root-CA kann auch direkt eine ausstellende CA oder es kann sogar eine zusätzliche Schicht geben.
- Der öffentliche Schlüssel wird in Form eines digitalen Zertifikates ausgetauscht. Das Zertifikat wird von der nächst höheren CA-Instanz signiert
- In hierarchischen CA-Systemen besitzt jede CA ihr eigenes Zertifikat, das von der nächst höheren Instanz unterschrieben wird
- An oberster Stelle steht schliesslich die Root-CA, die für die Gültigkeit erhaltener öffentlicher Schlüssel garantiert (z.B. Verisign)
Schwachpunkte in der Secret-Keys-Kryptografie
Der Secret-Key (der Schlüssel, der für die Generierung des Session-Keys verantwortlich ist und somit für den Ciphertext), muss auf absolut sicherem Weg an alle Teilnehmer der verschlüsselten Session übermittelt werden. Dafür wird die Public-Keys-Methode eingesetzt.
Um grösstmögliche Sicherheit zu bieten, müsste jedem Paar miteinander kommunizierender Einheiten separate Schlüssel zugewiesen werden. Bei 1000 Rechnern gibt es bereits eine Million Rechnerpaare und demzufolge Schlüssel, die verwaltet werden müssten
Gemeinsame Nutzung der Public- und Secret-Key-Verfahren
Public- und Secret-Key-Verfahren ergänzen sich ideal. So werden Public-Key-Verfahren (RSA/DH) verwendet, um den Secret-Key für eine Session auszutauschen. Der Secret-Key wird verwendet, um Session-Keys zu erzeugen, die dann den eigentlichen Traffic verschlüsseln.
Verschlüsselt wird mit einem synchronen Verfahren wie z.B. AES, Blowfish, IDEA usw. Diese synchronen Algorithmen verwenden viel kürzere Schlüssel als die asynchronen Verfahren RSA und DH, weshalb sie viel schneller sind.