TLS sin clave privada

4

Alguien en mi equipo dijo que hay una forma de TLS que puede utilizarse que elimina la necesidad de una clave privada. Están "por encima" de mí, y no quería discutir sin saber con certeza que ese no es el caso. He hecho mi tarea y la clave privada es fundamental para la verificación de la identidad del cliente / servidor. Esto es lo que pensé. Sí, hay formas de programar la recreación de estas claves en cada sesión, pero eso es extremo.

¿Hay alguna forma de tener un TLS sin clave privada que no sea solo un "cifrado simétrico" pirateado?

    
pregunta bashCypher 06.02.2018 - 03:37
fuente

2 respuestas

4

TL; DR: TLS puede, en teoría, utilizarse sin claves privadas.

Una parte integral de TLS es que el cliente autentica correctamente el servidor para detectar posibles personas en los ataques medios. Esto se hace comúnmente con certificados, y esto requiere que la clave privada del certificado en el sitio del servidor demuestre al cliente que el servidor es el propietario del certificado 1 .

Pero, TLS es flexible y también proporciona otras formas de autenticar el servidor. Hay cifrados PSK que permiten la autenticación mediante el uso de una clave precompartida entre el cliente y el servidor. Hay cifrados de SRP que permiten la autenticación por contraseña. Incluso hay anon ciphers que le permite abandonar cualquier tipo de autenticación en TLS, es decir, requiere que realice su propia autenticación.

Por lo tanto, TLS podría usarse sin certificados. Y como los certificados son la única parte de TLS que requiere una clave privada, esto significa que TLS se puede usar sin claves privadas. Pero, incluso si no se utiliza una clave privada, podría requerirse una cosa secreta similar en el servidor: tanto la autenticación basada en SRP como la PSK requieren un secreto en el lado del servidor que, como mucho, debería conocer el servidor y el cliente.

Además de esto, la autenticación sin certificado (y, por lo tanto, sin clave privada) requiere que ambos lados de la conexión admitan los cifrados relevantes con los métodos de autenticación alternativos. Dado que actualmente los navegadores solo admiten la autenticación basada en certificados, se necesita una clave privada en el lado del servidor siempre que se requiera el acceso mediante un navegador, es decir, prácticamente en todo caso en el caso de servidores web.

Por ejemplo, puede usar openssl para proporcionar una conexión protegida TLS que no requiere certificados. El servidor buscaría un ejemplo como este:

$ openssl s_server -www -nocert -psk 1a2b3c4d

El cliente necesitaría usar la misma clave al conectarse al servidor, es decir, la idea básica detrás de PSK es que el cliente y el servidor comparten una clave secreta:

$ openssl s_client -connect 127.0.0.1:4433 -psk 1a2b3c4d
...
Cipher    : PSK-AES256-CBC-SHA
...
Verify return code: 0 (ok)

Si intentas conectarte con un navegador a este servidor (es decir, https://127.0.0.1:4433 ) solo obtendrás un error ya que el navegador no admite los cifrados PSK: ERR_SSL_VERSION_OR_CIPHER_MISMATCH .

1 Las claves privadas no solo pueden ser necesarias para la autenticación sino también para el intercambio de claves, es decir, el intercambio de claves RSA. Sin embargo, el intercambio de claves RSA requiere certificados, por lo que nuevamente significa que las claves privadas solo son relevantes si se usan certificados. Además, el intercambio de claves Diffie-Hellman no necesita certificados y este es el método recomendado hoy en día, ya que proporciona secreto hacia adelante.

    
respondido por el Steffen Ullrich 06.02.2018 - 07:31
fuente
1

Necesita la clave privada, pero eso no significa que necesite acceso directo a la clave privada. Puede usar un TPM o un HSM donde la clave nace y nunca abandona el hardware físico. Cualquier operación que necesite la clave privada ocurre dentro de esos dispositivos en un espacio de memoria aislado y protegido.

Aquí se explica cómo utilizar un TPM en Windows con una tarjeta inteligente virtual y un software que utiliza las API que interactúan con el TPM:

enlace

    
respondido por el vrtjason 06.02.2018 - 05:10
fuente

Lea otras preguntas en las etiquetas