SSL/TLS

進度
已完成
類別
Net
flask
作者
Timothychen
Created
Apr 28, 2022 02:37 AM
製作時間
May 2, 2022 → May 14, 2022
因為在互聯網中我們所採用的通訊協議是HTTP協議,而在HTTP協議中並沒有包含加密的內容。
所以在我們一般的使用當中,不管是HTTP GET請求和HTTP POST請求,不管是請求的頭部還是請求的主題,都是直接以明文進行傳輸的,這樣安全性的問題就很堪憂(理論上任何人都可以輕易的介入通訊的過程,不論是修改還是查看)。
 
所以為了能夠保障客戶端和伺服器之間溝通的安全性,就誕生了SSL/TLS這個算是協議的東東,
SSL/TLS基本上就是規定了我們在傳輸的過程中需要經過數據的加密。而HTTPS其實也就是HTTP+SSL/TLS,所以其實我們通常講的https安全其實就是因為其具備SSL/TLS等加密的技術
(補充一下SSLTLS本質上可以算是同一個東西,只是TLSSSL的最新版本)

常見的加密方式:

AES對稱式加密

對稱式加密就是指在加密和解密的過程中所使用的密鑰是同一個(相當於開門和鎖門都是用同一個鑰匙),安全性高,但是有一個致命的問題也就是要讓雙方都知道那個共同的秘鑰,但是實際的情況往往都是兩個人距離相當的遠。而在這種的情況下,就一定需要別人幫忙傳遞這個資訊,那麼秘鑰就還是會洩漏
AES單向通訊的範例
AES單向通訊的範例
 

RSA非對稱式加密

這邊的非對稱主要指的是,加密和解密所使用的密鑰不同(例如你用A鑰匙鎖門卻只能用配套的B鑰匙開門),這樣的作法嘴主要的目的就是可以將加密和解密的能力分開,分別給到兩個人去進行通訊)
 
RSA雙向通訊的範例
RSA雙向通訊的範例
雖然這個方法很好,但是無法避免一種類型的攻擊,這個我們稱之為“中間人攻擊”,是什麼意思呢,其實就是在A要跟B進行溝通的時候有一個C偽造了B(或者說介入了AB的通訊過程),跟A進行溝通,那這樣的情況不管是多好的加密方式,如果是一開始要進行溝通的對象就不是正確的話就會就還是一樣會有問題(所以後來才誕生了CA)。
 
ps:RSA的安全性很高但是因為每一次通訊的成本很高,所以通常在彼此確認身分之後就會採用AES完成剩下的通訊過程

CA的介入

CA其實就是certificate authority的縮寫,主要就是充當互聯網中的具有公信力的驗證機構的功能
notion image
而由CA統一去發放憑證,就可以避免在通訊的過程中有其他人介入(中間人攻擊)
ps:理論上CA在通訊的過程中會同時掌握伺服器的公鑰和私鑰,也就有監看整個通訊過程的能力。就像銀行可以看到你帳戶裡面的錢一樣,但是在這種中心化的結構中也就需要我們將我們的權利釋放一部分給一個具有公信力的機構(在這裡就是CA)
 
 
 

參考資料