36. 加密與解密使用不同的金鑰,稱為公開金鑰演算法,或非對稱金鑰演算法,下列密碼演算法中,何者屬於此種加密演算法?
(A) RSA
(B) DES
(C) AES
(D) Blowfish
統計: A(87), B(13), C(15), D(2), E(0) #3671722
詳解 (共 1 筆)
這題的正確答案是 (A) RSA。
解析
題目詢問的是「加密與解密使用不同金鑰」的演算法,也就是 非對稱式加密 (Asymmetric Encryption) 或稱 公開金鑰加密 (Public Key Encryption)。
-
(A) RSA (Rivest–Shamir–Adleman):
-
類型: 非對稱式 (Asymmetric)。
-
原理: 基於大數質因數分解的數學難題。
-
特性: 擁有一把「公鑰 (Public Key)」和一把「私鑰 (Private Key)」。公鑰加密的資料,只有私鑰能解開;反之亦然。這正是題目描述的特性。
-
-
(B) DES (Data Encryption Standard):
-
類型: 對稱式 (Symmetric)。
-
特性: 加密與解密使用同一把金鑰。雖然曾經是標準,但因金鑰長度過短(56 bits),現在已被認為不安全。
-
-
(C) AES (Advanced Encryption Standard):
-
類型: 對稱式 (Symmetric)。
-
特性: 目前最廣泛使用的加密標準,用來取代 DES。加密解密使用同一把金鑰,速度快且安全性高。
-
-
(D) Blowfish:
-
類型: 對稱式 (Symmetric)。
-
特性: 由 Bruce Schneier 設計的區塊加密演算法,也是使用單一金鑰。
-
快速記憶表
| 演算法分類 | 特性 | 常見演算法 | 應用場景 |
| 非對稱式 (Asymmetric) | 兩把鑰匙 (公鑰/私鑰) | RSA, ECC, ElGamal | 數位簽章、金鑰交換 (Key Exchange)、HTTPS 憑證 |
| 對稱式 (Symmetric) | 一把鑰匙 (共用金鑰) | AES, DES, 3DES, Blowfish, RC4 | 大量資料加密 (因為速度快) |
沒錯,您的觀念很正確。在對稱式加密(Symmetric Encryption)的領域中,演算法主要分為兩大類:
-
區塊加密 (Block Cipher):Blowfish、AES 屬於這一類。
-
串流加密 (Stream Cipher):這是相對的另一種概念。
以下幫您整理這兩者的差異,以及為什麼現代加密常把兩者混在一起講。
1. 兩者的核心差異:運作邏輯
這兩種加密方式最大的差別在於**「處理資料的單位」**。
A. 區塊加密 (Block Cipher) - 如 Blowfish, AES
-
運作方式:
它不看單一個 bit,而是把資料切成固定大小的**「塊 (Block)」**(例如 Blowfish 是 64-bit 一塊,AES 是 128-bit 一塊)。
演算法一次對這一個「塊」進行複雜的數學運算打亂。
-
生活比喻:
「裝箱貨運」。
你要搬家(傳輸資料),必須把東西全部裝進標準尺寸的箱子裡(Block)。如果東西裝不滿一個箱子,你必須塞報紙或氣泡紙把它填滿(這叫做 Padding)。必須湊滿一箱才能封箱運送。
-
缺點:
需要處理「填補 (Padding)」的問題,且如果模式沒選好(如 ECB 模式),相同的明文塊會產出相同的密文塊,容易被看穿圖形。
B. 串流加密 (Stream Cipher) - 如 RC4, ChaCha20
-
運作方式:
它會產生一道無限長的隨機亂數流(Keystream),然後將明文一個 bit 接一個 bit(或 byte)與這道亂數流進行運算(通常是 XOR)。
-
生活比喻:
「流水線噴漆」。
物品放在輸送帶上(資料流),噴漆槍(Keystream)源源不絕地噴出顏料。東西來一個就噴一個,不需要等湊滿一箱,隨時來隨時處理。
-
優點:
速度極快,不需要「填補 (Padding)」,非常適合即時通訊、串流影片(因為不用等湊齊一個 Block)。
2. 超級比一比:Block vs. Stream
| 特性 | 區塊加密 (Block Cipher) | 串流加密 (Stream Cipher) |
| 代表選手 | AES, Blowfish, DES, 3DES | ChaCha20, RC4 (已破解), Salsa20 |
| 處理單位 | 固定區塊 (64/128 bits) | Bit 或 Byte (連續流動) |
| 填補 (Padding) | 需要 (若資料長度不夠) | 不需要 |
| 程式實作 | 較複雜 (需考慮模式與填補) | 較簡單 (速度通常較快) |
| 抗錯誤性 | 一個 bit 壞掉可能導致整個區塊解不開 | 一個 bit 壞掉通常只影響該 bit |
| 主要應用 | 檔案加密、硬碟加密、資料庫 | 網頁傳輸 (HTTPS)、手機通訊 |
3. 現實世界的「混合技」:為什麼現在很少聽到純串流加密?
您可能會好奇:「既然串流加密速度快又不用填補,為什麼大家還是在用 AES(區塊加密)?」
因為現代技術把 AES 變成了串流加密來用!
這就是所謂的 「加密模式 (Mode of Operation)」。
最現代化的標準做法是使用 AES 搭配 GCM 模式 或 CTR 模式。
-
AES-CTR (Counter Mode):
它不直接加密明文,而是用 AES 演算法去加密一個「計數器 (Counter)」,產生出一串亂數流,然後再跟明文做 XOR。
-
結果:
雖然骨子裡是 AES (Block Cipher),但行為表現完全變成了 Stream Cipher(不需要 Padding、可平行運算、速度快)。
4. 總結您的疑問
-
Blowfish 是區塊加密嗎?
是,它是傳統的區塊加密。
-
相對還有什麼?
相對的是「串流加密」。
-
現代主流是誰?
-
AES-GCM:這是目前最主流的選擇。它用 AES(區塊)的核心,跑出了串流的效果,同時兼具加密與驗證功能。
-
ChaCha20:這是純種的「串流加密」現代霸主。Google 非常愛用(因為在沒有硬體加速的手機上,它比 AES 快)。
-