OpenSC.tokend
Il driver smart card open source per OS X
Un tokend rende le chiavi e i certificati sulla tua smart card visibili in Keychain Access.app e disponibili ad applicazioni come Safari o Chrome. OpenSC.tokend è l'implementazione tokend open source di OpenSC, con supporto per molte diverse smart card PKI reali presenti in circolazione.
Storia del supporto tokend in OS X
- Nel 2005, con OS X versione 10.4 "Tiger", Apple introdusse il middleware tokend per rendere le smart card di terze parti disponibili ad altre applicazioni native di OS X [1]. Le istruzioni di compilazione per un tokend non erano disponibili pubblicamente.
- OS X 10.5 "Leopard" può essere considerata una release di stabilizzazione, dove le prime versioni presentavano diversi bug che rendevano l'uso delle smart card (incluso un tokend) un vero problema [2]. Con la 10.5.6, Apple passò da un driver di lettore smart card autocostruito al driver open source CCID, de facto standard, più completo e mantenuto da Ludovic Rousseau [3], che mitigò almeno alcuni dei bug sottostanti.
- OS X 10.6 "Snow Leopard" fu l'ultima versione a rendere disponibili i componenti sorgente necessari per compilare un tokend (inclusi nella cartella build per comodità).
- In OS X 10.7 "Lion" Apple smise di distribuire i tokend con il sistema operativo [3] e deprecò anche CDSA (su cui si basa tokend) e OpenSSL [4] (che OpenSC usa per le operazioni crittografiche software).
- In OS X 10.8 "Mountain Lion" e OS X 10.9 "Mavericks" Apple apportò modifiche minori ai sottosistemi PC/SC e CCID sottostanti, ma i componenti tokend deprecati funzionavano ancora [5], [6].
- In OS X 10.10 "Yosemite" il codebase tokend (per lo più del 2005..2008!) necessario per compilare OpenSC.tokend funziona ancora, nonostante i componenti dipendenti non siano stati aggiornati per anni e sia cambiato persino il compilatore C++ di sistema. L'esperienza complessiva su 10.10 è alquanto instabile a causa della riscrittura dell'infrastruttura smart card sottostante, legata alla sostituzione di pcscd con un demone CryptoTokenKit [7]. Non ci sono informazioni pubbliche disponibili su come creare un driver smart card compatibile con CryptoTokenKit (potrebbe essere a causa del codice condiviso e del lock di un anno sui vendor di ApplePay su iOS [8]?).
- In OS X 10.15 "Catalina" i tokend sono disabilitati e devono essere abilitati esplicitamente:
sudo defaults write /Library/Preferences/com.apple.security.smartcard Legacy -bool true
Installazione
OpenSC.tokend è distribuito con l'installer OpenSC per OS X e non è disponibile separatamente.
Compilazione
Per compilare OpenSC.tokend è necessario che il codice sorgente di OpenSC sia presente. Gli script di build di OpenSC per OS X compilano anche il tokend. Istruzioni minime sono disponibili nel codice sorgente dello script di build.
Licenza
Il codice di OpenSC è concesso in licenza sotto LGPL 2.1+, i componenti di Apple sono sotto APSL 2.0.
Futuro
L'intero sistema tokend è un relitto del passato e destinato all'estinzione nel prossimo futuro, ma è ancora utile con le ultime versioni di OS X e non si sa quando Apple staccherà la spina. Qualcosa di nuovo sulla falsariga di un plugin CryptoTokenKit sarà probabilmente necessario in futuro, ma non ci sono dettagli, roadmap o altra documentazione disponibile pubblicamente (si spera che questo cambi a un certo punto). Nel frattempo, per sviluppare applicazioni orientate alla crittografia, PKCS#11 è una scelta utilizzabile (ma lungi dall'essere la migliore) per accedere alle smart card in modo standard.
Cordiali saluti,
@martinpaljak