ComSec作业六:Hash
11.1
11.1 安全Hash函数需要具有哪些特性?
需求 | 描述 |
---|---|
输入长度可变 | H H H 可应用于任意大小的数据块 |
输出长度固定 | H H H 产生定长的输出 |
效率 | 对任意给定的x,计算 H ( x ) H(x) H(x) 比较容易,用硬件和软件均可实现 |
单向性 | 对于任意给定的Hash吗h,找到满足 H ( y ) = h H(y)=h H(y)=h 的 y y y 在计算上是不可行的 |
弱抗碰撞性 | 对于任何给定的分块 x x x ,找到满足 y ≠ x y\neq x y=x 且 H ( x ) = H ( y ) H(x)=H(y) H(x)=H(y) 的 y y y 在计算上是不可行的 |
强抗碰撞性 | 找到任何满足 H ( x ) = H ( y ) H(x)=H(y) H(x)=H(y) 的偶对 ( x , y ) (x,y) (x,y) 在计算上是不可行的 |
伪随机性 | H H H 的输出满足伪随机测试标准 |
11.2
11.2 弱抗碰撞和强抗碰撞之间的区别是什么?
弱抗碰撞性:对于任何给定的分块
x
x
x,找到满足
y
≠
x
y\neq x
y=x 且
H
(
x
)
=
H
(
y
)
H(x)=H(y)
H(x)=H(y) 的
y
y
y 在计算上是不可行的、
强抗碰撞性:找到任何满足
H
(
x
)
=
H
(
y
)
H(x)=H(y)
H(x)=H(y) 的偶对
(
x
,
y
)
(x,y)
(x,y) 在计算上是不可行的
从定义上,一个函数如果是抗强碰撞的,那么同时是抗弱碰撞的,但是反之则不一定成立
对于弱抗碰撞,攻击者对给定的
H
a
s
h
Hash
Hash 函数值
h
h
h,试图找到满足
H
(
y
)
=
h
H(y)=h
H(y)=h的
y
y
y。穷举攻击的方法是随机选择
y
y
y,尝试计算其
H
a
s
h
Hash
Hash 值直到碰撞出现。对于
m
m
m 位的
H
a
s
h
Hash
Hash 值,穷举规模大约是
2
m
2^m
2m。对于攻击者平均尝试次数为
2
m
−
1
2^{m-1}
2m−1,才能找到一个满足
H
(
y
)
=
h
H(y)=h
H(y)=h 的
y
y
y 。而强抗碰撞性,攻击者试图找到两个消息或数据块
x
x
x 和
y
y
y,满足
H
(
x
)
=
H
(
y
)
H(x)=H(y)
H(x)=H(y)。相比弱抗碰撞,其穷举规模相对更小一些。
11.3
11.3 Hash函数中的压缩函数的作用是什么?
压缩函数将输入的n位数和一个
b
b
b 位分组,变成为一个
n
n
n 位的分组。通常
b
>
n
b>n
b>n,因此称为压缩。
11.7
11.7 给出海绵结构的定义
在海绵函数中,输入长度和输出长度都可变的消息被分块为固定长度的分组。每个分组逐次作为每轮迭代的输入,同时上轮迭代的输出也反馈至下轮的迭代中,最终产生一组输出块。
海绵函数由三组参数定义:
f
=
f=
f= 内部函数,用于处理每轮的输入分组
r
=
r=
r= 输入分组的位长度,称其为位速率(bitrate)
p
a
d
=
pad=
pad= 填充算法