pkcs encryption web-services cryptography pkcs#11 hsm

encryption - pkcs 3



HSM-cryptoki-Sesiones-Tiempo de espera (2)

Desde la perspectiva teórica, debe leer la especificación PKCS # 11 , está todo escrito allí, desde la sección 6.6 en adelante

Desde el práctico perspecgive, una aplicación se convierte en una aplicación cryptoki después de llamar a C_Initialize. El concepto de una sesión y su identificador pueden ser retransmitidos por una pequeña biblioteca contenedora a un proceso de ejecución larga PKCS # 11, que realmente habla con el HSM, pero puede que no. Si el proceso que era una aplicación cryptoki muere, también lo harán todos los recursos virtuales (lo que es una sesión).

¿Dónde exactamente está el problema ? Abrir una sesión puede ser una operación bastante barata la mayor parte del tiempo, a menos que esté seguro (haya medido) que es el cuello de botella, no optimice y abra y cierre una sesión para una solicitud, si no puede controlar la vida útil del proceso cryptoki.

Mi aplicación accede al HSM a través de un servicio web ASP.NET a través de PKCS # 11. Inicializo la biblioteca de cryptoki y obtengo un identificador de sesión. El servicio web se aferra a este controlador para realizar el cifrado / descifrado / firma / verificación en un modo por lotes.

El problema que estoy enfrentando es el tiempo de espera del servicio web ASP.NET después de 20 minutos. Esta acción, creo, descarga la biblioteca cryptoki y el identificador de sesión mantenido por el servicio web deja de ser válido. Sí, estoy de acuerdo en que el servicio web ASP.NET se puede reconfigurar, no en tiempo de espera, lo que mantendrá la biblioteca cryptoki siempre cargada.

Mi pregunta es: ¿Qué sucede con el identificador de sesión que obtuve en primer lugar del HSM ?. ¿Se perderá o estará allí sin usar? c_closeSession esto porque no cierro la sesión abierta correctamente llamando a c_closeSession .

El servicio web se implementa a través de un grupo de subprocesos

Gracias


Se supone que C_Finalize() llamar a C_Finalize() cuando termines de usar la biblioteca cryptoki. Una implementación bien escrita puede ser sólida en contra de que no lo haga, pero no hay garantías. Sus sesiones abiertas pueden mantenerse activas en el HSM y quizás en el controlador.

Considere la posibilidad de llamar a C_Finalize() desde su Application_End() .