生日悖论与哈希算法范围概率碰撞下限的讨论与利用

好久没见小明了,今天我们继续来聊小明的故事。小明最近十分勤奋好学,看了很多数学书籍,数学成绩上升很快,于是被老师提拔为新任班长。刚好,小红最近快过生日了,于是小红就来问小明自己班上,或者隔壁班有没有和她生日相同的同学。小明知道自己班上有41个同学,而隔壁班上的人稍微少一点只有23个,但是小明手上现在没有花名册。于是他对小红说,我们班上一定有两个生日相同的人,隔壁班上有一半的可能有两个生日相同的人,但是我不太确定是不是你。

小红十分疑惑,问他:你怎么这么确定我们班上有生日相同的人,隔壁班上有一半可能有生日相同的人?

小明故作神秘的笑而不语,然后问小红: “你觉一个有23个同学的班上,有生日相同的同学的概率是多少?”

“23/365吧,这个概率应该很小吧”,小红说。

“但是,你的答案正确的概率更小。”,小明说。

Why?  OK,right now!我们来回答这个问题吧,首先需要提出一个概念:生日悖论。什么是生日悖论?其实就是上文中小明向小红提的那个问题;在一个23个人的人群中,有两人生日相同的概率是多少?我们直觉的答案是23/365,但是实际上,答案应该是0.5。同样,在一个41人的人群中,有两人生日相同的概率是0.9而不是40/365。这就是所谓的生日悖论!

是不是感觉到很奇怪?

但是,why?  要回答这一个问题,我们只需要做一个简单的计算:依次考虑每个人的生日,

第一个人:365/365;

第二个人;364/365;

第三个人:363/365;

……

第n个人:(365-n+1)/365

那么,在一个n人的群体中,有至少两人生日相同的概率为1-(365/365 * 364/365 * 363/365……(365-n+1)-365)

从上面的等式我们可以得知:

当n=23时,概率为0.5;

当n=41时,概率为0.9。

所以,小明才有把握说隔壁班上一定有生日相同的人 而自己班上有百分之五十的可能性有生日相同的人。

知道了什么是生日悖论,我们来接着讨论生日攻击,也就是本文的重点内容。

什么是生日攻击?

生日攻击是指在网络安全中利用生日现象,找到冲突的密码学哈希函数值,伪造报文,攻击报文身份验证算法的模式。(以上解释来源于Wiki)

举例说明生日攻击的形式(同样来源于Wiki)。

艾丽斯要通过某种签名方案对文档的散列值签名来签署一个电子文档,假设散列函数产生一个50比特的输出,她担心佛瑞德(Fred)哄骗她签署另外一个合同,也许是关于佛罗里达的沼泽地。由于欺骗性的合同和正确的文档有相同散列值的概率是1 / 250,这大概是1 / 1015,因此艾丽斯感觉是安全的。佛瑞德可以尝试许多欺骗性的合同,但是他找到有相同散列值的合同的可能性非常小,但是佛瑞德研究了生日问题并且照着下面的方法去做,他找到了能够对文档进行细微改变的30个位置:在一行的末尾增加一个空格,略微改变一个词的拼写,等等。在每一个位置他有两个选择,要么做一个细微的改变要么保留原状,因此他能够产生230个本质上与原始文档相同的文档,同样他得到230个欺骗性的合同并且存储它们的散列值。考虑最初的生日问题,其中r = 230并且n = 250,我们有).其中λ = 210 = 1024。因此一个好文档的版本和一个欺骗性的合同有相同散列值的概率是。佛瑞德找到这一对匹配的文档,并且让艾丽斯签署其中好的文档版本,他计划将她的签名附加在欺骗性的合同之上,由于它们有相同的散列值,因此签名对于欺骗性的合同将会有效,所以佛瑞德会声称艾丽斯同意购买沼泽地。然而艾丽斯是一个英语教师,她坚持从一个句子中删除一个逗号,这样就和佛瑞德要求她签名的文档有着完全不同的散列值,佛瑞德又被挫败了,这时他面临的问题是找到一个欺骗性的合同和新的正确文档具有相同的散列值,这根本是不可能的。

