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