《Bitcoin and Cryptocurrency Technologies》加密货币作业第一章 生日攻击(哈希碰撞)
生日攻击是一种利用生日悖论原理,寻找哈希函数碰撞的密码学攻击手段。攻击者通过尝试不同的输入,寻找产生相同哈希输出的两个输入,从而破解哈希函数。生日攻击的时间-空间复杂度存在一个下限,即攻击所需的时间和空间乘积至少为 O(2^n/2),这意味着攻击难度随着哈希输出长度的增加而指数级增长。因此,为了抵抗生日攻击,现代密码学中使用的哈希函数通常具有较长的输出长度。
生日攻击是一种密码学攻击手段,它基于所谓的“生日悖论”。简单来说,生日悖论指出,在仅有23人组成的群体中,至少有两人同一天生日的概率超过50%。这个概率随着人数的增加而迅速增加。
在密码学中,生日攻击用于寻找哈希函数的碰撞,即两个不同的输入产生了相同的输出。对于一个理想的哈希函数H,它产生n位的输出,以下是对生日攻击的详细解释:
理想的哈希函数
- 独立性:每个输出值都是独立的。
- 均匀分布:每个输出值在{0,1}n空间中出现的概率是相等的。
攻击方式
-
方法一:时间和空间非均衡的方法
- 时间复杂度:
- 空间复杂度:
- 过程:只需要存储一个输入-输出对,然后不断尝试新的输入,直到找到一个与之前存储的输出相同的值。由于哈希函数的输出是均匀分布的,所以平均来说,我们只需要尝试2^n/2次就能找到一个碰撞。
- 时间复杂度:
-
方法二:时间和空间均衡的方法
- 时间复杂度:
- 空间复杂度:
- 过程:用
的空间同时输入
次
- 时间复杂度:
问题:时间和空间复杂度的乘积是否可以是
假设存在一种攻击方法,使得时间和空间复杂度的乘积是。这意味着存在一个常数c,使得时间复杂度T和空间复杂度S满足:
数学推导:
假设我们有一个理想的哈希函数,它将任意长度的输入映射到一个固定长度的输出。输出长度为n位,因此可能的不同哈希值总数为
1. 单次哈希碰撞的概率:
假设我们使用k个不同的哈希值。
2. 至少一次碰撞的概率:
先计算没有碰撞发生的概率,然后用 1 减去这个概率 。没有碰撞发生的概率(即所有哈希值都是唯一的)是:
至少发生一次碰撞的概率是:
当x很小时,我们可以使用近似表示
即
当k相对于很小时,每个分数
中的都是一个非常小的数, 令
即:
等差数列求和,得:
3 .其中 k=S*T ; 使 p=1 ,则
;需
为了使上述式子成立, 的增长速度与
相同;则有
;
即时间和空间复杂度的乘积为
小o符号比大O符号提出了一个更严格的界限,通常认为对于安全的哈希函数,任何攻击的时间-空间乘积至少为。
更多推荐
所有评论(0)