OpenSSL: habilita conjuntos de cifrado por versión de protocolo

2

¿Existe una manera de configurar explícitamente OpenSSL para permitir AES (o en general, cifrados en bloque) solo para clientes que usan una versión TLS > = 1.1?

Esto protegería contra el ataque de BESTIA, a la vez que permite el uso de cifrados más seguros que el antiguo RC4.

La solución sugerida para OpenSSL (imponga el orden de preferencia de cifrado del servidor; prefiera AES-GCM sobre RC4 sobre AES-CBC) excluye a todos los clientes que no admiten los conjuntos de cifrado GCM, aunque son perfectamente capaces de usar AES-CBC de forma segura debido a Las correcciones en TLS 1.1.

Parece que muchos sitios populares han optado por usar RC4 para todo, lo que no parece una buena idea (RC4 tiene muchas debilidades conocidas y muchas implementaciones de TLS tiene soluciones incluso para TLS < = 1.1 ). Me pregunto si un servidor "usa AES, pero solo si es seguro" -plag podría mejorar la situación.

    
pregunta lxgr 09.09.2013 - 18:24
fuente

1 respuesta

4

A partir de un aspecto superficial en el código fuente de OpenSSL, no, la biblioteca no está a la altura de lo que usted desea. La selección del conjunto de cifrado parece realizarse en ssl3_choose_cipher() (en ssl/s3_lib.c ) y esa función funciona con una lista de "conjuntos de cifrado admitidos". La lista es podada según la versión negociada (OpenSSL no seleccionará un conjunto de cifrado que no sea compatible con la versión que se usará), pero la lista no contiene las preferencias específicas de la versión.

Programáticamente, sería posible hacer un filtro de entrada en los datos entrantes, que reconoce un mensaje ClientHello , y ajusta dinámicamente la configuración de OpenSSL según la versión máxima anunciada en ese mensaje. Esto sería un truco bastante aterrador, que "simplemente funcionaría". Sin embargo, no tendrás eso solo con la configuración.

Al menos el protocolo admite lo que desea obtener. Esto no sería cierto en la dirección opuesta: dado que el cliente anuncia en un mensaje la versión máxima que acepta y la lista de suites de cifrado que admite, no hay forma de que el cliente diga "AES- CBC, pero solo para TLS 1.1+ ".

    
respondido por el Tom Leek 09.09.2013 - 19:45
fuente

Lea otras preguntas en las etiquetas