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