COMIC CLASSROOM

安全基礎第 2 / 9 課

AES 漫畫小教室:五張圖看懂現代加密

這篇先把 AES 講成一套固定的加密工法:資料被切成區塊,經過一輪一輪的替換、搬移、混合與加鑰,最後變成外人看不懂的密文。讀完會知道 AES 為什麼仍是保護大量資料的核心工具。

8 分鐘

先把 AES 想成一套固定的加密工法

這篇先不急著背 SubBytes、ShiftRows 或 MixColumns。你可以先把 AES 想成一間規矩很嚴的加密工廠:資料進來後,會被切成固定大小的區塊,照著一輪一輪的工序處理,最後變成外人看不懂的密文。

每張漫畫都在回答一個很實際的問題:資料為什麼要被打散、混合、加上金鑰?為什麼同一套流程能讓加密結果很難被猜出?看懂這條工序,再回頭看演算法名詞會輕鬆很多。

讀的時候先抓住三件事:AES 保護大量資料,金鑰決定誰能解開,PQC 改變的是公開金鑰世界,不是把 AES 這種對稱式加密整個換掉。

資料寫進 SSD 或穿過 VPN 時,即使有人取得其中的位元,也不應直接讀出內容。AES 是處理這類資料機密性的對稱式加密演算法。手機、瀏覽器與 Wi-Fi 等系統,也可能在不同層級使用 AES 或以 AES 為基礎的模式。至於資料由誰發布、有沒有被改動,還需要相應的認證與信任檢查。

AES 是區塊密碼(block cipher),每次處理 128-bit 資料,也就是 16 bytes。它把資料排成 4x4 狀態矩陣(state),逐輪替換、移位、混合,再和輪金鑰做 XOR。明文(plaintext)因而轉成密文(ciphertext)。下面先跟著這些 byte 看每一步做了什麼,再操作文末模型核對結果。想看 RTL 與硬體架構細節,可接著閱讀 AES-128 RTL 初學者圖解。

1. 為什麼需要 AES?

加密要解決的第一個問題很直覺:如果資料以 plaintext 形式傳輸或儲存,攻擊者只要攔截或讀取到資料,就能直接理解內容;如果加密太弱,攻擊者可能用分析、暴力嘗試或已知弱點把它打開。好的加密則讓資料即使被攔截,也呈現為沒有正確 key 就無法有效理解的 ciphertext。

AES 是現代對稱式加密的代表。所謂對稱式,是指加密與解密使用同一把 secret key,或至少使用由同一把 secret key 派生出的 key material。這和 RSA、ECC、PQC 這類 public-key cryptography 的使用情境不同:public-key 常用於 key exchange、authentication、digital signature;AES 則非常適合大量資料的高速加密。

AES 是 block cipher,標準 block size 是 128-bit,也就是 16 bytes。AES-128、AES-192、AES-256 的差異在 key length,不在 block size。AES-256 使用 256-bit key,每次仍處理 128-bit block,沒有把區塊加長成 256 bits。

AES 漫畫小教室第一篇:從 Enigma 到現代 AES,理解為什麼需要強加密
圖 1:AES 的核心角色,是把可讀的 plaintext 透過 secret key 和標準演算法轉成 ciphertext,讓沒有 key 的人無法有效讀取。

圖中提到 Enigma,是為了說明加密在歷史上的重要性,而不是說 Enigma 和 AES 的設計相同。Enigma 是機械式密碼機,AES 則是公開、標準化、可分析、可驗證、可高效實作的現代 block cipher。

AES 的狀態、輪次與金鑰排程都有明確規則,也有公開 test vector 可供核對。硬體工程師可以據此安排資料路徑、控制與驗證。不過,符合一組 test vector 只證明該組運算相符;formal check、side-channel hardening 與 FIPS 驗證各有額外要求,不能由加密結果正確直接推得。

2. AES 如何運作:Key Expansion、SubBytes、ShiftRows

AES 先把 128-bit block 排成 16 bytes 的 state,通常以 4x4 matrix 來理解。初學者最容易在 row/column、byte order、state mapping 上出錯,所以在記公式之前,先把 state 當成真正的資料結構看懂。

Key Expansion 會把原始 key 展開成每個 round 需要的 round key。以 AES-128 為例,會有初始 AddRoundKey,加上 10 個 round 所需的 key material。硬體實作時,可以一次預先展開 round keys,也可以 on-the-fly 產生;前者可能節省 latency,後者可能節省面積,取捨取決於吞吐量、功耗與控制流程。

SubBytes 是 byte-level substitution。每個 byte 都會經過 S-box lookup,被替換成另一個 byte。它是 AES 的主要非線性來源,負責讓輸入與輸出之間不是簡單線性關係。

