Compromiso de NSS / OpenSSL en una aplicación de Linux incorporada que usa un TPM a través de pkcs11?

0

Estoy en una compensación entre el uso de OpenSSL o NSS en una aplicación de Linux incorporada que hace uso de un TPM (HSM).

EDITAR: necesito un servidor SSH y Apache usando TLS, ambos usando las claves protegidas por el TPM.

Estoy buscando satisfacer las siguientes restricciones:

  1. Buena compatibilidad con PKCS # 11 (al menos gestión de claves de curva elíptica)
  2. No demasiadas dependencias
  3. Compilación cruzada amigable

Por lo que pude encontrar, NSS soporta de forma nativa PKCS # 11, y OpenSSL necesita un motor externo, libengine-pkcs11-openssl, que solo admite claves RSA. Así que una elección de OpenSSL me llevaría a agregar funcionalidades a este motor. ¿Hay otros motores PKCS11 disponibles para OpenSSL con mejor soporte que este?

En cuanto a las dependencias, NSS requiere el Tiempo de ejecución portátil de Netscape (NSPR). En total, NSS y sus dependencias tienen 2.5 veces más líneas de código que OpenSSL. Esto es un inconveniente y, posiblemente, un impedimento para las aplicaciones integradas, excepto que partes de la misma que no sirven para la aplicación se pueden eliminar fácilmente de la compilación a través de algunas definiciones. ¿Es posible?

Respecto a la compilación cruzada, la comparación de wikipedia dice que NSS es incómodo. ¿Alguien tiene un tutorial o un enlace, por favor?

Más en general, el consejo de las personas que han experimentado uno o ambos con un TPM es bienvenido.

    
pregunta lalebarde 10.10.2014 - 11:14
fuente

1 respuesta

2

Dependiendo de lo que estés tratando de hacer, podrías no usar NSS ni OpenSSL. PKCS # 11 es una API que proporciona funciones para ejecutar primitivas criptográficas sobre claves; es concebible utilizar esa API directamente en lugar de hacerlo a través de una biblioteca adicional.

Necesitaría NSS o OpenSSL si necesita alguna funcionalidad que no sea PKCS # 11, por ejemplo. Soporte de certificados X.509 o SSL. Pero si su aplicación solo requiere, por ejemplo, firmas sin formato, entonces usar PKCS # 11 directamente puede ser una cosa razonable.

En cuanto a las líneas de código, no importan tanto como el tamaño binario para los sistemas integrados. La proporción de líneas de código a tamaño binario no es fija; depende del idioma, el estilo de codificación, la cantidad de comentarios, el código generado automáticamente en la compilación ... De hecho, la forma más rápida de obtener la información que busca es probablemente probar ambas bibliotecas (y posiblemente la opción sin biblioteca) y ver para usted, qué tan bien se ajustan a su entorno, el proceso de compilación y las restricciones de tamaño.

    
respondido por el Tom Leek 10.10.2014 - 13:23
fuente

Lea otras preguntas en las etiquetas