AES-256 加密详解:对您的数据意味着什么
AES-256 详解:密码如何工作,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,从 5x5 网格上的图案派生密钥,具有数十亿种可能的输入。
密钥存储很重要。密钥存储在哪里?如果密钥以明文形式存储在应用的沙箱中,任何具有文件访问权限的恶意软件都可以读取它。正确的密钥存储使用硬件支持的机制,如 Apple 的安全隔区,密钥存在于具有自己加密内存的专用协处理器中。
什么被加密很重要。有些应用加密文件内容,但保留文件名、缩略图和元数据未加密。取证检查人员可能看不到您的照片,但他们可以在文件列表中看到"vacation-beach-2025.jpg"。全面加密会单独覆盖元数据。
密钥生命周期很重要。应用关闭时密钥是否从内存中清除?如果密钥在内存中持续存在,内存转储可以提取它。Vaultaire 在每次应用关闭时从内存中清除密钥,并在每次启动时需要重新输入图案。
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 能被破解吗?
目前没有已知攻击能通过缩减完整密钥空间来破解 AES-256。已知的最佳攻击(Bogdanov、Khovratovich 和 Rechberger 于 2011 年发表的双变换攻击)将 AES-256 从 2^256 次操作减少到 2^254.4——这在实践中是一种无计算意义的理论改进。AES-256 至今未被破解。
AES-256 能抵抗量子计算攻击吗?
基本上可以。Grover 量子算法将有效密钥长度减半:AES-256 相当于针对量子攻击的 128 位安全性。AES-128 将被降低到 64 位有效安全性,这可能存在漏洞。NIST 推荐 AES-256 用于对抗量子计算进步的长期安全性。
AES-128 和 AES-256 有什么区别?
AES-128 使用 128 位密钥(10 轮)。AES-256 使用 256 位密钥(14 轮)。两者都被认为能抵抗当前的攻击。AES-256 为未来的进步,特别是量子计算,提供了更大的裕度。由于额外的轮数,AES-256 比 AES-128 慢约 40%,但硬件加速使现代设备上的这种差异可以忽略不计。
AES-256 加密会减慢我的手机速度吗?
感觉不到。现代 iPhone 在安全隔区和处理器中包含专用的 AES 硬件加速。加密或解密照片只需毫秒。AES 专门为硬件实现效率而设计。
我如何知道应用是否真正使用 AES-256?
查阅应用的安全文档,而不仅仅是其营销页面。寻找:具体的算法和模式(AES-256-GCM,而不仅仅是"AES"或"256 位")、密钥派生方法(PBKDF2、Argon2)、密钥存储机制(安全隔区、硬件支持)以及元数据是否也被加密。开源应用允许独立验证。
总结
AES-256 是对称加密的黄金标准,由 NIST 标准化,被政府和金融机构使用,并且能抵抗所有已知攻击,包括量子计算。在评估声称使用 AES-256 加密的应用时,请超越密码本身:检查模式(GCM)、密钥派生(高迭代次数的 PBKDF2/Argon2)、密钥存储(硬件支持)以及实际加密的数据(内容 + 元数据)。
Vaultaire 使用 AES-256-GCM 进行文件加密,使用 PBKDF2 与 HMAC-SHA512 进行密钥派生,使用 ChaCha20 进行元数据加密,并使用 Apple 安全隔区进行密钥管理。这种加密不是营销语言。这是数学。