ShiftRows 則是把 state 的每一列依不同 offset 往左移。它本身不改變 byte value,而是改變 byte 的位置,讓後面的 MixColumns 能把資料跨欄擴散。可以把 SubBytes 想成「改值」,ShiftRows 想成「換位置」。

AES 漫畫小教室第二篇:Key Expansion、SubBytes 與 ShiftRows
圖 2:AES round 不是一個神祕動作,而是由 key schedule、S-box substitution、row shifting 等規律步驟組成。

映射到 RTL 時,這些步驟通常會分成 key schedule、S-box、state register、row shifter 與控制 FSM。先決定 state layout 與 round counter,再定義資料和輪金鑰何時有效、何時被接收。這些時間關係若沒對齊,單獨正確的模組也可能組成錯誤結果。

3. MixColumns:AES 最容易卡住的一步

MixColumns 常讓初學者覺得難,因為它看起來像矩陣乘法,但又不是一般整數乘法。它一次處理 state 的一個 column,也就是 4 bytes;每個 column 會乘上一個固定 4x4 matrix,輸出新的 4 bytes。

這裡的 02、03、01 表示 AES finite field GF(2^8) 裡的常數,不能當成普通十進位係數。實作上,這些乘法可以用 XOR、shift 與條件 reduction 完成,不一定需要一般乘法器。這也是 AES 能在硬體裡做得很快、很規律的原因之一。

MixColumns 的目的叫 diffusion。也就是讓一個 byte 的影響擴散到多個 byte。SubBytes 提供 nonlinearity,ShiftRows 把 byte 移到不同位置,MixColumns 再把同一欄的 4 bytes 混合。多個 round 重複後,輸入的一點改變就會擴散到整個 state。

AES 漫畫小教室第三篇:MixColumns 如何用固定矩陣混合每一欄的 4 bytes
圖 3:MixColumns 的閱讀重點是「同一欄 4 bytes」乘上「固定矩陣」,產生新的 4-byte column。

讀 MixColumns 的公式時,先固定一欄,追蹤四個輸入 byte 如何參與每個輸出。每欄使用同一個矩陣。接著查看 02 × d4、03 × bf 這類 finite-field 運算,分清楚有限體乘法與普通整數乘法。文末的逐步模型可讓你停在 MixColumns 前後,比較同一欄的實際值。

4. AddRoundKey 與 AES round 結構

AddRoundKey 是把 state 和 round key 做 XOR。看起來它是最簡單的一步,但它是把 secret key material 注入 state 的關鍵。沒有 AddRoundKey,前面的替換、移位、混合就只是公開的資料變換;有了 round key,整個 transformation 才和 secret key 綁在一起。

AES-128 的高階流程可以簡化成:

Round 0     = AddRoundKey
Round 1~9   = SubBytes + ShiftRows + MixColumns + AddRoundKey
Round 10    = SubBytes + ShiftRows + AddRoundKey

AES 標準規定最後一輪沒有 MixColumns,圖中保留了這個安排。做 RTL 或測試向量對照時,要依照這份 round schedule;若最後一輪照搬前九輪,結果就會出錯。

AES 漫畫小教室第四篇:AddRoundKey 與 AES 加解密 round 結構
圖 4:AddRoundKey 用 XOR 把 round key 加進 state;AES-128 的最後一輪不包含 MixColumns。

解密使用對應的 inverse operations 和 round keys,按正確順序把 ciphertext 還原成 plaintext,不必逐一猜原文。AES 因而是 keyed permutation:有正確 key 與正確流程時可逆;沒有 key 時,攻擊者應難以有效還原內容。

硬體設計上,AddRoundKey 通常 gate cost 不高,因為主要是 XOR。真正要取捨的是 round key 什麼時候可用、state register 放在哪裡、S-box 如何實作、MixColumns 是否 combinational、以及整個 core 是 iterative、unrolled 還是 pipelined。

5. PQC 時代,AES 還重要嗎?

PQC 主要處理公開金鑰密碼面對的量子威脅,例如金鑰封裝、金鑰建立與數位簽章。AES 則是對稱式加密,負責大量資料的機密性。兩者處理的工作不同,因此導入 PQC 的系統仍可能使用 AES 加密內容。

實際系統裡,常見分工是:public-key 或 PQC 機制用來建立 session key、驗證身份、保護金鑰交換;AES 則用 session key 高速加密大量資料。TLS、VPN、儲存加密、韌體保護與安全通訊都常見這種分層。

量子電腦對對稱式密碼的影響,和對 RSA/ECC 這類 public-key 演算法不同。一般會用更保守的 key length,例如在高安全需求場景使用 AES-256。PQC 因而能和 AES 搭配,補上 public-key 那一側的抗量子安全,沒有取代 AES 的工作。

