![](/img/trans.png)
[英]Encryption Method using md5 hash and triple Des encryption in angular 7
[英]Is it safe to store an encryption key's MD5 hash?
这是一个场景:
暴露生成的密钥的MD5会以某种方式降低其安全性吗? 如果我正确理解:
为了破解密码-您仍然需要通过先用慢速PBKDF从它们生成密钥,应用MD5,然后检查其是否匹配,来蛮力破解密码?
找到冲突的MD5字符串将是无用的,因为该字符串无论如何都不与加密密钥匹配?
这些假设是否正确?有没有办法暴露这样的字符串会影响加密安全性?
您正在描述一个所谓的密钥检查值 。
“这些假设正确吗?”
是的,但是尽管不能反转MD5,但最好使用更安全的哈希(例如SHA-256或512)(在大多数运行时中,这可能令人惊讶地更快)。 如果需要,可以使用结果的最左N个字节。
“有没有办法暴露这样的字符串会影响加密的安全性?”
好吧,有点 它为攻击者提供了一种方法,可以几乎100%地确定密码/密钥是否正确。 如果您使用密钥进行经过身份验证的加密(多数情况下建议这样做),也是这种情况。 通常,您无需加密所有数据即可让攻击者验证密钥的正确性。
否则,MD5毕竟是单向功能,因此不应公开任何关键位。
笔记:
当然,您以后不希望将密钥用作MD5的输入来加密任何内容。
如果MD5功能本身泄漏了旁通道数据(通常不会泄漏),那么它可能会向攻击者揭示密钥。
使用安全散列创建密钥检查值可能比对全零字节的块进行加密更好,后者是PKCS#11的默认KCV生成方法。
有许多增加安全性的方法:使用HMAC或KBKDF,使用时间常数比较等。但是,通常,哈希是安全的。 我认为,将HMAC-SHA512或什至HKDF-SHA512与特定于应用程序的输入字符串和时间常数进行比较将是菱形标准。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.