PKCS#11
Una API estándar, conocida como Cryptoki, que permite a un programa pedirle a un HSM o a una tarjeta inteligente que realice criptografía sin que la clave salga nunca del hardware.
PKCS#11 desciende de la serie Public-Key Cryptography Standards de RSA Security y desde entonces lo mantiene OASIS. La interfaz es una biblioteca en C en la que la aplicación pide a un módulo que firme, cifre o envuelva una clave. La clave en sí es un manejador que rara vez sale del módulo, y ese es precisamente el sentido de tener un módulo de seguridad hardware.
El estándar es viejo y tiene sus rarezas. Dos fabricantes pueden interpretar distinto la misma bandera, y cada HSM tiene sus desviaciones. Buena parte del trabajo real con PKCS#11 consiste en leer la documentación del fabricante para averiguar qué pasa de verdad al llamar a una función, lo que es una habilidad en sí misma.