GPF CryptoStick - Kartenverwaltung
Bei nachfolgenden Paxisbeispielen gehen wir nun im Detail etwas genauer ein, wie mit Hilfe von GnuPG die User- und Admin-PIN verändert, ein Schlüssel generiert und auch anschließend auf einen Keyserver geladen werden kann. Auch findet man ein Verweis für eine GUI, wer den Umgang mit der Konsole scheut.
Kartenverwaltung
Konsole
Mit Hilfe des Programms gpg --card-edit können wir bei Bedarf sämtliche Änderungen auf der Crypto-Chipkarte vornehmen.
$ gpg2 --card-edit
Application ID ...: D2760001240102000005000008D10000 Version ..........: 2.0 Manufacturer .....: ZeitControl Serial number ....: 000008D1 Name of cardholder: Nausch Michael Language prefs ...: de Sex ..............: männlich URL of public key : - Login data .......: - Signature PIN ....: zwingend Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 32 32 32 PIN retry counter : 0 0 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none] Befehl> help quit Menü verlassen admin Zeige Admin-Befehle help Diese Hilfe zeigen list Alle vorhandenen Daten auflisten fetch Holen des Schlüssels mittels der URL auf der Karte passwd Menü für Ändern oder Entsperren der PIN verify überprüfe die PIN und liste alle Daten auf unblock die PIN mit dem Rückstellcode wieder freigeben
PINs ändern
So können wir einfach die Vorgabe-PIN 123456 für den Benutzer und die Admin-PIN 12345678 abändern.
Befehl> passwd
gpg: OpenPGP Karte Nr. D2760001240102000005000008D10000 erkannt
1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit
Schlüssel generieren
Wie auch beim normalen Generieren und Ablegen der Schlüssel im Dateisystem unseres Rechners, gestaltet sich auch beim CryptoStick entsprechend einfach, ist es ja im Grunde „nur“ eine Option beim Aufruf des Befehls gpg.
$ gpg2 –card-edit
Befehl> generate
Sicherung des Verschlüsselungsschlüssel außerhalb der Karte erstellen? (J/n) j
Welche Schlüssellänge wünschen Sie für den Unterschriften-Schlüssel? (2048) 2048
Welche Schlüssellänge wünschen Sie für den Verschlüsselungs-Schlüssel? (2048) 2048
Welche Schlüssellänge wünschen Sie für den Authentisierungs-Schlüssel? (2048) 2048
Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
0 = Schlüssel verfällt nie
<n> = Schlüssel verfällt nach n Tagen
<n>w = Schlüssel verfällt nach n Wochen
<n>m = Schlüssel verfällt nach n Monaten
<n>y = Schlüssel verfällt nach n Jahren
Wie lange bleibt der Schlüssel gültig? (0) 0
Schlüssel verfällt nie
Ist dies richtig? (j/N) j
GnuPG erstellt eine User-ID um Ihren Schlüssel identifizierbar zu machen.
Ihr Name ("Vorname Nachname"): Michael Nausch
Email-Adresse: django@nausch.org
Kommentar: CS4privacy
Sie haben diese User-ID gewählt:
"Michael Nausch (CS4privacy) <django@nausch.org>"
Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F
Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen.
gpg: Hinweis: Sicherung des Kartenschlüssels wurde auf `/home/django/.gnupg/sk_F162C6B54379521B.gpg' gespeichert
gpg: Schlüssel FF11F122 ist als uneingeschränkt vertrauenswürdig gekennzeichnet
Öffentlichen und geheimen Schlüssel erzeugt und signiert.
gpg: "Trust-DB" wird überprüft
gpg: 3 marginal-needed, 1 complete-needed, PGP Vertrauensmodell
gpg: Tiefe: 0 gültig: 1 unterschrieben: 0 Vertrauen: 0-, 0q, 0n, 0m, 0f, 1u
pub 2048R/FF11F122 2011-07-14
Schl.-Fingerabdruck = 2687 CC47 0D90 A155 24E1 8D0C CE80 FE4F FF11 F122
uid Michael Nausch (CS4privacy) <django@nausch.org>
sub 2048R/B335B612 2011-07-14
sub 2048R/4379521B 2011-07-14
Fragen wir nun den auf dem Cryptostick abgelegten Schlüssel ab, so wird dieser z.B. wie folgt angezeigt.
Befehl> list
Application ID ...: D2760001240102000005000008D10000
Version ..........: 2.0
Manufacturer .....: ZeitControl
Serial number ....: 000008D1
Name of cardholder: Nausch Michael
Language prefs ...: de
Sex ..............: männlich
URL of public key : -
Login data .......: -
Signature PIN ....: zwingend
Key attributes ...: 2048R 2048R 2048R
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 5
Signature key ....: 2687 CC47 0D90 A155 24E1 8D0C CE80 FE4F FF11 F122
created ....: 2011-07-14 08:24:07
Encryption key....: E2F5 F992 6BA3 8F28 F9EF A288 F162 C6B5 4379 521B
created ....: 2011-07-14 08:24:07
Authentication key: C446 AA76 BDA1 CDAA 3D03 E175 37A6 4C68 B335 B612
created ....: 2011-07-14 08:24:07
General key info..:
pub 2048R/FF11F122 2011-07-14 Michael Nausch (CS4privacy) <django@nausch.org>
sec> 2048R/FF11F122 erzeugt: 2011-07-14 verfällt: niemals
Kartennummer:0005 000008D1
ssb> 2048R/B335B612 erzeugt: 2011-07-14 verfällt: niemals
Kartennummer:0005 000008D1
ssb> 2048R/4379521B erzeugt: 2011-07-14 verfällt: niemals
Kartennummer:0005 000008D1
Über den Befehl quit verlassen wir die menügeführte Kartenverwaltung wieder.
Befehl> quit
Kartendaten
Über den Befehl gpg --card-status können wir uns die Daten unseres Cryptosticks anzeigen lassen.
Die einzelnen Datenfelder haben hierbei folgende Bedeutung:
Datenfeld | Beschreibung |
---|---|
Application ID | Individuelle (unique) KartenID, diese beinhaltet: ° den Kartentyp ° die Version der Spezifikation ° den Hersteller und ° die Seriennummer des Cryptosticks Diese Application ID ist einmalig und bei jeder Karte anders. |
Version | verwendete OpenPGP Version |
Manufacturer | Hersteller der Karte |
Serial number | Seriennummer der Karte, die vom Hersteller vergeben wurde. |
Name of cardholder | Vorname und Nachname des Karteninhabers ( Es sind hier derzeit nur reines ASCII erlaubt, also keine deutschen Umlaute). Dieses Feld wird von GPG nicht verwendet. |
Language prefs | Gewählte/bevorzugte Sprache (Muttersprache) des Karteninhabers. Dieses Feld wird von GPG nicht verwendet. |
Sex | Geschlecht des Karteninhabers.: (Männlich (M), Weiblich (F) oder Leerzeichen) |
URL of public key | Angabe einer URL, mit der der public-key mit Hilfe des Befehls fetch unter gpg –edit-card auf die Karte geladen werden kann. |
Login data | Bei diesem Feld kann der Account-Name des Karteninhabers abgelegt werden, der bei Anmeldeversuchen genutzt werden kann. GPG führt hier keinerlei Abgleiche zwischen diesem Namen und dem Namen der in einem Schlüssel angegeben und verwendet wird durch! |
Signature PIN | Hier kann über die beiden Schalter zwingend und nicht zwingedn eingestellt werden, ob bei jedem Signaturevorgang die PIN abgefragt werden soll, oder nicht. Bei der Option nicht zwingend kann GPG die PIN zwischenspeichern, solange der CryptoStick angesteckt bleibt. |
Key attributes | Angaben über Art und Umfang der hinterlegten Schlüssel |
Max. PIN lengths | Maximale Länge der einzelnen PINs, kann nicht verändert werden! |
PIN retry counter | Zähler für die verbleibenden Versuche zur Eingabe der richtigen PIN. Der max. Zählwert von 3 wird bei jeder Falscheingabe um eins heruntergesetzt. Sobald die richtige Admin-PIN eingegeben wurde, wir der max. Wert von 3 wieder zurück gesetzt. Die beiden ersten Werte (von links gesehen) werden für die User-PIN verwendet. GPG stellt hierbei sicher, dass beide werde synchronisiert werden. Der zweite (mittlere) Wert wird lediglich für Besonderheiten aus dem ISO-Standard 7816 verwendet. Der dritte (rechte) Wert wird als Fehlversuchszähler für die Admin_PIN verwendet. |
Signature counter | Zähler der generierten Signaturen bzw. Signaturvorgänge mit der KArte. Der Zähler kann nicht manipuliert werden und wird lediglich zurückgesetzt, sobald ein neuer Signature-Schlüssel erzeugt oder auf die Karte geladen wird. |
Signature key | Signatur-Schlüssel (primärer OpenPGP-Schlüssel) |
created | Datum und Uhrzeit an dem der Schlüssel erzeugt wurde |
Encryption key | Entschlüsselungs-Schlüssel (Unterschlüssel des primären (Signature-)Schlüssels. |
created | Datum und Uhrzeit an dem der Schlüssel erzeugt wurde |
Authentication key | Authentifizierung-Schlüssel (Unterschlüssel des primären (Signature-)Schlüssels. |
created | Datum und Uhrzeit an dem der Schlüssel erzeugt wurde |
General key info | Diese primäre USer ID wird angezeigt, sobald ein entsprechender öffentlicher Schlüssel (public-key) verfügbar ist. |
GUI
Der Zugriff auf die SmartCard kann natürlich auch mit Hilfe einer GUI erfolgen. Hier bietet sich der Smartcard-Manager von dem Thunderbird-Plugin Enigmail an.
Im Menüpunkt [OpenPGP] → [Schlüssel verwalten…] gelangt man zur Schlüsselverwaltung.
Über dem Menüpunkt [SmartCard verwalten…] können wir nun direkt auf die Daten des Cryptostick zugreifen.
Hier haben wir nun die Möglichkeit neben den Daten, den beiden PINs natürlich auch die Schlüssel komfortabel zu verwalten.
PublicKey auf einem KeyServer hochladen
Wie auch beim Hochladen unseres öffentlichen Schlüssels aus dem keyring, welcher auf der Platte generiert werden kann, erfolgt dies einfach mit Hilfe des Programms gpg.
$ gpg --keyserver keyserver.nausch.org --send-key FF11F122 gpg: sende Schlüssel FF11F122 auf den hkp-Server keyserver.nausch.org
weitere Informationen
Weitere Informationen zum Umgang und zur Inbetriebnahme des Cryptostick findet man im Kapitel GPF CryptoStick in der Praxis.