Ho letto diverse RFC e non sono riuscito a trovare una risposta definitiva alla mia domanda: può un'estensione TLS negoziata saltare alcuni dei messaggi TLS Handshake ed essere comunque conforme alle specifiche TLS? Il mio obiettivo è sviluppare una nuova versione di TLS, mentre preferibilmente, rimanere compatibile con le versioni precedenti.
Qui, parlerò specificamente di TLS 1.2
, definito in RFC 5246 . Di seguito è riportato un flusso di messaggi per l'intera handshake (presa direttamente da RFC 5246):
Client Server
------ ------
ClientHello -------->
ServerHello
Certificate*
ServerKeyExchange*
CertificateRequest*
<-------- ServerHelloDone
Certificate*
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished -------->
[ChangeCipherSpec]
<-------- Finished
Application Data <-------> Application Data
* Indicates optional or situation-dependent messages that are not always sent.
Ora, so che è perfettamente legale per un'estensione TLS modificare la struttura di alcuni messaggi o aggiungere un nuovo messaggio , ma non sono sicuro se uno dei messaggi, non definito come facoltativo / dipendente dalla situazione può essere omesso.
Lascia che ti faccia un esempio concreto. Diciamo che creo una nuova estensione chiamata XYZ
. Il client e il server negoziano quell'estensione nei loro messaggi ciao estesi. Sarebbe legale per l'estensione XYZ
mandare il server a non inviare il messaggio ServerHelloDone
? Per quanto ho capito, questo è non legale .
RFC 5245 Sezione 4.4.1.4 afferma che:
it would be technically possible to use extensions to change major aspects of the design of TLS; for example the design of cipher suite negotiation. This is not recommended; it would be more appropriate to define a new version of TLS -- particularly since the TLS handshake algorithms have specific protection against version rollback attacks based on the version number, and the possibility of version rollback should be a significant consideration in any major design change
Suppongo, tuttavia, che quegli aspetti principali non includano l'omissione di messaggi non contrassegnati come facoltativi / dipendenti dalla situazione nelle specifiche.