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