03-2. SSL/TLS 加密原理

⏱️ 閱讀時間: 15 分鐘 🎯 難度: ⭐⭐⭐ (中等)


🎯 本篇重點

深入理解 SSL/TLS 的加密原理、對稱加密與非對稱加密的差異、混合加密系統的運作方式,以及常見的加密演算法。


🤔 什麼是 SSL/TLS?

SSL (Secure Sockets Layer) = 安全通訊層協定(已棄用) TLS (Transport Layer Security) = 傳輸層安全協定(現代標準)

一句話解釋: SSL/TLS 就像是在網路通訊中加上一個「密碼鎖」和「簽名」,確保只有對的人能看到內容,且內容沒被改過。


📜 SSL/TLS 的歷史演進

SSL 時代(Netscape 開發):
├─ SSL 1.0(1994)- 從未發布(有嚴重漏洞)
├─ SSL 2.0(1995)- 已棄用(2011)
└─ SSL 3.0(1996)- 已棄用(2015,POODLE 漏洞)

TLS 時代(IETF 標準化):
├─ TLS 1.0(1999)- 已棄用(2021)
├─ TLS 1.1(2006)- 已棄用(2021)
├─ TLS 1.2(2008)- ✅ 目前廣泛使用
└─ TLS 1.3(2018)- ✅ 最新標準

現狀(2024):
- TLS 1.2:約 70% 網站使用
- TLS 1.3:約 30% 網站使用(快速增長中)
- SSL 2.0/3.0:已完全淘汰

名稱混淆:
雖然現在都用 TLS,但人們常說「SSL 憑證」
正確應該說「TLS 憑證」或「SSL/TLS 憑證」

🔐 加密的基本概念

加密 = 把明文變成密文

加密(Encryption):
明文(Plaintext)→ 加密 → 密文(Ciphertext)

解密(Decryption):
密文(Ciphertext)→ 解密 → 明文(Plaintext)

範例:
明文:Hello World
↓ 加密
密文:sD9fj#$kL@mN
↓ 解密
明文:Hello World

🔑 對稱加密 vs 非對稱加密

對稱加密(Symmetric Encryption)

特性:
- 加密和解密用同一把金鑰
- 速度快
- 適合大量資料

比喻:保險箱的鑰匙

你有一個保險箱 📦
├─ 上鎖:用鑰匙 🔑
└─ 開鎖:用同一把鑰匙 🔑

問題:如何安全地傳遞鑰匙?

範例:
金鑰:secret_key_123

加密:
明文:Hello
用 secret_key_123 加密
→ 密文:X7jKp9

解密:
密文:X7jKp9
用 secret_key_123 解密
→ 明文:Hello

常見演算法:
- AES(Advanced Encryption Standard)
- DES(已淘汰)
- 3DES(已淘汰)
- ChaCha20

優點:
✅ 速度快(適合大量資料)
✅ 運算開銷小

缺點:
❌ 金鑰分發困難(如何安全傳遞金鑰?)
❌ N 個人通訊需要 N*(N-1)/2 把金鑰

非對稱加密(Asymmetric Encryption)

特性:
- 加密和解密用不同金鑰
- 公鑰(Public Key):公開,任何人都能取得
- 私鑰(Private Key):保密,只有擁有者知道
- 速度慢
- 適合小量資料

比喻:郵箱和鑰匙

你有一個郵箱 📮
├─ 郵箱入口(公鑰):任何人都能投信
└─ 郵箱鑰匙(私鑰):只有你能打開

特性:
- 用公鑰加密 → 只有私鑰能解密
- 用私鑰簽名 → 任何人用公鑰驗證

範例 1:加密通訊
Alice 想傳訊息給 Bob

1. Bob 產生金鑰對
   - 公鑰:public_bob
   - 私鑰:private_bob

2. Bob 公開他的公鑰 public_bob

3. Alice 用 public_bob 加密訊息
   明文:Hello Bob
   用 public_bob 加密
   → 密文:X7jKp9qR...

4. Bob 用私鑰解密
   密文:X7jKp9qR...
   用 private_bob 解密
   → 明文:Hello Bob

安全性:
- 即使有人攔截密文,沒有 private_bob 無法解密
- 即使公鑰被公開,也無法解密

