¿Por qué no funciona mi ejemplo de intercambio de clave RSA manual?

0

Estoy tratando de calcular "manualmente" cómo se calcula premaster_secret mediante el intercambio de claves RSA en TLS 1.2, pero no puedo hacer que los números se encuentren. Estoy usando Scapy SSL para generar una sesión TLS:

  • Recupero los parámetros e y n de la clave de pub (mensaje de certificado) del primer certificado
  • Recupero el premaster_secret de Scapy
  • Computo ( premaster_secret e mod n )
  • Comparo este resultado con el Premaster cifrado enviado en el mensaje de intercambio de clave de cliente, pero nunca es el mismo

¿Me estoy perdiendo algo?

    
pregunta user7094 10.05.2016 - 05:46
fuente

1 respuesta

1

Gracias a las respuestas pude hacerlo funcionar. Aquí hay un pseudocódigo de Python que explica el algoritmo realmente utilizado por TLS 1.2:

# Come up with a random premaster_secret
# It needs to start with the TLS version (0x0303)
premaster_secret = '\x03\x03' + os.urandom(46)

# Retrieve the RSA parameters from the certificate public key
RSA_n = ...
RSA_e = ...

# Encodes premaster_secret using PKCS#1 v1.5
premaster_secret = '\x00\x02' + '\x12' * (256 - 3 - len(premaster_secret)) + '\x00' + premaster_secret

# Converts the result into a number and encrypts it
premaster_secret_nb = int(binascii.hexlify(premaster_secret), 16)
encrypted_premaster_secret = pow(premaster_secret_nb, RSA_e, RSA_n)
    
respondido por el user7094 12.05.2016 - 05:11
fuente

Lea otras preguntas en las etiquetas