Installlation der notwendigen Werkzeuge

Als erstes muss, soweit noch nicht vorhanden, eine Abhängigkeit erfüllt werden:
 
> apt-get install libusb-1.0.0-dev
 
Im nächsten Schritt sind die zum Programmieren notwendigen Libs zu installieren:
 
> mkdir ~/yubikey
> cd ~/yubikey
> wget http://yubico-c.googlecode.com/files/libyubikey-1.5.tar.gz
> tar xvfz libyubikey-1.5.tar.gz
> cd libyubikey-1.5
> ./configure
> make
> make install
  Nun kommt das eigentliche Personalisierungs-Tool an die Reihe:
 
> cd ~/yubikey
> http://yubikey-personalization.googlecode.com/files/ykpers-1.5.0.tar.gz
> tar xvfz ykpers-1.5.0.tar.gz
> cd ykpers-1.5.0
> ./configure
> make
> make install
 
Nach erfolgreichem Anschluss der Installation sind nun die benötigten Tools wie z.B. ykpersonalize verfügbar.

Der eigentliche Programmiervorgang

Ich gehe hier davon aus, dass in einer GPG verschlüsselten und signierten Datei keys.txt ein oder eine Reihe von Schlüsseln liegen, die auf den/die Yubikeys geschrieben werden sollen.

Im ersten Schritt müssen die Schlüssel aus dem Container gelesen werden:
 
root@nf310:~# gpg < keys.txt
   
You need a passphrase to unlock the secret key for
user: "YK-KSM crater Import Key"
2048-bit ELG-E key, ID C938E64A, created 2011-03-08 (main key ID 9BC9EDF4)

gpg: gpg-agent is not available in this session
gpg: encrypted with 2048-bit ELG-E key, ID C938E64A, created 2011-03-08
      "YK-KSM crater Import Key"
# ykksm 1
# serialnr,identity,internaluid,aeskey,lockpw,created,accessed[,progflags]
2,cccccccccccd,059ea92c0ca9,a31ddbaf37b2350771633b94c6538c25,b0c6023e3dbd,2011-03-19T16:08:12,
   
gpg: Signature made Sat 19 Mar 2011 04:08:12 PM CET using DSA key ID 9BC9EDF4
gpg: Good signature from "YK-KSM crater Import Key"
  Diese Werte, d.h der Schlüssel mit der Seriennummer 2 soll nun programmiert werden.

Der Aufruf hierzu sieht wie folgt aus:
 
ykpersonalize -aAESKEY -oUID=INTERNALUID -ofixed=IDENTITY
  also konkret:
 
root@nf310:~# ykpersonalize -aa31ddbaf37b2350771633b94c6538c25 -ouid=059ea92c0ca9 -ofixed=cccccccccccd -o-append-cr
 
Die Ausgabe in der Console sieht dann so aus:
 
Firmware version 2.2.1 Touch level 1793 Program sequence 1
   
Configuration data to be written to key configuration 1:
fixed: m:cccccccccccd
uid: h:059ea92c0ca9
key: h:a31ddbaf37b2350771633b94c6538c25
acc_code: h:000000000000
ticket_flags:
config_flags:
extended_flags:
   
Commit? (y/n) [n]: y
   
root@nf310:~# 
  Mit dem Parameter "-o-append-cr" wird verhindert, dass der Yubikey nach dem Senden des OTP am Ende noch ein Linefeed anhängt.

Da ich noch am Testen bin habe ich auch die Konfiguration nicht geschützt. Setzt man einen Kennwortschutz, so darf man das Kennwort keinesfalls vergessen! Das Kennwort ist write-only und kann somit definitiv nie wieder ausgelesen werden- der Yubikey kann dann nicht mehr umprogrammiert werden!

Nun kann der frisch programmierte Token z.B. gegen den Keyserver getestet werden:
 
root@nf310:~# curl 'http://kss.rs.de/wsapi/decrypt?otp=cccccccccccdljjebkhetgihhcincjkdcidbghnferhr'
 
Die Antwort, die kommen sollte, sollte in etwa so aussehen:
 
OK counter=0002 low=79a9 high=98 use=00
  Der Yubikey mit der Seriennummer 2 ist nun also fertig programmiert und einsatzbereit. Wie gesagt: Die Konfiguration ist nicht geschützt- der Einsatz sollte sich also derzeit noch auf eine geschlossene Testumgebung beschränken!