Hash Crypto-Express.js PBKDF2 HMAC-SHA1是否足够?
使用Express.js framework和crypto将密码与pbkdf2进行散列,我了解到默认算法是HMAC-SHA1,但我不明白为什么它没有升级到其他家族或SHAHash Crypto-Express.js PBKDF2 HMAC-SHA1是否足够?,hash,express,cryptography,sha,pbkdf2,Hash,Express,Cryptography,Sha,Pbkdf2,使用Express.js framework和crypto将密码与pbkdf2进行散列,我了解到默认算法是HMAC-SHA1,但我不明白为什么它没有升级到其他家族或SHA crypto.pbkdf2(password, salt, iterations, keylen, callback) 我们提供的keylen是我们想要的SHA的变体吗?比如SHA-256512等等 HMAC如何改变输出 最后,当SHA1断开时,它是否足够坚固 对不起,我把东西弄混了。SHA-1坏了,但这并不意味着使用不安全
crypto.pbkdf2(password, salt, iterations, keylen, callback)
我们提供的keylen是我们想要的SHA的变体吗?比如SHA-256512等等
HMAC如何改变输出
最后,当SHA1断开时,它是否足够坚固
对不起,我把东西弄混了。SHA-1坏了,但这并不意味着使用不安全;SHA-256(SHA-2)或多或少是未来的证明和长期替代品。破碎只意味着比暴力更快,但不一定可行或切实可行 另见此答案: 一个函数经常被破坏只意味着我们应该开始 迁移到其他更强大的功能,而不是 实际的危险仍然存在。攻击只会变得更强,所以这是个好主意 一旦出现第一道裂纹,就要考虑备选方案。 我们提供的keylen是我们想要的SHA的变体吗?比如SHA-256512等等 当您声明您正在对密码进行哈希运算时,@CodesInChaos是正确的-keylen(即PBKDF2的输出长度)最多是HMAC本机哈希函数的位数
- 对于SHA-1,这是160位(20字节)
- 对于SHA-256,这是256位(32字节),以此类推
- 原因是,如果请求的哈希(keylen)比哈希函数支持的长度更长,则第一个本机长度相同,因此攻击者只需攻击位。这就是Hashcat团队发现密码时发现并修复的问题1
- pbkdf2 sha1“密码”“salt”4096 22
- 4b007901b765489abead49d926f721d065a429c12e46
- pbkdf2 sha1“密码”“salt”4096 20
- 4b007901b765489abead49d926f721d065a429c1
- 是的,你是对的;对于PBKDF2-HMAC-SHA-1,21个字节的时间是20个字节的两倍,而实际上,40个字节的时间与21个字节的时间一样长。然而,41字节的长度是20字节的三倍,因为41/20介于2和3之间,是互斥的
关于金本位,请参见@Thomasbornin给出的答案,其中一小部分是“已知的对MD4、MD5和SHA-1的攻击是关于碰撞的,不会影响原像抵抗力。已经证明,MD4有一些弱点(仅在理论上)试图破坏HMAC/MD4时被利用,但这不适用于您的问题。Kesley和Schneier在论文中提出的2106秒前像攻击是一种通用的权衡,它只适用于非常长的输入(260字节;这是一百万TB——注意106+60如何超过160;这就是你看到这种权衡没有任何魔力的地方)“但我不认为有任何理由使用一个坏掉的哈希函数,而且当SHA几乎移动到SHA3时,它仍然是默认值。我想你对其余的问题没有更多的答案了吧?但是有很多!AFAIK SHA-3甚至还没有标准化。我只是想指出一点,通常一半的知识和炒作会导致错误的决定(例如,我从一家公司听说他们不想使用TLS,因为有(理论上)对它的攻击。我不是一个安全专家,但据我所知,SHA-1是完全安全的使用和安全的,因此没有必要(目前和可能在不久的将来)使用其他算法。通常安全性概念不会中断,点如下。HMAC-SHA1不会中断,即使SHA1是。甚至HMAC-MD5也是完美的函数。这是因为HMAC比哈希函数受冲突的影响小得多。HMAC只需要哈希函数的预映像阻力,MD5和SHA都需要1是完全不可预映的。@ntoskrnl的评论是3ST+1,不,SHA-3是。也就是说,算法已经被选择,大概SHA-3将使用Keccak论文中的轮数等(在对NIST进行一些批评之后)。但它不是标准化的…还没有。除了可能的密钥派生函数之外,您不应该在新协议中使用SHA-1。PBKDF2当然是一个密钥派生函数。只是不要使用超过20字节的密钥。PBKDF2相对于其他密码哈希(如bcrypt或scrypt)的缺点要比di大得多在这种情况下,SHA-1比SHA-256的优势。