是否有任何天生不安全的 AES-CBC 密钥或密钥 IV 组合以正确生成的随机值而闻名?

信息安全 AES 已知漏洞 IOS
2021-08-20 07:35:56

这主要是一个理论问题。

我正在使用 AES128 CBC 加密小文件。我的密钥和 IV 都是使用 iOS 的安全随机值生成 (SecRandomCopyBytes) 每个文件随机生成的。

1) 理论上,我是否需要检查任何本质上不安全的密钥、IV 或密钥-IV 组合(例如,虽然完全不可能,但如果密钥和 IV 最终都为零,是否与假定攻击者一样安全?不知道这个)?

2)我可以依靠苹果的随机值生成器吗?

2个回答

CSPRNG 期望以与随机分布无法区分的概率返回图像空间的每个可能值。

遗漏某些结果会是一个糟糕的设计。想想骰子。如果您掷出 1-1-1,您不会认为这不够随机并对其进行排序 - 您只是生成了确定它是真实的熵。

使用 PRNG 这样做会损害它的安全性,所以不,希望没有过滤掉任何东西。

这里的旁注:即使概率非常小(小到可以忽略不计):您不应该使用 AES-CBC 在同一个密钥上重用相同的 IV,因为如果您的文件共享结构信息,则不会泄漏任何内容

除此之外,你应该对你的方法没问题。每次打给SecRandomCopyBytes你的电话都可以考虑掷骰子,因为你关心的是,因为它是你将得到的最好的熵。

如果您的目标不仅是机密性而且是数据完整性,那么您最好使用评论中指出的另一种操作模式。我知道,iOS 在提供太多选择方面并不是很慷慨。

我正在使用 AES128 CBC 加密小文件。我的密钥和我的 IV 都是使用 iOS 的安全随机值生成 (SecRandomCopyBytes) 每个文件随机生成的。我是否需要检查任何本质上不安全的密钥、IV 或密钥-IV 组合(例如全零等)?

到目前为止,我认为您对此无能为力。

首先,iOS 的安全随机值生成不应该像您担心的那样被破坏到生成全零。即使随机数生成器是可预测的,除非你知道诀窍,否则它的输出仍然看起来很随机。

其次,没有听说过任何关于 AES 的弱密钥。而且,如果没有已知的弱键(或键-IV 组合),则无法检查它们。

我可以依靠苹果的随机值生成器吗?

我认为没关系,因为 AES 使用 128 位密钥。但是如果你的文件真的很重要,你可以使用多个独立的 RNG 并将它们的输出异或作为 Keys 和 Ivs。
请参阅维基百科
“可以组合多个独立 RNG 的输出(例如,使用按位 XOR 操作)以提供至少与使用的最佳 RNG 一样好的组合 RNG。”