¿Por qué no podemos crear una nueva implementación SSL?

0

Las implementaciones de SSL se han discutido mucho últimamente, debido al potencial de Chrome para apagar NSS ( enlace ) y OpenSSL con Heartbleed.

¿Cuáles son los principales factores que impiden que alguien con muchos recursos (por ejemplo, Google) implemente una nueva biblioteca SSL que sea más fácil de auditar / mantener para garantizar la seguridad en el futuro?

Entiendo que una implementación SSL puede ser un gran proyecto en sí mismo, pero otras personas han implementado implementaciones de sala limpia antes (por ejemplo, BouncyCastle en Java). Así que seguramente alguien con suficientes recursos tendría la capacidad de escribir desde cero, y sería más barato que intentar auditar y mantener algo como OpenSSL.

    
pregunta Anthony Kraft 11.04.2014 - 00:55
fuente

1 respuesta

4

Escribir una implementación SSL que funcione no es difícil cuando lo haces a menudo; Ya lo he hecho cuatro veces (para varios clientes, nada se abre, por desgracia). Tarda unos 3 días, quizás 4 o 5 si quieres hacerlo correctamente (al menos eso es lo que me lleva) (*).

Producir una nueva biblioteca SSL no sería un problema, y tampoco sería una solución. Ya hay varios más allá de OpenSSL, por ejemplo, GnuTLS , PolarSSL , CyaSSL ... Consulte la página de Wikipedia para una lista. La mayoría son de código abierto.

Lo que es difícil es mantenimiento . Es un trabajo agotador mantener la biblioteca actualizada con nuevas versiones de protocolo, nuevas funciones, problemas de interoperabilidad (las soluciones necesarias para comunicarse con otras bibliotecas existentes que no se ajustan necesariamente al estándar) ... El código fuente de OpenSSL es muy difícil para leer, pero eso se debe a que ha crecido a partir de un núcleo históricamente simple pero antiguo, y ha desarrollado extensiones, nuevas API y características alarmantes, incluida una parte justa de "correcciones" para evitar errores de compilación.

(*) Excluyendo la validación X.509 con todas las funciones. La creación de rutas, el procesamiento de todas las extensiones y el manejo de la revocación, es toda una tarea. Un mecanismo de validación primitivo para casos específicos es bastante fácil, pero el soporte X.509 es bastante difícil. No me gustaría implementar tal cosa en C.

    
respondido por el Thomas Pornin 11.04.2014 - 04:02
fuente

Lea otras preguntas en las etiquetas