¿Existen diferencias funcionales en las implementaciones de OpenSSL, GnuTLS, TLS de Java y TLS de .NET?

5

Pregunta

  • ¿Existen diferencias funcionales (o detectables) entre las distintas implementaciones de SSL / TLS? Cuáles son las diferencias entre ellos? (por ejemplo, cuáles implementan el "inicio falso")

  • ¿Sería una preocupación que alguien pudiera detectar el código SSL subyacente utilizado en función de la respuesta TLS?

Background

Lo pregunto porque es posible que cualquiera de las siguientes pilas SSL incorpore funciones cuestionables (como false start ), o puede tener errores específicos de la implementación,

  • OpenSSL está escrito en C, se usa en Apache
  • GnuTLS están escritos en C
  • Implementación de SSL de Sun (principalmente escrita en Java)
  • No estoy seguro de si Microsoft TLS usa Win32 bajo el capó o si usa código administrado.
pregunta random65537 30.11.2012 - 21:26
fuente

1 respuesta

6

Hay mucha variabilidad en SSL / TLS ; por ejemplo, cuando los datos deben enviarse, se dividen en uno o varios registros, y la implementación es libre de elegir el tamaño de cada registro según lo considere conveniente (dentro de las restricciones de tamaño estándar). Las implementaciones modernas, en particular, tienden a hacer algunos registros muy cortos (con 0 o 1 byte de datos de aplicación) como protección contra el ataque BEAST. Además, cada implementación admite solo un subconjunto de los cientos de posibles conjuntos de cifrado. La conclusión es que es posible distinguir las implementaciones entre sí (no conozco una herramienta fácilmente disponible que haga eso, pero no parece muy difícil de hacer).

La filtración de la implementación que se usa no es un gran problema por sí misma (aunque tiende a poner nerviosa a la gente). De todos modos, si el servidor SSL se usa dentro de un servidor web, la identificación del servidor web ya proporciona pistas definitivas sobre la implementación de SSL (si el servidor es IIS, el código SSL será el de Microsoft ...). Además, no hay tantas implementaciones de SSL / TLS por ahí; el atacante no necesita adivinar que se usa, solo tiene que probar todas las hazañas que conoce hasta que una funcione.

Si usa una implementación que tiene "características cuestionables", entonces el problema no es que el atacante pueda saber o adivinar que usa esta implementación; el problema es que usa una implementación con características cuestionables.

    
respondido por el Thomas Pornin 30.11.2012 - 21:54
fuente

Lea otras preguntas en las etiquetas