首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储加密密钥的MD5哈希安全吗?

存储加密密钥的MD5哈希安全吗?
EN

Stack Overflow用户
提问于 2018-05-25 10:59:00
回答 1查看 1.2K关注 0票数 1

下面是一个场景:

  • 用户输入密码
  • 使用基于密码的密钥派生算法(花费大约100 ms )生成AES密钥。
  • 公开生成密钥的MD5 (存储在某处)

公开生成密钥的MD5会以某种方式降低其安全性吗?如果我理解正确的话:

  • 为了破解密码-你仍然需要暴力强制密码,首先用慢的PBKDF生成密钥,应用MD5,然后检查它是否匹配?
  • 找到一个冲突的MD5字符串将是无用的,因为该字符串将与加密密钥不匹配?

这些假设正确吗?公开这样的字符串是否会影响加密安全性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-26 02:15:12

您正在描述一个所谓的键检查值。

“这些假设正确吗?”

是的,但是虽然MD5不能倒置,但最好使用更安全的散列,如SHA-256或512 (这在大多数运行时可能会更快)。如果需要,可以使用结果的N个最左边的字节。

“公开这样的字符串是否会影响加密安全性?”

好吧,算是吧;它为攻击者提供了一种方法,几乎可以100%肯定地验证一个密码/密钥一旦找到,是正确的。如果您使用密钥进行身份验证加密(在大多数情况下都推荐使用该密钥),情况也是如此。一般来说,攻击者不需要加密那么多数据就可以验证密钥的正确性。

否则,MD5毕竟是一个单向函数,因此不应该公开任何关键位。

备注:

  • 当然,您不希望将密钥作为MD5的输入来加密任何内容。
  • 如果MD5函数本身泄漏侧通道数据(通常不会),那么它可能会向攻击者泄露密钥。
  • 使用安全散列来创建密钥检查值可能比使用所有为零字节的块加密更好,这是PKCS#11的默认KCV生成方法。
  • 增加安全性的方法有很多种:使用HMAC或KBKDF,使用时间常量比较等。通常,散列是安全的。我认为,使用HMAC- the 512甚至HKDF 512具有特定应用程序的输入字符串和时间常数比较将是钻石标准。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50527654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档