Montag, 28. Mai 2012

Themen


GNU Privacy Guard

GnuPG oder GPG (GNU Privacy Guard, englisch für GNU-Privatsphärenschutz) ist ein freies Kryptographiesystem, das heißt, es dient zum Ver- und Entschlüsseln von Daten sowie zum Erzeugen und Prüfen elektronischer Signaturen. Das Programm implementiert den OpenPGP-Standard nach RFC 4880 und wurde als Ersatz für PGP entwickelt. Versionen ab 2.0 implementieren auch den S/MIME-Standard. GnuPG benutzt standardmäßig nur patentfreie Algorithmen und wird unter der GNU-GPL vertrieben. Es kann unter GNU/Linux, Mac OS X und diversen anderen unixoiden Systemen sowie unter Microsoft Windows betrieben werden.

Ziele

GnuPG hat sich zum Ziel gesetzt, einer möglichst großen Benutzergruppe die Verwendung von kryptographischen Methoden zur vertraulichen Übermittlung von elektronischen Daten zu ermöglichen.

GnuPG unterstützt dazu folgende Funktionen:

  • Verschlüsselung von Daten (z. B. E-Mails), um vertrauliche Informationen an einen oder mehrere Empfänger zu übermitteln, die nur von den Empfängern wieder entschlüsselt werden können.
  • Erzeugung einer Signatur über die versendeten Daten, um deren Authentizität und Integrität zu gewährleisten.

Beide Funktionen können kombiniert werden. In der Regel wird dabei zuerst die Signatur gebildet und an die Daten angehängt. Dieses Paket wiederum wird dann verschlüsselt an die Empfänger versandt. Beim Versand von E-Mails (als PGP/MIME nach RFC 3156) ist das die einzige mögliche Reihenfolge; die Möglichkeit, eine E-Mail zuerst zu verschlüsseln und dann mit einer Klartextsignatur zu versehen, ist nicht vorgesehen. Man kann allerdings Dateien unabhängig vom E-Mail-Versand verschlüsseln, an eine E-Mail anhängen und die E-Mail dann als PGP/MIME signieren lassen.

Web of Trust

Mittels eines Web of Trust (Netz des Vertrauens) versucht PGP/GnuPG dem Problem zu begegnen, dass man sich persönlich meist nicht der Echtheit der Schlüssel aller Kommunikationspartner versichern kann. Benutzer können andere Schlüssel mit ihrem eigenen Schlüssel signieren und bestätigen Dritten damit, dass sie sich von der Echtheit des Schlüssels überzeugt haben. Zudem kann man festlegen, wie sehr man den Signierungen der Person vertraut. Dadurch entsteht das beschriebene Vertrauensnetzwerk. Wenn Alice beispielsweise mit ihrer Signatur die Echtheit des Schlüssels von Bob bestätigt hat, kann Cloey der Echtheit des Schlüssels von Bob auch dann trauen, wenn sie selbst sich davon nicht direkt überzeugen konnte, weil sie ihn beispielsweise aus dem Internet bezogen hat. Voraussetzung dafür ist natürlich, dass sie den Schlüssel von Alice kennt und ihr vertraut. Es gibt einige Zertifizierungsstellen (engl. certification authority, CA), die die Echtheit von Schlüsseln beispielsweise durch persönlichen Kontakt mit Überprüfung des Personalausweises feststellen. Kostenlos wird dies zum Beispiel von der Zeitschrift C’t[1] und von CAcert angeboten.

GnuPG setzt auf ein sogenanntes asymmetrisches Schlüsselsystem. Das bedeutet, dass ein Schlüssel aus zwei Teilen besteht, dem privaten Schlüssel und dem öffentlichen Schlüssel. Auf den privaten Schlüssel darf nur der Eigentümer Zugriff haben. Daher wird dieser in der Regel auch mit einem Passwort geschützt. Mit diesem können Daten entschlüsselt und signiert werden. Der öffentliche Schlüssel dient dazu, Daten zu verschlüsseln und signierte Daten zu überprüfen. Er muss jedem Kommunikationspartner zur Verfügung stehen, der diese beiden Aktionen durchführen will. Die Daten können mit dem öffentlichen Schlüssel weder signiert noch entschlüsselt werden, daher ist seine Verbreitung auch mit keinem Sicherheitsrisiko behaftet.

Funktionsweise

