Derivación de clave dentro del contenedor seguro de HSM

3

Tengo que implementar una función de derivación de clave personalizada que básicamente funciona de la siguiente manera:

Tengo la clave de cifrado K en un contenedor seguro de HSM. K no se puede exportar y la única forma de usarlo es a través del comando HSM o la función PKCS # 11.

La clave derivada DK es la salida de los datos de cifrado con la clave K, por lo que DK = E (datos, K).

Mi problema es cuando implemento esta función a través de comandos o la función PKCS # 11, obtendré un texto en claro de DK fuera del contenedor seguro de HSM. Necesito asegurar la clave para que nunca salga del contenedor seguro.

¿Es posible implementar funciones personalizadas, como mi función de derivación, dentro del contenedor seguro de HSM para que la salida se pueda asegurar como una clave criptográfica? ¿Cómo hacerlo sin obtener la salida de texto claro de DK?

    
pregunta user1563721 21.07.2015 - 19:05
fuente

1 respuesta

4

Algunos HSM son lo suficientemente configurables para permitir agregar funcionalidad dentro del HSM. Sin embargo, esto no será factible a través de PKCS # 11 , que es una API destinada a la invocación de algoritmos criptográficos en datos proporcionados externamente. Lo que PKCS # 11 ofrece y es el más cercano a su problema es C_UnwrapKey() que puede tomar como entrada una clave cifrada (la clave se cifra con otra clave) y la descifra. Sin embargo, es probable que la función de derivación de clave personalizada que debe implementar no coincida con ninguno de los formatos de desenvolvimiento de clave que su HSM conoce (aunque solo sea porque deriva su clave con cifrado , no con descifrado).

En cuanto a las funcionalidades de HSM extendidas, esto sucede fuera del alcance de PKCS # 11, por lo que si su HSM lo admite, se realizará con métodos específicos para ese HSM. Tengo cierta experiencia con Thales HSM (anteriormente conocido como como "nCipher"): algunos de ellos permiten que se inserte un código personalizado en el HSM, siempre que haya activado (es decir, que haya pagado) la opción correspondiente, denominada CodeSafe . Cuando estaba haciendo eso (ahora hace algunos años), el desarrollo se hizo en C, con un subconjunto muy reducido de la biblioteca estándar; la CPU HSM no era rápida en absoluto (piense en megahercios, no en gigahercios); pero había una cantidad considerable de RAM (docenas de megabytes) y, lo que es más importante, los aceleradores criptográficos podrían utilizarse para operaciones de cifrado.

    
respondido por el Tom Leek 21.07.2015 - 19:30
fuente

Lea otras preguntas en las etiquetas