密碼學 - Galois Counter Mode
在資訊安全的領域中,我們不僅僅需要保護資料的「機密性」,確保只有授權方能讀取;同時也需要保證資料的「完整性」與「真實性」,確保資料在傳輸或儲存過程中未被竄改。Galois Counter Mode (GCM) 是一種先進的區塊加密模式,它能一併滿足這三大需求,提供所謂的「認證加密」(Authenticated Encryption)。
本文將介紹 GCM 的歷史背景、核心組成、運作原理以及其在現代密碼學中的重要性。
GCM 的歷史與目的
GCM 的設計初衷是為了強化傳統加密模式(如 CBC 或 CTR)的安全性。傳統上,加密和認證通常是分開處理的,但這可能導致實作上的複雜性與潛在漏洞。
GCM 的概念源於 2001 年的一篇學術論文,其核心思想是將加密與訊息認證碼 (MAC) 的產生結合在一起,提供一種整合性的安全方案,稱為「認證加密與關聯資料」(Authenticated Encryption with Associated Data, AEAD)。這種模式不僅會對訊息本身加密,還能對一些無需加密但需要保護其完整性的「關聯資料」(例如:標頭資訊)進行驗證。
由於其高效能與高安全性的特點,GCM 已被美國國家標準暨技術研究院 (NIST) 等權威機構納為標準,並廣泛應用於各種網路通訊協定與安全標準中。
GCM 的核心組成
GCM 的運作主要依賴以下幾個關鍵元素:
- IV (Nonce - Number used once): 初始化向量,或稱為「僅用一次的數值」。這是一個在每次加密操作中都必須使用不同值的隨機數。在 GCM 中,為了達到最佳效能,建議使用 96 位元的 IV。
- AAD (Additional Authenticated Data): 額外認證資料。這部分的資料不會被加密,但會納入完整性驗證的計算中。這對於保護那些需要保持明文形式但又不能被竄改的元數據(如封包標頭)非常有用。
- Plaintext (P): 也就是需要加密的明文資料。
- Ciphertext ©: 明文經過加密後產生的密文。
- Authentication Tag (T): 認證標籤。這是一個固定長度的數值(常見為 128 位元),功能類似於訊息認證碼 (MAC)。接收方會使用相同的金鑰、IV、AAD 與收到的密文重新計算一次 Tag,並與傳送方附加的 Tag 進行比對。若比對成功,則代表資料來源正確且內容未被竄改。
GCM 的運作原理
從 GCM 的全名「伽羅瓦/計數器模式」可以看出其運作的兩大核心:
- 計數器模式 (Counter Mode, CTR): GCM 的加密部分採用了 CTR 模式。它將 IV 作為計數器的起始值,透過區塊加密演算法(如 AES)產生一組不重複的「金鑰流」(Keystream)。最後,將此金鑰流與明文進行 XOR 運算,即可得到密文。這種方式的優點是加密與解密過程完全相同,且易於平行化處理,速度非常快。
- 伽羅瓦域乘法 (GHASH): 認證部分則是透過一個名為 GHASH 的特殊雜湊函式來完成。GHASH 會對 AAD 與密文進行一系列基於「伽羅瓦域」(Galois Field) 上的乘法運算,最終產生一個雜湊值。這個雜湊值再經過一次加密,就形成了最終的認證標籤 (Tag)。
簡單來說,GCM 巧妙地將 CTR 模式的高效加密與 GHASH 的高速認證結合在一起,使用單一金鑰就能同時完成加密與完整性保護兩項任務。
結論
Galois Counter Mode (GCM) 憑藉其高效能、可平行化處理以及同時提供資料機密性、完整性與真實性的強大能力,已成為現代密碼學應用的主流選擇之一。從 TLS 1.2/1.3 網路安全協定到各種儲存加密標準,GCM 都扮演著不可或缺的角色,為我們的數位世界提供了堅實的安全保障。
參考資料
- Wikipedia - Galois/Counter Mode
- NIST - Recommendation for Block Cipher Modes of Operation