Open-Source-Hardware ist keine Spielerei, das zeigt ein USB-Stick der German Privacy Foundation. Auf dem können bis zu drei Benutzer ihre GPG-Schlüssel, RSA- und PKCS#11-Zertifikate hinterlegen und sich mit Linux und Windows für E-Mails, Browser oder SSH authentifizieren.
Leuchtend rot und oval präsentiert sich der Stick. Beim Zugriff leuchtet eine helle rote Diode und verleiht dem Laptop des Benutzers etwas Wichtiges, Sicheres. In dem Stick der German Privacy Foundation (GPF, [1]) ist eine Open-PGP-Chipkarte [2] der Version 2 eingebaut, die geheime Schlüssel des Anwenders sicher speichert. Darauf finden bis zu drei unabhängige 2048-Bit-RSA-Keys fürs Signieren, Verschlüsseln und Authentifizieren Platz. Wer sich bei ihnen auf 1024 Bit beschränkt, kann sogar einen Signaturschlüssel von 3072 Bit verwenden.
Open-Source-Hardware
Das Besondere an dem auf der Cebit 2010 erstmals vorgestellten Stick ist jedoch das Entwicklungskonzept: Er ist Open Source. Seit dem ersten Hype um frei entwickelte Hardware, zum Beispiel rund um Oscar, das Open-Source-Auto, ist zwar bereits einige Zeit vergangen, doch das offene Konzept bürgt auch hier wie in der Softwarewelt für Sicherheit und Transparenz. Die German Privacy Foundation betreut das Projekt und vermarktet den Stick für 49 Euro.
Der aktuelle Crypto-Stick in der Version 1.2 basiert auf einem ST7GEME4-IC, die Entwicklerversion 2 enthält einen STM32F103RCT6-Microprozessor [3]. Auf den Webseiten der Foundation stehen technische Details, eine Darstellung der Hardware unter [4] und [5].
Der rote Stecker verwendet einen eingebauten USB-Hub mit Smartcard und Mass Storage für die Zertifikate. Unter Ubuntu meldet er sich auf das Lsusb-Kommando (Abbildung 1) mit der ID 20a0:4107 und gibt folgende Informationen preis:

Abbildung 1: Die ersten Schritte mit dem Stick: Lsusb gibt Aufschluss über das Gerät, Aptitude installiert die Libccid und Pcsd. Auf dem Stick ist ein eigener USB-Hub untergebracht, der zwei Geräte bereitstellt.
[...]
Bus 003 Device 003: ID 20a0:4107
Device Descriptor:
iManufacturer 1 German Privacy Foundation
iProduct 2 Crypto Stick v1.2
Interface Descriptor:
bInterfaceClass 11 Chip/SmartCard
[...]
Die weiteren Zeilen nennen unter anderem die Versionsnummer des Crypto-Sticks und Details wie dessen ID.
Startschuss
Um den Stick in Betrieb zu nehmen, installiert Root zuerst das »libccid«-Paket, das »pcsd«, den PC/SC Lite Resource Manager für Smartcards, gleich mitzieht. Für die Stick-Version 1.0 reicht das, für Version 1.2 gibt es unter [6] und [7] aktualisierte Treiber und viele Tipps zu problematischen Paketen (Open SC, Open CT) oder weiteren Abhängigkeiten, die das von den Autoren verwendete Ubuntu 10.10 bereits installiert hatte, etwa GNU PG 1 oder 2 oder die Libpcslite.
Wer als regulärer Benutzer auf den Stick zugreifen will, braucht noch eine passende Udev-Regel, sonst funktionieren die folgenden Beispiele nur als Root. Die Regel sollte folgende Zeilen beinhalten:
SUBSYSTEM!="usb", GOTO="cryptostick_
rules_end"
ACTION!="add", GOTO="cryptostick_rules_end"
ATTR{idVendor}=="20a0", ATTR{idProduct}==
"4107", ENV{ID_SMARTCARD_READER}="1",
ENV{ID_SMARTCARD_READER_DRIVER}="gnupg"
LABEL="cryptostick_rules_end"
Eine funktionierende Datei mit der vollständigen Udev-Regel gibt es als »40-cryptostick.rules« oder als Debian-Paket zum Download auf [8].
Erster Versuch klappt
Für einen ersten Funktionstest bietet sich ein prüfender Blick auf den Crypto-Stick mit den Tools der GNU Privacy Guard (GPG) an. Wenn alles funktioniert, ist es wahrscheinlich, dass auch andere, darauf aufbauende Tools damit zurechtkommen. Das Kommando »gpg –card-status« (beziehungsweise »gpg2«) gibt dann auch erfolgreich erste Informationen aus (siehe Abbildung 2).

Abbildung 2: Ein unkonfigurierter Stick gibt direkt nach dem Auspacken erste interne Informationen preis. Als Werkzeug dafür bietet sich Gpg an.
Die eigene PIN
Der Crypto-Stick kommt im Lieferzustand mit zwei Default-PINs: einmal die reguläre PIN »123456« und für den Admin »12345678«. Ihre Längen sind fest vorgeschrieben. Die Admin-PIN entsperrt die reguläre und schaltet die administrativen Kommandos für den Crypto-Stick frei. Es empfiehlt sich, die PIN gleich zu Beginn zu individualisieren, was mit dem Befehl »gpg –change-pin« geschieht (siehe Abbildung 3). Dies bestätigt Gpg als Erstes mit der Ausgabe der ID des Sticks, die Aufschluss darüber gibt, auf welche Open-PGP-Karte der Benutzer zugreift. Anschließend bietet ein Textmenü die Möglichkeit, die PIN zu ändern, zu entsperren und die Admin-PIN oder den Resetcode zu setzen.

