Perché il mio esempio di scambio di chiavi RSA manuale non funziona?

0

Sto provando a calcolare "manualmente" come il premaster_secret è calcolato usando lo scambio di chiavi RSA in TLS 1.2, ma non riesco a far quadrare i numeri. Sto utilizzando Scapy SSL per generare una sessione TLS:

  • recupero i parametri e e n dal pubKey del primo certificato (messaggio Certificato)
  • recupero premaster_secret da Scapy
  • I calcoli ( premaster_secret e mod n )
  • Confronto questo risultato con il Premaster crittografato inviato nel messaggio Scambio chiavi del client, ma non è mai lo stesso

Mi manca qualcosa?

    
posta user7094 10.05.2016 - 05:46
fonte

1 risposta

1

Grazie alle risposte sono riuscito a farlo funzionare. Ecco alcuni pseudo-codice Python che spiegano l'algoritmo effettivamente utilizzato da 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)
    
risposta data 12.05.2016 - 05:11
fonte

Leggi altre domande sui tag