Merkle-Damgård建筑中的河豚?

时间:2011-02-20 13:29:51

标签: hash cryptography blowfish

为了构建加密哈希,是否有一个在Merkle-Damgård构造中使用Blowfish的库?我对密码散列不感兴趣,但是通用加密散列。 (在我们已经使用Blowfish的应用程序中。)

2 个答案:

答案 0 :(得分:3)

滚动你自己的加密是一个非常糟糕的想法。阅读它,大声重复,再做一次。

特别是对于哈希函数。世界各地的密码学家目前正在通过SHA-3 competition设计新的哈希函数。它始于2007年,预计将于2012年结束,数十名(更可能是数百名)聪明人在密码设计(阅读:博士及其他人)中专注于。假设你可以在几周内自己做得比五年内所有人做得更好,接近荒谬。事实证明,构建安全散列函数是一个难题(从理论的角度来看,我们甚至不知道安全散列函数是否真的存在)。构建安全的分组密码非常容易。

Blowfish(Bruce Schneier)的设计师是Skein的设计师之一,他是SHA-3的候选人之一。请注意,没有重复使用Blowfish。请注意,他还在1998年发布了Twofish分组密码,它是AES选择过程的候选者,是Blowfish的一个先进的继承者; Twofish比Blowfish更受审查,因此即使对称加密,你也不应该使用Blowfish而是使用Twofish(或者更好的是,使用AES,又称“Rijndael”,它比Twofish更受欢迎)。

答案 1 :(得分:1)

由于几个原因,Blowfish用作哈希压缩函数是有问题的:

首先,许多将分组密码转换为散列函数的完整方案产生的散列长度与分组密码的块长度相同。对于Blowfish而言,只有64位的块大小,这是不够的 - 64位散列长度只提供32位的安全性,这很容易被击败。

其次,所有安全方案都会在输入消息的每个块上更改分组密码密钥。 Blowfish有一个众所周知的慢键设置过程,所以基于它的哈希也一定会很慢。

如果您仍然未被阻止,请查找双块长度哈希构造,例如 Tandem Davies-Meyer Abreast Davies-Meyer 。但是,我会强烈建议您使用SHA-2系列中的函数实现 - 这些也很容易找到,速度快且被认为是安全的。通过重新使用Blowfish作为哈希函数,您将无法获得任何收益。