學習目標

  • 理解對稱式加密和非對稱式加密的原理和差異
  • 掌握雜湊函數的特性和應用
  • 理解數位簽章的運作機制
  • 了解數位憑證的作用和運作方式
  • 理解這些技術如何整合應用

1. 加密的基本概念

1.1 為什麼需要加密?

在網路傳輸中,資料可能被竊聽、篡改或偽造,因此需要加密來保護資料的: - 機密性 (Confidentiality): 只有授權的人可以讀取 - 完整性 (Integrity): 確保資料未被篡改 - 身份認證 (Authentication): 確認資料來源的身份

1.2 加密的基本過程

明文 (Plaintext) → [加密] → 密文 (Ciphertext) → [傳輸] → [解密] → 明文

2. 對稱式加密 (Symmetric Encryption)

2.1 定義

對稱式加密是指加密和解密使用同一把金鑰(共享金鑰,Shared Key)。

2.2 運作方式

傳送方: 明文 + 金鑰 → 加密 → 密文
接收方: 密文 + 金鑰 → 解密 → 明文

2.3 範例

加密演算法: AES (Advanced Encryption Standard)

明文: "HELLO"
金鑰: "SECRET"
密文: "XJ9K2" (範例,實際更複雜)

2.4 優點

  • 速度快: 加密和解密速度快,效率高
  • 適合大量資料: 適合加密大量資料
  • 資源消耗低: 計算資源需求較少

2.5 缺點

  • 金鑰配送困難: 如何安全地將金鑰傳送給接收方?
  • 金鑰管理複雜: 每對通訊者需要不同的金鑰
  • 金鑰洩露風險: 如果金鑰被竊取,安全性即被破壞

2.6 常見演算法

  • AES: 目前最常用的對稱式加密演算法
  • DES: 已過時,不安全
  • 3DES: DES 的改進版,但仍不如 AES

3. 非對稱式加密 (Asymmetric Encryption)

3.1 定義

非對稱式加密使用一對公鑰 (Public Key)私鑰 (Private Key): - 公鑰: 可以對外公開,用於加密 - 私鑰: 由本人保管,用於解密

3.2 運作方式

傳送方: 明文 + 接收方的公鑰 → 加密 → 密文
接收方: 密文 + 自己的私鑰 → 解密 → 明文

3.3 金鑰對的特性

  • 數學相關: 公鑰和私鑰是數學相關的
  • 單向性: 從公鑰無法推導出私鑰(在合理時間內)
  • 對稱性: 用公鑰加密的資料只能用對應的私鑰解密

3.4 優點

  • 解決金鑰配送問題: 公鑰可以公開,不需要秘密傳送
  • 安全性高: 基於數學難題(如大數分解),安全性高
  • 數位簽章: 可以用於實現數位簽章

3.5 缺點

  • 速度慢: 加密和解密速度較慢
  • 不適合大量資料: 通常只用於加密小量資料(如金鑰)
  • 計算資源需求高: 需要較多的計算資源

3.6 常見演算法

  • RSA: 最常用的非對稱式加密演算法
  • ECC (Elliptic Curve Cryptography): 較新的演算法,效率更高

3.7 實際應用

非對稱式加密通常用於: - 加密對稱式金鑰: 用非對稱式加密傳送對稱式金鑰 - 數位簽章: 用私鑰簽章,用公鑰驗證

4. 混合加密系統

4.1 為什麼需要混合?

結合兩種加密方式的優點: - 用非對稱式加密傳送對稱式金鑰(解決金鑰配送問題) - 用對稱式加密加密實際資料(提高效率)

4.2 運作流程

  1. 產生對稱式金鑰: 傳送方產生一個隨機的對稱式金鑰
  2. 加密對稱式金鑰: 用接收方的公鑰加密對稱式金鑰
  3. 加密資料: 用對稱式金鑰加密實際資料
  4. 傳送: 傳送加密的對稱式金鑰和加密的資料
  5. 解密對稱式金鑰: 接收方用私鑰解密對稱式金鑰
  6. 解密資料: 用對稱式金鑰解密資料

4.3 範例:HTTPS

