¿Cómo implementar la comunicación ECDHE-RSA-AES256-GCM-SHA-2 en OpenSSL?

2

Pregunta completa

¿Cómo implementa un par de soluciones basadas en cliente y servidor para asegurar la comunicación de red para programas de escritorio (sin navegador) simples basados en C ++ que utilizan el paquete de cifrado ECDHE-RSA-AES256-GCM-SHA-2 con OpenSSL?

Pre-text

Soy un principiante en el uso de cualquier criptografía que no sea la introducción de elementos en hashes y bcrypt. Necesito asegurar los datos de red que fluyen de los clientes a un servidor, por lo que se requiere una solución cliente-servidor de propósito general. La suite de cifrado mencionada parece ser lo más importante en la actualidad, ya que brinda muchas mitigaciones y beneficios.

Resources

  1. enlace
  2. enlace

Problema

Aprecio el trabajo realizado por los desarrolladores de OpenSSL para mantener la documentación. Pero no puedo encontrar nada que no requiera que sea un profesional de seguridad para implementar dicho conjunto de cifrado en una arquitectura cliente-servidor. Parece que no hay ejemplos en Internet o en los recursos mencionados.

¿Realmente necesito pasar meses o años para resolver todo esto?

Hasta ahora supongo que debo averiguar AES en el modo GCM por separado luego generación de clave ECDHE luego RSA clave generación y luego de alguna manera, cóselo todo yo mismo ?

    
pregunta Infogeek 15.10.2016 - 02:23
fuente

1 respuesta

1

¿Desea vincular libssl desde openssl a su servidor y los ejecutables de su cliente para tener un servidor TLS y un cliente TLS con versión TLS codificada (1.2) y conjunto de cifrado codificado (TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) y supongo un certificado pinned codificado?

Le sugiero que use algo como libcurl en su cliente, que es más alto que libssl. Utiliza libssl pero hace la mayor parte del trabajo por ti.

Le sugiero que mire el código de nginx para ver cómo hacer un servidor TLS usando openssl. Tiene algún código que no necesita porque maneja más funciones de las que necesita, pero es un comienzo. También deberías decidir utilizar solo openssl 1.0.2, que elimina un montón de código para admitir versiones anteriores.

Si produce código de objeto libssl y libcrypto para vincularlo a sus ejecutables, puede y debe evitar agrupar una gran cantidad del código que se compila de forma predeterminada pero que su aplicación no utiliza. Así que no compile md5 y sha1 (solo usará certificados sha256). No compile ningún cifrado que no sea AES. No compile ninguna curva elíptica que no sea P-256 (o 25519).

Alternativamente, puedes agrupar bibliotecas compartidas producidas con banderas de compilación predeterminadas, pero eso significa mucho más código que podría ejecutarse.

    
respondido por el Z.T. 15.10.2016 - 02:55
fuente

Lea otras preguntas en las etiquetas