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。 沃泰尔用途 PBKDF2 与 HMAC-SHA512 以及 600,000 次迭代,从所选的 5x5 模式和设备盐中导出本地保管库密钥。 PBKDF2 使每次猜测的成本更高;它不会将模式的熵提高到 256 位。
密钥存储很重要。 钥匙在哪里?如果密钥以明文形式存储在应用程序的沙箱中,则具有文件访问权限的恶意软件可以读取它。苹果的 Secure Enclave 支持特定的不可导出密钥操作,而不是任意应用程序提供的 AES 密钥。对称密钥设计可能依赖于 Keychain 和数据保护,因此文档应该命名确切的 API 和保护类,而不是只说“硬件支持”。
什么被加密很重要。有些应用加密文件内容,但保留文件名、缩略图和元数据未加密。取证检查人员可能看不到您的照片,但他们可以在文件列表中看到"vacation-beach-2025.jpg"。全面加密会单独覆盖元数据。
关键生命周期很重要。 解密的密钥材料可以保留多长时间? Vaultaire 在锁定或关闭时会删除其活动保管库和主密钥状态 并且需要重新解锁。当保管库打开时,对称密钥字节必然存在于应用程序内存中,并且 Swift 和 iOS 不要让应用程序证明每个临时副本都已被覆盖。
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 加密会减慢我的手机速度吗?
正常使用时不易察觉。现代 Apple 处理器通过系统加密库为 AES 提供硬件加速。这并不意味着应用程序的 AES 操作在内部运行 Secure Enclave。时间仍然取决于文件大小、设备、存储和实现,因此安全声明应该依赖于测量而不是通用的毫秒数字。
我如何知道应用是否真正使用 AES-256?
检查应用程序的安全文档,而不仅仅是其营销页面。寻找具体的算法和模式、关键层次、推导参数、精确的 Keychain 或 Secure Enclave 使用、随机数处理、恢复路径以及元数据是否也被加密。开源代码和独立审计使这些说法更容易得到验证。
总结
AES-256 是对称加密的黄金标准,由 NIST 标准化,被政府和金融机构使用,并且能抵抗所有已知攻击,包括量子计算。在评估声称使用 AES-256 加密的应用时,请超越密码本身:检查模式(GCM)、密钥派生(高迭代次数的 PBKDF2/Argon2)、密钥存储(硬件支持)以及实际加密的数据(内容 + 元数据)。
沃尔泰尔 用途 AES-256-GCM 文件内容、标题、元数据、索引和缩略图。 PBKDF2 与 HMAC-SHA512 从模式和设备范围内派生本地保管库密钥 Keychain 盐;该密钥解开用于文件加密的随机主密钥。对称操作通过以下方式在应用程序进程中运行 CryptoKit,同时 iOS Keychain 数据保护可在设备锁定时保护恢复状态。完整的层次结构记录在 安全模型.