HTTPS是如何保證密文不能被篡改的?
HTTP 采?明?傳輸,中間?可以獲取到明?數據 (從?實現對數據的篡改)。這時候 HTTPS 就登場了! HTTPS 是什么呢? HTTPS = HTTP + SSL/TLS , SSL 安全套接層(Secure Sockets Layer) 發展到 v3 時改名為 TLS 傳輸層安全(Transport Layer Security),主要的?的是提供數據的完整性和保密性
?、數據完整性
1.摘要算法
- 把任意?度的數據壓縮成固定的?度
- 輸?不同輸出的結果發?劇烈的變化“雪崩效應”,相同的內容摘要后結果相同
- 不能從結果反推輸?
- 我們可以在內容后?增加 hash 值進?傳輸,服務端收到后通過 hash 值來校驗內容是否完整。數據是明?的顯然不安全
?、數據加密
1. 對稱加密
加密和解密時使?的密鑰都是同?個, 通信過程使?秘鑰加密后的密?傳輸。只有??和?站才能解密。
?前 AES (Advanced Encryption Standard) ChaCha20 為最常?的對稱加密算法 。
2.?對稱加密
?對稱加密可以解決“密鑰交換”的問題。?對稱加密有兩個秘鑰,公鑰、私鑰,所以稱之為?對稱。公鑰加密私鑰
解密。
并不能完全采??對稱加密算法,由于算法本身耗時遠?于對稱加密。
使? RSA 、 ECDHE 算法解決秘鑰交換的問題
最常聽到的?對稱加密算法是 RSA 、 ECC (?算法 ECDHE ?于密鑰交換, ECDSA ?于數字簽名)(性能和安全略勝?籌) HTTPS 中?前?泛使? ECC 。
3. 混合加密
通信剛開始的時候使??對稱算法,交換秘鑰。在客戶端?成會話秘鑰后傳送給服務端,后續通信采?對稱加密的?式
這?還并不安全,還涉及到中間?攻擊。( 指攻擊者與通訊的兩端分別創建獨?的聯系,并交換其所收到的數據 )
4. 數字證書和 CA
因為誰都可以發布公鑰,所以我們需要驗證對?身份。防?中間?攻擊
客戶端會判斷有效期、頒發者、證書是否被修改及證書是否被吊銷。 每份簽發證書都可以根據驗證鏈查找到對應的根證書,操作系統、瀏覽器會在本地存儲權威機構的根證書,利?本地根證書可以對對應機構簽發證書完成來源驗證。
- 加密:對傳輸的數據進?加密。
- 數據?致性:保證傳輸過程中數據不會被篡改。
- 身份認證:確定對?的真實身份。
三、 HTTPS 過程
1. 第?階段
- 客戶端會發送 handshake Protocol:client hello
Cipher Suites 密鑰交換算法 + 簽名算法 + 對稱加密算法 + 摘要算法 套件列表
Random 客戶端隨機數
Version: TLS 1.2
- 服務端會發送 handleshake Protocol:Server Hello
- Version: TLS 1.2
- Random 服務端隨機數
- Cipher Suites:選擇的套件
雙?選擇 TLS 版本,確定加密算法,?成兩個隨機數
2. 第?階段
- 服務端發送證書 certificate
- 服務端發送 ECDHE 參數,服務端 Hello 完成
Server Key Exchange
Server Hello Done
- 客戶端發送 ECDHE 參數,以后使?秘鑰進?通信吧,加密握?消息發送給對?
- Client Key Exchange
- Change Cipher Spec
- Encrypted HandleShake Message
- 服務端發送會話憑證,以后使?秘鑰進?通信吧,加密握?消息發送給對?
- new Session Ticket
- Change Cipher Spec
- Encrypted HandleShake Message
SSL 協議組成
SSL 握?協議、 SSL 秘鑰變化協議、 SSL 警告協議、 SSL 記錄協議等
文章出自:??前端餐廳ReTech??,如有轉載本文請聯系前端餐廳ReTech今日頭條號。
github:??https://github.com/zuopf769??