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 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önnten mit Trojanern versuchen, private Keys zu kopieren und die Passphrase mit Keyloggern oder mit Tools wie Elcomsoft Distributed Password Recovery knacken.
- Die unbedachte Entsorgung einer Festplatte oder eines Computers ist ein weiteres Risiko, wenn die privaten Daten nicht zuverlässig gelöscht wurden.
OpenPGP 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. 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 von kernelconcepts.de. Man braucht zusätzlich einen Smartcard Reader oder den ebenfalls erhältlichen Gemalto USB Adapter.
-
NitroKey: Der NitroKey ist ein OpenSource Hardware Projekt. Der NitroKey Pro enthält zusätzliche einen OTP-Generator und Passwortspeicher. (Für diese Zusatzfunktion ist die NitroKey App zu installieren.)
- Yubikey: Der Yubikey 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.
Verwaltung der Smartcard mit GNU Privacy Assistant (GPA)
Der GNU Privacy Assistant (GPA) ist Bestandteil des gpg4win Paketes und kann in allen Linux Distributionen aus den Repositorys installiert werden. Mit diesem GUI können auch OpenPGP Smartcards verwaltet werden. Dafür wählt man das Fenster "Kartenverwaltung".
In dem Fenster "Kartenverwaltung" kann man neue Schlüssel auf der Smartcard generieren lassen, die Daten anpassen und eine neue PIN/PUK setzen.
Die PIN benötigt man, wenn man die Smartcard zum Entschlüsseln oder Signieren von Daten verwenden möchte. Die PUK (auch Admin-PIN genannt) wird benötig, wenn man Daten auf der Smartcard ändern odr neue Schlüssel erzeugen möchte.
Verwaltung der Smartcard auf der Kommandozeile
Die Nutzung von
"gpg2" auf der Kommandozeile bietet die Möglichkeit, die Smartcard zu verwalten. Einen Überblick über alle Smartcard-Funktionen gibt die Hilfe mit dem
"help" Kommando. Als erstes muss man den Admin-Mode 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 Download 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.
OpenPGP Smartcards mit Thunderbird verwenden
Wenn man in Thunderbird 78.x eine OpenPGP Smartcard zum Entschlüsseln und Signieren von E-Mails verwenden möchte, muss man in den
Erweiterten Einstellungen folgende Option aktivieren:
mail.openpgp.allow_external_gnupg = true
Dann wird für die Einrichtung des eigenen Schlüssels eine dritte Option angeboten
Im folgenden Schritt kann man die ID des eigenen Schlüssels von der OpenPGP Smartcard eingeben. Der Zugriffsschutz für den privaten Key wird dann von GnuPG geregelt. Die Krypto-Operationen mit dem privaten Key werden dann auf der Smartcard ausgeführt statt mit OpenPGP.js in Thunderbird, was die kryptografische Sicherheit verbessert.