25

今天,我在悠闲地阅读并偶然发现了使用离散对数密码术的成对密钥建立方案推荐(修订版)(NIST 特别出版物 800-56A)的第 5.8 节(第 45 页)。我对此感到非常困惑:

应使用经批准的密钥导出函数 (KDF) 从共享秘密中导出密钥材料。KDF 的输出只能用于密钥材料,例如用于数据加密或消息完整性的对称密钥、秘密初始化向量或将用于生成其他密钥的主密钥(可能使用不同的过程)。不得使用共享密钥生成非秘密密钥材料(例如非秘密初始化向量)。

现在我不是 Alan Turing,但我认为初始化向量不必保密。在什么情况下需要一个“秘密初始化向量”? Thomas Pornin说 IV 是公开的,他似乎精通密码学。与caf 一样

4

4 回答 4

30

初始化向量不必是秘密的(它不是密钥),但也不必是公开的(发送者和接收者必须知道它,但英国女王也不必知道它)。

典型的密钥建立协议将导致双方都参与计算一条数据,但只有他们都知道。使用 Diffie-Hellman(或其任何椭圆曲线变体),所述共享数据块具有固定长度,并且它们无法控制其值(它们只是获得相同的看似随机的位序列)。为了使用该共享密钥进行对称加密,他们必须将该共享数据派生为长度适当的位序列,以适用于他们将要使用的任何对称加密算法。

在使用密钥建立算法在发送方和接收方之间获取共享秘密并使用该秘密对称加密消息(可能是非常长的流式消息)的协议中,可以使用 KDF一次性生成密钥IV。例如,它是这样进入SSL的:从共享密钥(在 SSL 规范中称为“预主密钥”)计算出一大块派生密钥数据,然后将其拆分为对称密钥和初始化向量加密的两个方向。你可以做其他事情,例如,生成随机 IV 并将它们与加密数据一起发送,而不是使用通过 KDF 获得的 IV(这就是最近版本的TLS,SSL 的继任者)。这两种策略同样有效(TLS 使用外部随机 IV,因为他们希望每个“记录”(TLS 连接中的数据包)都有一个新的随机 IV,这就是为什么不再认为使用 KDF 合适的原因)。

于 2011-04-26T22:27:57.597 回答
1

好吧,考虑一下如果两方具有相同的加密函数,但没有相同的 IV,他们将不会得到相同的结果。那么,似乎那里的提议是,两方获得相同的共享秘密,并且每个人都确定性地生成一个 IV(这将是相同的),然后他们可以进行通信。我就是这么读的;但我并没有真正阅读过这份文件,我也不能完全确定我的描述是否准确;但这就是我开始调查的方式。

于 2011-04-26T22:25:53.983 回答
0

CTR模式加密中计数器的起始值可以被认为是一个IV。如果你把它保密,你最终会获得一些额外的安全性,而不是你正在使用的密码的密钥长度所授予的安全性。很难说额外的多少,但不知道它确实增加了弄清楚如何解密给定消息所需的工作。

于 2011-04-26T22:11:52.277 回答
0

IV 是公开的还是私有的,不管攻击者知道 IV,现在通过查看加密的数据包/数据,知道 IV 并且不知道加密密钥,他/她可以猜测输入数据吗?(想了一会儿)

让我们稍微倒退一下,假设在加密中没有使用 IV AES (input, K)= E1 相同的输入将始终产生相同的加密文本。攻击者可以通过查看加密文本和输入数据的一些先验知识(即某些协议的初始交换)来猜测密钥“K”

所以,这就是 IV 的帮助。它添加了输入值,即使对于相同的输入数据,您的加密文本也会发生变化。ie AES (input, IV, K)= E1 因此,攻击者看到加密的数据包是不同的(即使输入数据相同)并且不能轻易猜测。(即使有静脉注射知识)

于 2021-04-09T06:42:56.717 回答