SHA-1024密码散列函数是否与SHA-512类似地存在?如果不是,原因是什么?

链接:




SHA-2 at Wikipedia

SHA- 3在Wikipedia


评论

如果您确实需要具有大输出的加密哈希函数,则可以尝试Skein-1024。它具有不被NSA设计的额外优势。

#1 楼

不可以,因为从安全角度来看,甚至SHA-512都被认为过高。它具有256位抗碰撞性,这是坚不可摧的。 (该链接是关于键的,但也适用类似的论据。)

如果您认为大型量子计算机将是有效的,则512位哈希值是有道理的,但是即使是1024位哈希也不会t。量子计算机需要$ O(2 ^ {n / 3})$运算才能找到破坏安全$ n $位散列的抗碰撞性的方法。最后,SHA-256使用32位字和SHA-512 64位。如果要使用相同的方式将SHA扩展到1024位状态,则需要使用128位操作,这在几乎所有平台上都很慢。

评论


$ \ begingroup $
我想指出(从无知的角度),在当前平台上运行缓慢这一事实并不能提供额外的安全性。它只是为攻击者提供了一条简单的途径,使攻击者可以通过支持128位操作的自定义设备来积累大量的密码强制功能。
$ \ endgroup $
– Nanofarad
14年8月19日在0:03

#2 楼

安全哈希标准和相应的FIPS-180 / 202未指定任何哈希来满足256位以上的安全要求(使用512位哈希)。这不太可能改变。

SHA-2是使用状态和字长构建的,可以满足商用计算机(x86和Alpha)的安全性要求,该商用计算机使用32位和64位最大CPU字长来实现。通用寄存器。这意味着状态是用8个字构建的,可以满足2个最常见的安全性要求。 (在更多的字输入中)或更大的字长,除了专用处理器或SIMD寄存器(没有适当的指令)外,这是不存在的(现在仍然不存在)。不需要和不能做的组合意味着没有设计1024位状态的SHA-2哈希函数。另一方面,海绵函数允许通过组合海绵来确定安全性容量和输出长度。 Keccak支持高达800位的内部安全级别,但性能受到严重影响。 SHA-3是从Keccak构建的。

虽然SHA-3未指定安全性高于256位的哈希,但确实指定了可扩展输出函数SHAKE256,该函数在输出时具有可变长度的输出256位内部安全性。 SHAKE256-1024将是一个1024位摘要,并具有5​​12位哈希的有效安全性。