GPG verschlüsselt Nachrichten, indem es asymmetrische Schlüsselpaare verwendet, die von den GPG-Nutzern individuell erstellt wurden. Die so entstehenden öffentlichen Schlüssel können mit anderen Nutzern über eine Vielzahl von Kanälen ausgetauscht werden, z. B. Internet-Schlüsselserver. Sie sollten vor der Verwendung unbedingt verlässlich geprüft werden, um Identitätsmanipulationen vorzubeugen, da öffentliche Schlüssel bzw. Identitätsübereinstimmungen mit dem originären Eigentümer des Schlüssels trivial gefälscht werden können. GPG kann nur feststellen, ob die Daten mit einem bestimmten Schlüssel signiert bzw. verschlüsselt wurden. Ob der Schlüssel selbst vertrauenswürdig ist, muss der Anwender entscheiden, schließlich kann jeder einen Schlüssel mit den Angaben fremder Anwender erstellen und ihn auf einen Keyserver laden. Einen aus dem Internet geladenen Schlüssel sollte man also mit größerer Vorsicht behandeln. Zur Überprüfung kann man sich den Fingerabdruck (Hash-Wert) des Schlüssels vom Kommunikationspartner über einen sicheren Kanal (z. B. Telefon) mitteilen lassen und ihn mit dem lokal erzeugten des heruntergeladenen Schlüssels vergleichen.

Um die Daten zu encodieren stehen verschieden starke Schlüssel zur Verfügung. Üblich sind momentan (2011) 1024 bis 4096-bit starke Schlüssel. GPG verwendet derzeit nur nicht-patentierte Algorithmen, um mit diesen Schlüsseln Daten zu verschlüsseln wie etwa Elgamal, CAST5, Triple-DES (3DES), AES (Rijndael) und Blowfish.

gpg-agent

Wie der ssh-agent (bei OpenSSH) dient der gpg-agent, der seit gpg2 integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, so dass sie nicht erneut eingegeben werden muss. Anders als bei OpenSSH ist der gpg-agent allerdings seit Version 2 von GnuPG zwingender Bestandteil von Operationen, die private Schlüssel beinhalten. gpg-agent speichert nicht nur die Passphrase, sondern nimmt alle Operationen an und mit privaten Schlüsseln vor. Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber im Allgemeinen nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht. Ein Beispiel: Über den Befehl gpg-agent --daemon thunderbird wird der Mailclient Thunderbird gestartet, und zwar mit der Umgebungsvariable GPG_AGENT_INFO. Diese enthält einen String wie /tmp/gpg-xY9Q7R/S.gpg-agent:2244:1. Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen.

Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert. Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf. Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet. Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm gpg-connect-agent bekommen. Mit dem Server kann man dann über das textbasierte Assuan-Protokoll[2] kommunizieren.

Eine wesentliche Motivation neben der Bequemlichkeit und der Anbindung an SSH war die Sicherheit der Schlüssel. Fehlerhafte Clients haben weder auf den Schlüssel noch auf die Passphrase Zugriff; der mögliche Schaden wird dadurch begrenzt.

Test der E-Mail-Anwendung

Um zu überprüfen, ob die Anwendung korrekt funktioniert, kann man den Mailbot Adele (adele@gnupp.de) des GNU Privacy Projekt nutzen. Hierzu sendet man eine E-Mail mit dem eigenen öffentlichen Schlüssel als Anhang an Adele und bekommt eine mit diesem Schlüssel verschlüsselte Mail zurück, die den öffentlichen Schlüssel von Adele als Textblock im Mailbody enthält. Nun kann man mit diesem Schlüssel in die Schlüsselverwaltung importieren und damit selbst eine verschlüsselte Mail an Adele schreiben. Adeles Antwort teilt uns den Inhalt der gerade verschlüsselten Nachricht mit, und dass die Nachricht entschlüsselt werden konnte.

Unterstützung durch das BMWA

Die Portierung von GnuGP auf Windows wurde vom Bundesministerium für Wirtschaft und Arbeit (BMWA) und Bundesministerium des Innern (BMI) im Rahmen der Aktion „Sicherheit im Internet“ unterstützt (siehe GNU Privacy Projekt), um eine frei verfügbare Verschlüsselungssoftware für jedermann zur Verfügung zu stellen. Inzwischen ist die Unterstützung ausgelaufen.

Frontends

Um GnuPG in verschiedenen Anwendungskontexten zu benutzen, sind zahlreiche Frontends erstellt worden. Hier können die folgenden Frontend-Typen unterschieden werden:

  • Frontends, die die Funktionen des kommandozeilenorientierten Programmes über eine graphische Oberfläche zur Verfügung stellen, wie z. B. der Gnu Privacy Assistant (GPA), der von der Free Software Foundation als Standard-Frontend vorgesehen ist, Seahorse und KGpg für die Integration in die Desktop-Umgebungen GNOME bzw. KDE und WinPT, GPGTools für Apple OS X sowie Gpg4win für die Arbeit unter Windows.
  • Mailprogramme, die GnuPG entweder direkt (wie z. B. Evolution, KMail oder Mutt) oder über ein Plug-In (Enigmail für Mozillas E-Mail-Programme, EudoraGPG für Eudora, gpg4o und GPGol für Microsoft Outlook oder GPGMail für Apple Mail) einbinden können.
  • Chatprogramme wie Gabber, Miranda IM, licq, Kopete, Psi oder Gajim, die so teilweise auch plattformübergreifende verschlüsselte Chats über Netzwerke wie ICQ ermöglichen.
  • Serverbasierende Frontends wie GNU Anubis oder freenigma, die als SMTP-Relay-Server oder als MTA eine zentralisierte und transparente E-Mail-Verschlüsselung erlauben.
  • Für den Webbrowser Mozilla Firefox gab es ein Add-on namens FireGPG[3] , das auf jeder Internetseite GPG-Blöcke erkennt und verarbeitet, es wird jedoch seit Juni 2010 bzw. der Version 0.8 nicht mehr weiterentwickelt.

