暴力破解攻擊
任何加密密碼最基本可能遭受的攻擊形式,就是暴力破解攻擊,也就是嘗試所有可能的金鑰組合,直到找到正確的那一個。
Frontier(新視窗) 是目前全球公開已知最強大的超級電腦。 即使它將全部運算輸出都用於暴力破解 AES-128,仍然需要約 10–12 兆年,才能嘗試完 AES-128 的所有可能組合。 這遠遠超過宇宙的年齡。 因此,即使在較低的位元大小下,AES 對傳統電腦的暴力破解攻擊仍具有極高的抵抗力。
AES-256 比 AES-128 難以暴力破解 3400 澗倍(2¹²⁸)。
雖然 Grover 演算法(新視窗) 在理論上會使對稱金鑰面對量子威脅(新視窗)時的安全性減半,但它們仍具有相當程度的抗量子能力,尤其是在使用 256 位元金鑰時。
金鑰攻擊
多年來,密碼學家已發表多種針對 AES 金鑰的理論攻擊,但這些攻擊不是在實務上不可行,就是只對使用較少輪數的 AES 實作有效(見下文)。
最成功的嘗試,是 2011 年發表的理論性雙團攻擊(新視窗),可將暴力破解 AES 所需的時間縮短為原本的四分之一。 然而,即使如此,在任何目前或可預見的電腦硬體上暴力破解 AES,仍需要數十億年。
目前已知沒有任何實用的金鑰攻擊能有效對付正確實作的 AES-128 或更高版本。
側通道攻擊
側通道攻擊會透過尋找執行加密運算的電腦所洩漏的線索,試圖減少成功發動暴力破解攻擊所需的組合數量。 可透過檢查以下項目來取得線索:
- 時間:電腦執行某項操作所需的時間
- 電磁外洩
- 音訊線索
- 視覺線索(使用高解析度相機擷取)。
尤其是快取計時攻擊,已被證明在成功破解 AES 方面相當有效。 在最著名的案例中,研究人員於 2016 年成功復原(新視窗)AES-128 金鑰,只用了「約 6 到 7 個區塊的純文字或密文(理論上甚至單一區塊就已足夠)」。
然而,仍有多種方法可用來降低側通道攻擊的威脅:
- 正確實作的 AES 可以防止資料外洩的途徑。
- 整合 AES 指令集的硬體可進一步降低 AES 遭受側通道攻擊的暴露面。
- 可使用隨機化技術來破壞受 AES 保護的資料與任何可透過側通道攻擊收集到的外洩資料之間的關聯。
在許多情況下,側通道攻擊需要攻擊者在裝置解密資料時接近該裝置或具備實體存取權,不過若惡意軟體已安裝在裝置上,也可能發動遠端攻擊,尤其是在計時攻擊的情況下。
AES 的運作方式
AES 是一種區塊密碼,使用 128 位元、192 位元或 256 位元金鑰,以 128 位元區塊為單位加密和解密資料。 如前所述,加密和解密資料時使用的是相同的金鑰。 使用 128 位元金鑰的 AES 通常稱為 AES-128,AES-192 和 AES-256 亦然。

資料會透過多輪運算加密,每一輪都包含一系列數學運算。
此流程一開始會使用 Rijndael 的金鑰排程演算法,從原始秘密金鑰推導出一系列新的輪金鑰。 這稱為金鑰擴展。
接著,每一輪都包含下列一項或多項操作(或其組合):
1. Add RoundKey:執行 XOR 運算(新視窗),將要加密的資料(密文)與各輪金鑰結合。

2. Sub Bytes:使用替代表來進一步打亂資料。 原理上,可以想像成你小時候用過的簡單替代密碼:將訊息中的每個字母替換為字母表中往後固定位置的另一個字母。

3. Shift Rows:每個 128 位元資料區塊由一個 16 位元的 4x4 區塊組成。 此操作會將區塊每一列中的每個位元組,依特定位移量向左移動。

4. MixColumns:對區塊中的每一欄執行額外的可逆線性轉換。

這一系列轉換構成一輪,接著會依據金鑰大小,對資料重複指定次數的輪數:
- AES-128 — 10 輪
- AES-192 — 12 輪
- AES 256 — 14 輪
要解密資料,只需將用於加密的所有步驟反向執行即可。 這需要原始秘密金鑰,才能使用各個反向輪金鑰逆轉整個流程。
為什麼 AES-256 比 AES-192 或 AES-128 更受青睞?
以目前和可預見的技術而言,暴力破解 AES-128 所需時間將超過宇宙的年齡。 傳奇密碼學家 Bruce Schneier 甚至曾主張(新視窗),由於 AES-128 擁有更強的金鑰排程——也就是從原始秘密金鑰計算所有輪金鑰的演算法——它可能比 AES-256 更強。
儘管如此,AES-256 已成為對稱金鑰加密事實上的黃金標準。 它經常(儘管有些爭議)被視為更強的選擇,因為其較大的金鑰大小代表額外的安全裕度,即使未來有人找到大幅削弱此演算法的方法,已加密資料仍能保持安全。 隨著後量子抵抗需求日益迫切,這項論點也變得更有說服力。
AES-CBC 與 AES-GCM
直到不久之前,AES 通常使用密碼區塊鏈結(CBC)模式,其中每個純文字區塊在加密前,都會先與前一個密文區塊進行 XOR。 在 CBC 模式下使用時,需要 HMAC-SHA256 這類 HMAC(新視窗) 雜湊演算法來驗證資料。
然而,現在越來越常見的是 AES 使用 Galois/Counter(GCM)模式,這種模式採用計數器模式(新視窗)加密。 其主要優點在於,它使用伽羅瓦域(新視窗)來驗證資料,而無需額外的演算法。 因此,與使用可帶來高運算負擔的獨立驗證演算法相比,它的效率更高。
雖然搭配 HMAC 驗證的 AES-CBC 通常被認為是安全的,但 CBC 可能容易受到填充攻擊(新視窗)影響,例如 POODLE(新視窗)。 GCM 則不會。
硬體加速的 AES
大多數現代 CPU 都包含進階加密標準新指令(AES-NI(新視窗)),這是一組可直接在處理器上執行 AES 操作的硬體指令。 這使 AES 快上許多,也有助於防止基於計時的側通道攻擊,因為這些操作發生在處理器的安全執行單元內,攻擊者可利用的可觀察計時變化更少。
Proton 與 AES
我們廣泛使用 AES 來保護 Proton 產品:
Proton Drive 使用 ECC 進行金鑰交換,以 AES-256 端對端加密所有上載的檔案。 Proton Docs 和 Proton Sheets 也使用 AES-256 搭配以 ECC 為基礎的金鑰交換,不過其加密實作與 Proton Drive 的一般檔案加密方案有所不同。
Proton Mail 透過 OpenPGP 標準使用 AES-256 儲存電子郵件和附件。 甚至連用來解鎖您的電子郵件的私有金鑰,也會先以 AES-256 加密後,再儲存在伺服器上。
關於 AES 加密的常見問題
- 哪個較好:AES 還是 DES?
- 哪個較好:AES 還是 RSA?
- AES 的安全性有多強?




