Die Sicherheit asymmetrischer Verschlüsselung hängt entscheidend von der sicheren Aufbewahrung des privaten Schlüssels ab. Es gibt mehrere Möglichkeiten, wie private Schlüssel kompromittiert werden könnten:
- Wenn man GnuPG auf mehreren Computern nutzt, auf denen andere Nutzer Administrator- bzw. Root-Privilegien haben, könnten die privaten Schlüssel von Administratoren eingesammelt werden.
- Böswillige Buben können mit einem Trojaner versuchen, den privaten Key zu kopieren und die Passphrase mit Keyloggern oder mit Tools wie Elcomsoft Distributed Password Recovery ermitteln.
- Die unbedachte Entsorgung einer Festplatte oder eines Computers ist ein weiteres Risiko, wenn die privaten Daten nicht zuverlässig gelöscht wurden.
Smartcards ermöglichen eine sichere Nutzung von GnuPG unter diesen Bedingungen. Der private Schlüssel ist ausschließlich auf der Smartcard gespeichert, er verläßt diese sichere Umgebung nicht und alle Krypto-Opertionen, die den privaten Schlüssel nutzen, werden auf der Smartcard ausgeführt.
(Die Nutzung von Smartcards hätte wahrscheinlich die
Kompromittierung der OpenPGP-Schlüssel von Cryptome.org verhindern können.)
Einige Angebote von OpenPGP Smartcards:
-
Die GnuPG-Smartcard im Checkkarten Format gibt es bei kernelconcepts.de. Man braucht zusätzlich einen Smartcard Reader oder den ebenfalls dort erhältlichen Gemalto USB Adapter für die SIM-Karte.
-
NitroKey: Der NitroKey ist ein OpenSource Hardware Projekt und der Nachfolger des Cryptostick. Der NitroKey Pro enthält zusätzliche einen OTP-Generator und Passwortspeicher. (Für diese Zusatzfunktion ist die NitroKey App zu installieren.)
- Yubikey 4 Der Yubikey 4 ist ein One-Time-Passwordgenerator (OTP), den man für sichere Logins nutzen. Er enthält zusätzlich eine OpenPGP Smartcard.
Ein erster Test
Die GnuPG Software Collection kann Smartcards
out-of-the-box nutzen. Zuerst sollte man prüfen, ob alles funktioniert und die Smartcard erkannt wird. Smartcard anschließen und auf der Konsole bzw. in der DOS-Box folgendes Kommando eingeben:
> gpg2 --card-status
Application ID ...: D27600xxxxxxxxxxxxxxx
Version ..........: 2.0
Manufacturer .....: unknown
....
Wenn keine Smartcard gefunden wird, kann man zuerst prüfen, ob die GnuPG Software Collection vollständig installiert wurde (
gpg2 + gpg-agent + scdaemon) und ob der
gpg-agent läuft. Bekannte Probleme gibt es auch mit dem GNOME Keyring Manager (siehe unten).
Smartcards mit Enigmail verwalten
Enigmail ist voll kompatibel mit Smartcards. Das Add-on bietet eine grafische Oberfläche, um Smartcards zu verwalten. Diese Funktionen öffnet man über den Menüpunkt
"Enigmail - Smartcard verwalten".
- Als erstes kann man die Card personalisieren und den Namen usw. editieren, eine URL für den Download des Public Key angeben... ("Edit Card Data")
- Im zweiten Schritt sollte der PIN und der Admin-PIN geändert werden.
- PIN ist ein Passwort, mit dem der Nutzer den Zugriff auf den privaten Key auf der Smartcard freigibt (Default bei Auslieferung: "123456").
- Der Admin-PIN ist ein Passwort zum Ändern der Daten und der Schlüssel auf der Smartcard (Default bei Auslieferung: "12345678").
Die eigenen PINs können in der Regel 32 Zeichen lang sein und neben Zahlen auch Buchstaben enthalten. "Passwort" wäre eigentlich eine bessere Bezeichnung.
- Wurde die PIN 3x falsch eingegeben, wird die Card gesperrt und kann nur mit der Admin-PIN wieder entsperrt werden ("Unblock PIN").
- Wenn die Admin-PIN 3x falsch eingegeben wurde, ist die Smartcard zerstört!
- Als letzten Schritt vor der Nutzung der Smartcard im täglichen Krypto-Chaos sind die Keys auf der Smartcard zu generieren.
Der Dialog bietet die Auswahl eines Mail-Account an, für den die Smartcard genutzt werden soll. Für diesen Account darf kein(!) OpenPGP-Key vorhanden sein. Anderenfalls bricht der Vorgang mit einer Fehlermeldung ab.
Man kann bei der Erzeugung des Schlüssels ein Passwort-gesichertes Backup der Card-Keys anlegen. Später ist kein Zugriff auf diese Schlüssel mehr möglich. Bei Beschädigung der Smartcard kann der gesicherte Card-Key in eine neue Smartcard importiert werden. Das Backup wird im GnuPG-Verzeichnis abgelegt und ist auf einem sicheren Datenträger zu speichern!
Wurden die Schlüssel generiert, findet man in der "Schlüsselverwaltung" ein neues Paar. Der Public Key dieses Schlüsselpaares kann wie üblich exportiert und den Partnern zur Verfügung gestellt werden. Der Private Key dieses Paares definiert lediglich, dass die kryptografischen Operationen auf einer Smartcard auszuführen sind. Er ist ohne die passende Card unbrauchbar.
Für Genießer
Die Nutzung von
"gpg2" auf der Kommandozeile bietet etwas mehr Möglichkeiten, als bisher im Enigmail-GUI implementiert sind. Natürlich stehen auch die mit dem GUI durchführbaren Funktionen auf der Kommandozeile zur Verfügung. Einen Überblick über alle Smartcard-Funktionen gibt die Hilfe mit dem
"help" Kommando. Als erstes muss man den Admin -ode aktivieren, dann hat man vollen Zugriff auf alle Funktionen:
> gpg2 --card-edit
...
gpg/card> admin
Admin-Befehle sind erlaubt
gpg/card> help
...
gpg/card> quit
Neue Schlüssel generiert man auf der Smartcard mit
"generate", die PIN und Admin-PIN kann man mit
"passwd" ändern, mit
"unblock" kann man den Zähler für Fehlversuche zurück setzen und
"factory-reset" löscht alle Schlüssel auf der Smartcard.
Neuer oder fremder Rechner - was nun?
Ein nettes Feature von OpenPGP Smartcards ist es, an einem neuen oder fremden Rechner den Public Key von einer Download Adresse holen zu können. Der private Key ist auf der Card in einer sicheren Umgebung, somit kann man auch unterwegs auf einem halbwegs vertrauenswürdigen, fremden Rechner eines Bekannten mit vollständiger GnuPG Installation die PGP-Verschlüsselung nutzen ohne den privaten Schlüssel zu kompromittieren.
Die Funktion zum Abrufen des Public Key von der Downoad URL steht nur auf der Kommandozeile zur Verfügung. Nach dem Abrufen des Public Key muss man noch einmal den Card-Status aufrufen, damit der private Schlüssel an den Public Key gebunden wird:
> gpg2 --card-edit
...
gpg/card> fetch (Holen des Public Key von der konfigurierten Download URL)
gpg/card> quit
>
> gpg2 --card-status (Re-Bind von private und public Key)
Prinzipiell könnte man auch einen
Keyserver nutzen, um den öffentlichen Schlüssel zu importieren. Die Verwendung der Download URL der Smartcard ist aber sicherer.