先思考問題:
- TLS是什么?
- TLS能做什么?
- 它怎么做到的?
TLS介紹
TLS 全稱為 Transport Layer Security(傳輸層安全),其前身是 SSL,全稱為 Secure Sockets Layer(安全套接字層),它的作用是為上層的應用協議提供安全的通信,比如眾所周知的 HTTP 組合 TLS = HTTPS。
這里的安全指:
- 保密性
傳輸過程不能被竊聽 - 完整性
傳輸過程不能被篡改 - 身份認證
能確信對方的身份
TLS協議的優勢是與高層的應用層協議(如HTTP、FTP、Telnet等)無耦合。應用層協議能透明地運行在TLS協議之上,由TLS協議進行建立加密通道需要的協商和認證。應用層協議傳送的數據在通過TLS協議時都會被加密,從而保證通信的私密性。
簡單來說,TLS就是一個混合的密碼系統,通過結合各種密碼技術,來達成安全通信的效果。
TLS涉及的密碼技術(上面的安全問題,是用下面的技術做到的):
- 對稱加密
用來確保機密性 - 偽隨機數生成器
用來生成密鑰,防被預測 - 非對稱加密、Diffie-Hellman
用來密鑰配送、密鑰交換 - Hash、消息認證碼
防消息篡改、對數據認證 - 數字證書
對通信對象進行認證
好家伙!密碼學工具包的工具都被你用了個遍 - _ -。下文SSL、TLS 混著用,都一個意思。下面來學習它的流程,看看TLS是如何把這些工具都組合起來使用的。
HTTS流程
原本的HTTP是明文傳輸消息的,如果想要加密傳輸消息,可以用TLS(Transport Layer Security)作為對通信進行加密的協議,然后在此之上承載HTTP(圖14-3)。通過將兩種協議進行疊加,我們就可以對 HTTP的通信(請求和響應)進行加密,從而防止竊聽。通過SSL/TLS進行通信時URL 不是以 http:// 開頭,而是以 https:// 開頭。

密碼套件
TLS就是一個密碼套件,有一下特性:
用途廣泛

零件自由替換
SSL/TLS提供了一種密碼通信的框架,這意味著SSL/TLS中使用的對稱密碼、公鑰密碼數字簽名、單向散列函數等技術,都是可以像零件一樣進行替換的。也就是說,如果發現現在所使用的某個密碼技術存在弱點,那么只要將這一部分進行替換就可以了。
盡管如此,也并不是說所有的組件都可以自由選擇。由于實際進行對話的客戶端和服務器必須使用相同的密碼技術才能進行通信,因此如果選擇過于自由,就難以確保整體的兼容性為此,SSL/TLS 就像事先搭配好的盒飯一樣,規定了一些密碼技術的“推薦套餐”,這種推薦套餐稱為密碼套件(cipher suite)。
TLS協議認識
下面內容基于TLS 1.2(RFC5246) 規范,
分層來理解TLS協議:
TLS 協議是由:
- TLS 握手協議( TLS handshakeprotocol)
- TLS記錄協議(TLS record protocol)
這兩層協議疊加而成的。
位于底層的 TLS記錄協議負責進行加密,而位于上層的 TLS握手協議則負責除加密以外的其他各種操作。
上層的TLS握手協議又可以分為4個子協議:
- 握手協議
- 密碼規格變更協議
- 警告協議
- 應用數據協議

握手協議
握手協議是TLS握手協議的一部分,負責生成共享密鑰以及交換證書。其中,生成共享密鑰是為了進行密碼通信,交換證書是為了通信雙方相互進行認證。
握手協議這一名稱中的“握手”(handshake),是服務器和客戶端在密碼通信之前交換一些必要信息這一過程的比喻。
由于握手協議中的信息交換是在沒有加密的情況下進行的(即使用“不加密”這一密碼套件),也就是說,在這一協議中所收發的所有數據都可能被竊聽者Eve竊聽,因此在這一過程中必須使用公鑰密碼或者 Difie-Hellman 密鑰交換。

請描述主密鑰是怎么來的?
todo
Reference
《圖解密碼技術》
http://www.freeoa.net/news/product/entpri-upgrade-ssltalg-for-holes_1861.html
https://xiaochaowei.com/2018/09/23/IllustrationCryptology14/
浙公網安備 33010602011771號