Foro de elhacker.net

Seguridad Informática => Criptografía => Mensaje iniciado por: ace99 en 6 Mayo 2020, 02:20 am



Título: SSL/TLS y clave privada
Publicado por: ace99 en 6 Mayo 2020, 02:20 am
Es una pregunta rápida acerca de la que creo que conozco la respuesta, pero es para asegurarme.

En SSL/TLS si tengo la clave privada del cliente de una conexión no puedo descifrar el tráfico, pues la clave privada del cliente sólo se usa para firmar en caso de que sea necesario.

Esto es porque en SSL (a groso modo):

El cliente ofrece algoritmos al servidor => el servidor le responde con el que quiere.
El cliente envía un PMS (Pre-Master-Secret) cifrado con la PÚBLICA del servidor => el servidor recibe clave, y se genera a la vez que el cliente las claves definitivas.

A partir de este punto la sesión transcurre cifrada con estas claves que son simétricas (es más rápido).

Bueno, como aquí hay gente que de verdad sabe, espero que me ratifiquen o me corrijan.

Muchas gracias de antemano. Un saludo.


Título: Re: SSL/TLS y clave privada
Publicado por: kub0x en 6 Mayo 2020, 11:45 am
En SSL/TLS si tengo la clave privada del cliente de una conexión no puedo descifrar el tráfico, pues la clave privada del cliente sólo se usa para firmar en caso de que sea necesario.

Es opcional que el cliente disponga de su propio par pub/privkey asociado a un certificado en el handshake TLS. En cambio es obligatorio que el servidor tenga dicho certificado + par de claves. Hasta aquí bien, supongo.

 Si el servidor, en este caso, tú, tuvieras la clave privada del cliente, podrías impersonarlo. Es decir, serías capaz de suplantarlo dentro de la organización a la que el cliente pertenece. En este caso, si tu alojas el servidor y sabes su privada, podrías registrar en un log que negociaste una password simétrica derivada de una PMK (pre-master key) con firma digital X, pero realmente lo hiciste con otra PMK y otra signature Y. Es decir, podrías forgear o engañar a tus supervisores sobre las negociaciones con el cliente al que pertenece dicha clave etc. También, si esa clave privada se utiliza en otros medios, como para autenticar firmas sobre archivos o mensajes, no hace falta que diga lo que puede pasar jejeje game over.

El cliente ofrece algoritmos al servidor => el servidor le responde con el que quiere.
El cliente envía un PMS (Pre-Master-Secret) cifrado con la PÚBLICA del servidor => el servidor recibe clave, y se genera a la vez que el cliente las claves definitivas.

Bueno, depende de la cipher suite. Con RSA seguro que sí, cogiendo la pública del certificado y envíando la PMS bajo la exponencial modular. En los algoritmos que cumplen PFS (perfect forward secrecy), el servidor, envía una firma digital sobre los parámetros ephemeral en cada handshake, el cliente válida con la pubkey del certificado si esos datos fueron firmados por el server. Si fuera así, entonces genera un valor público y un privado, no cifra con la pública ni nada, sino que transforma el valor público de B en la PMS y B transforma el público de A en la PMS. A partir de aquí, A y B tienen la misma PMS y derivan la PMK. Entonces, se ve perfectamente como B no descifra para conseguir la PMS de A, sino que ambos llegan a la misma conclusion transformando valores públicos. Esta propiedad caracteriza la función del key exchange, por ejemeplo si es PMS_B=(g^x)^y y  PMS_A=(g^y)^x vemos como conmuta en el grupo de los enteros multiplicativos mod p (falta el operador mod primo, y eso, al conmutar, se consiguen los mismos valores en PMS_A y PMS_B.

Imagina que en vez de tener una clave RSA fija en el certificado, pudieras tener una distinta en cada handshake, eso es PFS, pero sin utilizar RSA claro, en vez, RSA se usa para firmas digitales y el resto viene a ser ECDHE. ES DECIR, en los algoritmos de intercambio de claves (key-exchange) no se cifra ni se descifra a no ser que el algoritmo criptográfico subyacente sea un criptosistema.


Título: Re: SSL/TLS y clave privada
Publicado por: ace99 en 6 Mayo 2020, 12:02 pm
La verdad es que habiendo estudiado la base de com funciona el sistema de clave simétrica y asimétrica y como funciona RSA pensé que sabía bastante, pero es que este mundo es inmenso.

Y luego la infinidad de posibilidades que hay.

Si el servidor, en este caso, tú, tuvieras la clave privada del cliente, podrías impersonarlo. Es decir, serías capaz de suplantarlo dentro de la organización a la que el cliente pertenece. En este caso, si tu alojas el servidor y sabes su privada, podrías registrar en un log que negociaste una password simétrica derivada de una PMK (pre-master key) con firma digital X, pero realmente lo hiciste con otra PMK y otra signature Y. Es decir, podrías forgear o engañar a tus supervisores sobre las negociaciones con el cliente al que pertenece dicha clave etc. También, si esa clave privada se utiliza en otros medios, como para autenticar firmas sobre archivos o mensajes, no hace falta que diga lo que puede pasar jejeje game over.

En el momento en el que tu clave privada, deja de ser privada estás perdido jajajaj.

Bueno muchas gracias por la respuesta y la info adicional. ;D