3-DES 加密中的 KCV(密钥校验值)是什么?是否有关于什么是 KCV 以及如何在 3-DES 加密中使用它的良好文档?
2 回答
"6.15 密钥校验值
目的:数据用于证明卡/处理器可以访问特定的 DES 密钥值。
格式:二进制,3 个字节
内容:DES 加密 8 个字节的 0 的结果的最左边三个字节相关密钥”(来源)
__
“任何 DES 密钥的密钥检查值将通过使用 ECB 3DES 和相关密钥加密 8 个字节的“00”来计算”(来源)
__
“DES/3DES 密钥的密钥校验值(缩写为 KCV 或 CV)是使用该密钥加密 16 个十六进制零的结果。例如,单长度 DES 密钥 0123456789ABCDEF 的密钥校验值等于 D5D44FF720683D0D。这信息在以加密方式传输 DES/3DES 密钥时很有用,通常由发送方发送,以确保接收方正确接收到密钥。” (来源)
__
对我来说,这似乎是某种校验和。
KCV 用于硬件安全设备的例如 PKCS#11 标准中。想象一下,您需要导入密钥,可能分多个部分。然后您需要验证导入是否成功。您只需对照先前计算的 KCV 值检查全零(或其最左侧部分)的块加密。由于对称算法应该对已知的纯文本/密文攻击无懈可击,因此您不会泄漏有关密钥的任何信息。
对于硬件安全设备,密钥通常不可提取;因此它们可能不适用于散列方法,或者散列方法本身甚至可能不可用。因此,对全零执行密钥加密是创建安全校验和的好方法。对于其他密钥,例如 RSA 密钥,通常使用散列 (SHA-1) 而不是加密来识别密钥(的值)。
在软件中,您可以简单地创建一个仅包含零的块,然后执行 ECB 加密或将 IV 设置为全零的 CBC 加密。然后取 x 个字节作为 KCV。KCV 中的字节数取决于使用的标准。如果您使用少于 3 个字节,即使是意外,您也可能会遇到具有相同值的键。
请注意,KCV 确实会泄露一些信息。它显示了全零块的密文加密是什么样的。如果您使用随机 IV 执行 CBC 加密,那应该没什么大不了的。另一方面,如果您使用具有零 IV 的 CTR 模式加密,您可能会泄漏密钥流的前 3 个字节(因此是明文)。
让我们与 RobIII 保持一致:来源(注:FTP)