De fapt, aceasta este o întrebare interesantă și nu vă pot spune 100% cu siguranță, dar părerile mele despre aceasta sunt: Odată ce Serverul și-a trimis mesajul „Terminat”, poate începe deja să trimită Date aplicației (chiar dacă Clientul nu a a trimis încă mesajul Terminat). Astfel, are sens ca server_application_traffic_secret să implice ClientHello....ServerFinished.
În ceea ce privește resumption_master_secret, aș susține că, deoarece este folosit pentru reluarea unei sesiuni, scopul implicării ClientHello...ClientFinished este de a avea întreaga strângere de mână implicată în acest secret. Mai mult decât atât, dacă serverul solicită autentificarea prin certificat a clientului, atunci aceasta ar face parte și din transcrierea strângerii de mână.
Din câte știu, specificația nu justifică toate deciziile de proiectare, dar personal cred că acest lucru are sens, deoarece (după cum puteți vedea în protocolul de strângere de mână de mai jos), a avea ClientHello...ClientFinished implică întreaga strângere de mână.
Client server
Cheie ^ ClientSalut
Exch | + key_share*
| + algoritmi_semnătură*
| + psk_key_exchange_modes*
v + pre_shared_key* -------->
ServerHello ^ Cheie
+ key_share* | Exch
+ pre_shared_key* v
{EncryptedExtensions} ^ Server
{CertificateRequest*} v Params
{Certificat*} ^
{CertificateVerify*} | Auth
{Terminat} v
<-------- [Datele aplicației*]
^ {Certificat*}
Auth | {CertificateVerify*}
v {Terminat} -------->
[Datele aplicației] <-------> [Datele aplicației]
```