密码学系列之:生日攻击

简介: 密码学系列之:生日攻击

密码学系列之:生日攻击


简介


生日攻击其实是一个概率论的问题,也就是说一个看起来很难发生的事情,事实上它发生的概率却很大。这种主观上和事实上的概率差距,让随机攻击成功的几率变的更高,这样的攻击就叫做生日攻击。


生日问题的由来


生日问题也叫做生日悖论,它是这样这样描述的。


假如随机选择n个人,那么这个n个人中有两个人的生日相同的概率是多少。如果要想概率是100%,那么只需要选择367个人就够了。因为只有366个生日日期(包括2月29日)。


如果想要概率达到99.9% ,那么只需要70个人就够了。50%的概率只需要23个人。


对于现在的幼儿园小朋友来说,一个班上差不多有30人,那么将会有大于50%的几率,班上有两个人的生日是一样的。


听起来是不是很神奇?跟我们第一映像中的基数是不是要少很多。


我们看一张概率图:


image.png


在实际应用中,可以应用生日问题中的概率模型,从而减少碰撞攻击的复杂度,或者来评估一个hash函数中可能出现碰撞攻击的几率。


怎么计算呢?


假如P(A) 是生日相同的概率,那么P(A) = 1 - P(A’) ,其中P(A’)是生日不同的概率。


一个人生日不同的概率是365/365,两个人生日不同的概率就是365/365 * 364/365 ,依次类推。


我们可以得到23个人生日不同的概率大概就是 0.492703。


也就是说23个人中有两个人生日相同的概率可以大于50%。


再看一张表来个更加直观的描述:


image.png

生日问题的衍生


生日问题的取值范围是在一年的365天之内,也就是说生日只可能有365种可能性。


我们将这个问题扩展一下到一般的情况,假设有一个函数f,它的输出范围是H,那么我们的攻击就是找到两个不同的x,y,让f(x)=f(y)。


这时候,我们可以称x和y发生了碰撞。


根据概率论的公式,我们想要达到50%的几率,那么需要尝试的次数是:


image.png

如果以bits位来表示可能计算出的结果的话,我们可以参考下面的概率表:


image.png

生日攻击的应用


生日攻击一般应用在数字签名中。一般来说为了对机密消息进行签名,因为加密的限制,如果消息很大的情况下,不可能对所有的消息进行签名,通常会对消息计算hash值,然后对这个hash值进行签名。


比如有人想做一个欺诈性的合同,那么会在原合同的基础上进行修改,不断的进行尝试,从而找到一个修改后的合同,让合同和之前合同的hash是一样的,从而导致两者的签名也是一样的。


怎么抵御这种攻击呢?根据我们生日攻击的公式,当然是将签名方案使用的哈希函数的输出长度选择得足够大,以使生日攻击在计算上变得不可行。


相关文章
|
2月前
|
安全 数据安全/隐私保护
密码学系列之一:密码学的前世今生
密码学系列之一:密码学的前世今生
|
存储 算法 安全
【密码学】非对称加密算法 - ECDH
由于 ECC 密钥具有很短的长度,所以运算速度比较快。到目前为止,对于 ECC 进行逆操作还是很难的,数学上证明不可破解,ECC 算法的优势就是性能和安全性高。实际应用可以结合其他的公开密钥算法形成更快、更安全的公开密钥算法,比如结合 DH 密钥形成 ECDH 密钥协商算法,结合数字签名 DSA 算法组成 ECDSA 数字签名算法。ECDH算法常常用来进行密钥的协商,协商好密钥后,用来解决上面的密钥分配问题,将对称加密的密钥安全的传到对端设备。算法加密/解密数字签名密钥交换RSA✅✅✅❌。
2715 0
|
Web App开发 安全 算法
一起学习密码学:对称加密与非对称加密
本文是 一起学习密码学 系列第 1 篇。
一起学习密码学:对称加密与非对称加密
|
7月前
|
存储 安全 算法
为什么人人都要懂点密码学
人类进入二十一世纪以来,随着计算机和移动设备的普及高速发展,我们的社会已经高度信息化,为了防止信息被窃取、修改,就需要对信息的存储、传递进行加密处理,而加密就需要使用到加密算法,解密需要使用密码才可以看到原文。
182 1
|
7月前
|
安全 算法 数据安全/隐私保护
我对密码学的理解
密码学(Cryptography),是一门将信息进行加密处理与传递,以及分析加密信息的学科。 密码学即保密技术,是一门研究如何保证信息传输的安全技术,是数字信息及其他形式的信息如何防止未经授权的使用及访问的学科。
62 2
|
9月前
|
算法 安全 Serverless
密码学 Cryptology 的基本概念术语
密码学 Cryptology 的基本概念术语
86 2
|
10月前
|
算法 安全 数据安全/隐私保护
现代密码学 | 03:分组密码
现代密码学 | 03:分组密码
197 0
|
12月前
|
存储 算法 安全
密码学-回顾篇(下)
密码学-回顾篇
174 0
|
12月前
|
编解码 并行计算 算法
密码学-回顾篇(上)
密码学-回顾篇
167 0
|
并行计算 算法 搜索推荐
【密码学】 对称加密算法
在密码学中,加密算法按照实现方式可分为对称加密算法和非对称加密算法。对称加密算法指的是加密方和解密方使用相同的密钥进行加密和解密,即双方使用共同的密钥。在对称加密算法使用的过程中,数据发送方将明文数据通过密钥进行加密生成密文数据,将密文数据发送给接收方,接收方收到密文数据后,通过密钥进行解密,将其恢复成明文数据。这就要求接收方要首先知道密钥,这需要发送方先将密钥通过安全方式发给接收方,通常会使用非对称加密例如ECDH算法来传输密钥(非对称密钥会在下章讲解)。
257 0
【密码学】 对称加密算法