Daneben gibt es noch weitere Schnittstellen für die Nutzung von GnuPG aus verschiedenen Skriptsprachen wie Perl, PHP oder Python.

Problemfälle

Aufgrund eines Fehlers bei der Optimierung des Verfahrens der digitalen Signatur in GPG tat sich 2003 eine Sicherheitslücke auf.[4] Diese betraf lediglich das Verfahren zum digitalen Signieren von Nachrichten in den GPG-Versionen 1.02 bis 1.2.3. Angeblich sollen weniger als 1000 solcher Schlüssel auf den Schlüsselservern gelistet worden sein.[5] Von der Verwendung dieses Verfahrens wurde abgeraten und nur wenige Leute setzten es ein. Über Schäden wurde nicht öffentlich berichtet. Dieses Verfahren wird ab der Version 1.2.4 nicht mehr angeboten. Zwei weitere Sicherheitslücken wurden Anfang 2006 entdeckt – bei der ersten hätten GPG-Skripte beim Überprüfen von Signaturen Fehler der 2. Art (false negative) ergeben können,[6] bei der zweiten waren nicht-MIME Nachrichten gegenüber der Einspeisung von Daten anfällig, die als von der digitale Signatur gedeckt aufschienen, dies tatsächlich aber nicht waren.[7] Beide Schwachstellen wurden zum Zeitpunkt ihrer Ankündigung bereits durch neue GPG-Versionen behoben.

Beim Erzeugen der Schlüsselpaare (Hauptschlüssel und ein Unterschlüssel) ist die Verwendung von RSA seit Mai 2009 Standard und empfohlen.

SSH-Unterstützung

In Version 2 von GPG wurde die Verwaltung der privaten Schlüssel in einen Daemon-Prozess (gpg-agent[8]) ausgelagert. Eine ähnliche Struktur (ssh-agent) gibt es bei OpenSSH, dort allerdings optional. Da der Signaturalgorithmus RSA sowohl von OpenPGP als auch von SSH verwendet wird, sind die jeweiligen Schlüssel prinzipiell austauschbar. Deshalb kann gpg-agent dafür verwendet werden, mittels eines OpenPGP-Schlüssels (der die normalerweise nicht verwendete Fähigkeit Authentisierung besitzen muss) eine SSH-Verbindung aufzubauen. Dieser Umstand eröffnet zwei nützliche Möglichkeiten:

  1. Ein bereits verifizierter OpenPGP-Schlüssel kann auch für SSH verwendet werden. Die (eventuell schwierige) Verifizierung eines zweiten Schlüssels kann entfallen.
  2. Da GPG Smartcards unterstützt, kann ein SSH-Zugang an die Verwendung einer Smartcard gebunden werden (was über PKCS#11 allerdings auch ohne GPG möglich ist).

Weblinks

Wikibooks Wikibooks: Der GNU Privacy Guard – Lern- und Lehrmaterialien

Quellen

  1. C’t Krypto-Kampagne, Abgerufen am 10. November 2011
  2. Beschreibung des Assuan-Protokolls auf der GnuPG-Webseite
  3. Add-on für den Firefoxbrowser, es ermöglicht Verschlüsselung bei Webmail Anbietern. Es bot spezielle integrierte Unterstützung für Gmail, die jedoch mittlerweile eingestellt wurde.
  4. Phong Q. Nguyen (2004): Can We Trust Cryptographic Software? Cryptographic Flaws in GNU Privacy Guard v1.2.3. EUROCRYPT 2004: 555–570
  5. GnuPG's ElGamal signing keys compromised Werner Koch, 27. November 2003
  6. False positive signature verification in GnuPG Werner Koch, 15. Februar 2006
  7. GnuPG does not detect injection of unsigned data, Werner Koch, 9. März 2006
  8. GPG-Dokumentation (gpg-agent). Abgerufen am 26. Februar 2012. 
aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Diese Seite wurde zuletzt am 27. Mai 2012 um 19:37 Uhr geändert.

Dieser Artikel basiert auf dem Artikel GNU_Privacy_Guard aus der freien Enzyklopädie Wikipedia und ist unter der Lizenz Creative Commons Attribution/Share Alike verfügbar. Zusätzliche Bedingungen können anwendbar sein. In der Wikipedia ist eine Liste der Autoren verfügbar.

TOP



TOP