我并不是说这是一场辩论,但我正在努力理解为什么这么多应用程序使用SHA1来实现散列机密的技术原理,当SHA512更安全时.也许这仅仅是为了向后兼容.
除了明显更大的尺寸(128个字符对比40个)或轻微的速度差异外,还有其他原因让人们使用前者吗?
此外,我认为SHA-1几年前首先被VCR的处理器破解.有没有人破解512(可能还有吹叶机),或者没有盐腌仍然可以安全使用?
Tho*_*nin 42
SHA-1的大多数用途都是为了实现互操作性:当我们实施强制要求SHA-1的协议时,我们使用SHA-1.还考虑了易于开发:各种语言和编程环境中的SHA-1实现比SHA-512实现更常见.
此外,即便如此,大多数哈希函数的使用都没有性能问题(至少在哈希函数是瓶颈时没有性能问题),有些架构中SHA-1比SHA-512更有效.考虑一个基本的Linksys路由器:它使用Mips衍生CPU,时钟频率为200 MHz.这样的机器可以重新编程,例如使用OpenWRT(用于嵌入式系统的小型Linux).作为路由器,它具有快速网络(100Mbit/s).假设您想要散列一些数据(例如,作为某些VPN软件的一部分 - 路由器看起来像是运行VPN的良好候选者).使用SHA-1,使用完整的CPU可以获得大约6 MB/s的速度.这已经远低于网络带宽.SHA-512在同一台机器上不会超过1.5 MB/s.在这样的系统上,性能的差异是不可忽视的.此外,如果我在Linksys路由器上使用SHA-1进行某些通信协议,则链路另一端的机器也必须使用SHA-1.
好消息是,正在进行竞争以选择代号为SHA-3的新标准哈希函数.一些竞争候选者提供类似于SHA-1的性能,甚至更好一些,同时仍然产生512位输出并且(可能)与SHA-512一样安全.
Mic*_*yan 24
SHA1和SHA512都是哈希函数.如果您将它们用作加密哈希,那么也许这是使用SHA512的充分理由; 但是,有些应用程序仅使用这些功能来识别对象.例如,Git使用SHA1来廉价地区分对象.在这种情况下,由于SHA1对两个文档之间发生冲突的可能性非常小,因此当SHA1超出适合该任务的范围时,SHA512的额外空间要求确实没有理由.
在加密哈希和使用盐的选择方面,你可能有兴趣阅读Do not Hash Secrets.即使使用SHA512,使用盐也是一个好主意(并且它也很便宜,所以为什么不这样做?),因为你可以猜出顶级密码,看看它们是否有相同的哈希,但作者指出HMAC是一种更安全的机制.在任何情况下,您都必须确定与额外时间+空间相关的成本以及与违规可能性相关的成本,并确定您想要的偏执程度.正如微软最近发现的那样,不断更改密码是浪费金钱而且没有回报,所以虽然在安全性方面偏执通常很好,但你真的需要做数学来判断它是否有意义......安全性的收益是否超过了时间和存储成本?