SC-HSM SmartCards

Submitted by admin on So., 11.12.2016 - 11:26

Von CardContact gibt es eine Smartcard mit dem Namen Smardcard-HSM, die einige bemerkenswerte Eigenschaften hat. Da wären:

  • Middleware ist OpenSource
  • OpenSC Unterstützung
  • Kontaktlos (RFID) und Kontakt Interface

Bei den ersten Tests hat sich gezeigt, dass die Karte, wenn man sie erst einmal zum Laufen bekommen hat, sehr zuverlässig funktioniert. Ein Zertifikat bekommt man nur mit der Middleware von CardContact auf die Karte, was aber nicht wirklich ein Problem darstellt, da Open-Source. Die Performance der Karte ist als gut zu bezeichnen, Wartezeiten bei Zugriffen, wie man sie von älteren Smartcards kennt, gibt es nicht.

Weniger schön sind jedoch die Anforderungen an den Kartenleser, was jedoch eher den Leser Herstellern zuzurechnen ist. Die Karte verlangt vom Leser, dass dieser extended APDUs unterstützt. So ganz neu ist das Feature nicht, es wird aber von den Herstellern offenbar ebenso ignoriert wie IPv6 von den Internet Providern. Der einzige Kartenleser, der mit der Smardcard-HSM zuverlässig funktioniert, sind die Klasse 3 Leser von Reiner-SCT, wobei bei dem Modell RFID Comfort das Pinpad im kontaktlosen Mode nicht funktioniert.

Verbesserungsfähig ist die Dokumentation, offenbar unterstützt diese Karte auch CVC, leider sind dazu kaum Informationen zu finden.

Init

Zunächst muss die Karte initialisiert werden.

sc-hsm-tool --initialize

Keypair erzeugen

Die Smartcard HSM ist eines der wenigen Produkte, die Schlüssel auf der Basis elliptischer Kurven unterstützt, also gleich einmal testen:

# Die folgenden Key Types werden von SmartCard HSM unterstützt:
KEY_TYPE="secp256k1"
#KEY_TYPE="prime256v1"
pkcs11-tool --module /usr/lib64/pkcs11/opensc-pkcs11.so --keypairgen --key-type EC:${KEY_TYPE} --login --label "hsm-0001" --id 10

OpenSSL

Am Anfang steht eine angepasste openssl.cnf. Wichtig ist hier insbesondere der Abschnitt pkcs11_section der hier für Fedora 23 angepasst ist und auch mit CentOS funktioniert.

https://gist.github.com/ip6li/2434bff4d5d293ede53e7cf2e6b39490

Keypair ist schön und gut, aber wir brauchen auch noch ein Zertifikat, was ein CSR File erfordert:

/usr/local/ssl/bin/openssl req -engine pkcs11 -keyform engine -key 10 -new -text -out hsm-0001.csr -config openssl.cnf -subj "/O=example.com/CN=hsm-0001"

oder man erstellt ein selbstsigniertes Zertifikat:

/usr/local/ssl/bin/openssl req -x509 -engine pkcs11 -keyform engine -key 10 -new -text -out hsm-0001.crt -config openssl.cnf -subj "/O=example.com/CN=hsm-0001"
openssl x509 -in hsm-0001.crt -out hsm-0001.crt.der -outform der
pkcs11-tool --module /usr/lib64/pkcs11/opensc-pkcs11.so --login  --write-object hsm-0001.crt.der --type cert --id 10

Elliptische Kurven

Bei der SmartCard HSM wird bei RSA > 1024Bit ein Smartcardreader mit extended APDU Unterstützung benötigt. Da elliptische Kurven mit vergleichsweise kleineren Schlüssellängen auskommen, sind diese offenbar eine gute Wahl für diese Smartcards.

Links

X.509 mit Smartcards enthält weitere Skripte und Hinweise zu Anwendungen.