範例 2:數位簽章
Alice 想證明訊息是她發的

1. Alice 產生金鑰對
   - 公鑰:public_alice
   - 私鑰:private_alice

2. Alice 用私鑰簽名
   訊息:Hello
   用 private_alice 簽名
   → 簽章:signature_abc

3. Alice 發送:訊息 + 簽章

4. 任何人用 public_alice 驗證簽章
   用 public_alice 驗證 signature_abc
   → ✅ 確實是 Alice 發的

常見演算法:
- RSA(最常見)
- ECC(橢圓曲線加密,更快)
- DSA(數位簽章)
- ECDSA(橢圓曲線數位簽章)

優點:
✅ 金鑰分發容易(公鑰公開即可)
✅ 支援數位簽章
✅ N 個人只需 N 對金鑰

缺點:
❌ 速度慢(不適合大量資料)
❌ 運算開銷大

對稱 vs 非對稱對比

特性對稱加密非對稱加密
金鑰數量1 把2 把(公鑰 + 私鑰)
金鑰分發困難 ❌容易 ✅
速度快 ✅慢 ❌
適用資料量大量 ✅少量 ❌
數位簽章不支援 ❌支援 ✅
範例演算法AES, ChaCha20RSA, ECC
用途資料加密金鑰交換、數位簽章

🔀 混合加密系統(TLS 的秘密)

為什麼需要混合?

問題:
- 對稱加密:快,但金鑰分發困難
- 非對稱加密:安全,但太慢

解決方案:混合!
1. 用非對稱加密交換金鑰(慢但安全)
2. 用對稱加密傳輸資料(快)

比喻:快遞公司

步驟 1:郵寄保險箱鑰匙(非對稱加密)
- 用對方的公鑰加密
- 安全但慢

步驟 2:用保險箱運送貨物(對稱加密)
- 雙方都有鑰匙了
- 快速運送大量貨物

TLS 混合加密流程

【階段 1:握手(Handshake)- 使用非對稱加密】

1. 客戶端:你好,我想建立安全連線
   - 支援的 TLS 版本
   - 支援的加密演算法

2. 伺服器:好的,這是我的公鑰 + 憑證
   - 公鑰(RSA 或 ECDSA)
   - 數位憑證

3. 客戶端:驗證憑證...✅
   - 產生「會話金鑰」(Session Key)
   - 用伺服器的公鑰加密會話金鑰
   - 發送給伺服器

4. 伺服器:收到會話金鑰
   - 用私鑰解密,取得會話金鑰

【階段 2:資料傳輸 - 使用對稱加密】

5. 雙方都有相同的會話金鑰了!
   - 用 AES 等對稱加密演算法
   - 快速加密大量資料

客戶端 ⇄ 伺服器
     ↓
  用會話金鑰加密/解密
     ↓
  AES-256-GCM

優點:
✅ 結合兩者優點
✅ 安全(非對稱加密交換金鑰)
✅ 快速(對稱加密傳輸資料)

🔢 常見加密演算法詳解

AES(對稱加密)

AES (Advanced Encryption Standard)

特性:
- 美國政府標準(2001)
- 區塊加密(Block Cipher)
- 金鑰長度:128、192、256 位元

AES-128:128 位元金鑰(16 bytes)
AES-256:256 位元金鑰(32 bytes)← 最常用

安全性:
- 暴力破解 AES-256:2^256 種可能
- 即使每秒嘗試 10^18 次
- 需要 10^59 年
→ 實際上無法破解

運作模式:
1. ECB(不建議,不安全)
2. CBC(較舊)
3. GCM(推薦,支援驗證)← TLS 1.3 預設
4. CTR
5. CCM

範例(Python):
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os

# 產生隨機金鑰(256 位元 = 32 bytes)
key = os.urandom(32)

# 產生隨機 IV(初始向量)
iv = os.urandom(16)

# 建立加密器
cipher = Cipher(
    algorithms.AES(key),
    modes.GCM(iv),
    backend=default_backend()
)

# 加密
encryptor = cipher.encryptor()
plaintext = b"Hello World"
ciphertext = encryptor.update(plaintext) + encryptor.finalize()

# 解密
decryptor = cipher.decryptor()
plaintext_decrypted = decryptor.update(ciphertext) + decryptor.finalize()

