https傳輸過程
客戶端發起HTTPS請求
操作:用戶在瀏覽器輸入 https://www.example.com
技術細節:
客戶端向服務器443端口發起TCP連接
發送Client Hello消息(包含支持的TLS版本、加密套件、客戶端隨機數)
安全意義:建立安全通信的起點
服務器返回數字證書
操作:服務器響應并發送數字證書
技術細節:
包含公鑰A(通常為RSA/ECC公鑰)
證書包含:域名、有效期、頒發機構、公鑰信息
示例證書結構:
plaintext
證書版本:v3
序列號:00:aa:bb:cc...
簽名算法:sha256WithRSA
頒發者:CN=DigiCert Global CA
有效期:2023-01-01 至 2024-12-31
主體:CN=www.example.com
公鑰:RSA 2048位
X509v3擴展:
Subject Alternative Name: DNS:example.com
安全意義:提供服務器身份憑證
客戶端驗證證書
操作:客戶端驗證證書合法性
驗證流程:
檢查證書有效期
驗證證書鏈(從服務器證書→中間CA→根CA)
檢查CRL/OCSP吊銷狀態
驗證域名匹配(防止釣魚網站)
驗證失敗處理:
瀏覽器顯示警告(如NET::ERR_CERT_INVALID)
用戶可選擇是否繼續訪問
生成會話密鑰
操作:客戶端生成隨機對稱密鑰
技術細節:
生成256位隨機數(稱為Pre-Master Secret)
在TLS 1.3中稱為"Shared Secret"
結合客戶端隨機數、服務器隨機數生成最終會話密鑰
math
會話密鑰 = HKDF_Expand(
HKDF_Extract(Pre-Master, "TLS Key"),
ClientRandom + ServerRandom,
32
)
安全意義:確保每次會話使用唯一密鑰
加密傳輸會話密鑰
操作:用公鑰A加密會話密鑰
技術細節:
使用RSA加密:Ciphertext = (KEY^e) mod n
或使用ECDH密鑰交換(更安全的前向保密)
TLS 1.3中默認使用ECDHE密鑰交換
安全意義:防止中間人獲取對稱密鑰
服務器解密會話密鑰
操作:服務器用私鑰B解密
技術細節:
RSA解密:KEY = (Ciphertext^d) mod n
此時雙方擁有相同的會話密鑰
安全意義:建立端到端的加密通道基礎
切換加密模式
操作:雙方發送ChangeCipherSpec
技術細節:
客戶端→服務器:ChangeCipherSpec通知
服務器→客戶端:ChangeCipherSpec響應
啟用協商好的加密套件(如AES_256_GCM)
安全意義:正式啟用加密通信
加密數據傳輸(客戶端→服務器)
操作:客戶端發送加密的HTTP請求
技術細節:
python
# 加密過程
ciphertext = AES_GCM_encrypt(
key=會話密鑰,
plaintext="GET / HTTP/1.1...",
nonce=隨機數,
auth_data=附加數據
)
實際數據包:
hex
17 03 03 00 30 ? # TLS頭部
01 02 03 ... 3A ?# 加密后的應用數據
60 7B 91 A5 ? ? ?# 認證標簽(GCM)
加密數據傳輸(服務器→客戶端)
操作:服務器返回加密的HTTP響應
技術細節:
使用相同會話密鑰解密請求
生成加密響應:
python
response = "HTTP/1.1 200 OK..."
encrypted_res = AES_GCM_encrypt(key, response)
性能優化:
TLS會話恢復(Session Tickets)
0-RTT數據(TLS 1.3特性)
連接關閉
操作:加密通信結束
技術細節:
發送加密的close_notify警報
安全關閉TCP連接
安全意義:防止截斷攻擊
關鍵安全機制總結:
雙階段加密:
非對稱加密:安全傳輸會話密鑰(RSA/ECDH)
對稱加密:高效加密業務數據(AES/ChaCha20)
證書信任體系:
三級驗證(服務器證書→中間CA→根CA)
OCSP在線證書狀態檢查
前向保密(PFS):
ECDHE密鑰交換
每次會話生成唯一密鑰
即使私鑰泄露,歷史會話仍安全
完整性保護:
HMAC-SHA256消息認證
AEAD模式(如AES-GCM)內置完整性校驗
DNS傳輸過程
客戶端發起DNS查詢
操作:用戶在瀏覽器輸入域名(如 www.example.com)
技術細節:
生成DNS查詢報文(UDP 53端口)
報文結構:
plaintext
Header:
ID: 0x4d20 ? ? ?// 隨機事務ID
Flags: RD=1 ? ? ?// 遞歸查詢請求
Questions: 1
Question Section:
QNAME: www.example.com
QTYPE: A ? ? ? ?// 請求IPv4地址
QCLASS: IN ? ? ?// Internet類
協議選擇:
默認使用UDP(報文<512字節)
大響應自動切換TCP
解析器檢查緩存
操作:本地DNS解析器查詢緩存
檢查內容:
瀏覽器DNS緩存
操作系統DNS緩存
路由器DNS緩存
ISP DNS服務器緩存
緩存時效:
根據TTL(Time to Live)值決定
典型TTL值:
根域名:48小時
TLD域名:24小時
主機記錄:5分鐘-1小時
查詢根DNS服務器
操作:解析器向根DNS服務器發起查詢
技術細節:
全球13組根服務器(a.root-servers.net ~ m.root-servers.net)
響應包含TLD服務器信息:
plaintext
Authority Section:
com. ? ?172800 ?IN ?NS ?a.gtld-servers.net.
com. ? ?172800 ?IN ?NS ?b.gtld-servers.net.
Additional Section:
a.gtld-servers.net. ?A ?192.5.6.30
b.gtld-servers.net. ?A ?192.33.14.30
關鍵點:根服務器不返回最終IP,只引導至正確TLD
查詢頂級域(TLD)DNS
操作:解析器向.com TLD服務器查詢
技術細節:
TLD服務器管理特定后綴(.com, .org, .cn等)
響應包含權威DNS信息:
plaintext
Authority Section:
example.com. ?86400 ?IN ?NS ?ns1.example.com.
example.com. ?86400 ?IN ?NS ?ns2.example.com.
Additional Section:
ns1.example.com. ?A ?192.0.2.1
ns2.example.com. ?A ?192.0.2.2
查詢權威DNS服務器
操作:解析器向域名注冊的權威DNS查詢
技術細節:
權威服務器持有最終DNS記錄
返回A記錄(IPv4)或AAAA記錄(IPv6):
plaintext
Answer Section:
www.example.com. ?300 ?IN ?A ?93.184.216.34
www.example.com. ?300 ?IN ?A ?93.184.216.35 ?// 可能多個IP
記錄類型:
A:IPv4地址
AAAA:IPv6地址
CNAME:別名記錄(如www→example.com)
MX:郵件服務器
TXT:文本驗證信息
緩存并返回結果
操作:解析器緩存結果并返回客戶端
緩存機制:
分層緩存:本地→ISP→公共DNS
緩存污染防護:
隨機事務ID(16位)
隨機源端口(DNS over TCP)
響應報文:
plaintext
Header:
ID: 0x4d20
Flags: QR=1, RA=1 ?// 響應+遞歸可用
Answer RRs: 1
Answer Section:
www.example.com. ?300 ?IN ?A ?93.184.216.34
客戶端建立連接
操作:客戶端使用IP建立TCP連接
后續流程:
TCP三次握手
如果是HTTPS:TLS握手
HTTP請求/響應
關鍵點:DNS只負責域名→IP轉換,不參與后續通信