很多人一開始研究Https SSL/TLS的時候,都很困惑PreMaster/Master Secret(Key)是如何被計算出來的,最近通過翻看其他資料以及 openssl的源碼,總結出PreMaster/Master Secret(Key)的計算流程如圖所示:
其中Client Random和Server Random都是在前面的《Https(SSL/TLS)原理詳解》中講解過的,Client Hello 和Server Hello階段都會發送各自的Random隨機數給對方,最終都是用來計算Master Secret的。
至於PreMaster Secret(Key)的計算,主要是通過RSA或者Diffie-Hellman算法生成。我們可以看出,由於在Say Hello階段,隨機數都是明文傳送的,如果PreMaster Secret洩漏的話,會導致整個SSL/TLS失效。