GNU Privacy Guard: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Kryptografies“ durch „Kryptografie“
 
(37 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''GPG''' ('''G'''NU '''P'''rivacy '''G'''uard) ist ein System zur Kryptografie und Signatur
'''GNU Privacy Guard''' (GnuPG) - [[Freie Software|freies]] System zur Kryptografie und Signatur


== Beschreibung ==
== Beschreibung ==
; ''GNU Privacy Guard'' (GnuPG/GPG) ist ein [[Freie Software|freies]] [[Kryptografie]]system
* Ver- und Entschlüsseln von Daten
* Ver- und Entschlüsseln von Daten
* Erzeugen und Prüfen elektronischer Signaturen
* Erzeugen und Prüfen elektronischer Signaturen
 
* [[Implementierung#Softwaretechnik|Implementiert]] den [[OpenPGP]]-Standard nach RFC 4880
; Das Programm [[Implementierung#Softwaretechnik|implementiert]] den [[OpenPGP]]-Standard nach RFC 4880
* Ersatz für [[Pretty Good Privacy|PGP]]
* Ersatz für [[Pretty Good Privacy|PGP]]
* Versionen ab 2.0 implementieren auch den [[S/MIME]]- und den [[PGP/MIME]]-Standard
** Freie Alternative zu [[PGP]]
* Ab 2.0 auch [[S/MIME]] und [[PGP/MIME]]


; GnuPG benutzt standardmäßig nur [[patent]]freie [[Algorithmus|Algorithmen]] und wird unter der [[GNU General Public License|GNU-GPL]] vertrieben.
GnuPG benutzt standardmäßig nur [[patent]]freie [[Algorithmus|Algorithmen]] und wird unter der [[GNU General Public License|GNU-GPL]] vertrieben
* Es kann unter [[Linux|GNU/Linux]], [[MacOS]] und diversen anderen [[Unixoide Systeme|unixoiden Systemen]] sowie unter [[Microsoft Windows]] betrieben werden.
* Es kann unter [[Linux|GNU/Linux]], [[MacOS]] und diversen anderen [[Unixoide Systeme|unixoiden Systemen]] sowie unter [[Microsoft Windows]] betrieben werden


=== Entwicklung ===
=== Entwicklung ===
Das Projekt wurde 1997 von [[Werner Koch (Softwareentwickler)|Werner Koch]] begonnen, der immer noch der Hauptentwickler ist.
Das Projekt wurde 1997 von [[Werner Koch (Softwareentwickler)|Werner Koch]] begonnen, der immer noch der Hauptentwickler ist
 
Ende 2014 rief Koch zum [[Crowdfunding]] auf, im Januar 2015 wurde das Thema von überörtlicher Presse aufgegriffen und innerhalb weniger Tage war die Finanzierung durch Spenden für zwei bis drei Jahre gesichert.
 
 
=== Übersicht ===
Logo = [[Datei:GnuPG.svg|300px|Logo von GnuPG]]
Hersteller = The GNU Privacy Guard Team
Erscheinungsjahr = 1997
 
Betriebssystem = [[Linux|GNU/Linux]], [[macOS]] (und andere [[unixoide Systeme]]), [[Microsoft Windows|Windows]]
Kategorie = [[Kryptografie]]ssoftware
Lizenz = [[GNU General Public License|GNU GPLv3+]]
Deutsch = ja
Website = [https://gnupg.org/ gnupg.org]
Sonstiges = etwa für Systeme ohne gpg-agent wird Version 1 weiter gepflegt, aktuell ist 1.4.22 (19. Juli 2017)


Ende 2014 rief Koch zum [[Crowdfunding]] auf, im Januar 2015 wurde das Thema von überörtlicher Presse aufgegriffen und innerhalb weniger Tage war die Finanzierung durch Spenden für zwei bis drei Jahre gesichert


=== Ziele ===
=== Ziele ===
Zeile 39: Zeile 24:


; GnuPG unterstützt dazu folgende Funktionen
; GnuPG unterstützt dazu folgende Funktionen
* [[Kryptografie]] von Daten (etwa [[E-Mail]]s), um vertrauliche Informationen an einen oder mehrere Empfänger zu übermitteln, die nur von den Empfängern wieder entschlüsselt werden können.
* [[Kryptografie]] von Daten (etwa [[E-Mail]]s), 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 [[Digitale Signatur|Signatur]] über die versendeten Daten, um deren Authentizität und Integrität zu gewährleisten.
* Erzeugung einer [[Digitale Signatur|Signatur]] über die versendeten Daten, um deren Authentizität und Integrität zu gewährleisten


; Beide Funktionen können kombiniert werden.
; Beide Funktionen können kombiniert werden
* In der Regel wird dabei zuerst die Signatur gebildet und an die Daten angehängt.
* 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.
* Dieses Paket wiederum wird dann verschlüsselt an die Empfänger versandt
* Die Kombination beider Aktionen in einem Aufruf unterstützt GnuPG nur in dieser Reihenfolge.
* Die Kombination beider Aktionen in einem Aufruf unterstützt GnuPG nur in dieser Reihenfolge
* Beim Versand von E-Mails (als [[PGP/MIME]] nach RFC 3156) sind zwar beide Varianten möglich, aber durch Beschränkungen der Mailclients ist das in der Praxis die einzige mögliche Reihenfolge.
* Beim Versand von E-Mails (als [[PGP/MIME]] nach RFC 3156) sind zwar beide Varianten möglich, aber durch Beschränkungen der Mailclients ist das in der Praxis die einzige mögliche Reihenfolge
* Die Möglichkeit, eine E-Mail zuerst zu verschlüsseln und dann mit einer Klartextsignatur zu versehen (die dann etwa ein Virenscanner oder Spamfilter auswerten könnte, der die eigentliche Nachricht nicht entschlüsseln kann), ist nicht vorgesehen.
* Die Möglichkeit, eine E-Mail zuerst zu verschlüsseln und dann mit einer Klartextsignatur zu versehen (die dann etwa ein Virenscanner oder Spamfilter auswerten könnte, der die eigentliche Nachricht nicht entschlüsseln kann), 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.
* 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


==== Etablierte Verwendung von GnuPG ====
; Etablierte Verwendung von GnuPG
GnuPG wird von zumindest den meisten Linux-Distributionen und verwandten Systemen im Rahmen ihres [[Paketmanager]]s zur Sicherung der Integrität der verteilten Softwarepakete verwendet und ist deshalb in den meisten Installationen bereits enthalten.
GnuPG wird von zumindest den meisten Linux-Distributionen und verwandten Systemen im Rahmen ihres [[Paketmanager]]s zur Sicherung der Integrität der verteilten Softwarepakete verwendet und ist deshalb in den meisten Installationen bereits enthalten
* Deshalb stellt das Booten von einem authentischen Installationsmedium eines solchen Systems eine Möglichkeit dar, GnuPG in einer sicheren Umgebung
* Deshalb stellt das Booten von einem authentischen Installationsmedium eines solchen Systems eine Möglichkeit dar, GnuPG in einer sicheren Umgebung (d. h. frei von [[Schadsoftware]]) zu starten, etwa für die Erzeugung oder Verwendung von Schlüsseln mit hohen Sicherheitsanforderungen
(d. h. frei von [[Schadsoftware]]) zu starten, etwa für die Erzeugung oder Verwendung von Schlüsseln mit hohen Sicherheitsanforderungen.
 
=== Beschreibung ===
Freie Alternative zu PGP


=== Public-Key-Kryptografie ===
=== Public-Key-Kryptografie ===
* Schlüsselpaar: ''Private Key'' und ''Public Key''
* Schlüsselpaar: ''Private Key'' und ''Public Key''
* Der private Schlüssel darf nur der Eigentümer haben, mit dem können Daten entschlüsselt und signiert werden.
* Der private Schlüssel darf nur der Eigentümer haben, mit dem können Daten entschlüsselt und signiert werden
* Der öffentliche Schlüssel dient zur Kryptografie und zur Überprüfung der Signaturen, dieser hat der Kommunikationspartner.
* Der öffentliche Schlüssel dient zur Kryptografie und zur Überprüfung der Signaturen, dieser hat der Kommunikationspartner
* Um die Daten zu verschlüsseln stehen unterschiedlich starke Schlüssel zur Verfügung. Standard ist momentan eine Länge von 3072 Bit.
* Um die Daten zu verschlüsseln stehen unterschiedlich starke Schlüssel zur Verfügung. Standard ist momentan eine Länge von 3072 Bit
* Für die Kryptografie nutzt GPG verschiedene Algortihmen wie RSA oder Elgamal.
* Für die Kryptografie nutzt GnuPG verschiedene Algortihmen wie RSA oder Elgamal
* GPG speichert alle Schlüssel, die man sammelt, in einem "Schlüsselbund"-Verzeichnis ~/.gnupg/.
* GnuPG speichert alle Schlüssel, die man sammelt, in einem "Schlüsselbund"-Verzeichnis ~/.gnupg/
 


<noinclude>
<noinclude>


== Funktionsweise ==
== Funktionsweise ==
GPG ist ein [[Public-Key-Kryptografiesverfahren]], das heißt, dass zum Verschlüsseln von Nachrichten keine geheimen Informationen nötig sind.
; GnuPG ist ein [[Public-Key-Kryptografieverfahren]]
* Jeder GPG-Nutzer erstellt ein Schlüsselpaar, das aus zwei Teilen besteht: dem [[Geheimer Schlüssel|privaten Schlüssel]] und dem [[Öffentlicher Schlüssel|öffentlichen Schlüssel]].
Das heißt, dass zum Verschlüsseln von Nachrichten keine geheimen Informationen nötig sind
* Auf den privaten Schlüssel darf nur der Eigentümer Zugriff haben.
* Jeder GnuPG-Nutzer erstellt ein Schlüsselpaar, das aus zwei Teilen besteht: dem [[Geheimer Schlüssel|privaten Schlüssel]] und dem [[Öffentlicher Schlüssel|öffentlichen Schlüssel]]
* Daher wird dieser in der Regel auch mit einem Passwort geschützt.
* Auf den privaten Schlüssel darf nur der Eigentümer Zugriff haben
* Mit diesem können Daten entschlüsselt und signiert werden.
* Daher wird dieser in der Regel auch mit einem Passwort geschützt
* Der öffentliche Schlüssel dient dazu, Daten zu verschlüsseln und signierte Daten zu überprüfen.
* Mit diesem können Daten entschlüsselt und signiert werden
* Er muss jedem Kommunikationspartner zur Verfügung stehen, der diese beiden Aktionen durchführen will.
* Der öffentliche Schlüssel dient dazu, Daten zu verschlüsseln und signierte Daten zu überprüfen
* Die Daten können mit dem öffentlichen Schlüssel weder signiert noch entschlüsselt werden, daher ist seine Verbreitung auch mit keinem Sicherheitsrisiko behaftet.
* Er muss jedem Kommunikationspartner zur Verfügung stehen, der diese beiden Aktionen durchführen will
* Die öffentlichen Schlüssel können mit anderen Nutzern über eine Vielzahl von Kanälen ausgetauscht werden, etwa Internet-[[Schlüsselserver]].
* Die Daten können mit dem öffentlichen Schlüssel weder signiert noch entschlüsselt werden, daher ist seine Verbreitung auch mit keinem Sicherheitsrisiko behaftet
* Sie (bzw.&nbsp;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.
* Die öffentlichen Schlüssel können mit anderen Nutzern über eine Vielzahl von Kanälen ausgetauscht werden, etwa Internet-[[Schlüsselserver]]
* GPG kann nur feststellen, ob die Daten mit einem bestimmten Schlüssel signiert bzw.&nbsp;verschlüsselt wurden.
* Sie (bzw.&nbsp;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
* 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.
* GnuPG kann nur feststellen, ob die Daten mit einem bestimmten Schlüssel signiert bzw.&nbsp;verschlüsselt wurden
* Einem aus einer unsicheren Quelle (etwa dem Internet) geladenen Schlüssel sollte man also zunächst nicht vertrauen.
* 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
* Zur Überprüfung besorgt man sich den Fingerabdruck ([[Hashfunktion|Hash-Wert]]) des Schlüssels über einen sicheren Kanal (etwa Telefon) und vergleicht ihn mit dem lokal erzeugten des heruntergeladenen Schlüssels.
* Einem aus einer unsicheren Quelle (etwa dem Internet) geladenen Schlüssel sollte man also zunächst nicht vertrauen
* Dies ist sicher, weil es nicht möglich ist, einen passenden Schlüssel für einen gegebenen Fingerabdruck zu erzeugen.
* Zur Überprüfung besorgt man sich den Fingerabdruck ([[Hashfunktion|Hash-Wert]]) des Schlüssels über einen sicheren Kanal (etwa Telefon) und vergleicht ihn mit dem lokal erzeugten des heruntergeladenen Schlüssels
* Diese Sicherheit hängt an der Stärke der Hashfunktion (und der Menge möglicher Schlüssel).
* Dies ist sicher, weil es nicht möglich ist, einen passenden Schlüssel für einen gegebenen Fingerabdruck zu erzeugen
* In der Version&nbsp;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 [[Preimage-Angriff|Second-Preimage-Angriffe]] möglich sind.
* Diese Sicherheit hängt an der Stärke der Hashfunktion (und der Menge möglicher Schlüssel)
* 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.
* In der Version&nbsp;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 [[Preimage-Angriff|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 (2014) 2048- bis 4096-Bit starke Schlüssel, mit 2048&nbsp;Bit empfohlener Länge.
Um die Daten zu verschlüsseln oder zu signieren, stehen unterschiedlich starke Schlüssel zur Verfügung. Üblich sind momentan (2014) 2048- bis 4096-Bit starke Schlüssel, mit 2048&nbsp;Bit empfohlener Länge
* GPG verwendet derzeit nur nicht-patentierte Algorithmen, um mit diesen Schlüsseln Daten zu verschlüsseln, wie etwa [[RSA|RSA]], [[Elgamal-Kryptografiesverfahren|Elgamal]], [[CAST (Algorithmus)|CAST5]], Triple-[[Data Encryption Standard|DES]] (3DES), [[Advanced Encryption Standard|AES]] (Rijndael) und [[Blowfish]].
* GnuPG verwendet derzeit nur nicht-patentierte Algorithmen, um mit diesen Schlüsseln Daten zu verschlüsseln, wie etwa [[RSA|RSA]], [[Elgamal-Kryptografieverfahren|Elgamal]], [[CAST (Algorithmus)|CAST5]], Triple-[[Data Encryption Standard|DES]] (3DES), [[Advanced Encryption Standard|AES]] (Rijndael) und [[Blowfish]]


=== Offline-Hauptschlüssel ===
=== Offline-Hauptschlüssel ===
GnuPG unterstützt mit Hauptschlüsseln ein Sicherheitsfeature, das über den OpenPGP-Standard hinausgeht, und daher nicht verlässlich funktioniert, wenn solche geheimen Schlüssel in eine andere OpenPGP-Applikation importiert werden sollen.
GnuPG unterstützt mit Hauptschlüsseln ein Sicherheitsfeature, das über den OpenPGP-Standard hinausgeht, und daher nicht verlässlich funktioniert, wenn solche geheimen Schlüssel in eine andere OpenPGP-Applikation importiert werden sollen
* Der Hauptschlüssel wird nicht für das alltägliche Signieren und Entschlüsseln verwendet, sondern für die Verwaltung der eigenen Schlüsselkomponenten (User-IDs und Unterschlüssel) und die Zertifizierung anderer Schlüssel.
* Der Hauptschlüssel wird nicht für das alltägliche Signieren und Entschlüsseln verwendet, sondern für die Verwaltung der eigenen Schlüsselkomponenten (User-IDs und Unterschlüssel) und die Zertifizierung anderer Schlüssel
* Diese Aktionen fallen vergleichsweise selten an, sodass man den Hauptschlüssel besonders sichern kann.
* Diese Aktionen fallen vergleichsweise selten an, sodass man den Hauptschlüssel besonders sichern kann
* Die Vorteile dieser Vorgehensweise sind:
* Die Vorteile dieser Vorgehensweise sind:
# Die Verifizierung des Schlüssels braucht durch die Kommunikationspartner nicht wiederholt zu werden.
# Die Verifizierung des Schlüssels braucht durch die Kommunikationspartner nicht wiederholt zu werden
* Der Hauptschlüssel bleibt gültig.
* Der Hauptschlüssel bleibt gültig
# Unterschlüssel können leicht ausgetauscht werden.
# Unterschlüssel können leicht ausgetauscht werden
* Auslaufende und neue Unterschlüssel sind für OpenPGP nichts Besonderes, werden bei Schlüsselupdates automatisch eingebunden und für den Benutzer transparent verwendet.
* Auslaufende und neue Unterschlüssel sind für OpenPGP nichts Besonderes, werden bei Schlüsselupdates automatisch eingebunden und für den Benutzer transparent verwendet
# 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.
# 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.
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 GUI nicht unterstützt, sodass man die nötigen Schritte selbst in der Konsole durchführen muss.
* Leider wird diese GnuPG-Funktion bisher von der GUI nicht unterstützt, sodass man die nötigen Schritte selbst in der Konsole durchführen muss
 
== 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 (Kryptografie)|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 [[Zertifizierungsstelle]]n (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.
 
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.


Untersuchungen haben außerdem ergeben, dass die Krypto-Kampagne der c’t einen deutlichen Beitrag dazu geleistet hat, die Verbindungen zwischen den Teilnehmern zu stärken.
=== 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 (Kryptografie)|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 [[Zertifizierungsstelle]]n (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


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


Untersuchungen haben außerdem ergeben, dass die Krypto-Kampagne der c’t einen deutlichen Beitrag dazu geleistet hat, die Verbindungen zwischen den Teilnehmern zu stärken


Einen weiteren wichtigen Beitrag zum Web of Trust leistet das [[Debian]]-Projekt, das für die Aufnahme von Beiträgen digitale Signaturen erfordert.
Einen weiteren wichtigen Beitrag zum Web of Trust leistet das [[Debian]]-Projekt, das für die Aufnahme von Beiträgen digitale Signaturen erfordert


== Test der E-Mail-Anwendung ==
=== E-Mail ===
Test der E-Mail-Anwendung
; Mailbot Adele
; Mailbot Adele
Um zu überprüfen, ob die Anwendung korrekt funktioniert, kann man den Mailbot Adele (adele@gnupp.de) des [[GNU Privacy Projekt]] nutzen.
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 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.
* 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.
* 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.
* Adeles Antwort enthält den Inhalt der gerade verschlüsselten Nachricht, und dass die Nachricht entschlüsselt werden konnte


== Unterstützung durch deutsche Behörden ==
=== Unterstützung ===
Die Portierung von GnuPG auf Windows wurde zwischen 2001 und 2002 vom [[Bundesministerium für Wirtschaft und Technologie|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 Kryptografiessoftware für jedermann zur Verfügung zu stellen.
; Unterstützung durch deutsche Behörden
* Inzwischen ist die Unterstützung ausgelaufen.
Die Portierung von GnuPG auf Windows wurde zwischen 2001 und 2002 vom [[Bundesministerium für Wirtschaft und Technologie|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 Kryptografiesoftware für jedermann zur Verfügung zu stellen
* Inzwischen ist die Unterstützung ausgelaufen


; Gpg4win
; Gpg4win
* Auf Grundlage dieses Projekts initiierte das [[Bundesamt für Sicherheit in der Informationstechnik]] 2005 [[Gpg4win]].
* Auf Grundlage dieses Projekts initiierte das [[Bundesamt für Sicherheit in der Informationstechnik]] 2005 [[Gpg4win]]
 
* Mit [[Pretty Easy privacy]] soll der Einsatz von PGP automatisiert und somit massiv vereinfacht werden.
* Mit [[Pretty Easy privacy]] soll der Einsatz von PGP automatisiert und somit massiv vereinfacht werden


== Benutzeroberflächen ==
== Anwendungen ==
; Um GnuPG in verschiedenen Anwendungskontexten zu benutzen, sind zahlreiche [[Frontend]]s erstellt worden.
=== Benutzeroberflächen ===
; Um GnuPG in verschiedenen Anwendungskontexten zu benutzen, sind zahlreiche [[Frontend]]s erstellt worden
* Hier können die folgenden Frontend-Typen unterschieden werden:
* Hier können die folgenden Frontend-Typen unterschieden werden:
* Frontends, die die Funktionen des kommandozeilenorientierten Programmes über eine grafische Oberfläche zur Verfügung stellen, wie etwa 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.&nbsp;[[K Desktop Environment|KDE]], [[WinPT]] oder [[Gpg4win]] für die Arbeit unter [[Microsoft Windows|Windows]], sowie [[GPGTools]] für [[macOS|Apple OS X]].
* Frontends, die die Funktionen des kommandozeilenorientierten Programmes über eine grafische Oberfläche zur Verfügung stellen, wie etwa 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.&nbsp;[[K Desktop Environment|KDE]], [[WinPT]] oder [[Gpg4win]] für die Arbeit unter [[Microsoft Windows|Windows]], sowie [[GnuPGTools]] für [[macOS|Apple OS X]]
* [[E-Mail-Programm|Mailprogramme]], die GnuPG entweder direkt (wie etwa [[Novell Evolution|Evolution]], [[KMail]], [[Mutt]] oder [[Claws Mail]]) oder über ein Plug-In ([[Enigmail]] für [[Mozilla]]s E-Mail-Programme, EudoraGPG für [[Eudora (Software)|Eudora]], ''gpg4o''
* [[E-Mail-Programm|Mailprogramme]], die GnuPG entweder direkt (wie etwa [[Novell Evolution|Evolution]], [[KMail]], [[Mutt]] oder [[Claws Mail]]) oder über ein Plug-In ([[Enigmail]] für [[Mozilla]]s E-Mail-Programme, EudoraGnuPG für [[Eudora (Software)|Eudora]], ''gpg4o''
und GPGol (Teil von Gpg4win) für [[Outlook|Microsoft Outlook]] oder [[GPGTools|GPGMail]] für [[Apple Mail]]) einbinden können.
* [[Chat]]programme wie [[Liste von XMPP-Clients|Gabber]], [[Miranda IM]], [[licq]], [[Kopete]], [[Psi (Instant Messenger)|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


, die als [[SMTP-Relay-Server]] oder als [[Mail Transfer Agent|MTA]] eine zentralisierte und transparente E-Mail-Kryptografie erlauben.
und GnuPGol (Teil von Gpg4win) für [[Outlook|Microsoft Outlook]] oder [[GnuPGTools|GnuPGMail]] für [[Apple Mail]]) einbinden können
* Für den Webbrowser [[Mozilla Firefox]] gab es ein Add-on namens FireGPG
* [[Chat]]programme wie [[Liste von XMPP-Clients|Gabber]], [[Miranda IM]], [[licq]], [[Kopete]], [[Psi (Instant Messenger)|Psi]] oder [[Gajim]], die so teilweise auch plattformübergreifende verschlüsselte Chats über Netzwerke wie [[ICQ]] ermöglichen
* das auf jeder Internetseite GPG-Blöcke erkennt und verarbeitet, es wird jedoch seit Juni 2010 bzw.&nbsp;
* Serverbasierende Frontends wie GNU Anubis, freenigma oder GnuPGrelay
* der Version 0.8 nicht mehr weiterentwickelt.
 
, die als [[SMTP-Relay-Server]] oder als [[Mail Transfer Agent|MTA]] eine zentralisierte und transparente E-Mail-Kryptografie erlauben
* Für den Webbrowser [[Mozilla Firefox]] gab es ein Add-on namens FireGnuPG
* das auf jeder Internetseite GnuPG-Blöcke erkennt und verarbeitet, es wird jedoch seit Juni 2010 bzw.&nbsp;
* der Version 0.8 nicht mehr weiterentwickelt
* Mit WebPG
* Mit WebPG
gibt es ein ähnliches Add-on für Mozilla Firefox und [[Google Chrome]].
* gpg4usb ist ein portable Version, die auf einem USB-Stick installiert wird. Über den Stick ist GnuPG dann für viele Plattformen ohne Installation nutzbar.


gibt es ein ähnliches Add-on für Mozilla Firefox und [[Google Chrome]]
* gpg4usb ist ein portable Version, die auf einem USB-Stick installiert wird. Über den Stick ist GnuPG dann für viele Plattformen ohne Installation nutzbar


Daneben gibt es noch weitere Schnittstellen für die Nutzung von GnuPG aus verschiedenen Skriptsprachen wie [[Perl (Programmiersprache)|Perl]], [[PHP]] oder [[Python (Programmiersprache)|Python]].
Daneben gibt es noch weitere Schnittstellen für die Nutzung von GnuPG aus verschiedenen Skriptsprachen wie [[Perl (Programmiersprache)|Perl]], [[PHP]] oder [[Python (Programmiersprache)|Python]]


== Problemfälle ==
=== Problemfälle ===
Aufgrund eines Fehlers bei der Optimierung des Verfahrens der [[Digitale Signatur|digitalen Signatur]] in GPG tat sich 2003 eine Sicherheitslücke auf.
Aufgrund eines Fehlers bei der Optimierung des Verfahrens der [[Digitale Signatur|digitalen Signatur]] in GnuPG tat sich 2003 eine Sicherheitslücke auf
* 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.
* Diese betraf lediglich das Verfahren zum digitalen Signieren von Nachrichten in den GnuPG-Versionen 1.02 bis 1.2.3. Angeblich sollen weniger als 1000 solcher Schlüssel auf den Schlüsselservern gelistet worden sein
Von der Verwendung dieses Verfahrens wurde abgeraten und nur wenige Benutzer 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 2. Art|Fehler der 2. Art (false negative)]] ergeben können,
Von der Verwendung dieses Verfahrens wurde abgeraten und nur wenige Benutzer setzten es ein. Über Schäden wurde nicht öffentlich berichtet
* Dieses Verfahren wird ab der Version 1.2.4 nicht mehr angeboten


bei der zweiten waren Nicht-MIME-Nachrichten gegenüber der Einspeisung von Daten anfällig, die als von der digitalen Signatur gedeckt aufschienen, dies tatsächlich aber nicht waren.
Zwei weitere Sicherheitslücken wurden Anfang 2006 entdeckt – bei der ersten hätten GnuPG-Skripte beim Überprüfen von Signaturen [[Fehler 2. Art|Fehler der 2. Art (false negative)]] ergeben können,
Beide Schwachstellen wurden zum Zeitpunkt ihrer Ankündigung bereits durch neue GPG-Versionen behoben.
 
== SSH-Unterstützung ==
In Version 2 von GPG wurde die Verwaltung der privaten Schlüssel in einen [[Daemon]]-Prozess (''gpg-agent'') ausgelagert.  
* Eine ähnliche Struktur (''ssh-agent'') gibt es bei [[OpenSSH]], dort allerdings optional.
* Da der Signaturalgorithmus [[RSA|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:
# Ein bereits verifizierter OpenPGP-Schlüssel kann auch für SSH verwendet werden.  
* Die (eventuell schwierige) Verifizierung eines zweiten Schlüssels kann entfallen.
# Da GPG [[Smartcard]]s unterstützt, kann ein SSH-Zugang an die Verwendung einer Smartcard gebunden werden (was über [[PKCS|PKCS#11]]-Unterstützung in [[OpenSSH]] auch ohne GPG möglich ist).


bei der zweiten waren Nicht-MIME-Nachrichten gegenüber der Einspeisung von Daten anfällig, die als von der digitalen Signatur gedeckt aufschienen, dies tatsächlich aber nicht waren


Beide Schwachstellen wurden zum Zeitpunkt ihrer Ankündigung bereits durch neue GnuPG-Versionen behoben


=== SSH-Unterstützung ===
In Version 2 von GnuPG wurde die Verwaltung der privaten Schlüssel in einen [[Daemon]]-Prozess (''gpg-agent'') ausgelagert
* Eine ähnliche Struktur (''ssh-agent'') gibt es bei [[OpenSSH]], dort allerdings optional
* Da der Signaturalgorithmus [[RSA|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:
# Ein bereits verifizierter OpenPGP-Schlüssel kann auch für SSH verwendet werden
* Die (eventuell schwierige) Verifizierung eines zweiten Schlüssels kann entfallen
# Da GnuPG [[Smartcard]]s unterstützt, kann ein SSH-Zugang an die Verwendung einer Smartcard gebunden werden (was über [[PKCS|PKCS#11]]-Unterstützung in [[OpenSSH]] auch ohne GnuPG möglich ist)


== Anhang ==
== Anhang ==
Zeile 195: Zeile 171:
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
----
----
* [[GPG-Agent]]
{{Special:PrefixIndex/GnuPG}}


==== Dokumentation ====
==== Dokumentation ====
{| class="wikitable options"
|-
! RFC !! Titel
|-
| [https://www.rfc-editor.org/info/rfc4880 4880] || OpenPGP Message Format
|}
==== Links ====
==== Links ====
===== Projekt =====
===== Projekt =====
Zeile 203: Zeile 186:
===== Weblinks =====
===== Weblinks =====
# https://de.wikibooks.org/wiki/GnuPG
# https://de.wikibooks.org/wiki/GnuPG
# [https://www.heise.de/security/dienste/Krypto-Kampagne-2111.html Krypto-Kampagne von Heise Security]
# [http://pgp.blafusel.de/ Quis custodiet custodes?] Anleitung zur Nutzung von PGP und [[S/MIME]] unter [[Microsoft Windows]] in [[Mozilla Thunderbird]] und [[Microsoft Outlook]] 2013
# [http://www.sueddeutsche.de/digital/verschluesselungssoftware-gnu-pg-wie-ein-mann-das-e-mail-geheimnis-verteidigt-1.2355155 Wie ein Mann das E-Mail-Geheimnis verteidigt]
# https://wiki.ubuntuusers.de/GnuPG/
# https://wiki.ubuntuusers.de/GnuPG/


= TMP =
[[Kategorie:GnuPG]]
== Anwendung ==
[[GNU Privacy Guard/Anwendung]]
 
== Hinweise ==
Man kann für seinen Namen ein Leerzeichen verwenden, jedoch muss man bei allen Operationen mit GPG den Namen in Hochkommatas setzen.
$ '''gpg -ear 'Null Acht-Fünfzehn' <Datei>'''
 
* Das Verschlüsseln im ASCII-Format ist vor allem vorzuziehen bei der Übertragung übers Internet.
* Wenn man es lediglich auf der Festplatte verschlüsselt speichern will, ist das Binärformat, gerade bei großen Dateien, vorzuziehen.
 
[[Kategorie:GNU]]
[[Kategorie:Kryptografie/Anwendung]]
</noinclude>
</noinclude>

Aktuelle Version vom 27. Juli 2024, 10:35 Uhr

GNU Privacy Guard (GnuPG) - freies System zur Kryptografie und Signatur

Beschreibung

  • Ver- und Entschlüsseln von Daten
  • Erzeugen und Prüfen elektronischer Signaturen
  • Implementiert den OpenPGP-Standard nach RFC 4880
  • Ersatz für PGP
    • Freie Alternative zu PGP
  • Ab 2.0 auch S/MIME und PGP/MIME

GnuPG benutzt standardmäßig nur patentfreie Algorithmen und wird unter der GNU-GPL vertrieben

Entwicklung

Das Projekt wurde 1997 von Werner Koch begonnen, der immer noch der Hauptentwickler ist

Ende 2014 rief Koch zum Crowdfunding auf, im Januar 2015 wurde das Thema von überörtlicher Presse aufgegriffen und innerhalb weniger Tage war die Finanzierung durch Spenden für zwei bis drei Jahre gesichert

Ziele

GnuPG hat sich zum Ziel gesetzt

Einer möglichst großen Benutzergruppe ermöglichen

  • Verwendung von kryptographischen Methoden
  • Vertrauliche Übermittlung von elektronischen Daten
GnuPG unterstützt dazu folgende Funktionen
  • Kryptografie von Daten (etwa 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
  • Die Kombination beider Aktionen in einem Aufruf unterstützt GnuPG nur in dieser Reihenfolge
  • Beim Versand von E-Mails (als PGP/MIME nach RFC 3156) sind zwar beide Varianten möglich, aber durch Beschränkungen der Mailclients ist das in der Praxis die einzige mögliche Reihenfolge
  • Die Möglichkeit, eine E-Mail zuerst zu verschlüsseln und dann mit einer Klartextsignatur zu versehen (die dann etwa ein Virenscanner oder Spamfilter auswerten könnte, der die eigentliche Nachricht nicht entschlüsseln kann), 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
Etablierte Verwendung von GnuPG

GnuPG wird von zumindest den meisten Linux-Distributionen und verwandten Systemen im Rahmen ihres Paketmanagers zur Sicherung der Integrität der verteilten Softwarepakete verwendet und ist deshalb in den meisten Installationen bereits enthalten

  • Deshalb stellt das Booten von einem authentischen Installationsmedium eines solchen Systems eine Möglichkeit dar, GnuPG in einer sicheren Umgebung (d. h. frei von Schadsoftware) zu starten, etwa für die Erzeugung oder Verwendung von Schlüsseln mit hohen Sicherheitsanforderungen

Public-Key-Kryptografie

  • Schlüsselpaar: Private Key und Public Key
  • Der private Schlüssel darf nur der Eigentümer haben, mit dem können Daten entschlüsselt und signiert werden
  • Der öffentliche Schlüssel dient zur Kryptografie und zur Überprüfung der Signaturen, dieser hat der Kommunikationspartner
  • Um die Daten zu verschlüsseln stehen unterschiedlich starke Schlüssel zur Verfügung. Standard ist momentan eine Länge von 3072 Bit
  • Für die Kryptografie nutzt GnuPG verschiedene Algortihmen wie RSA oder Elgamal
  • GnuPG speichert alle Schlüssel, die man sammelt, in einem "Schlüsselbund"-Verzeichnis ~/.gnupg/


Funktionsweise

GnuPG ist ein Public-Key-Kryptografieverfahren

Das heißt, dass zum Verschlüsseln von Nachrichten keine geheimen Informationen nötig sind

  • Jeder GnuPG-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, etwa 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
  • GnuPG 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 (etwa 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 (etwa 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 (2014) 2048- bis 4096-Bit starke Schlüssel, mit 2048 Bit empfohlener Länge

  • GnuPG 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 mit Hauptschlüsseln ein Sicherheitsfeature, das über den OpenPGP-Standard hinausgeht, und daher nicht verlässlich funktioniert, wenn solche geheimen Schlüssel in eine andere OpenPGP-Applikation importiert werden sollen

  • Der Hauptschlüssel wird nicht für das alltägliche Signieren und Entschlüsseln verwendet, sondern für die Verwaltung der eigenen Schlüsselkomponenten (User-IDs und Unterschlüssel) und die Zertifizierung anderer Schlüssel
  • Diese Aktionen fallen vergleichsweise selten an, sodass man den Hauptschlüssel besonders sichern kann
  • 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
  1. Unterschlüssel können leicht ausgetauscht werden
  • Auslaufende und neue Unterschlüssel sind für OpenPGP nichts Besonderes, werden bei Schlüsselupdates automatisch eingebunden und für den Benutzer transparent verwendet
  1. 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 GUI nicht unterstützt, sodass man die nötigen Schritte selbst in der Konsole durchführen muss

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

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

Untersuchungen haben außerdem ergeben, dass die Krypto-Kampagne der c’t einen deutlichen Beitrag dazu geleistet hat, die Verbindungen zwischen den Teilnehmern zu stärken

Einen weiteren wichtigen Beitrag zum Web of Trust leistet das Debian-Projekt, das für die Aufnahme von Beiträgen digitale Signaturen erfordert

E-Mail

Test der E-Mail-Anwendung

Mailbot Adele

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 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

Unterstützung

Unterstützung durch deutsche Behörden

Die Portierung von GnuPG auf Windows wurde zwischen 2001 und 2002 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 Kryptografiesoftware für jedermann zur Verfügung zu stellen

  • Inzwischen ist die Unterstützung ausgelaufen
Gpg4win
  • Mit Pretty Easy privacy soll der Einsatz von PGP automatisiert und somit massiv vereinfacht werden

Anwendungen

Benutzeroberflächen

Um GnuPG in verschiedenen Anwendungskontexten zu benutzen, sind zahlreiche Frontends erstellt worden

und GnuPGol (Teil von Gpg4win) für Microsoft Outlook oder GnuPGMail für Apple Mail) einbinden können

, die als SMTP-Relay-Server oder als MTA eine zentralisierte und transparente E-Mail-Kryptografie erlauben

  • Für den Webbrowser Mozilla Firefox gab es ein Add-on namens FireGnuPG
  • das auf jeder Internetseite GnuPG-Blöcke erkennt und verarbeitet, es wird jedoch seit Juni 2010 bzw. 
  • der Version 0.8 nicht mehr weiterentwickelt
  • Mit WebPG

gibt es ein ähnliches Add-on für Mozilla Firefox und Google Chrome

  • gpg4usb ist ein portable Version, die auf einem USB-Stick installiert wird. Über den Stick ist GnuPG dann für viele Plattformen ohne Installation nutzbar

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 GnuPG tat sich 2003 eine Sicherheitslücke auf

  • Diese betraf lediglich das Verfahren zum digitalen Signieren von Nachrichten in den GnuPG-Versionen 1.02 bis 1.2.3. Angeblich sollen weniger als 1000 solcher Schlüssel auf den Schlüsselservern gelistet worden sein

Von der Verwendung dieses Verfahrens wurde abgeraten und nur wenige Benutzer 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 GnuPG-Skripte beim Überprüfen von Signaturen Fehler der 2. Art (false negative) ergeben können,

bei der zweiten waren Nicht-MIME-Nachrichten gegenüber der Einspeisung von Daten anfällig, die als von der digitalen Signatur gedeckt aufschienen, dies tatsächlich aber nicht waren

Beide Schwachstellen wurden zum Zeitpunkt ihrer Ankündigung bereits durch neue GnuPG-Versionen behoben

SSH-Unterstützung

In Version 2 von GnuPG wurde die Verwaltung der privaten Schlüssel in einen Daemon-Prozess (gpg-agent) 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
  1. Da GnuPG Smartcards unterstützt, kann ein SSH-Zugang an die Verwendung einer Smartcard gebunden werden (was über PKCS#11-Unterstützung in OpenSSH auch ohne GnuPG möglich ist)

Anhang

Siehe auch


Dokumentation

RFC Titel
4880 OpenPGP Message Format

Links

Projekt
  1. https://www.gnupg.org/
Weblinks
  1. https://de.wikibooks.org/wiki/GnuPG
  2. https://wiki.ubuntuusers.de/GnuPG/