Starke Authentifizierung durch Smartcards
Jede verwertbare Information ist wertvoll - das versteht sich von selbst. Alles, was wertvoll ist, ist auch schützenswert. Und jede (ungeschützte) elektronische Information ist verwertbar. Daraus folgt: Jede elektronische Information sollte geschützt werden. Wird sie aber nicht.
In diesem Artikel möchte ich beschreiben was Smartcards sind und zeigen dass die Verwendung einer Open GPG SmartCard gar nicht so kompliziert sein brauch.
Das Ziel ist die Verwendung eines USB-Dongles um SSH-Verbindungen herzustellen sowie Dateien und E-Mails zu verschlüsseln und signieren.
Nachtrag 2022
Ich hab diesen Artikel vor 8 Jahren geschrieben und dieser USB-Dongel ist immernoch täglich im Einsatz.
Da ich ab und an auch mal an mehreren Computern gleichzeitig arbeite habe ich mir zusätzlich noch eine SmartCard ID-1 Format besorgt, die im Thinkpad-Cardreader problemlos eingelesen werden kann.
Tools wie gopass
unterstützen GPG und andere tools wie aws-vault
unterstützen gopass
- hach, linux ❤️
Die Werkzeugkiste
- Open PGP Smartcard im ID-000 Format:
Der private Schlüssel wird auf der Smartcard gespeichert und befindet sich somit nicht auf der Festplatte.
Die Smartcard erlaubt bis zu 3 Schlüssel zu verwalten.
Bild: Axel Reinhardt, Lizenz: Creative Commons Namensnennung, Weitergabe unter gleichen Bedingungen 3.0
Smartcards bzw. Chipkarten begegnen uns heutzutage in vielen Situationen. Eine Smartcard befinden sich im Telefon als SIM-Karte. Die Bankkarte ist eine Smartcard. Die Krankenkassenkarte ist eine Smartcard. Und wahrscheinlich auch dein Führerschein. In einigen Fällen authentifizierst du dich mit einer PIN.
Auf der Open PGP Smartcard werden die Schlüssel ebenfalls mit einer PIN gesichert. Nach 3 falsch Eingegebenen PINs ist die Karte gesperrt und kann mit der PUK wieder entsperrt werden.
- Der Smartcard Reader: Identive SCT 3511
Der Smartcard Reader ist die Schnittstelle zwischen Computer und Smartcard. Praktischerweise kann der Reader vom Rechner entfernt werden.
Ich hab mein Geld in eine OPEN PGP SMARTCARD V2 im ID-000-Format gesteckt, mit dem dazugehörigen USB-Dongle.
Durch den Einsatz eines Dongles habe ich folgende Vorteile:
- mein private Schlüssel wird nicht auf der Festplatte gespeichert
- mein privater Schlüssel ist durch eine PIN geschützt
- ich kann meinen privaten Schlüssel überall mitnehmen
Gleichzeitig brauche ich auf die Vorteile nicht zu verzichten:
- Dateien mit PGP/GPG ver- und entschlüsseln
- SSH-Keys verwalten
Ich habe beide Artikel auf www.cryptoshop.com bestellt und habe mit diesen E-Shop sehr gute Erfahrungen gemacht.
Die Vorbereitung
Es sollte immer gpg2
statt dem älteren gpg
verwendet werden. Sonst kann es Probleme geben wenn sich mehrere Programme gleichzeitig authorisieren wollen (eine geöffnete SSH-Session und gleichzeitig eine E-Mail verschicken).
Installation von gpg2
, den Smartcard-Daemon und Tools:
sudo apt-get install gnupg2 pcscd pcsc-tools opensc gpgsm
Der pcscd
Service kann anschließen mit folgenden Befehl gestartet werden:
sudo service pcscd restart
Nun sollte der Reader gefunden werden:
$ opensc-tool --list-readers
# Detected readers (pcsc)
Nr. Card Features Name
0 Yes SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
Ebenso kann mit pcsc_scan
Informationen über die eingelegte Karte angezeigt werden.
Auch sollte es jetzt möglich sein den Kartenstatus mit gpg2 anzuzeigen:
gpg2 --card-status
Damit wären alle Vorbereitungen für das Verschlüsseln von E-Mails und Dateien getan.
Um allerdings SSH mit den GPG-Schlüssel zu verwenden, muss der folgende Eintrag der Datei ~/.gnupg/gpg-agent.conf
hinzugefügt werden:
enable-ssh-support
default-cache-ttl 18000
max-cache-ttl 86400
ignore-cache-for-signing
Der folgende Eintrag in der Datei ~/.profile
sorgt dann dafür, dass der gpg-agent immer läuft und dieser auch den ssh-agent
bereit stellt:
gpg-agent --daemon --enable-ssh-support \
--write-env-file "${HOME}/.gpg-agent-info"
if [ -f "${HOME}/.gpg-agent-info" ]; then
. "${HOME}/.gpg-agent-info"
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
fi
Damit ist das Setup fast abgeschlossen.
Jetzt kann auf der Smartcard der Schlüssel abgelegt werden. Wie das geht wird im in dem Howto der FSF besser erklärt als ich das könnte.
Die Verwendung
Mit folgenden Befehl lässt sich jetzt der SSH public-key anzeigen:
$ ssh-add -L
Diesen key kann man jetzt wie gewohnt in die .ssh/authorized_keys
des Ziel-Host eintragen.
Dann kann sich per ssh
zum Zielrechner verbunden werden. Bei der ersten Verwendung gibt man seine PIN ein und man ist verbunden. Es befindet sich kein private key auf der Festplatte.