Auf unseren Webhosting installiert.

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.

Funktionsweise
GPG ist ein Public-Key-Verschlüsselungsverfahren, das heißt, dass zum Verschlüsseln von Nachrichten keine geheimen Informationen nötig sind. Jeder GPG-Nutzer erstellt ein Schlüsselpaar, das 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. Die öffentlichen Schlüssel können mit anderen Nutzern über eine Vielzahl von Kanälen ausgetauscht werden, z. B. Internet-Schlüsselserver. Sie (bzw. die Kombination aus öffentlichem Schlüssel und User-ID) sollten vor der Verwendung unbedingt verlässlich geprüft werden, um Identitätsmanipulationen vorzubeugen, da die in öffentliche Schlüssel eingetragenen Identitätsinformationen (meist Name und E-Mail, ggf. auch ein Kommentar) 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. Einem aus einer unsicheren Quelle (z.B. dem Internet) geladenen Schlüssel sollte man also zunächst nicht vertrauen. Zur Überprüfung besorgt man sich den Fingerabdruck (Hash-Wert) des Schlüssels über einen sicheren Kanal (z. B. Telefon) und vergleicht ihn mit dem lokal erzeugten des heruntergeladenen Schlüssels. Dies ist sicher, weil es nicht möglich ist, einen passenden Schlüssel für einen gegebenen Fingerabdruck zu erzeugen. Diese Sicherheit hängt an der Stärke der Hashfunktion (und der Menge möglicher Schlüssel). In der Version 4 des OpenPGP-Schlüsselformats ist dafür die Verwendung der Hashfunktion SHA-1 festgeschrieben, für die derzeit (2012) zwar Kollisionsangriffe, nicht aber die für die Imitation von Schlüsseln entscheidenden Second-Preimage-Angriffe möglich sind. Durch die kürzlich erfolgte Festlegung der SHA-3-Hashfunktion ist mit dem baldigen Beginn der Entwicklung des nächsten OpenPGP-Schlüsselformats zu rechnen.
Um die Daten zu verschlüsseln oder zu signieren, stehen unterschiedlich starke Schlüssel zur Verfügung. Üblich sind momentan (2012) 1024 bis 4096-bit starke Schlüssel, mit 2048 Bit empfohlener Länge. GPG verwendet derzeit nur nicht-patentierte Algorithmen, um mit diesen Schlüsseln Daten zu verschlüsseln, wie etwa RSA, Elgamal, CAST5, Triple-DES (3DES), AES (Rijndael) und Blowfish.


Offline-Hauptschlüssel
GnuPG unterstützt ein Sicherheitsfeature von immenser Bedeutung (für normale, nicht hochsichere Schlüssel), das allerdings über den OpenPGP-Standard hinausgeht, also nicht verlässlich funktioniert, wenn solche geheimen Schlüssel in eine andere OpenPGP-Applikation importiert werden sollen[4]. Für das Signieren und Entschlüsseln wird der Hauptschlüssel im Allgemeinen nicht benötigt. Seine primäre Aufgabe sind die Verwaltung der eigenen Schlüsselkomponenten (User-IDs und Unterschlüssel) und die Zertifizierung anderer Schlüssel. Diese Aktionen fallen vergleichsweise selten an, so dass man den Hauptschlüssel aus dem normalen System herauslösen kann. Man kann ihn entweder mit einer kryptografisch sicheren Passphrase (ab ca. 18 Zeichen [a-z][A-Z][0-9] (ohne Umlaute)) versehen und auf dem Arbeitssystem gesondert speichern oder ihn ganz aus dem System herausnehmen. Verwendet wird der Hauptschlüssel dann nur in einer sicheren Umgebung[5], was ihn weitgehend unangreifbar macht. Man kann dann entweder aus konkretem Anlass oder regelmäßig alle paar Jahre die Unterschlüssel austauschen. Die Vorteile dieser Vorgehensweise sind:

1. Die Verifizierung des Schlüssels braucht durch die Kommunikationspartner nicht wiederholt zu werden. Der Hauptschlüssel bleibt gültig. Auslaufende und neue Unterschlüssel sind für OpenPGP nichts Besonderes, werden bei Schlüsselupdates automatisch eingebunden und für den Benutzer transparent verwendet.

2. Wenn der Hauptschlüssel auch signieren darf, kann man sein deutlich höheres Sicherheitsniveau nutzen, um Informationen von großer Bedeutung damit zu signieren, etwa die eigene Schlüsselrichtlinie.

Der technische Ansatz ist, die geheimen Schlüssel ohne den Hauptschlüssel zu exportieren (nach einem Backup des Hauptschlüssels!), dann alle geheimen Schlüssel zu löschen und anschließend nur die Unterschlüssel zu importieren. Leider wird diese GnuPG-Funktion bisher von der GUIs nicht unterstützt, so dass man die nötigen Schritte selber in der Konsole durchführen muss. Bequemer, aber mit der Problematik verbunden, die Software zu prüfen oder ihr zu vertrauen, ist das bash-Script[6] eines Schulungsprojekts.


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 und von CAcert angeboten. Bei diesen Organisationen können Interessenten sich beispielsweise auf Computer-Messen wie der Cebit persönlich ausweisen und ihre öffentlichen Schlüssel bestätigen lassen.[7]
Das Web of Trust von PGP wurde eingehend von Wissenschaftlern untersucht und detailliert visualisiert. Dabei wurde herausgefunden, dass ein großer Teil der Nutzer einer Teilmenge angehört, die durch gegenseitige Bestätigungen vollständig miteinander verbunden ist, dem sogenannten Strong Set des Web of Trust.[8] Untersuchungen haben außerdem ergeben, dass die c't Krypto-Kampagne einen deutlichen Beitrag dazu geleistet hat, die Verbindungen zwischen den Teilnehmern zu stärken.[9]
Einen weiteren wichtigen Beitrag zum Web of Trust leistet das Debian-Projekt, das für die Aufnahme von Beiträgen digitale Signaturen erfordert.

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 eine erneute Eingabe entfällt. 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 meist 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 eine Zeichenkette 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[10] 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 (Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!) des GNU Privacy Projekt nutzen. Hierzu sendet man eine E-Mail mit dem eigenen öffentlichen Schlüssel als Anhang an Adele und erhält eine mit diesem Schlüssel verschlüsselte Mail zurück, die den öffentlichen Schlüssel von Adele als Textblock in der Mail enthält. Nun kann man diesen Schlüssel in die Schlüsselverwaltung importieren und damit selbst eine verschlüsselte Mail an Adele schreiben. Adeles Antwort enthält den Inhalt der gerade verschlüsselten Nachricht, und dass die Nachricht entschlüsselt werden konnte.

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[11] und GPGol (Teil von Gpg4win) 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, freenigma oder GPGrelay[12], 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[13] , 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.


Quelle: wikipedia.org