AES 漫畫小教室第五篇:AES 的用途,以及為什麼在 PQC 時代仍然重要
圖 5:PQC 負責 key exchange、authentication、digital signature 等 public-key 任務;AES 仍負責大量資料加密。

對 IC、firmware 與安全產品團隊來說,AES 仍然是必修基本功。它會出現在 secure boot、storage encryption、authenticated encryption mode、key wrapping、crypto accelerator、FIPS 140-3 module、測試向量與安全認證文件裡。

重點整理

AES 的標準把每一輪的資料變換定義清楚。回看這些步驟時,可以在文末模型逐項核對:

  • AES 固定處理 128-bit block,也就是 16 bytes。
  • 16 bytes 會排成 4x4 state。
  • Key Expansion 把原始 key 展開成 round keys。
  • SubBytes 提供非線性替換。
  • ShiftRows 改變 byte 位置。
  • MixColumns 在每一欄內做 diffusion。
  • AddRoundKey 用 XOR 把 round key 注入 state。
  • PQC 不會取代 AES;PQC 多半處理 public-key 任務,AES 繼續處理大量資料加密。

明天的安全系統不會在「AES 或 PQC」之間二選一,而是用 PQC 保護 key establishment 與 signature,用 AES 高效率保護大量資料。

References

  • NIST FIPS 197: Advanced Encryption Standard:AES 的官方標準文件。NIST 在 2023 年更新文件格式與說明,但沒有改變 AES 演算法本身。這份文件適合用來確認 block size、key length、round transformation、S-box、MixColumns 與 test vector 等細節。
  • NIST SP 800-38A: Block Cipher Modes of Operation:說明 block cipher 常見 confidentiality modes,例如 ECB、CBC、CFB、OFB、CTR。AES 本身只定義 block cipher;實際系統要安全使用 AES,通常還需要正確的 mode、IV/nonce 管理與 authentication 設計。
  • NIST Post-Quantum Cryptography FIPS approval:NIST 於 2024 年核准 FIPS 203、FIPS 204、FIPS 205 的官方公告。這個 reference 可用來理解 PQC 主要影響 public-key key establishment 與 digital signature,而不是把 AES 這類對稱式加密淘汰掉。
  • NIST PQC Standardization Process:NIST 對 post-quantum cryptography 標準化流程的整理頁。適合用來追蹤 PQC 標準、遷移時程與演算法定位,並對照本文所說的「PQC + AES」系統分工。

MY ACADEMY · RTL LAB

操作 AES:看每一步如何改變 state

輸入一個 128-bit 區塊與金鑰。先停在 Round 1 的 ShiftRows,對照兩側矩陣;再走到 Round 10,確認這輪沒有 MixColumns。

矩陣使用 FIPS 197 的欄優先排列。位置 [row, column] 對應輸入 byte 4×column+row。每一步顯示運算前後的值。這是演算法微步,不宣稱每一步對應一拍 RTL。

證據範圍:瀏覽器功能教學模型。獨立比對使用瀏覽器 Web Crypto。沒有執行 RTL、綜合、形式證明或側通道測試。

獨立比對使用 Web Crypto 的 CBC 第一個區塊,IV=0,所以 C0=AES_K(P0 XOR 0)=AES_K(P0)。只取輸出的前 16 bytes;額外 padding 區塊不影響第一塊。這是在比對單區塊 AES,不是在此教學台實作訊息模式。

QD

運算前

運算後

查看區塊、排程與輪金鑰

輸出握手:valid/ready

走到 OUTPUT 後,輸出保持不變。切換 ready,再按「取樣一拍」才能記錄交付。設定 ready 本身不會交付。這個握手是另外定義的教學介面。

遷移練習:如果 downstream 尚未 ready,RTL 能否清除 output_valid 或覆寫結果?先用一句話寫出保持規則:除非 reset 取消交易,valid 與資料必須保持到交握成立。SVA 語法可作後續練習。

FIPS 197 §5.1 / §5.2

學習指南

安全基礎

0 / 9

查看課程大綱 → · 進度只計入已發布課程

先備知識

  • 二進位資料與 XOR

我學會了什麼

  • 辨識 AES State 與 Round 結構
  • 說明替代、排列、混合與加鑰
  • 理解 AES 與 PQC 的不同角色

本課術語

查看術語字典 →

延伸閱讀

課後小測驗

1. AES 的區塊大小是?
2. AES 最後一輪省略哪一步?
3. PQC 會取代 AES 嗎?

讀到這裡,辛苦了。

把概念帶走,比把術語背走更重要。

#AES#AES-128#FIPS 197#Block Cipher#Encryption#Cryptography#密碼學#硬體安全#PQC#Post-Quantum Cryptography#Crypto Accelerator#漫畫小教室