Teóricamente, en un sistema Windows, Servicio de propagación de certificados extrae automáticamente todos los certificados de cualquier tarjeta inteligente insertada, y los copia en la tienda "My" del usuario actual. Cada uno de estos certificados se registra con un enlace a la clave privada correspondiente, que se encuentra en la tarjeta inteligente. Cuando se va a utilizar la tarjeta inteligente, la aplicación realmente busca un certificado que coincida, lo que posiblemente le solicite al usuario la elección del certificado; una vez que se selecciona el certificado, la aplicación intenta alcanzar la clave privada, en cuyo punto (y solo en ese punto) se invoca el controlador de la tarjeta inteligente (internamente, la aplicación habla con el "Microsoft Base Smart Card CSP" que a su vez habla a la tarjeta específica "minidriver").
La idea principal es que las aplicaciones no ven "tarjetas inteligentes"; utilizan claves privadas que localizan por su certificado . Ya sea que una clave privada dada esté en una tarjeta inteligente o no, o si dos claves son de la misma tarjeta inteligente, se mantiene en el interior del sistema operativo. La aplicación puede manipular directamente con tarjetas inteligentes (usando winscard.dll
), pero la mayoría no lo hace (por ejemplo, Internet Explorer, cuando se trata de un servidor SSL que solicita certificados de clientes, solo mira los certificados y no le importa la tarjeta inteligente).
Las cosas varían en otros sistemas operativos o con algunas aplicaciones. Firefox, por ejemplo, utiliza solo PKCS # 11 , una API genérica para "dispositivos criptográficos", y hace caso omiso de la compatibilidad con el sistema operativo cuando se ejecuta en Windows. Entonces, lo que sucede depende completamente de cómo Firefox decida administrar las tarjetas inteligentes. Sin embargo, el principio principal todavía está activo: las opciones de los usuarios se centran en certificados .