AES-256 加密详解:对您的数据意味着什么

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。这是美国政府用于机密信息、银行用于金融交易以及注重安全的 App 用于保护静态和传输数据的对称加密算法。AES-256 有 2^256 种可能的密钥——这个数字比可观测宇宙中估计的原子数量还要大。没有已知攻击能将这个密钥空间缩减到计算上可行的搜索范围。

本指南解释 AES-256 的实际工作原理、密钥大小为何重要、不同模式的含义(ECB、CBC、GCM),以及当应用声称使用 AES-256 加密时应检查什么。

AES 的实际工作原理

AES 是一种对称分组密码。“对称”意味着同一密钥加密和解密。“分组密码”意味着它以 128 位(16 字节)的固定大小块处理数据。

该算法获取您的数据(明文),将其与密钥组合,并通过一系列数学变换生成加扰输出(密文)。这些变换——替换、移位、混合和密钥加法——重复固定轮数。AES-256 使用 14 轮。

每轮应用四种操作:

  1. 字节替换(SubBytes):每个字节使用固定替换表(S 盒)替换,引入非线性。
  2. 行移位(ShiftRows):每行中的字节按不同偏移量移位,将数据分散到各位置。
  3. 列混淆(MixColumns):列通过有限域中的矩阵乘法混合,在字节间扩散变化。
  4. 轮密钥加(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 位有效安全性,这可能存在漏洞。这就是为什么安全关键 App 偏好 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。这是安全关键 App 应使用的,也是 Vaultaire 用于加密照片和文件内容的方式。

模式 模式泄漏 身份验证 当前建议
ECB 是(严重) 否 不要使用
CBC 否 否(需要单独的 MAC) 遗留;配合 HMAC 可接受
GCM 否 是(内置) 推荐用于新实现

AES-256 对照片存储意味着什么

当照片保险库应用声称“AES-256 加密”时,三件事应该是真实的:

  1. 文件内容使用 AES-256 加密。原始照片数据(像素、元数据、缩略图)使用 256 位密钥转换为密文。

  2. 每个文件使用唯一的初始化向量(IV)。如果使用相同密钥加密两张相同的照片,密文应该不同。这需要每个文件有唯一的 IV。没有它,统计分析可以揭示模式。

  3. 该模式提供身份验证(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 和数据保护则在设备锁定时保护恢复状态。完整的层级结构见安全模型。

参考资料