OpenSC.tokend
El controlador de tarjetas inteligentes de código abierto para OS X
Un tokend hace que las claves y certificados de tu tarjeta inteligente aparezcan en Keychain Access.app y estén disponibles para aplicaciones como Safari o Chrome. OpenSC.tokend es la implementación de tokend de código abierto de OpenSC, con soporte para muchas tarjetas inteligentes PKI reales que se encuentran en la naturaleza.
Historia del soporte de tokend en OS X
- En 2005, con la versión 10.4 "Tiger" de OS X, Apple introdujo el middleware tokend para hacer que las tarjetas inteligentes de terceros estuvieran disponibles para otras aplicaciones nativas de OS X [1]. Las instrucciones de compilación para un tokend no estaban disponibles públicamente.
- OS X 10.5 "Leopard" puede considerarse una versión de estabilización, donde las primeras versiones tenían varios errores que hacían que el uso de tarjetas inteligentes (incluido un tokend) fuera un verdadero dolor [2]. Con 10.5.6, Apple cambió de un controlador de lector de tarjetas inteligentes de fabricación propia al controlador CCID de código abierto más completo y estándar de facto, mantenido por Ludovic Rousseau [3], lo que mitigó al menos algunos de los errores subyacentes.
- OS X 10.6 "Snow Leopard" fue la última versión en poner a disposición los componentes fuente necesarios para compilar un tokend (incluidos en la carpeta build por conveniencia).
- En OS X 10.7 "Lion", Apple dejó de distribuir tokend-s con el sistema operativo [3] y también obsoletizó CDSA (sobre lo que se construye un tokend) así como OpenSSL [4] (lo que OpenSC usa para operaciones criptográficas por software).
- En OS X 10.8 "Mountain Lion" y OS X 10.9 "Mavericks", Apple hizo cambios menores en los subsistemas subyacentes PC/SC y CCID, pero los componentes obsoletos de tokend aún funcionaban [5], [6].
- En OS X 10.10 "Yosemite", el código base de tokend (¡en su mayoría de 2005..2008!) requerido para compilar OpenSC.tokend aún funciona, a pesar de que los componentes dependientes no se han actualizado durante años e incluso el compilador de C++ del sistema ha cambiado. La experiencia general en 10.10 es algo inestable debido a la reescritura de la infraestructura subyacente de tarjetas inteligentes, relacionada con el cambio de pcscd por un demonio CryptoTokenKit [7]. No hay información pública disponible sobre cómo crear un controlador de tarjetas inteligentes compatible con CryptoTokenKit (¿podría ser debido al código compartido y al bloqueo de proveedor de un año de ApplePay en iOS [8]?).
- En OS X 10.15 "Catalina", los tokend-s están deshabilitados y deben habilitarse explícitamente:
sudo defaults write /Library/Preferences/com.apple.security.smartcard Legacy -bool true
Instalación
OpenSC.tokend se distribuye con el instalador de OpenSC para OS X y no está disponible por separado.
Compilación
Compilar OpenSC.tokend requiere que el código fuente de OpenSC esté presente. Los scripts de compilación de OpenSC para OS X también compilan el tokend. Las instrucciones mínimas están disponibles en el código fuente del script de compilación.
Licencia
El código de OpenSC está licenciado bajo LGPL 2.1+, los componentes de Apple están bajo APSL 2.0.
Futuro
Todo el sistema tokend es un vestigio del pasado y está destinado a la extinción en un futuro cercano, sin embargo, aún es útil con las últimas versiones de OS X y no se sabe cuándo Apple lo desconectará. Algo nuevo en la línea de un plugin CryptoTokenKit probablemente será necesario en el futuro, pero no hay detalles, hoja de ruta u otra documentación disponible públicamente (con suerte esto cambiará en algún momento). Mientras tanto, para desarrollar aplicaciones orientadas a la criptografía, PKCS#11 es una opción utilizable (pero lejos de ser la mejor) para acceder a tarjetas inteligentes de manera estándar.
Saludos,
@martinpaljak