一、HTTPS安全機制
1. HTTP的安全風險
- 竊聽風險:明文傳輸導致通信內容可被直接截獲(如Wireshark抓包獲取密碼)。
- 篡改風險:中間人可修改傳輸內容(如注入惡意腳本)。
- 冒充風險:攻擊者偽造服務端身份(如釣魚網站)。
2. HTTPS解決方案
通過TLS/SSL協議在HTTP與TCP層之間加密:
HTTP → 明文風險
└─ SSL/TLS → 加密層 └─ TCP → 安全傳輸
- 信息加密:使用對稱加密算法(如AES)加密通信內容。
- 校驗機制:通過MAC(消息認證碼)檢測數據篡改。
- 身份證書:數字證書驗證服務端身份,防止偽造。
3. TLS握手流程
步驟 | 關鍵操作 | 作用說明 |
---|---|---|
第一次握手 | 客戶端發送Client Hello (含TLS版本、密碼套件、Client Random) | 協商加密參數,生成密鑰材料 |
第二次握手 | 服務端回復Server Hello (選定密碼套件、Server Random) + 發送數字證書 | 確認加密方式,證明身份 |
第三次握手 | 客戶端用證書公鑰加密Pre-master Key → 生成會話密鑰 → 發送加密的摘要 | 密鑰交換,驗證通信完整性 |
第四次握手 | 服務端生成會話密鑰 → 返回加密摘要 | 雙向驗證加密通道可用性 |
會話密鑰:由
Client Random + Server Random + Pre-master Key
生成,用于后續對稱加密。
二、證書體系與信任鏈
1. 數字證書驗證流程
- 證書簽名過程:
- CA對證書信息(公鑰、持有者等)做Hash運算。
- 用CA私鑰加密Hash值 → 生成數字簽名。
- 客戶端驗證:
- 用CA公鑰解密簽名 → 得到Hash值H2。
- 計算證書Hash值H1 → 對比H1=H2(一致則可信)。
2. 證書鏈信任傳遞
- 驗證邏輯:
- 用根證書公鑰驗證中間證書簽名
- 用中間證書公鑰驗證域名證書
- 全部驗證通過才建立信任
關鍵點:信任錨點是預置在操作系統/瀏覽器中的根證書(自簽證書)。
三、RSA算法原理
1. 密鑰生成流程
- 選兩個大素數
p
和q
(1024位以上)。 - 計算模數
n = p × q
。 - 計算歐拉函數
φ(n) = (p-1)(q-1)
。 - 選公鑰指數
e
(通常為65537),需滿足1 < e < φ(n)
且與φ(n)
互質。 - 計算私鑰指數
d
:d × e ≡ 1 mod φ(n)
(使用擴展歐幾里得算法)。
- 公鑰:
(n, e)
- 私鑰:
(n, d)
2. 加解密過程
- 加密(明文
m
):c = m^e mod n
- 解密(密文
c
):m = c^d mod n
3. 可靠性基礎
- 大數分解難題:從
n
反推p
和q
在計算上不可行(n
足夠大時)。 - 歐拉定理保證:若
m
與n
互質,則m^{kφ(n)+1} ≡ m mod n
,使得m^{ed} ≡ m mod n
成立。
四、DNS解析流程
1.關鍵步驟解析
以訪問 www.baidu.com
為例:
- 本地緩存:瀏覽器/OS緩存 → 減少查詢延遲。
- 遞歸查詢:本地DNS服務器代表客戶端完成全鏈路查詢。
- 層級查詢:
- 根DNS → 返回頂級域服務器(如
.com
)。 - 頂級DNS → 返回權威DNS服務器(如
ns1.baidu.com
)。 - 權威DNS → 返回域名對應的IP(A記錄)。
- 根DNS → 返回頂級域服務器(如
- 結果緩存:本地DNS緩存記錄(TTL控制時效)
- 建立連接:客戶端通過IP訪問目標服務器
2. 攻擊面分析
- DNS劫持:篡改本地DNS配置或中間節點響應
- 緩存投毒:偽造權威DNS響應污染緩存
- DDoS攻擊:洪水請求癱瘓DNS服務器
滲透測試關聯點
- HTTPS中間人攻擊:
- 利用偽造證書或SSL Strip攻擊降級HTTPS → 竊取敏感數據。
- 工具:Burp Suite證書劫持、SSLStrip降級攻擊
- 防御:強制HSTS、證書釘扎(Certificate Pinning)
- RSA密鑰破解:
- 針對短密鑰(如512位)使用工具暴力分解
n
。 - 工具:John the Ripper破解弱口令私鑰
- 條件:當 ( p ) 和 ( q ) 接近時,可通過Fermat分解攻擊
- 針對短密鑰(如512位)使用工具暴力分解
- DNS劫持:
- 污染本地DNS緩存 → 將域名解析到惡意IP。
- 命令:
nslookup
、dig
、whois
- 高階:DNS區域傳輸漏洞(
axfr
請求獲取全量記錄)
- 證書偽造:
- 自簽名證書釣魚 → 誘導用戶信任非法服務端。
防御建議:
- 強制HSTS策略防止HTTPS降級
- 使用2048位以上RSA密鑰
- 部署DNSSEC防止DNS欺騙