print(plaintext_decrypted)  # b"Hello World"

速度:
- 現代 CPU 有硬體加速(AES-NI)
- 加密/解密速度:數 GB/s

RSA(非對稱加密)

RSA (Rivest–Shamir–Adleman)

特性:
- 最常見的非對稱加密
- 基於大數質因數分解難題
- 金鑰長度:1024、2048、4096 位元

RSA-2048:2048 位元金鑰 ← 目前標準
RSA-4096:4096 位元金鑰(更安全但更慢)

安全性:
- RSA-2048:目前安全
- RSA-1024:已不安全(可被破解)
- 量子電腦威脅:未來可能被破解

運作原理:
1. 選擇兩個大質數 p 和 q
2. 計算 n = p × q
3. 產生公鑰和私鑰

公鑰:(e, n)
私鑰:(d, n)

加密:C = M^e mod n
解密:M = C^d mod n

範例(Python):
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes

# 產生 RSA 金鑰對
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
public_key = private_key.public_key()

# 加密
message = b"Hello World"
ciphertext = public_key.encrypt(
    message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 解密
plaintext = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(plaintext)  # b"Hello World"

速度:
- 比 AES 慢 1000 倍
- 不適合加密大量資料
- TLS 中只用於交換金鑰

ECC(橢圓曲線加密)

ECC (Elliptic Curve Cryptography)

特性:
- 橢圓曲線密碼學
- 更短的金鑰達到相同安全性
- 速度比 RSA 快

金鑰長度對比:
ECC-256 ≈ RSA-3072(安全性相當)
ECC-384 ≈ RSA-7680
ECC-521 ≈ RSA-15360

優點:
✅ 金鑰更短(節省頻寬)
✅ 運算更快
✅ 適合行動裝置

常見曲線:
- P-256(secp256r1)← 最常用
- P-384(secp384r1)
- Curve25519(新興標準)

TLS 1.3 預設:
- ECDHE(橢圓曲線 Diffie-Hellman 金鑰交換)
- ECDSA(橢圓曲線數位簽章)

範例(Python):
from cryptography.hazmat.primitives.asymmetric import ec

# 產生 ECC 金鑰對
private_key = ec.generate_private_key(ec.SECP256R1())
public_key = private_key.public_key()

# 簽名
from cryptography.hazmat.primitives import hashes
message = b"Hello World"
signature = private_key.sign(
    message,
    ec.ECDSA(hashes.SHA256())
)

# 驗證
try:
    public_key.verify(
        signature,
        message,
        ec.ECDSA(hashes.SHA256())
    )
    print("簽章有效")
except:
    print("簽章無效")

ChaCha20-Poly1305(對稱加密)

ChaCha20-Poly1305

特性:
- 串流加密(Stream Cipher)
- Google 開發
- TLS 1.3 支援

優點:
✅ 不需要硬體加速(純軟體快)
✅ 適合行動裝置
✅ 支援驗證(Poly1305)

使用場景:
- 沒有 AES-NI 硬體加速時
- 行動裝置
- IoT 設備

速度對比:
無硬體加速:
- ChaCha20:✅ 快
- AES:❌ 慢

有硬體加速(AES-NI):
- AES:✅ 更快
- ChaCha20:✅ 快

TLS 1.3 預設套件:
1. TLS_AES_128_GCM_SHA256
2. TLS_AES_256_GCM_SHA384
3. TLS_CHACHA20_POLY1305_SHA256

🔐 完整的 TLS 加密流程範例

場景:Alice 訪問 https://bank.com

【第 1 步:TCP 連線】
Alice → bank.com(三次握手)

【第 2 步:TLS 握手 - ClientHello】
Alice → bank.com:
- TLS 版本:TLS 1.3
- 支援的加密套件:
  ├─ TLS_AES_256_GCM_SHA384
  ├─ TLS_CHACHA20_POLY1305_SHA256
  └─ TLS_AES_128_GCM_SHA256
- 隨機數:random_client

【第 3 步:TLS 握手 - ServerHello】
bank.com → Alice:
- 選擇的 TLS 版本:TLS 1.3
- 選擇的加密套件:TLS_AES_256_GCM_SHA384
- 隨機數:random_server
- 數位憑證 📜
- 伺服器公鑰(ECDSA P-256)

【第 4 步:憑證驗證】
Alice:
├─ 檢查憑證是否由可信任 CA 發行 ✅
├─ 檢查憑證是否過期 ✅
├─ 檢查網域名稱是否為 bank.com ✅
└─ 檢查憑證是否被撤銷 ✅

【第 5 步:金鑰交換(ECDHE)】
Alice:
1. 產生臨時 ECDHE 金鑰對
   - 私鑰:ecdhe_private_alice
   - 公鑰:ecdhe_public_alice

2. 發送 ecdhe_public_alice 給伺服器

bank.com:
1. 產生臨時 ECDHE 金鑰對
   - 私鑰:ecdhe_private_server
   - 公鑰:ecdhe_public_server

2. 用 ecdhe_private_server 和 ecdhe_public_alice 計算共享密鑰

Alice:
1. 用 ecdhe_private_alice 和 ecdhe_public_server 計算共享密鑰

結果:
雙方計算出相同的共享密鑰(但沒有在網路上傳輸)

【第 6 步:生成會話金鑰】
共享密鑰 + random_client + random_server
→ 產生會話金鑰(Session Key)
→ AES-256-GCM 金鑰

【第 7 步:加密通訊】
Alice → bank.com:
明文:{"username": "alice", "password": "123456"}
↓ AES-256-GCM 加密
密文:X7jKp9qRsD...

bank.com → Alice:
明文:{"status": "success", "token": "..."}
↓ AES-256-GCM 加密
密文:mN3vB8cT...

【安全特性】:
1. 前向保密(Perfect Forward Secrecy)
   - 每次連線用不同的臨時金鑰
   - 即使私鑰洩露,過去的通訊仍安全

2. 加密
   - 所有資料用 AES-256-GCM 加密
   - 中間人看不懂

3. 完整性
   - GCM 模式提供驗證
   - 無法竄改

4. 身份驗證
   - 數位憑證證明伺服器身份

🎓 面試常見問題

Q1:對稱加密和非對稱加密有什麼差異?

A:金鑰數量和用途不同

對稱加密:
- 金鑰:1 把(加密和解密用同一把)
- 速度:快 ✅
- 用途:加密大量資料
- 問題:金鑰分發困難
- 範例:AES, ChaCha20

比喻:保險箱(同一把鑰匙上鎖和開鎖)

非對稱加密:
- 金鑰:2 把(公鑰 + 私鑰)
- 速度:慢 ❌
- 用途:金鑰交換、數位簽章
- 優點:金鑰分發容易(公鑰公開)
- 範例:RSA, ECC

比喻:郵箱(任何人能投信,只有你能打開)

TLS 如何使用:
1. 非對稱加密:交換會話金鑰(握手階段)
2. 對稱加密:加密資料(傳輸階段)

→ 結合兩者優點!

Q2:TLS 1.2 和 TLS 1.3 有什麼差異?

A:TLS 1.3 更快、更安全

主要差異:

1. 握手速度
TLS 1.2:2-RTT(兩次往返)
TLS 1.3:1-RTT(一次往返)
→ TLS 1.3 快一倍

TLS 1.2 握手:
ClientHello →
            ← ServerHello + Certificate
ClientKeyExchange →
            ← Finished
Finished →
(需要 2 個往返)

TLS 1.3 握手:
ClientHello + KeyShare →
            ← ServerHello + Certificate + Finished
Finished →
(只需 1 個往返)

2. 0-RTT(Zero Round Trip Time)
TLS 1.3 支援 0-RTT 恢復會話
→ 完全沒有額外延遲

3. 移除不安全的加密套件
TLS 1.2:支援數十種加密套件(有些不安全)
TLS 1.3:只支援 5 種安全的加密套件
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_CCM_SHA256
- TLS_AES_128_CCM_8_SHA256

移除的不安全特性:
❌ RSA 金鑰交換(不支援前向保密)
❌ CBC 模式(有漏洞)
❌ RC4, MD5, SHA-1(不安全)
❌ 壓縮(CRIME 攻擊)
❌ 重新協商(漏洞)

4. 前向保密(強制)
TLS 1.2:可選(DHE/ECDHE)
TLS 1.3:強制(ECDHE)

5. 加密握手訊息
TLS 1.2:握手訊息大多明文
TLS 1.3:握手訊息加密(除了 ClientHello/ServerHello)

結論:
✅ TLS 1.3 更快(1-RTT vs 2-RTT)
✅ TLS 1.3 更安全(移除不安全特性)
✅ TLS 1.3 更簡單(更少選項)
✅ 建議使用 TLS 1.3(向下相容 TLS 1.2)

Q3:什麼是前向保密(Perfect Forward Secrecy)?

A:即使私鑰洩露,過去的通訊仍然安全

傳統方式(RSA 金鑰交換):
1. 客戶端產生會話金鑰
2. 用伺服器的公鑰(RSA)加密會話金鑰
3. 發送給伺服器
4. 伺服器用私鑰解密,取得會話金鑰

問題:
如果駭客:
- 記錄所有加密流量
- 未來取得伺服器私鑰
→ 可以解密所有過去的通訊!

範例:
2020 年:駭客記錄你的銀行交易(加密的)
2025 年:駭客取得銀行私鑰
→ 駭客解密 2020 年的交易記錄
→ 看到你的帳號密碼!

前向保密(ECDHE):
1. 雙方各自產生「臨時」金鑰對
2. 交換公鑰
3. 各自計算出相同的共享密鑰
4. 用完就銷毀臨時私鑰

過程:
Alice:
- 臨時私鑰:ecdhe_private_alice
- 臨時公鑰:ecdhe_public_alice

Bob:
- 臨時私鑰:ecdhe_private_bob
- 臨時公鑰:ecdhe_public_bob

交換:
Alice → Bob:ecdhe_public_alice
Bob → Alice:ecdhe_public_bob

計算:
Alice:用 ecdhe_private_alice + ecdhe_public_bob → 共享密鑰
Bob:用 ecdhe_private_bob + ecdhe_public_alice → 共享密鑰
→ 相同的共享密鑰!

關鍵:
- 共享密鑰從未在網路上傳輸
- 臨時私鑰用完就銷毀
- 每次連線用不同的臨時金鑰

安全性:
即使駭客:
- 記錄所有流量
- 未來取得伺服器長期私鑰
→ 仍然無法解密過去的通訊
→ 因為臨時私鑰已經銷毀了

TLS 支援:
- TLS 1.2:可選(DHE/ECDHE)
- TLS 1.3:強制(ECDHE)

實務:
現代網站應該啟用前向保密
檢查方法:
- 查看 TLS 加密套件
- 包含 DHE 或 ECDHE 即支援前向保密

Q4:HTTPS 可以防止中間人攻擊嗎?

A:可以,但有條件

中間人攻擊(MITM):
攻擊者位於客戶端和伺服器之間
攔截並可能修改通訊

場景:
你 ⇄ 駭客 ⇄ 銀行
    ↑      ↑
  攔截   攔截

HTTPS 如何防止:

1. 加密
   - 所有資料加密
   - 駭客看到的是亂碼
   ✅ 無法讀取內容

2. 數位憑證
   - 伺服器提供憑證
   - 由可信任 CA 簽發
   - 客戶端驗證憑證

假設駭客想 MITM:
你 ⇄ 駭客(假裝是銀行)⇄ 銀行

駭客提供假憑證:
你的瀏覽器:
├─ 檢查憑證...
├─ CA 不可信任 ❌
├─ 網域名稱不符 ❌
└─ 憑證無效 ❌

瀏覽器警告:⚠️
「您的連線不是私人連線」
「可能有人正試圖竊取您的資訊」

✅ 攻擊被發現

但有例外:

1. 用戶忽略警告
   - 用戶點「繼續前往」
   - HTTPS 無法保護
   → 教育用戶不要忽略警告

2. 安裝惡意根憑證
   - 駭客誘騙用戶安裝「根憑證」
   - 駭客可以簽發任何憑證
   - 瀏覽器會信任
   → 企業環境常見(合法監控)

3. CA 被攻破
   - 極罕見
   - CA 簽發假憑證
   - 瀏覽器會信任
   → 憑證透明度(Certificate Transparency)可發現

4. SSL Stripping
   - 攻擊者降級到 HTTP
   - 用戶訪問 http:// 被攔截
   → HSTS(HTTP Strict Transport Security)可防止

結論:
✅ HTTPS 可以防止 MITM(正常情況)
⚠️ 需要用戶配合(不忽略警告)
⚠️ 需要正確設定(HSTS、憑證釘選)

Q5:為什麼需要 CA(憑證機構)?

A:驗證伺服器身份,建立信任鏈

問題:
沒有 CA 的世界:

你訪問 https://bank.com
bank.com:這是我的公鑰 + 我說我是 bank.com
你:我怎麼知道你真的是 bank.com?

駭客也可以:
駭客:這是我的公鑰 + 我說我是 bank.com
你:無法分辨真假 ❌

解決方案:第三方驗證(CA)

CA(憑證機構)的角色:

1. 驗證身份
   bank.com 向 CA 申請憑證
   CA 驗證:
   ├─ DNS 記錄(你真的擁有 bank.com?)
   ├─ 檔案驗證(在伺服器放特定檔案)
   └─ 域名擁有權證明

2. 簽發憑證
   CA 確認身份後
   → 用 CA 的私鑰簽署憑證
   → 發給 bank.com

3. 信任鏈
   瀏覽器:
   ├─ 內建可信任的根 CA 清單
   ├─ bank.com 的憑證由 CA 簽發
   ├─ 驗證 CA 的簽章 ✅
   └─ 信任 bank.com

流程:
【申請憑證】
bank.com → CA:我想要憑證

【驗證身份】
CA:證明你擁有 bank.com
bank.com:完成驗證

【簽發憑證】
CA:用 CA 私鑰簽署憑證 📜
CA → bank.com:這是你的憑證

【客戶端驗證】
你 → bank.com:請給我憑證
bank.com → 你:這是我的憑證

你的瀏覽器:
├─ 檢查憑證簽章
├─ 用 CA 公鑰驗證
├─ CA 是可信任的嗎?
│  └─ 檢查瀏覽器內建的根 CA 清單 ✅
└─ 信任這個憑證

信任鏈範例:
根 CA(DigiCert)
    ↓ 簽發
中繼 CA(DigiCert TLS RSA SHA256)
    ↓ 簽發
網站憑證(bank.com)

瀏覽器內建根 CA:
- DigiCert
- Let's Encrypt
- GlobalSign
- Comodo
- ...

優點:
✅ 建立信任鏈
✅ 驗證伺服器身份
✅ 防止偽裝

如果沒有 CA:
❌ 無法驗證身份
❌ 容易被釣魚
❌ HTTPS 形同虛設

自簽憑證(Self-Signed Certificate):
- 自己簽發的憑證(不透過 CA)
- 瀏覽器不信任(警告 ⚠️)
- 只適合開發測試
- 不適合正式環境

✅ 重點回顧

SSL/TLS 歷史:

  • SSL 2.0/3.0:已棄用
  • TLS 1.0/1.1:已棄用
  • TLS 1.2:目前廣泛使用
  • TLS 1.3:最新標準(更快、更安全)

兩種加密方式:

  • 對稱加密:快,適合大量資料(AES)
  • 非對稱加密:慢,適合金鑰交換(RSA, ECC)

TLS 混合加密:

  1. 非對稱加密:交換會話金鑰(握手)
  2. 對稱加密:傳輸資料(通訊)

常見演算法:

  • AES-256-GCM:對稱加密(最常用)
  • RSA-2048:非對稱加密(傳統)
  • ECDSA P-256:非對稱加密(現代)
  • ChaCha20-Poly1305:對稱加密(行動裝置)

TLS 1.3 優勢:

  • ✅ 更快(1-RTT vs 2-RTT)
  • ✅ 更安全(強制前向保密)
  • ✅ 更簡單(移除不安全選項)

前向保密(PFS):

  • 每次連線用臨時金鑰
  • 即使私鑰洩露,過去通訊仍安全

CA 的作用:

  • 驗證伺服器身份
  • 建立信任鏈
  • 防止偽裝攻擊

面試重點:

  • ✅ 對稱 vs 非對稱加密差異
  • ✅ TLS 如何結合兩者優點
  • ✅ TLS 1.3 的改進
  • ✅ 前向保密的重要性
  • ✅ CA 的作用

上一篇: 03-1. HTTPS 是什麼? 下一篇: 03-3. 數位憑證與 CA


最後更新:2025-01-06

0%