11.1
-
输入长度可变。H可应用于任意大小的数据块。
-
输出长度固定。即H产生定长的输出。
-
效率。对任意给定的x,计算H(x)比较容易,用硬件和软件均可实现。
-
抗原像攻击(单向性)。对任意给定的Hash码h,找到满足$H ( y ) = h $的y在计算上是不可行的。
-
抗第二原像攻击(弱抗碰撞性)。对任何给定的分块x,找到满足y ≠ x 且 $H ( x ) = H ( y ) $的y在计算上不可行。
-
抗碰撞攻击(强抗碰撞性)。找到任何满足$H ( x ) = H ( y ) $的偶对(x,y)在计算上不可行。
-
伪随机性。H的输出满足伪随机性测试标准
11.2
-
弱抗碰撞是指攻击者对于给定的Hash值h,试图找到 H ( y ) = h H ( y ) = h H(y)=h的y。对于m位的Hash值,穷举攻击的规模是 2 m 2^m 2m
-
强抗碰撞是指攻击者试图找到两个消息或数据块x和y,满足 H ( x ) = H ( y ) H ( x ) = H ( y ) H(x)=H(y) 。对于m位的Hash值,穷举攻击的规模是 2 m / 2 2^{m/2} 2m/2
11.3
压缩函数将一个较长的,固定长度的输入处理后,返回一个较短的,固定长度的输出。Hash函数是一种基于压缩函数的不断重复压缩输入的分组和前次压缩处理的结果,知道整个消息都被压缩完毕的过程,最后的输出作为整个消息的hash值。在这个过程中,任意长度的消息被破碎成一定长度的分组,分组的长度取决于压缩函数。并且出于安全的角度,对未填充满的分组作相应的数据填充。
11.7
海绵结构与其他迭代Hash函数的结构相似,在海绵函数中,输入消息被分块为固定长度的分组。每个分组逐次作为每轮迭代的输入,同时上轮迭代的输出也反馈至下轮的迭代中,最终产生一组输出块。