openSSL selecciona ECDH-RSA en lugar de ECDH-ECDSA

1

Estoy tratando de hacer una conexión segura con openSSL entre un cliente y un servidor que escribí.

Cuando trato de seleccionar la suite de cifrado a usar, hago SSL_CTX_set_cipher_list (ctx, ECDH-ECDSA-AES18-GCM-SHA256) y esto tanto en el cliente como en el servidor.

Pero cuando verifico con get_cipher_list, el cifrado en el nivel de prioridad 0 es ECDH-RSA-AES128-GCM-SHA256 (observe el uso de RSA en lugar de ECDSA), con ECDH-ECDSA-AES18-GCM-SHA256 que solo aparece en nivel 1.

Tanto el cliente como el servidor tienen claves ECDSA en certificados firmados por una CA ECDSA.

Ahora tengo varias preguntas:

  • ¿de dónde viene la suite con RSA? ninguno de los servidores o clientes lo seleccionó como posible cifrado.

  • ¿Es posible tener la ECDSA con prioridad 0?

  • más problemático: cuando llamo a SSL_get_cipher (ssl), indica que el cifrado real utilizado es el que tiene RSA. Sin embargo, pude comunicarme entre el cliente y el servidor. ¿Cómo es posible si no tienen un certificado RSA?
  • Entonces, ¿cómo puedo estar seguro de que el tráfico está efectivamente cifrado?
pregunta Jacques 05.02.2015 - 16:57
fuente

1 respuesta

1

(Supongo que ambos AES18 son errores tipográficos para AES128)

Algunas versiones anteriores de OpenSSL 1.0.1 tenían un error que hacía que algunas de las nuevas entradas en la tabla de cifrado, incluida esta, se seleccionaran de forma incorrecta. El uso del parche e (febrero de 2013) o posterior debería solucionarlo. (O 1.0.2, recién lanzado hace unas semanas). Si está interesado, puede ver el problema al diferenciar ssl / s3_lib.c entre versiones.

Si tiene una conexión con el servidor utilizando un paquete RSA, el servidor tiene un certificado RSA. Recuerde que es completamente posible que un servidor tenga claves y certificados para más de un algoritmo y elija el adecuado para el conjunto de cifrado negociado con un cliente; El servidor de biblioteca OpenSSL en particular puede tener RSA, DSA, DH y EC (que puede ser ECDSA o ECDH). (Además de GOST, un algoritmo ruso opcional que rara vez se utiliza en otros lugares).

Aparte: ¿realmente quieres ECDH no ECDHE? Sólo este último proporciona secreto hacia adelante.

    
respondido por el dave_thompson_085 06.02.2015 - 11:59
fuente

Lea otras preguntas en las etiquetas