HTTPS 使用混合加密: - 握手階段: 使用非對稱式加密(RSA)傳送對稱式金鑰 - 資料傳輸: 使用對稱式加密(AES)加密實際資料

5. 雜湊函數 (Hash Function)

5.1 定義

雜湊函數將任意長度的輸入資料,轉換成固定長度的輸出值(雜湊值,Hash Value)。

5.2 特性

1. 單向性(不可逆)

  • 從雜湊值無法推導出原始資料
  • 這是單向函數

2. 雪崩效應 (Avalanche Effect)

  • 輸入的小改變會導致輸出的巨大改變
  • 即使只改變一個位元,雜湊值也會完全不同

範例:

輸入: "Hello"
雜湊: a8f5f167f44f4964e6c998dee827110c

輸入: "hello" (只改變大小寫)
雜湊: 5d41402abc4b2a76b9719d911017c592 (完全不同!)

3. 抗碰撞性 (Collision Resistance)

  • 難以找到兩個不同的輸入有相同的輸出
  • 雖然理論上可能存在碰撞,但實際上很難找到

5.3 常見演算法

  • MD5: 已不安全,不應使用
  • SHA-1: 已不安全,不應使用
  • SHA-256: 目前推薦使用(SHA-2 系列)
  • SHA-3: 最新的標準

5.4 應用

1. 資料完整性驗證

傳送方: 資料 → 雜湊 → 雜湊值
       傳送: 資料 + 雜湊值

接收方: 接收資料 → 重新計算雜湊 → 比較雜湊值
        如果相同 → 資料完整
        如果不同 → 資料被篡改

2. 密碼儲存

  • 不儲存明文密碼
  • 儲存密碼的雜湊值
  • 登入時比較雜湊值

3. 數位簽章

  • 對訊息摘要(雜湊值)進行簽章
  • 而不是對整個訊息簽章(提高效率)

6. 數位簽章 (Digital Signature)

6.1 目的

數位簽章提供: - 身份認證 (Authentication): 確認資料來源的身份 - 完整性 (Integrity): 確保資料未被篡改 - 不可否認性 (Non-repudiation): 傳送方無法否認曾傳送過該資料

6.2 運作機制

步驟 1: 產生訊息摘要

傳送方對訊息內容進行雜湊運算,得到訊息摘要(雜湊值)。

訊息: "Hello, World!"
雜湊: 5eb63bbbe01eeed093cb22bb8f5acdc3 (MD5 範例)

步驟 2: 用私鑰加密摘要

傳送方用自己的私鑰對訊息摘要進行加密,產出數位簽章。

摘要 + 私鑰 → 加密 → 數位簽章

注意: 這裡的「加密」實際上是簽章運算,在 RSA 中,用私鑰加密等同於簽章。

步驟 3: 傳送訊息和簽章

傳送方將原始訊息數位簽章一起傳送給接收方。

傳送: 訊息 + 數位簽章

步驟 4: 接收方驗證

接收方收到訊息與簽章後:

  1. 用公鑰解密簽章: 用傳送方的公鑰對簽章進行解密,還原出原始摘要 A
  2. 重新計算雜湊: 對收到的訊息本身重新進行一次雜湊運算,得到摘要 B
  3. 比較摘要: 比較 A 和 B 是否相符 - 如果相符 → 簽章有效(訊息未被篡改,且確實來自傳送方) - 如果不符 → 簽章無效(訊息可能被篡改,或簽章是偽造的)

6.3 流程圖

傳送方:
訊息 → 雜湊 → 摘要
摘要 + 私鑰 → 簽章
傳送: 訊息 + 簽章

接收方:
簽章 + 公鑰 → 解密 → 摘要 A
訊息 → 雜湊 → 摘要 B
比較 A 和 B → 驗證結果

6.4 為什麼有效?

  • 私鑰保密: 只有傳送方有私鑰,可以產生有效的簽章
  • 公鑰公開: 任何人都可以用公鑰驗證簽章
  • 雜湊保證完整性: 如果訊息被篡改,雜湊值會改變,驗證會失敗

7. 數位憑證 (Digital Certificate)

