Sto implementando un sistema simile a TLS, che utilizza ECDHE-RSA-AE-GCM-SHA
, e ho affrontato due interrogazioni.
Alla fine dell'handshake (e prima del messaggio ChangeCipherSpec
), sia il client che il server devono creare lo stesso Pre-Master Secret
.
Su quali dati si basa questo segreto? Dal momento che non ho trovato la risposta nel RFS ( 4492 e 5246 ), direi questo:
- la chiave ECDHE pubblica del server (invia all'interno del messaggio
ServerKeyExchange
) - la chiave ECDHE pubblica client (inviata, cifrata, con il messaggio
ClientKeyExchange
)
Sono, per me, i componenti logici, poiché Mallory non è stato in grado di recuperare la chiave ECDHE pubblica del client, perché crittografata con il server PublicKey. In caso affermativo, la firma del messaggio ServerkeyExchange
sarebbe errata e il Cliente lo saprebbe.
Sono consapevole che questa non è affatto una giustificazione adeguata e, quando si parla di crittografia, questi tipi di ragionamento sono cattivi (quando non sono sbagliati), ma poiché non ho trovato la risposta in RFC, tutto ciò che rimane è qui ...
Inoltre, quale algoritmo utilizziamo per costruire effettivamente il segreto pre-master? E 'una classica funzione di hash (SHA, ...)?
So che SHA
è usato per espandere MasterSecret
(dai numeri casuali e Pre-Patser Secret
), ma per il suo fratellino sono nella nebbia ...