佛瑞德的行为被称为生日攻击,由于生日攻击有效地将比特数对分,在实际应用中只要你认为有必要,就可以对输出使用两次散列函数。对于签名方案的生日攻击,艾丽斯所做的是一种可取的方法,在签名电子文档时要做一个小的改动。

看过上文之后相信大家都对生日攻击有极大的兴趣 下面详细解释生日攻击的原理。

设h:X->Y是一个Hash函数,X和Y都是有限的,并且|X|>=2|Y|,记|X|=m,|Y|=n。显然至少有n个碰撞,问题是如何去找到这些碰撞。因为我们关心的是碰撞概率的下界,所以可以假定对所有y∈Y,有|h-1(y)|≈m/n。这个假定是合理的,这是因为如果原像集h-1(y)( y∈Y)不是近似相等的,那么找到一个碰撞的概率将增大。

因为原像集h-1(y)( y∈Y)的个数都近似相等,并且xI(1<=i<=k)是随机选择的,所以可将yI=h(xi),1<=i<=k视作Y中的随机元素(yi(1<=i<=k)未必不同)。但计算k个随机元素y1,y2, .....yk∈Y是不同的概率是一件容易的事情。依次考虑y1,y2, .....yk。y1可任意地选择;y2 ≠y1的概率为1-1/n;y3 ≠y1 ,y2的概率为1-2/n;.....;yk ≠y1,y2, .....,yk-1的概率为1-(k-1)/n。

因此,没有碰撞的概率是(1-1/n)(1-2/n).....(1-(k-1)/n)。如果x是一个比较小的实数,那么1-x≈e-x,这个估计可由下式推出:e-x=1-x+x2/2!-x3/3!+ .....。现在估计没有碰撞的概率(1-1/n)(1-2/n).....(1-(k-1)/n)约为1-e-k(k-1)/2n。我们设ε是至少有一个碰撞的概率,则ε≈1-e-k(k-1)/2n,从而有k2-k≈nln(1/(1-ε)2)。去掉-k这一项,我们有k2≈nln(1/(1-ε)2),即k≈sqrt(2nln(1/(1-ε)2))。

如果我们取ε=0.5,那么k≈1.17 sqrt(n)。这表明,仅sqrt(n)个X的随机的元素就能以50%的概率产生一个碰撞。注意ε的不同选择将导致一个不同的常数因子,但k与sqrt(n)仍成正比例。

来源于生日攻击,有另外两种密码攻击方法将其改进后而应用广泛:中间偶遇攻击和修正分组攻击。

中间相遇攻击是生日攻击的一种变形,它不比较Hash值,而是比较链中的中间变量。这种攻击主要适用于攻击具有分组链结构的Hash方案。中间相遇攻击的基本原理为:将消息分成两部分,对伪造消息的第一部分从初试值开始逐步向中间阶段产生r1个变量;对伪造消息的第二部分从Hash结果开始逐步退回中间阶段产生r2个变量。在中间阶段有一个匹配的概率与生日攻击成功的概率一样。

在修正分组攻击中,为了修正Hash结果并获得期望的值,伪造消息和一个分组级联。这种攻击通常应用于最后一个组,因此也称为修正最后分组攻击。差分分析是攻击分组密码的一种方法。这种攻击也可用来攻击某些Hash算法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 你的数学直觉怎么样?你能凭借直觉,迅速地判断出谁的概率大,谁的概率小吗?下面就是 26 个这样的问题。如果你感兴趣...
    cnnjzc阅读 6,867评论 0 12
  • “人工智能”,以前从没有想过关于人工智能的事情,只是听说机器人,有的机器人可以打扫卫生,可以送菜,可以提醒...
    梵音瑜伽呆橙阅读 188评论 0 0
  • 你以为你和别人追求的不一样 最终还是回到了柴米油盐酱醋茶 为了房子,车子的前进的步伐中 如果骄傲终究被现实打破~ ...
    Koli叽哇阅读 686评论 0 0
  • 1、感恩今天所有看到的听到的都是来成就我的。 2、感恩今天遇见一切美好的人事物,都是我的最佳利益。 3、感恩今天因...
    感恩女神诗淘阅读 480评论 0 1
  • 1.阿海对捉弄他的红豆和阿占说,祝你们春梦了无痕呀。 2.有时候太为人着想就没了自我 3.爱一个人,不一定要她整辈...
    乘格帆阅读 844评论 0 1