11.1
(1)输入长度可变。即H可应用于任意大小的数据块。输出长度固定。即H产生定长的输出。
(2)效率。即对任意给定的x,计算H(x)比较容易,用硬件和软件均可实现。
(3)抗原像攻击(单向性)。即对任意给定的Hash码h,找到满足H(y)=h的y在计算上是不可行的。
(4)抗第二原像攻击(弱抗碰撞性)。即对任何给定的分块x,找到满足y≠x且H(x)=H(y)的y在计算上不可行。
(5)抗碰撞攻击(强抗碰撞性)。即找到任何满足H(x)=H(y)的偶对(x,y)在计算上不可行。
(6)伪随机性。即H的输出满足伪随机性测试标准。
11.2
弱抗碰撞性:任意给定分组x,寻求不等于x的x’,使得H(x)=H(x’)在计算上不可行;
强抗碰撞性:寻求任何的(x,x’)对,使得H(x)=H(x’)在计算上不可行;
一个函数如果是抗强碰撞的那么也同时是抗弱碰撞的.
11.3
哈希函数使用压缩函数作为基本构建块,并涉及压缩函数的重复应用,压缩函数将一个较长的,固定长度的输入处理后,返回一个较短的,固定长度的输出。Hash函数是一种基于压缩函数的不断重复压缩输入的分组和前次压缩处理的结果,直到整个消息都被压缩完毕的过程,最后的输出作为整个消息的hash值。在这个过程中,任意长度的消息被破碎成一定长度的分组,分组的长度取决于压缩函数。并且出于安全的角度,对未填充满的分组作相应的数据填充。
11.7
海绵结构与其他迭代Hash函数的结构相似,且允许输入长度和输出长度都可变,在海绵函数中,输入消息被分块为固定长度的分组。每个分组逐次作为每轮迭代的输入,同时上轮迭代的输出也反馈至下轮的迭代中,最终产生一组输出块。海绵函数由三组参数定义:f = 内部函数,用于处理每轮的输入分组 r = 输入分组的位长度,称其为位速率(bitrate) pad = 填充算法