Sto implementando un sistema TLS
-like, e mi piacerebbe impostare un Finished
messaggio, per impedire attacchi di riproduzione.
Per quanto comprendo TLS
, contiene un hash sui precedenti messaggi di handshake, crittografato e firmato con l'algoritmo scelto.
Il server prima costruisce il suo frame Finished
, con un hash di tutti i messaggi precedenti. Quindi viene inviato al client.
Il client deve prendere il messaggio Finished
del server come "messaggio precedente "? (per calcolare un hash)
Perché altrimenti, il contenuto dell'hash è lo stesso del server, ma in un ordine diverso (che produrrà un hash completamente diverso).
Dicono questo nel capitolo sul messaggio Finito :
All of the data from all messages in this handshake (not including any HelloRequest messages) up to, but not including, this message.
Secondo me, il cliente deve effettivamente prendere il messaggio Finished
ricevuto (dal server) insieme ad altri messaggi di handshake.