Abbildung 3: Beim Ändern der PIN übernimmt Pinentry unter Ubuntu die Eingabe-Aufforderung in einem eigenen Fenster.
Damit der Crypto-Stick funktioniert, sollte der Benutzer ihn jetzt in einen vernünftigen Grundzustand versetzen. »gpg –card-edit« startet eine Subshell mit eigenem Befehlssatz, der sich über »help« ausgeben lässt (Abbildung 4). Wer hier Änderungen vornehmen will, sollte zunächst mit dem Kommando »admin« den erweiterten Befehlssatz für die Administration freischalten (Abbildung 5).
Jetzt geht’s ans Personalisieren. Der Befehl »name« ermöglicht es, Vor- und Nachnamen des Benutzers einzugeben. Diese Daten speichert der Stick, sobald der Anwender die Admin-PIN korrekt eingegeben hat. Danach kann das Kommando »generate« einen neuen Key erzeugen. Ein anschließendes »list«-Kommando im interaktiven Modus zeigt die erzeugten Schlüssel auf dem Stick (Abbildung 6).
Bestehenden Key kopieren
Im Regelfall besitzt der sicherheitsbewusste User jedoch bereits einen PGP-Key und möchte diesen auf den Stick verschieben. Auch das klappt mit dem roten USB-Teil sofort: Der Benutzer sucht die Key-ID, die er auf den Crypto-Stick verschieben will, mit »gpg –list-secret-keys« raus und ruft dann Gpg so auf, als ob er seinen Schlüssel editieren möchte:
gpg --edit-key D9AC74D0
In Gpg findet sich zum Verschieben eines Schlüssels auf eine Open-PGP-Smartcard das Kommando »keytocard«:
Command> keytocard Really move the primary key? (y/N) y Signature key ....: DB5A 2732 [...] Encryption key....: 0E83 9844 [...] Authentication key: 64A9 0DE1 [...] You may only store a 1024 bit RSA key on the card
Hier kommt die erste Einschränkung des Geräts ans Licht: Der Crypto-Stick sowie die Open-PGP-Karte der FSFE unterstützen bisher nur nur RSA-Schlüssel. Der Benutzer im Beispiel oben kann seinen bestehenden Key also nicht mit dem Crypto-Stick einsetzen.
Dafür klappt die Integration in Gpg problemlos: In dieser Ausgabe von »gpg –list-secret-keys«
sec> 2048R/C42F009A 2010-10-15
Card serial no. = 0005 00000695
uid Felix Kronlage
(test key) <felix@gottorp16.de>
ssb> 2048R/F5A80732 2010-10-15
ssb> 2048R/A5415839 2010-10-15
taucht der Testkey auf dem Stick bereits auf. Ist der Crypto-Stick angesteckt, zeigt Gpg automatisch dessen Inhalt mit an. Sobald Gpg-Aktivitäten auf den Key auf dem USB-Medium zugreifen, leuchtet er hell-rot und Gpg fragt den Anwender nach der PIN statt nach dem Passwort.
GUI-Tools
Die German Privacy Foundation empfiehlt Enigmail als GUI-Tool zur Schlüsselverwaltung. Das funktionierte im Test einwandfrei, überhaupt scheinen sich die Entwickler auf die Programme des Mozilla-Projekts, zum Beispiel Thunderbird zu konzentrieren. Trotzdem laufen Evolution und andere Mailer ebenfalls mit dem Stick.
Möglich macht das Gpg: Jedes Programm, dass diesen Stack nutzt, wird mit dem Crypto-Stick funktionieren. Ein proprietärer PKCS#11-Treiber von Peter Koch (siehe auch den Artikel zu IPsec und Smartcards in diesem Schwerpunkt) ist zwar noch in Entwicklung und offenbar ganz auf Mozilla beschränkt, doch dies alles zeigt, wohin die Reise gehen kann.
Aber ein freier Treiber wird sicherlich nicht lange auf sich warten lassen, und dann funktioniert der Crypto-Stick vielleicht auch als Zugangstoken für VPNs. Die Liste der unterstützten Anwendungen kann sich jetzt schon sehen lassen: Da finden sich Truecrypt, die SSH, Putty, Treiber für Windows und nicht zuletzt auch der GNU Privacy Assistant (GPA, Abbildung 6, [9]).
| Infos |
|---|
| [1] German Privacy Foudation: [https://www.privacyfoundation.de/crypto_stick]
[2] Details zur Open-PGP-Card: [http://www.g10code.com/p-card.html] [3] STM32F103RCT6-Architektur:[http://www.st.com/stonline/products/literature/ds/14611/stm32f103rc.pdf] [4] Stick-Architektur der Version 1.0: [https://www.privacyfoundation.de/wiki/CryptoStick1.0] [5] Stick-Architektur der Version 2: [https://www.privacyfoundation.de/wiki/GPFCryptoStick#Version_2] [6] Crypto-Stick-Software: [https://www.privacyfoundation.de/wiki/CryptoStickSoftware] [7] Treiber für Version 1.2: [https://www.privacyfoundation.de/wiki/CryptoStickSoftware#Treiber_f.2BAPw-r_Version_1.2] [8] Passende Udev-Regeln: [https://www.privacyfoundation.de/wiki/CryptoStickSoftware?action=AttachFile&do=view&target=40-cryptostick.rules] [9] GNU Privacy Assistant:[http://gnugp.org/gpa.html] |









