AES-256 加密詳解:對您的資料意味著什麼
AES-256 詳解:密碼如何工作,256 位金鑰為何重要,GCM 模式增加了什麼,以及當應用聲稱使用 AES-256 加密時應檢查什麼。
什麼是 AES-256?
AES-256 是一種對稱分組密碼:使用 256 位金鑰執行的高階加密標準(AES)。同一把金鑰既用於加密,也用於解密。它以 128 位為一個分組處理資料,共 14 輪,於 2001 年由 NIST 標準化為 FIPS 197。
這個名稱疊加了三個事實。AES 是演算法名稱,由 NIST 於 2001 年從 Rijndael 方案中選定。256 是以位為單位的金鑰長度,決定了暴力破解者必須嘗試多少把金鑰。GCM 或 CBC 這樣的模式通常寫在名稱後面,例如 AES-256-GCM,它決定分組如何串聯,以及是否檢查密文遭到篡改。單說 AES-256,只告訴您密碼演算法和金鑰長度,既不告訴您模式,也不告訴您誰持有金鑰。
AES-256 是使用 256 位金鑰的高階加密標準,於 2001 年由 NIST 標準化為 FIPS 197。這是美國政府用於機密資訊、銀行用於金融交易以及注重安全的應用程式用於保護靜態和傳輸資料的對稱加密演算法。AES-256 有 2^256 種可能的金鑰——這個數字比可觀測宇宙中估計的原子數量還要大。沒有已知攻擊能將這個金鑰空間縮減到計算上可行的搜尋範圍。
本指南解釋 AES-256 的實際工作原理、金鑰大小為何重要、不同模式的含義(ECB、CBC、GCM),以及當應用聲稱使用 AES-256 加密時應檢查什麼。
AES 的實際工作原理
AES 是一種對稱分組密碼。「對稱」意味著同一金鑰加密和解密。「分組密碼」意味著它以 128 位(16 位元組)的固定大小塊處理資料。
該演算法獲取您的資料(明文),將其與金鑰組合,並透過一系列數學變換生成加擾輸出(密文)。這些變換——替換、移位、混合和金鑰加法——重複固定輪數。AES-256 使用 14 輪。
每輪應用四種操作:
- 位元組替換(SubBytes):每個位元組使用固定替換表(S 盒)替換,引入非線性。
- 行移位(ShiftRows):每行中的位元組按不同偏移量移位,將資料分散到各位置。
- 列混淆(MixColumns):列透過有限域中的矩陣乘法混合,在位元組間擴散變化。
- 輪金鑰加(AddRoundKey):輪金鑰(從主金鑰派生)與資料進行 XOR。
經過 14 輪後,明文被徹底加擾。使用正確金鑰逆轉這些操作可以恢復原始資料。沒有金鑰,密文與隨機噪聲無法區分。
256 位為何重要
AES-256 中的"256"是指金鑰長度:256 位。這決定了攻擊者必須嘗試多少種可能的金鑰才能透過暴力破解。
| 金鑰大小 | 可能的金鑰數 | 暴力破解時間(每秒 1 萬億次猜測) |
|---|---|---|
| 56 位(DES) | 7.2 x 10^16 | 約 20 小時 |
| 128 位(AES-128) | 3.4 x 10^38 | 10^13 年(10 萬億年) |
| 256 位(AES-256) | 1.16 x 10^77 | 10^51 年 |
作為參考:宇宙大約有 1.38 x 10^10 年曆史。即使每秒猜測萬億次,暴力破解 AES-256 所需時間也大約是宇宙年齡的 10^41 倍。
AES-128 本身已經在計算上無法暴力破解。AES-256 為未來的計算進步(包括量子計算)提供了額外裕度。Grover 量子演算法(一種量子計算攻擊)有效地將金鑰長度減半——將 AES-256 降低到相當於針對量子攻擊的 AES-128,這仍然不可行。AES-128 將被降低到 64 位有效安全性,這可能存在漏洞。這就是為什麼安全關鍵應用程式偏好 AES-256。
AES 模式:為何重要
AES 本身一次只加密一個 128 位塊。對於真實資料(照片、文件、影片),您需要一種「操作模式」來處理大於 16 位元組的資料。該模式決定了塊如何連結在一起,並具有重要的安全影響。
ECB(電子密碼本)——不要使用
每個塊都使用相同的金鑰獨立加密。相同的明文塊產生相同的密文塊。這會洩漏資料中的模式。經典演示:使用 ECB 加密點陣圖影像會在密文中保留影像結構,使內容可識別。ECB 包含在標準中,但絕不應用於具有結構或重複模式的資料(這幾乎包括所有現實世界的資料)。
CBC(密碼塊連結)——遺留方式
每個塊在加密之前先與前一個密文塊進行 XOR。這消除了 ECB 的模式洩漏。CBC 曾是數十年的標準模式,但在大多數應用中已被 GCM 取代。CBC 需要隨機初始化向量(IV),並且不提供內建身份驗證(您無法檢測密文是否被篡改)。
GCM(Galois/Counter 模式)——當前標準
GCM 將計數器模式加密與 Galois 域身份驗證相結合。它提供認證加密:加密資料並生成一個身份驗證標籤,可以檢測對密文的任何修改。如果單個位被更改,解密將失敗而不是生成損壞的明文。
NIST 在 SP 800-38D(2007 年)中對 GCM 進行了標準化。它是新實現的推薦模式。
AES-256-GCM 是在 Galois/Counter 模式下使用 256 位金鑰的 AES。這是安全關鍵應用程式應使用的,也是 Vaultaire 用於加密照片和檔案內容的方式。
| 模式 | 模式洩漏 | 身份驗證 | 當前建議 |
|---|---|---|---|
| ECB | 是(嚴重) | 否 | 不要使用 |
| CBC | 否 | 否(需要單獨的 MAC) | 遺留;配合 HMAC 可接受 |
| GCM | 否 | 是(內建) | 推薦用於新實現 |
AES-256 對照片儲存意味著什麼
當照片保險庫應用聲稱「AES-256 加密」時,三件事應該是真實的:
檔案內容使用 AES-256 加密。原始照片資料(畫素、後設資料、縮圖)使用 256 位金鑰轉換為密文。
每個檔案使用唯一的初始化向量(IV)。如果使用相同金鑰加密兩張相同的照片,密文應該不同。這需要每個檔案有唯一的 IV。沒有它,統計分析可以揭示模式。
該模式提供身份驗證(GCM 或等效方式)。沒有身份驗證,攻擊者可以在不被檢測的情況下修改密文。解密結果將是損壞的資料而不是錯誤。
營銷頁面上的"AES-256"沒有告訴您什麼
AES-256 是必要的,但不是充分的。幾個關鍵因素決定了加密是否真正保護您的資料:
金鑰派生很重要。 256 位金鑰是怎麼產生的?如果它用弱 KDF 從 4 位 PIN 派生,有效安全性就只有 4 位數字(10,000 種組合),而不是 256 位。可靠的實現會使用高迭代次數的 PBKDF2,或配置了合適記憶體和時間引數的 Argon2。Vaultaire 使用 PBKDF2 與 HMAC-SHA512,經過 600,000 次迭代,從所選的 5x5 圖形和裝置鹽值派生本地保險庫金鑰。PBKDF2 讓每次猜測的成本更高,但不會把圖形的熵提高到 256 位。
金鑰儲存很重要。 金鑰存放在哪裡?如果金鑰以明文形式存放在 App 沙盒中,能訪問檔案的惡意軟體就可以讀取它。Apple 的 Secure Enclave 支援特定的不可匯出金鑰操作,而不是任意由 App 提供的 AES 金鑰。對稱金鑰設計可能改為依賴 Keychain 和資料保護,因此文件應寫明具體的 API 和保護類別,而不是隻說「硬體支援」。
什麼被加密很重要。有些應用加密檔案內容,但保留檔名、縮圖和後設資料未加密。取證檢查人員可能看不到您的照片,但他們可以在檔案列表中看到"vacation-beach-2025.jpg"。全面加密會單獨覆蓋後設資料。
金鑰生命週期很重要。 解密後的金鑰材料會保留多久?Vaultaire 在鎖定或關閉時會清除活動保險庫和主金鑰狀態,之後需要重新解鎖。保險庫開啟期間,對稱金鑰位元組必然存在於 App 記憶體中,而 Swift 和 iOS 無法讓 App 證明每個臨時副本都已被覆蓋。
AES-256 的實際應用:誰在使用它
| 實體 | 使用場景 | 模式 |
|---|---|---|
| 美國政府(NSA) | 機密資訊 | GCM(或帶單獨身份驗證的 CTR) |
| Apple(iCloud ADP) | iCloud 端對端加密 | GCM |
| Signal | 訊息加密 | CBC(配合 HMAC 進行身份驗證) |
| 銀行 | 金融交易加密 | GCM |
| 1Password | 密碼保險庫 | GCM |
| Vaultaire | 照片和檔案保險庫 | GCM |
| VeraCrypt | 磁碟加密 | XTS(針對磁碟塊最佳化) |
常見誤解
「軍事級加密」沒有具體含義。營銷頁面使用這個片語是因為它聽起來令人印象深刻。AES-256 被軍隊使用。AES-128 也是。這個片語沒有告訴您模式、金鑰派生、金鑰儲存或實際加密的資料是什麼。
「256 位加密」可能不意味著 AES-256。其他密碼也使用 256 位金鑰(ChaCha20、Twofish、Serpent)。檢查指定了哪種演算法。AES-256-GCM 是當前標準。
AES-256 不能防範弱密碼。如果您的密碼是"1234"且金鑰派生很弱,無論密碼強度如何,加密實際上只有 4 位安全性。鏈條在最薄弱的環節處斷裂。
AES-256 不保護使用中的資料。當您檢視照片時,必須在記憶體中解密。此時,它以明文形式存在於 RAM 中。正確的實現將此視窗最小化並及時清除解密的資料。
常見問題
AES-256 代表什麼?
高階加密標準(Advanced Encryption Standard),使用 256 位金鑰執行。AES 是 NIST 在選定 Rijndael 設計後,於 2001 年標準化為 FIPS 197 的密碼演算法。256 是以位為單位的金鑰長度。AES-256-GCM 這樣的字尾加上了工作模式,這是獨立於密碼演算法和金鑰長度的另一項選擇。
AES-256 能被破解嗎?
目前沒有已知攻擊能透過縮減完整金鑰空間來破解 AES-256。已知的最佳攻擊(Bogdanov、Khovratovich 和 Rechberger 於 2011 年發表的雙變換攻擊)將 AES-256 從 2^256 次操作減少到 2^254.4——這在實踐中是一種無計算意義的理論改進。AES-256 至今未被破解。
AES-256 能抵抗量子計算攻擊嗎?
基本上可以。Grover 量子演算法會讓有效金鑰長度減半:AES-256 面對量子攻擊時相當於 128 位安全性。AES-128 則會降到 64 位有效安全性,可能存在風險。針對 AES-256 的 Grover 搜尋仍需約 2^128 次運算,在實踐中不可行。
AES-128 和 AES-256 有什麼區別?
AES-128 使用 128 位金鑰(10 輪)。AES-256 使用 256 位金鑰(14 輪)。兩者都被認為能抵抗當前的攻擊。AES-256 為未來的進步,特別是量子計算,提供了更大的裕度。由於額外的輪數,AES-256 比 AES-128 慢約 40%,但硬體加速使現代裝置上的這種差異可以忽略不計。
AES-256 加密會減慢我的手機速度嗎?
正常使用時感覺不到。現代 Apple 處理器透過系統加密庫為 AES 提供硬體加速。但這並不意味著 App 的 AES 操作在 Secure Enclave 內執行。耗時仍取決於檔案大小、裝置、儲存和具體實現,因此安全宣告應基於實測,而不是泛泛的毫秒數字。
我如何知道應用是否真正使用 AES-256?
請檢視 App 的安全文件,而不只是營銷頁面。留意具體的演算法和模式、金鑰層級、派生引數、Keychain 或 Secure Enclave 的具體用法、隨機數處理、恢復路徑,以及後設資料是否也被加密。開原始碼和獨立審計能讓這些說法更容易驗證。
總結
AES-256 是一種廣泛使用的對稱加密演算法,由 NIST 標準化,目前沒有已知的實用攻擊;即使量子計算機執行 Grover 演算法,仍需約 2^128 的計算量。在評估聲稱使用 AES-256 加密的應用時,請超越密碼本身:檢查模式(GCM)、金鑰派生(高迭代次數的 PBKDF2/Argon2)、金鑰儲存(硬體支援)以及實際加密的資料(內容 + 後設資料)。
Vaultaire 使用 AES-256-GCM 加密檔案內容、檔案頭、後設資料、索引和縮圖。PBKDF2 與 HMAC-SHA512 從圖形和裝置級 Keychain 鹽值派生本地保險庫金鑰;該金鑰再解包用於檔案加密的隨機主金鑰。對稱運算透過 CryptoKit 在 App 程序內執行,iOS Keychain 和資料保護則在裝置鎖定時保護恢復狀態。完整的層級結構見安全模型。