OpenSC.tokend
Le pilote de cartes à puce open source pour OS X
Un tokend fait apparaître les clés et certificats de votre carte à puce dans Keychain Access.app et les rend disponibles aux applications telles que Safari ou Chrome. OpenSC.tokend est l'implémentation open source de tokend d'OpenSC, avec la prise en charge de nombreuses cartes à puce PKI réelles présentes sur le marché.
Historique de la prise en charge de tokend sous OS X
- En 2005, avec OS X version 10.4 « Tiger », Apple a introduit le middleware tokend pour rendre les cartes à puce tierces disponibles aux autres applications natives d'OS X [1]. Les instructions de compilation d'un tokend n'étaient pas disponibles publiquement.
- OS X 10.5 « Leopard » peut être considérée comme une version de stabilisation, où les premières versions avaient plusieurs bogues qui rendaient l'utilisation des cartes à puce (y compris d'un tokend) vraiment pénible [2]. Avec 10.5.6, Apple est passé d'un pilote de lecteur de carte à puce maison au pilote CCID open source standard de facto, plus complet en fonctionnalités, maintenu par Ludovic Rousseau [3], ce qui a atténué au moins une partie des bogues sous-jacents.
- OS X 10.6 « Snow Leopard » a été la dernière version à rendre disponibles les composants sources nécessaires à la compilation d'un tokend (regroupés dans le dossier build pour plus de commodité).
- Sous OS X 10.7 « Lion », Apple a cessé de distribuer les tokend avec le système d'exploitation [3] et a également déprécié CDSA (sur quoi tokend est construit) ainsi qu'OpenSSL [4] (ce qu'OpenSC utilise pour les opérations cryptographiques logicielles).
- Sous OS X 10.8 « Mountain Lion » et OS X 10.9 « Mavericks », Apple a apporté des modifications mineures aux sous-systèmes PC/SC et CCID sous-jacents, mais les composants tokend obsolètes fonctionnaient toujours [5], [6].
- Sous OS X 10.10 « Yosemite », la base de code de tokend (datant principalement de 2005..2008!) nécessaire à la compilation d'OpenSC.tokend fonctionne toujours, malgré le fait que les composants dépendants n'ont pas été mis à jour depuis des années et que même le compilateur C++ du système a changé. L'expérience globale sur 10.10 est quelque peu instable en raison de la réécriture de l'infrastructure sous-jacente des cartes à puce, liée au remplacement de pcscd par un démon CryptoTokenKit [7]. Il n'existe aucune information publique disponible sur la façon de créer un pilote de carte à puce compatible CryptoTokenKit (serait-ce à cause du code partagé et du verrouillage d'un an par le fournisseur d'ApplePay sur iOS [8]?).
- Sous OS X 10.15 « Catalina », les tokend sont désactivés et doivent être activés explicitement :
sudo defaults write /Library/Preferences/com.apple.security.smartcard Legacy -bool true
Installation
OpenSC.tokend est distribué avec l'installateur OpenSC pour OS X et n'est pas disponible séparément.
Compilation
Compiler OpenSC.tokend nécessite que le code source d'OpenSC soit présent. Les scripts de compilation d'OpenSC pour OS X compilent également le tokend. Des instructions minimales sont disponibles dans le code source du script de compilation.
Licence
Le code d'OpenSC est sous licence LGPL 2.1+, les composants d'Apple sont sous APSL 2.0.
Avenir
Tout le système tokend est un vestige du passé et destiné à disparaître dans un avenir proche, pourtant il reste encore utile avec les dernières versions d'OS X et on ne sait pas quand Apple coupera le cordon. Une nouvelle solution du type plugin CryptoTokenKit sera probablement nécessaire à l'avenir, mais aucun détail, feuille de route ou autre documentation n'est disponible publiquement (espérons que cela changera à un moment donné). En attendant, pour développer des applications orientées cryptographie, PKCS#11 est un choix utilisable (mais loin d'être le meilleur) pour accéder aux cartes à puce de manière standard.
Cordialement,
@martinpaljak