7.1 問題:公鑰的信任問題

如何確認一個公鑰確實屬於某個人或組織? - 攻擊者可能偽造公鑰 - 如何信任收到的公鑰是真實的?

7.2 解決方案:數位憑證

數位憑證將一個公鑰與一個實體(如個人、網站)的身分綁定,並由受信任的第三方機構簽章。

7.3 憑證的組成

數位憑證包含: - 持有者的身分資訊: 姓名、組織、網域名稱等 - 持有者的公鑰: 要綁定的公鑰 - 憑證頒發機構 (CA) 的資訊: 誰發行了這個憑證 - CA 的數位簽章: 由 CA 用其私鑰對憑證內容進行簽章 - 有效期限: 憑證的有效期間 - 序號: 憑證的唯一識別碼

7.4 運作方式

1. 申請憑證

實體向 CA (Certificate Authority) 申請憑證: - 提供身分證明 - 提供自己的公鑰

2. CA 驗證和簽發

CA 驗證實體的身分後: - 建立憑證(包含實體資訊和公鑰) - 用 CA 的私鑰對憑證進行數位簽章 - 發行憑證

3. 使用憑證

當需要確認公鑰時: - 取得該實體的數位憑證 - 用 CA 的公鑰驗證憑證的簽章 - 如果簽章有效,則信任憑證中的公鑰

7.5 信任鏈 (Chain of Trust)

根 CA (Root CA)
    ↓ (簽章)
中級 CA (Intermediate CA)
    ↓ (簽章)
網站憑證 (Website Certificate)
  • 根 CA: 最受信任的 CA,其公鑰預先安裝在系統中
  • 中級 CA: 由根 CA 簽章的 CA
  • 網站憑證: 由中級 CA 簽章的實際使用憑證

7.6 實際應用:HTTPS

當瀏覽器連接到 HTTPS 網站時: 1. 網站傳送其數位憑證 2. 瀏覽器驗證憑證的簽章(使用 CA 的公鑰) 3. 如果驗證通過,瀏覽器信任網站的身份 4. 使用憑證中的公鑰建立安全連線

8. 技術整合應用

8.1 HTTPS 的完整流程

  1. 憑證驗證: 使用數位憑證驗證網站身份
  2. 金鑰交換: 使用非對稱式加密(RSA)傳送對稱式金鑰
  3. 資料加密: 使用對稱式加密(AES)加密實際資料
  4. 完整性保護: 使用雜湊函數(HMAC)確保資料完整性

8.2 電子郵件安全

  • 加密: 使用混合加密保護郵件內容
  • 簽章: 使用數位簽章驗證發件人身份
  • 憑證: 使用數位憑證管理公鑰

9. 練習題

練習題 1

請說明對稱式加密和非對稱式加密的差異。

參考答案: - 對稱式加密: 加密和解密使用同一把金鑰,速度快但金鑰配送困難 - 非對稱式加密: 使用公鑰和私鑰配對,解決金鑰配送問題但速度較慢

練習題 2

請說明數位簽章的運作機制。

參考答案: 1. 傳送方對訊息進行雜湊,得到摘要 2. 用私鑰對摘要加密,產生簽章 3. 傳送訊息和簽章 4. 接收方用公鑰解密簽章得到摘要 A 5. 對訊息重新計算雜湊得到摘要 B 6. 比較 A 和 B,如果相同則簽章有效

練習題 3

為什麼需要數位憑證?

參考答案: 數位憑證解決公鑰的信任問題。它將公鑰與實體身份綁定,並由受信任的 CA 簽章。使用者可以透過驗證 CA 的簽章來確認憑證的真實性,從而信任憑證中的公鑰。

10. 考試重點提醒

  1. 兩種加密方式: 理解對稱式和非對稱式加密的原理、優缺點
  2. 雜湊函數: 理解單向性、雪崩效應、抗碰撞性
  3. 數位簽章: 詳細掌握運作機制的每個步驟
  4. 數位憑證: 理解為什麼需要憑證和信任鏈的概念
  5. 技術整合: 了解這些技術如何整合應用(如 HTTPS)