一些旧的哈希函数已被证明是不安全的。这主要是因为两个原因:
严格地说,这两个理由有很大不同的含义。第一种方法可以通过扩展块大小的长度、轮数或算法中使用的其他变量来补救。但第二部分揭示了算法设计中存在的内在缺陷。
哈希函数通常基于更简单的密码原语,从哈希函数本身的安全性到底层基元的安全性应该是可证明的。因此,我想知道是否存在一个哈希函数,其算法设计是可证明的安全的(考虑到底层原语是安全的),它的总体安全性仅取决于变量的长度。这样的算法可以很容易地扩展,以应付不断增加的计算能力,而无需付出很大的努力。
有这样一个可扩展的算法吗?如果是,那又是什么呢?为什么人们不断发明新的算法而不是扩展这个算法呢?如果没有,为什么?
发布于 2016-12-12 11:38:18
注意:这个答案假设这是关于安全的哈希应用程序,而不是密码散列,这是一组与其他属性不同的算法。
你的问题中有几个假设可能不完全适用:
一些旧的哈希函数已被证明是不安全的。这主要是因为两个原因:
我们仍在努力寻找SHA-1中的碰撞,尽管在理论意义上它被认为是破碎的。对于大多数应用程序来说,MD5的哈希输出大小还不够大,但是使用蛮力查找预图像甚至碰撞仍然是一个相当大的问题。
在可预见的将来,尽管SHA-224提供的安全性低于128位(许多人认为这是你现在应该努力争取的最低安全性),但在可预见的将来,SHA-2和SHA-3的输出大小是无法达到的--而且也是遥不可及的。
碰撞攻击所需的计算能力的数量呈指数增长(每两个比特的输出大小增加一倍)。因此,计算能力的大小并没有真正威胁到大输出的安全散列的安全性。
哈希函数通常基于更简单的密码原语,从哈希函数本身的安全性到底层基元的安全性应该是可证明的。因此,我想知道是否存在一个哈希函数,其算法设计是可证明的安全的(考虑到底层原语是安全的),它的总体安全性仅取决于变量的长度。这样的算法可以很容易地扩展,以应付不断增加的计算能力,而无需付出很大的努力。有这样一个可扩展的算法吗?如果是,那又是什么呢?
大多数哈希结构都是按照您所描述的方式构建的。Merkle rd用于SHA-2,而SHA-3使用海绵结构(使用函数f作为底层原语)。
通过简单地更改变量,基本原语通常不能扩展到内部状态的任何长度/大小。这些函数使用常量和算法来处理特定的单词大小。可以为内部状态和输出大小的不同大小创建基础原语的多个版本。这正是SHA-2和SHA-3 (Keccak)所发生的情况.
然而,没有必要超出256位的安全性。基础原语/哈希结构要么被破坏,要么结构永远保持安全。
为什么人们不断发明新的算法而不是扩展这个算法呢?
因为我们怀疑底层的原始人和建筑本身。即使是我们认为安全的块(我们不能证明两者都是安全的)在安全哈希函数中也可能不安全。此外,即使哈希在形式上仍然是安全的,构造的特定属性也可能会出现问题。例如,沙-2易受长度扩展的影响,而SHA-3则不容易扩展。
别低估了研究人员的好奇心和动力。新哈希函数的发布不需要任何理论上的理由。
发布于 2016-12-13 00:05:48
我同意Maarten的观点,即你的问题背后的理由似乎是错误的。
但是,至少有一个这样的哈希函数是已知的;VSH-DL哈希函数,它基于离散日志问题的一个变体。
https://crypto.stackexchange.com/questions/42223
复制相似问题