OpenSC.tokend
Der Open-Source-Smartcard-Treiber für OS X
Ein tokend sorgt dafür, dass die Schlüssel und Zertifikate auf Ihrer Smartcard in Keychain Access.app erscheinen und für Anwendungen wie Safari oder Chrome verfügbar sind. OpenSC.tokend ist die Open-Source-Implementierung eines tokend von OpenSC, mit Unterstützung für viele verschiedene reale PKI-Smartcards, die man in der Praxis findet.
Geschichte der tokend-Unterstützung in OS X
- Im Jahr 2005 führte Apple mit OS X Version 10.4 „Tiger“ die tokend-Middleware ein, um Smartcards von Drittanbietern für andere native OS-X-Anwendungen verfügbar zu machen [1]. Bauanleitungen für ein tokend waren nicht öffentlich verfügbar.
- OS X 10.5 „Leopard“ kann als Stabilisierungs-Release betrachtet werden, wobei frühe Versionen mehrere Fehler aufwiesen, die die Nutzung von Smartcards (einschließlich eines tokend) zu einer echten Qual machten [2]. Mit 10.5.6 wechselte Apple von einem selbstgebauten Smartcard-Leser-Treiber zu dem funktionsreicheren, de facto Standard bildenden Open-Source-CCID-Treiber, der von Ludovic Rousseau gepflegt wird [3], wodurch zumindest einige der zugrunde liegenden Fehler behoben wurden.
- OS X 10.6 „Snow Leopard“ war die letzte Version, die die zum Erstellen eines tokend erforderlichen Quellkomponenten bereitstellte (der Einfachheit halber im build-Ordner gebündelt).
- Mit OS X 10.7 „Lion“ stellte Apple die Verteilung von tokends mit dem Betriebssystem ein [3] und erklärte außerdem CDSA (die Grundlage von tokend) sowie OpenSSL [4] (das OpenSC für kryptografische Softwareoperationen verwendet) für veraltet.
- In OS X 10.8 „Mountain Lion“ und OS X 10.9 „Mavericks“ nahm Apple kleinere Änderungen an den zugrunde liegenden PC/SC- und CCID-Subsystemen vor, aber die als veraltet markierten tokend-Komponenten funktionierten weiterhin [5], [6].
- In OS X 10.10 „Yosemite“ funktioniert die für den Build von OpenSC.tokend erforderliche tokend-Codebasis (größtenteils aus 2005..2008!) immer noch, obwohl abhängige Komponenten seit Jahren nicht aktualisiert wurden und sich sogar der systemeigene C++-Compiler geändert hat. Das Gesamterlebnis unter 10.10 ist aufgrund der Neufassung der zugrunde liegenden Smartcard-Infrastruktur etwas instabil, was mit dem Austausch von pcscd durch einen CryptoTokenKit-Daemon zusammenhängt [7]. Es gibt keine öffentlichen Informationen darüber, wie man einen mit CryptoTokenKit kompatiblen Smartcard-Treiber erstellt (vielleicht wegen des gemeinsamen Codes und der einjährigen Herstellerbindung von ApplePay auf iOS [8]?).
- In OS X 10.15 „Catalina“ sind tokends deaktiviert und müssen explizit aktiviert werden:
sudo defaults write /Library/Preferences/com.apple.security.smartcard Legacy -bool true
Installation
OpenSC.tokend wird mit dem OpenSC-Installer für OS X verteilt und ist nicht separat erhältlich.
Erstellen
Das Erstellen von OpenSC.tokend erfordert, dass der Quellcode von OpenSC vorhanden ist. Die OpenSC-Buildskripte für OS X erstellen auch das tokend. Minimale Anweisungen sind im Quellcode des Buildskripts verfügbar.
Lizenz
Der Code von OpenSC ist unter LGPL 2.1+ lizenziert, Komponenten von Apple unter APSL 2.0.
Zukunft
Das gesamte tokend-System ist ein Relikt aus der Vergangenheit und in naher Zukunft zum Aussterben verurteilt, doch es ist mit den neuesten OS-X-Versionen weiterhin nützlich, und es ist nicht bekannt, wann Apple den Stecker ziehen wird. Etwas Neues in Richtung eines CryptoTokenKit-Plugins wird in Zukunft wahrscheinlich notwendig sein, aber es gibt keine Details, Roadmap oder andere öffentlich verfügbare Dokumentation (das wird sich hoffentlich irgendwann ändern). In der Zwischenzeit ist PKCS#11 für die Entwicklung kryptoorientierter Anwendungen eine brauchbare (aber bei weitem nicht beste) Wahl, um standardisiert auf Smartcards zuzugreifen.
Grüße,
@martinpaljak