Estoy implementando un sistema similar a TLS, que utiliza ECDHE-RSA-AE-GCM-SHA
, y me he enfrentado a dos interrogatorios.
Al final del protocolo de enlace (y antes del mensaje ChangeCipherSpec
), tanto el cliente como el servidor deben crear el mismo Pre-Master Secret
.
¿En qué datos se basa este secreto? Ya no he encontrado la respuesta en los RFS ( 4492 y 5246 ), diría esto:
- la clave pública del servidor ECDHE (enviar dentro de
ServerKeyExchange
message) - la clave ECDHE pública del cliente (enviada, cifrada, con el mensaje
ClientKeyExchange
)
Son, para mí, los componentes lógicos, ya que Mallory no pudo recuperar la clave ECDHE pública del cliente, porque estaba cifrada con el servidor PublicKey. En caso afirmativo, la firma del mensaje ServerkeyExchange
sería incorrecta y el Cliente sabría ese intento.
Soy consciente de que esto no es una justificación adecuada y, cuando se habla de criptografía, este tipo de razonamiento es malo (cuando no está mal), pero como no he encontrado la respuesta en La RFC, todo lo que queda está aquí ...
Y además, ¿qué algoritmo usamos para construir el secreto Pre-Master? ¿Es una función hash clásica (SHA, ...)?
Sé que se usa SHA
para expandir el MasterSecret
(de los números aleatorios y el Pre-Patser Secret
), pero para su hermano pequeño, estoy en la niebla ...