一、 對稱加密和非對稱加密
1、對稱加密
1)對稱加密是一把金鑰,這把金鑰可以加密明文,也可以解密加密後的密文,
2)常見的對稱加密演算法有aes、des、rc4,目前最常用的是aes。
2、非對稱加密
1)非對稱加密是兩把金鑰,分別是公鑰和私鑰,公鑰加密的密文只有相對應的私鑰才能解密,私鑰加密的內容也只有相對應的公鑰才能解密,其中公鑰是公開的,私鑰是自己儲存,不能公開,
2)常見的非對稱加密演算法有rsa和ecc(橢圓曲線演算法)。
3)相比對稱加密,非對稱加密的加解密效率比較低
二、 ssl和tsl
1、ssl(secure socket layer)是netscape開發的專門使用者保護web通訊的,最新版本為3.0
2、tls(transport layer security),ssl的後續版本,是ietf制定的一種新的協議
三、 http和https
https (secure hypertext transfer protocol)安全超文字傳輸協議就是安全的http,我們知道http是執行在tcp層之上的,https在http層和tcp層之間加了乙個ssl層,ssl向上提供加密和解密的服務。
四、 https的作用
五、 https連線建立
https建立連線的過程就是使用非對稱加密實現身份認證和金鑰協商,對稱加密演算法採用協商的金鑰對資料加密,基於雜湊(雜湊)函式驗證資訊的完整性
現在比較常用的握手協議使用dh握手,握手流程圖如下:
握手過程:
1、客戶端向服務端傳送client hello,告訴服務端,客戶端支援的協議版本,加密套件等資訊。
2、服務端收到響應,選擇雙方都支援的協議,套件,向客戶端傳送server hello。
3、服務端將自己的證書傳送到客戶端(certificate),客戶端對證書合法性進行驗證。
4、伺服器利用私鑰將客戶端隨機數,伺服器隨機數,伺服器dh引數簽名,生成伺服器簽名。向客戶端傳送伺服器dh引數以及伺服器簽名(server key exchange)。
5、客戶端向服務端傳送客戶端dh引數(client key exchange)。
6、客戶端利用公鑰驗證伺服器簽名,客戶端與伺服器各自利用服務端dh引數、客戶端dh引數生成預主金鑰,再通過預主金鑰、客戶端隨機數、服務端隨機數生成主金鑰(會話金鑰)。最後握手完成,所有的訊息都通過主金鑰加密。
六、 https抓包分析
客戶端收到證書資訊後,會驗證證書的合法性
sever hello done 訊息表明伺服器已經將所有預計的握手訊息傳送完畢。在此之後,伺服器會等待客戶端傳送訊息。
change cipher spec 訊息表明傳送端已取得用以生成連線引數的足夠資訊,已生成加密金鑰(主金鑰),並且將切換到加密模式。客戶端和伺服器在條件成熟是會傳送這個訊息。
8、encrypted handshake message
encrypted handshake message 這是由客戶端伺服器之間協商的演算法和金鑰保護的第乙個訊息。它意味著握手已經完成。訊息內容將加密,以便雙發可以安全地交換驗證整個握手完整性所需要的資料。
https建立連線
客戶端的瀏覽器向伺服器傳送客戶端 ssl 協議的版本號,加密演算法的種類,產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的各種資訊。圖中1 伺服器向客戶端傳送 ssl 協議的版本號,加密演算法的種類,隨機數以及其他相關資訊,同時伺服器還將向客戶端傳送自己的證書。圖中2,3 客戶利用伺服器傳過來的...
https建立連線過程
既然要公升級為https協議,那就很有必要知道https的原理是什麼,https是怎麼保證資訊只有通訊雙方能解析而不被第三方截獲導致資訊被竊取 篡改。2.1 原理圖 下面是一張https建立連線的原理圖,下面會對每一步進行說明。https建立連線 2.2 https建立連線過程 2.2.1 客戶端訪...
https建立連線原理筆記
tcp協議 通訊雙方通過三次握手建立tcp連線 tls transport layer security 協議 通訊雙方通過四次握手建立tls連線 http協議 client向server發起request,server發揮response ps 以下筆記只針對tls1.2 tcp三次握手建立連線 ...