浅谈“生日攻击”和“生日悖论”

合集下载

生日悖论公式

生日悖论公式

生日悖论公式生日悖论是指在一个群体中,只要人数达到一定数量,至少会有两个人具有相同的生日。

这个悖论在数学领域被广泛探讨,其结果却常常超出人们的直觉。

本文将从数学原理、实际示例以及对我们生活的指导意义三个方面,生动全面地解释生日悖论。

首先,我们来看看生日悖论的数学原理。

在一个群体中,假设有n 个人,那么每个人的生日都有365种可能性(不考虑闰年)。

第一个人的生日可以是任何一天,第二个人的生日也可以是任何一天……直到第n个人的生日。

因此,第n个人和前面的n-1个人必须避免选择相同的生日,即他的生日选择余地只剩下了365-(n-1)天。

这时,我们可以使用乘法原理来计算选择不同生日的概率,即P(n)=1*365/(365^1)*364/(365^2)*......*(365-(n-1))/(365^n-1)。

然而,我们更关心的是至少有两个人生日相同的概率,即1-P(n)。

通过代入不同的n值,我们可以看到,当群体中的人数超过23个时,至少有两个人生日相同的概率已经超过一半了,这是一个惊人的事实。

其次,我们可以通过实际示例来理解生日悖论。

假设我们有一个教室里有30个学生,我们随机选择一位学生,他的生日是1月1日的概率是365/365=1。

我们再选择第二位学生,如果他的生日不是1月1日,概率是364/365。

依次类推,直到选择第30位学生。

我们可以使用乘法原理来计算这个概率,即P(30)=365/365*364/365*......*336/365≈0.706。

也就是说,教室里至少有两个学生生日相同的概率是70.6%。

这个实际示例说明了生日悖论在现实生活中的应用,尤其是在人群较大的情况下,生日相同的可能性更大。

最后,生日悖论给我们生活中的某些方面带来了指导意义。

首先,生日悖论提醒我们在安排活动或集会时要慎重考虑,因为可能出现生日相同的情况。

这对于组织生日派对、选举日期等都具有重要意义。

其次,生日悖论也提醒我们对于大数据和统计结果要保持理性和客观。

算法导论-生日悖论

算法导论-生日悖论

算法导论-⽣⽇悖论算法导论第五章讲到了⽣⽇悖论。

1、定义:⽣⽇悖论[1]是指,如果⼀个房间⾥有23个或23个以上的⼈,那么⾄少有两个⼈的相同的概率要⼤于50%。

这就意味着在⼀个典型的标准⼩学班级(30⼈)中,存在两⼈⽣⽇相同的可能性更⾼。

对于60或者更多的⼈,这种概率要⼤于99%。

从引起⽭盾的⾓度来说⽣⽇悖论并不是⼀种,从这个数学事实与⼀般相抵触的意义上,它才称得上是⼀个悖论。

⼤多数⼈会认为,23⼈中有2⼈⽣⽇相同的概率应该远远⽣⽇悖论,在这个问题之后的数学理论已被⽤于设计著名的密码攻击⽅法:⽣⽇攻击。

⼩于50%。

计算与此相关的被称为⽣⽇悖论它的计算⽅式是这样的: n个⼈可能的⽣⽇组合是365×365×365×……×365(共n个)个,记作a; n个⼈⽣⽇都不重复的组合是365×364×363×……×(366-n)个,记作b; 所以n个⼈⽣⽇不重复的概率是b/a,则n个⼈⽣⽇重复的概率是1-b/a。

只要有23⼈在⼀起,其中两⼈⽣⽇相同的概率就达到51%!具体细节维基百科[1]有分析。

⽣⽇悖论的本质就是,随着元素增多,出现重复元素的概率会以惊⼈速度增长,⽽我们低估了它的速度[2]。

2、推⼴:a.⼀个房间要有多少⼈,才能让某⼈与你⽣⽇相同的概率⾄少为1/2?(习题5.4-1)253b.⼀个聚会需要邀请多少⼈,才能让其中很可能有3个⼈的⽣⽇相同?(习题5.4-3)3、相关a.你和朋友参加聚会,包括你们两⼈在内⼀共有10个⼈在场。

你朋友想跟你打赌,说这⾥没有⼀个⼈⽣⽇和你相同,你就给他1元,没有⼀个⼈⽣⽇和你不同,他给你2元。

你会接受么?(坊间流传的google疯狂⾯试题)b.⽹上的⼀道推理题:⼩明和⼩强都是张⽼师的学⽣,张⽼师的⽣⽇是m⽉n⽇,2⼈都知道张⽼师的⽣⽇是下列10组中的⼀天,张⽼师把m值告诉了⼩明,把n值告诉了⼩强,张⽼师问他们知道他的⽣⽇是那⼀天吗?3⽉4⽇ 3⽉5⽇ 3⽉8⽇6⽉4⽇ 6⽉7⽇9⽉1⽇ 9⽉5⽇12⽉1⽇ 12⽉2⽇ 12⽉8⽇⼩明说:如果我不知道的话,⼩强肯定也不知道⼩强说:本来我也不知道,但是现在我知道了⼩明说:哦,那我也知道了请根据以上对话推断出张⽼师的⽣⽇是哪⼀天?4、参考:1.维基百科-⽣⽇问题:2.科学松⿏会,⽣⽇悖论与⽣⽇攻击:。

从概率论角度解决生活中的悖论

从概率论角度解决生活中的悖论

从概率论角度解决生活中的悖论随着科学技术的进步,概率论(Probability Theory)越来越成为解决生活中悖论的可靠工具。

概率论是研究事件发生的可能性,利用数学模型对事情发展趋势进行预测,手段丰富而广泛。

以下,我们将从概率论角度对一些常见的生活悖论进行探讨。

1. 生日悖论在一个有23个人的房间里,至少两个人生日相同的概率是多少呢?在直觉上,我们可能会认为这个概率很小,但实际上,这个概率达到了50%以上。

这种常见的悖论就被称为生日悖论(Birthday Paradox)。

为什么会有这种结果呢?这是因为我们通常只关注自己的生日和亲近的人的生日,但忽略了其他人之间的可能性。

在一个23人的房间里,任意两个人之间的生日组合有253种,这就增加了生日相同的可能性。

根据组合数学原理,我们可以计算出这个概率约为50.7%。

2. 遗产悖论遗产悖论(The Inheritance Paradox)是由于父母的财富分配不平等,导致子女财富差距日益扩大的悖论。

该悖论产生于最简单和最公平的场景,即只有两个孩子,父母把100万均分给他们。

根据概率分布,由于是等概率分配,两个孩子同时拥有50%的概率得到50万。

然而,在现实中,只要其中一个孩子已经拥有了一定的财富,他们就更有可能获得比另一个孩子更多的遗产。

这是因为更富有的子女更容易得到父母更多的关心和帮助,这样就会创造一个更大的财富优势。

3. 游戏悖论游戏悖论(The Gambler's Fallacy)是指人们认为某些事件的发生概率会随着它们的出现而改变的悖论。

这种悖论经常发生在赌博、彩票等场所。

例如,在轮盘游戏中,当一个颜色(红色或黑色)多次连续出现时,有些人会认为另一个颜色出现的概率会增加,也就是所谓的“攒运气”。

然而,事实上,轮盘每次自主进行,在每次游戏中,每个颜色的出现概率始终都是50%。

4. 归纳悖论归纳悖论(Induction Paradox)是指我们容易从有限数量的样本中得出不准确的结论。

什么是生日悖论?

什么是生日悖论?

人们通常是站在这样一个角度来看问题——你进入了一个有着22个人的房间,那么房间里有人 会和你有相同生日的概率非常低。原因是这时候只能产生22种不同的搭配,这应该非常好理 解。
为了计算出生日相同的概率,我们可以先计算所有人生日都不同的概率。那么,第一人生日是 唯一的概率为365/365,第二个人生日是唯一的概率则下降到364/365,以此类推,第23个人生 日是唯一的概率为343/365。
那么,这背后的数学原理是怎样的呢? 在开始解释这个原因之前,先假设一年只有365天,每 一天的生日概率相同。虽然假设不完全准确,但使我们计算起来更加方便,而且不会影响到最 终结果。
生日悖论会令人感到难以置信,因为人类倾向于从自己的角度看待问题。人们通常这样想,如 果一个房间里加上自己共有23人,你会觉得在这22人里跟你同一天生日的可能性太低了。365 天,现在却只有22个人,你可能会想概率只有22/365,所以很难在这22个人中遇上跟自己同一 天生日的。
什么是生日悖论?
开动脑筋,想想生日中有趣的数学现象。例如,四年才出现一次2月29日,也意味着这一天出生 的人四年才能过上一次生日。此外,如果在街上偶遇一人,你们同一天生日的可能性有多大?
似乎很渺茫,对吧?366天,遇到同一天生日的概率为1/366,或0.0027%!概率极小,这就是 为什么当你遇到一个和你同一天生日的人,你会不禁感慨,天啊,这好神奇啊,好巧啊!
然后,把所有23个独立概率相乘,即可得到所有人生日都不相同的概率为:(365/365)× (364/365) × ... ×(343/365) ,得出结果为0.491。那么,再用1减去0.497,就可以得到23个人中 有至少两个人生日相同的概率为0.509,即50.9%,超过一半的可能性。

生日悖论3801272

生日悖论3801272

生日悖论生日悖论(Birthday paradox)生日悖论 (1)什么是生日悖论 (1)生日悖论的理解 (1)概率估计 (2)数学论证(非数字方法) (3)泛化和逼近 (5)N=365的结果 (5)泛化 (5)反算问题 (6)举例 (6)经验性测试 (7)应用 (7)近似匹配 (8)参考文献 (8)什么是生日悖论生日悖论(Birthday paradox)是指,如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。

这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。

对于60或者更多的人,这种概率要大于99%。

从引起逻辑矛盾的角度来说生日悖论并不是一种悖论,从这个数学事实与一般直觉相抵触的意义上,它才称得上是一个悖论。

大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。

计算与此相关的概率被称为生日问题,在这个问题之后的数学理论已被用于设计著名的密码攻击方法:生日攻击。

生日悖论的理解理解生日悖论的关键在于领会相同生日的搭配可以是相当多的。

如在前面所提到的例子,23个人可以产生种不同的搭配,而这每一种搭配都有成功相等的可能。

从这样的角度看,在253种搭配中产生一对成功的配对也并不是那样的不可思议。

换一个角度,如果你进入了一个有着22个人的房间,房间里的人中会和你有相同生日的概率便不是50:50了,而是变得非常低。

原因是这时候只能产生22种不同的搭配。

生日问题实际上是在问任何23个人中会有两人生日相同的概率是多少。

概率估计假设有n个人在同一房间内,如果要计算有两个人在同一日出生的机率,在不考虑特殊因素的前提下,例如闰年、双胞胎,假设一年365日出生概率是平均分布的(现实生活中,出生机率不是平均分布的)。

计算机率的方法是,首先找出p(n)表示n个人中,每个人的生日日期都不同的概率。

假如n> 365,根据鸽巢原理其概率为0,假设n≤ 365,则概率为:因为第二个人不能跟第一个人有相同的生日(概率是364/365),第三个人不能跟前两个人生日相同(概率为363/365),依此类推。

验证生日悖论

验证生日悖论

验证生日悖论问题引入:一.问题分析生日悖论:如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。

这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。

对于60或者更多的人,这种概率要大于99%。

从引起逻辑矛盾的角度来说生日悖论并不是一种悖论,从这个数学事实与一般直觉相抵触的意义上,它才称得上是一个悖论。

大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。

在《著名的生日悖论》中说道: 23个人里有两个生日相同的人的几率有多大呢?居然有50%。

悖论定义:悖论是指一种导致矛盾的命题。

悖论(paradox)来自希腊语“para+dokein”,意思是“多想一想”。

如果承认它是真的,经过一系列正确的推理,却又得出它是假的;如果承认它是假的,经过一系列正确的推理,却又得出它是真的。

生日攻击:生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。

这种攻击对Hash函数提出了一个必要的安全条件,即消息摘要必须足够长。

生日攻击这个术语来自于所谓的生日问题,在一个教室中最少应有多少学生才使得至少有两个学生的生日在同一天的概率不小于1/2?这个问题的答案为23。

二.问题求解不计特殊的年月,如闰二月。

先计算房间里所有人的生日都不相同的概率,那么第一个人的生日是 365选365第二个人的生日是 365选364第三个人的生日是 365选363: : :第n个人的生日是 365选365-(n-1) 所以所有人生日都不相同的概率是:(365/365)× (364/365) ×(363/365) ×(362/365)× ... ×【(365-n+1)/365】那么,n个人中有至少两个人生日相同的概率就是: 1-(365/365)× (364/365) ×(363/365) ×(362/365)× ... ×【(365-n+1)/365】所以当n=23的时候,概率为0.507,约等于0.51。

生日悖论概率问题

生日悖论概率问题

生日悖论:你的生日和其他人的生日有多大的概率相同?生日悖论是一个有趣的概率问题,它的答案可能会让你感到惊讶。

假设在一个房间里有23个人,那么这些人中有两个人生日相同的概率是多少呢?你可能会认为这个概率很小,但实际上它是非常高的。

为什么会这样呢?让我们来看看这个问题的背后。

生日悖论的原理在一个房间里有23个人,每个人的生日都是随机选择的。

那么第一个人的生日可以是任何一天,第二个人的生日可以是除了第一个人生日那一天的任何一天,第三个人的生日可以是除了前两个人生日那两天的任何一天,以此类推。

因此,第23个人的生日可以是除了前22个人生日那22天的任何一天。

我们可以用排列组合的方法来计算这个问题的答案。

假设我们要从365天中选择23个不同的生日,那么我们可以有C(365,23)种不同的选择方式。

其中C(n,m)表示从n个不同的物品中选择m个物品的组合数。

这个数值可以通过数学公式计算得出,也可以使用计算器或者网络上的计算工具来计算。

现在我们来计算一下,如果要保证在一个房间里至少有两个人的生日相同,需要多少人才能满足这个条件。

这个问题可以转化为求解至少有两个人的生日不同的概率,即:P = 1 - C(365,23) / 365^23这个概率的计算结果是0.5073,也就是说,在一个房间里有23个人的时候,至少有两个人的生日相同的概率是50.73%。

这个结果可能会让你感到惊讶,因为我们通常认为需要更多的人才能满足这个条件。

生日悖论的实际应用生日悖论不仅仅是一个有趣的概率问题,它还有着广泛的实际应用。

例如,在计算机科学和密码学中,生日悖论被用来评估哈希函数的强度。

哈希函数是一种将任意长度的消息映射到固定长度的消息摘要的算法,它在计算机安全中扮演着重要的角色。

生日悖论告诉我们,如果哈希函数的输出长度为n位,那么攻击者找到两个具有相同哈希值的消息的概率大约是2^(n/2)。

因此,为了保证哈希函数的安全性,输出长度应该足够长,以确保攻击者无法轻易地找到相同的哈希值。

有趣的概率问题解决关于概率的有趣问题

有趣的概率问题解决关于概率的有趣问题

有趣的概率问题解决关于概率的有趣问题有趣的概率问题解析概率问题一直以来都是数学中的重要分支,它关乎我们对未知事件发生可能性的预估和分析。

而在这个过程中,我们常常会遇到一些有趣的概率问题。

本文将介绍几个有趣的概率问题,并对其进行详细解析。

问题一:生日悖论假设有一个房间里有23个人,那么至少有两个人的生日相同的概率有多大?这个问题看似简单,但是答案可能会让你惊讶。

解析:要解决这个问题,我们可以先考虑相反的情况,即所有23个人的生日都不相同。

那么第一个人的生日可以是任意一天,第二个人的生日就不能与第一个人相同,概率为364/365,同理第三个人的生日也不能与前两个人相同,概率为363/365。

依此类推,第23个人的生日不能与前22个人相同,概率为(365-22)/365。

所以所有人的生日都不相同的概率为(365/365) × (364/365) × ... × (343/365)。

而我们所求的是至少有两个人生日相同的概率,因此用1减去所有人生日都不相同的概率即可,即1 - [(365/365) × (364/365) × ... ×(343/365)],计算结果约为0.507297。

也就是说,至少有两个人生日相同的概率达到了50.73%。

这个结果让很多人感到意外,因为我们通常以为需要至少有365个人才能有50%以上的概率有两个人生日相同。

这个概率问题就是生日悖论。

问题二:三门问题在电视节目中,主持人让参赛者选择三扇门中的一扇,其中一扇门后有奖品。

主持人会在参赛者选择后,打开剩下两扇门中的一扇,这扇门后没有奖品。

然后,参赛者可以选择是否更换选择,以获得奖品。

那么参赛者更换选择后获得奖品的概率比原来的概率大吗?解析:这个问题引发了很多争议和困惑,但实际上更换选择后获得奖品的概率确实大于原来的概率。

首先,我们考虑参赛者最初选择到奖品所在门的概率。

由于一开始有三扇门,所以参赛者选择到奖品的概率为1/3。

生日攻击原理

生日攻击原理

生日攻击原理生日攻击是一种在加密领域中被广泛使用的攻击方式,也被称为生日悖论或生日碰撞攻击。

它基于一个简单的想法:在一个群体中,即使个体的随机性是不均匀的,也存在重复的可能性。

如果随机选择多个个体,并且相互之间进行比较,那么出现至少一对相同的个体的概率将增加。

这就是所谓的“生日悖论”。

在密码学中,生日攻击的目标是破解哈希函数。

哈希函数是指将任意长度的消息转换为固定长度的密文的算法。

它通常用于数字签名、数值摘要等安全场合。

生日攻击的基本思想是:通过构造并比较大量的哈希值,找出两条原始消息中的一对匹配。

为了更好地理解生日攻击,让我们举一个简单的例子。

假设我们有一个班级,里面有23个学生。

如果我们要找到至少一个人生日相同的情况,我们需要比较两个人的生日。

那么我们需要比较23 x 22 ÷2 = 253次。

如果我们的班级有36个学生,则需要比较36 x 35 ÷ 2 = 630次。

同样的道理适用于哈希函数。

如果哈希函数的输出是128位,则需要比较2的64次方个哈希值才能找到碰撞。

为了使生日攻击更加有效,攻击者通常会使用高性能的计算机和自适应技术。

自适应技术包括改变消息的大小和增加攻击的复杂性等。

此外,攻击者还可以利用已知的哈希值来计算其他值的碰撞,这被称为“生日资源”。

在实践中,攻击者可以使用这些资源进行加速攻击。

在密码学中,生日攻击是一种基础且有效的攻击方式。

在设计哈希函数时,必须预防生日攻击,并且哈希函数的输出越大,就越难被攻击。

因此,生日攻击可以提醒密码学家们格外留意哈希函数的安全性。

生日悖论与生日攻击

生日悖论与生日攻击

生日悖论与生日攻击每个人都有生日,偶尔会遇到与自己同一天过生日的人,但在生活中,这种缘分似乎并不常有。

我们猜猜看,在50个人当中,出现这种缘分的概率有多大,是10%,20%,还是50%?有人告诉我,在文章开头插入公式十分倒胃,所以我就不写计算过程,直接给出结果(除了传统的排列组合方法外,Paul Halmos[1]还给出了一个巧妙的解法)。

在50个人中有相同生日的概率,高达97%,这个数字,恐怕高出了绝大多数人的意料。

我们没有算错,是我们的直觉错了,科学与生活,又开了个玩笑。

正因为计算结果与日常经验产生了如此明显的矛盾,该问题被称为―生日悖论(Birthday Paradox)‖[2]。

它体现的,是理性计算与感性认识的矛盾,并不引起逻辑矛盾,所以倒也算不上严格意义上的悖论。

它的原始表述是:在23个人当中出现相同生日的概率大于50%[2]。

为了让矛盾更突出,我把人数换成了50,如果事先不知道答案,猜测的结果一般远远小于97%。

也许有人质疑,我们在计算时,假定人们的生日均匀而随机地分布,但生活中却未必如此——别担心,不平均分布的情形也已解决[3],而且更进一步的证明是,不平均分布时,概率只会更高[4]。

此外,Knuth在TAOCPv3中还计算了,平均在多少人中才能找到一对相同生日,答案是25人[5],这看起来实在不可思议。

对于为何出现这种矛盾,我没有看到专门的研究。

我的想法是,首先,当只有1个人时,概率为0%,当人数大于365时,根据鸽巢原理,概率是100%。

于是,在1到365这个区间内,我们直觉地认为,对应的概率是线性地从0%增长到100%,哪怕不线性,也不会陡峭得太离谱,所以对于57人来说,该概率应该在57/365,即七分之一左右。

但事实上,这条曲线的增长劲头却是十分可怕:[6]绿色的曲线,就是在不同的人数时,对应的存在相同生日的概率,它就像坐了直升机一样迅猛窜升,在50人时就已相当接近100%,与我们幻想的线性曲线有天壤之别。

关于生日悖论问题的验证

关于生日悖论问题的验证

关于⽣⽇悖论问题的验证昨天在⽹上看到⼀个⾮常有意思的问题:数学⽼师和体育⽼师打赌,数据⽼师认为在他们有50个⼈的班级⾥有两个⽣⽇是同⼀天的同学的概率远超没有的概率,反之是体育⽼师的观点。

第⼀次看到的时候我觉得这特数学⽼师才是教体育的吧,我万万没想到在这个po主经过⼀番奇奇怪怪我没有看懂的数学操作之后他告诉我 50个⼈的班级⾥有两个⽣⽇相同的同学的概率是97%以上⽽且他还告诉我他是科学的严谨的正确的我特么.......这⾥就引出了⽣⽇悖论百度百科解释如下⽣⽇,指如果⼀个房间⾥有23个或23个以上的⼈,那么⾄少有两个⼈的⽣⽇相同的要⼤于50%。

这就意味着在⼀个典型的标准⼩学班级(30⼈)中,存在两⼈⽣⽇相同的可能性更⾼。

对于60或者更多的⼈,这种概率要⼤于99%。

从引起逻辑⽭盾的⾓度来说⽣⽇悖论并不是⼀种悖论,从这个数学事实与⼀般直觉相抵触的意义上,它才称得上是⼀个悖论。

⼤多数⼈会认为,23⼈中有2⼈⽣⽇相同的概率应该远远⼩于50%。

计算与此相关的概率被称为⽣⽇问题,在这个问题之后的数学理论已被⽤于设计著名的密码攻击⽅法:。

可我还是不信怎么办? 写段代码跑第⼀次测试100次⼀年内20个随机⽇期出现相同的概率妈呀第⼀次概率居然达到了90%检查代码后发现没问题再来⼀遍这次还是20个⼈测试10000次这次没有那么夸张可也有41.8%于是我测试了⼀下50个⼈的概率还是⼀万次97.7%随后⼜进⾏了⼏次测试发现概率均在90%以上⽽且测试次数越多结果越是趋近于97% - 98%相信你和我⼀样很震惊不过我眉头⼀皱就找到了问题的答案嘿嘿嘿下⾯是科普时间先计算房间⾥所有⼈的⽣⽇都不相同的概率,那么第⼀个⼈的⽣⽇是 365选365第⼆个⼈的⽣⽇是 365选364第三个⼈的⽣⽇是 365选363:::第n个⼈的⽣⽇是 365选365-(n-1)所以所有⼈⽣⽇都不相同的概率是:那么,n个⼈中有⾄少两个⼈⽣⽇相同的概率就是:所以当n=23的时候,概率为0.507当n=100的时候,概率为0.999999692751072对于已经确定的个⼈,⽣⽇不同的概率会发⽣变化。

生日悖论的数学原理

生日悖论的数学原理

生日悖论的数学原理咱们来聊聊那个有点神奇的生日悖论。

你说奇怪不奇怪,在一个屋子里,如果只要有 23 个人,居然就有超过 50%的概率会有两个人生日相同!这是不是和咱们平常想的不太一样?咱们先来说说为啥会这样。

想象一下,第一个人的生日,那多自由呀,随便哪天都行。

可第二个人呢,要和第一个人生日不同,概率就只有 364/365 啦。

第三个人要和前两个人生日都不同,概率就变成 363/365 。

这么一直算下去,到第 23 个人的时候,所有人生日都不同的概率就变得很小很小啦。

你看啊,咱们平常觉得一年 365 天,23 个人碰上同一天生日好像不太容易。

但实际上,每次多一个人,和前面所有人生日不同的概率都在降低。

这就好像是在一个大抽奖箱里抽奖,抽的次数多了,重复的可能性就越来越大。

再打个比方,假如有一堆五颜六色的糖果,你每次随便拿一颗,刚开始可能不容易拿到一样的颜色。

但是拿的次数多了,是不是就很有可能拿到重复颜色的糖果啦?这和生日悖论是一个道理呀!而且你想想,如果人数更多,比如说 50 个人,那生日相同的概率就高得吓人啦!这是不是有点颠覆你的想象?其实生日悖论也告诉我们,有些事情不能光凭直觉去想。

有时候我们觉得不太可能发生的事情,在数学的计算下,结果可能会让人大吃一惊。

比如说,在生活中,我们可能会觉得中彩票大奖这种事几乎不可能发生。

但从概率的角度来看,只要买的次数足够多,中奖的可能性也会增加哦。

不过可别为了中大奖就拼命买彩票,咱们还是要理性对待哈!回到生日悖论,它真的是个很有趣的现象。

让我们明白了,在看似不可能的背后,可能隐藏着意想不到的可能性。

下次当你参加一个有几十个人的聚会时,不妨猜猜看,会不会有两个人生日相同呢?说不定还真就有呢!这就是生日悖论的奇妙之处啦,是不是很有意思?。

生日悖论是个延续了百余年的谬误[指南]

生日悖论是个延续了百余年的谬误[指南]

生日悖论是个延续了百余年的谬误[指南] 《生日悖论》是个延续了百余年的谬误——发展非线性经济学的哲学漫谈商与儒这是我在提议发展我国非线性经济学时,用自己的非线性哲学思维审视精确科学——数学的一篇哲学漫谈,我相信诸位很容易判断我的结论是否正确。

欢迎各位批评和指正~《概率理论》是《经济学》的重要分析工具,它真的是那么科学、那么完美、那么无暇可击吗,我们先来看个例子:一个袋子里有9个材质、形状、重量都一样的小球,它们分成3组,分别写着1-3的数字。

我们随机摸3个小球,问:摸到3个数字相同的小球和摸到3个数字都不同的小球,哪个概率大,显然数字相同的小球只有3个组合:111,222,333;而数字都不同的小球有6个排列(123,132,213,231,312,321),所以答案一定是摸到数字都不同的3个小球的概率大。

现在我们用三种不同的颜色分别代替三个不同的数字,给这些小球上涂上红兰棕三色,每种颜色涂3个小球。

我们随机摸3个小球,问:摸到3个颜色相同的小球和3个颜色都不同的小球,哪个概率大,颜色相同的3个小球只有三个组合——红红红、蓝蓝蓝、棕棕棕;颜色都不同的3个小球有6种不同排列(红蓝棕、红棕蓝、蓝红棕、蓝棕红、棕红蓝、棕蓝红),所以答案一定是摸到颜色都不同的3个小球的概率大。

现在我们再在三组颜色相同的小球上分别写上123三个不同的数字:1 1 12 2 23 3 3于是,如上图所示,9个小球中,颜色相同的小球,数字一定不同;数字相同的小球,颜色一定不同。

我们问:随机摸3个小球,概率最小的是哪一种情况时,就形成了一个“悖论”——回答“摸到3球颜色相同的概率最小”,那么这3球的数字一定不同(这是同时发生的必然事件,概率为1),摸到3球数字不同的概率一定不是最小;回答“摸到3球数字相同的概率最小”,那么这3球的颜色一定不同,摸到3球颜色不同的概率一定不是最小。

概率是门严密精确的数学,怎么会得到如此矛盾的结果呢, 我们来分析其中的原因:如上图所示,我们先来研究一下,这里颜色和数字的互相关系。

生日悖论与生日攻击

生日悖论与生日攻击

类归于:数学生日悖论与生日攻击苏椰发表于2009-12-12 10:39每个人都有生日,偶尔会遇到与自己同一天过生日的人,但在生活中,这种缘分似乎并不常有。

我们猜猜看,在50个人当中,出现这种缘分的概率有多大,是10%,20%,还是50%?有人告诉我,在文章开头插入公式十分倒胃,所以我就不写计算过程,直接给出结果(除了传统的排列组合方法外,Paul Halmos[1]还给出了一个巧妙的解法)。

在50个人中有相同生日的概率,高达97%,这个数字,恐怕高出了绝大多数人的意料。

我们没有算错,是我们的直觉错了,科学与生活,又开了个玩笑。

正因为计算结果与日常经验产生了如此明显的矛盾,该问题被称为―生日悖论(Birthday Paradox)‖[2]。

它体现的,是理性计算与感性认识的矛盾,并不引起逻辑矛盾,所以倒也算不上严格意义上的悖论。

它的原始表述是:在23个人当中出现相同生日的概率大于50%[2]。

为了让矛盾更突出,我把人数换成了50,如果事先不知道答案,猜测的结果一般远远小于97%。

也许有人质疑,我们在计算时,假定人们的生日均匀而随机地分布,但生活中却未必如此——别担心,不平均分布的情形也已解决[3],而且更进一步的证明是,不平均分布时,概率只会更高[4]。

此外,Knuth在TAOCPv3中还计算了,平均在多少人中才能找到一对相同生日,答案是25人[5],这看起来实在不可思议。

对于为何出现这种矛盾,我没有看到专门的研究。

我的想法是,首先,当只有1个人时,概率为0%,当人数大于365时,根据鸽巢原理,概率是100%。

于是,在1到365这个区间内,我们直觉地认为,对应的概率是线性地从0%增长到100%,哪怕不线性,也不会陡峭得太离谱,所以对于57人来说,该概率应该在57/365,即七分之一左右。

但事实上,这条曲线的增长劲头却是十分可怕:[6]绿色的曲线,就是在不同的人数时,对应的存在相同生日的概率,它就像坐了直升机一样迅猛窜升,在50人时就已相当接近100%,与我们幻想的线性曲线有天壤之别。

生日攻击

生日攻击

生日攻击什么是生日攻击生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。

这种攻击对Hash函数提出了一个必要的安全条件,即消息摘要必须足够长。

生日攻击这个术语来自于所谓的生日问题,在一个教室中最少应有多少学生才使得至少有两个学生的生日在同一天的概率不小于1/2?这个问题的答案为23。

生日攻击的方法解释下面详细描述生日攻击的方法。

设h:X->Y是一个Hash函数,X和Y都是有限的,并且|X|>=2|Y|,记|X|=m,|Y|=n。

显然至少有n个碰撞,问题是如何去找到这些碰撞。

一个很自然的方法是随机选择k个不同的元素x1,x2,x3,.....,xk ∈X,计算yI=h(xi),1<=i<=k,然后确定是否有一个碰撞发生。

这个过程类似于把k个球随机地扔到n个箱子里边,然后检查看是否某一箱子里边至少有两个球。

k个球对应于k个随机数x1,x2,x3,.....,xk,n个箱子对应于Y中的n个可能的元素。

我们将计算用这种方法找到一个碰撞的概率的下界,该下界只依赖于k和n,而不依赖于m。

因为我们关心的是碰撞概率的下界,所以可以假定对所有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。

4-2散列函数之生日攻击

4-2散列函数之生日攻击

(1 k 1 )
k 1 i
en
e
k
(k 1) 2n
n
i 1
至少有一个碰撞的概率为
p3

n
2 n
p2

(1
1 n
)(1
2 n
)
1-e
k
(k 1) 2n

ε
k
2n
ln
1
1
ε
pk

n (k n
1)
pk 1

(1
1 n
)(1
2 )
n
(1 k 1 ) n
考虑随机性的函数 :将X中均匀分布的输入映射到Y中均匀分布的输出 为了发生碰撞,要求|X|>|Y|
生日悖论
想象往n个箱子中随机投k个球,检查是否有某个箱子装有至少两个球 (k个球对应于k个随机的xi,n则对应Y可能的n个元素)
没有碰撞的概率:令 Pi
p1 1
p2

n 1 n
p1
1
1 n
为投i 个球还未碰撞的概率 1 x ex (1 1 )(1 2 ) nn
重点回顾
生日悖论和生日攻击
寻找碰撞的一般性方法
Hash函数的输出长度必须有下界
生日攻击-合同攻击
A准备两份合同M和M ,一份B会同意,一份会取走他的财产而被拒绝 A对M和M各做32处微小变化(保持原意),分别产生232个64位hash值 根据前面的结论,超过0.5的概率能找到一个M和一个M,它们的hash值
相同 A提交M,经B审阅后产生64位hash值并对该值签名,返回给A A用M替换M Hash必须足够长
取ε=

birthday_attack

birthday_attack

生日悖论维基百科,自由的百科全书(重定向自生日攻击)生日悖论是指,如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。

这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。

对于60或者更多的人,这种概率要大于99%。

从引起逻辑矛盾的角度来说生日悖论并不是一种悖论,从这个数学事实与一般直觉相抵触的意义上,它才称得上是一个悖论。

大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。

计算与此相关的概率被称为生日问题, 在这个问题之后的数学理论已被用于设计著名的密码攻击方法:生日攻击。

目录1 对此悖论的解释2 概率估计3 数学论证(非数字方法)4 泛化和逼近4.1 N=365的结果4.2 范化5 反算问题5.1 举例6 经验性测试7 应用8 不平衡概率9 近似匹配10 参考11 相关条目12 外部链接对此悖论的解释理解生日悖论的关键在于领会相同生日的搭配可以是相当多的。

如在前面所提到的例子,23个人可以产生C(23,2)= 23 × 22/2 = 253 种不同的搭配,而这每一种搭配都有成功相等的可能。

从这样的角度看,在253种搭配中产生一对成功的配对也并不是那样的不可思议。

换一个角度,如果你进入了一个有着22个人的房间,房间里的人中会和你有相同生日的概率便不是50:50了,而是变得非常低。

原因是这时候只能产生22种不同的搭配。

生日问题实际上是在问任何23个人中会有两人生日相同的概率是多少。

概率估计假设有 n 个人在同一房间内,如果要计算有两个人在同一日出生的机率,在不考虑特殊因素的前提下,例如闰年、双胞胎,假设一年365日出生概率是平均分布的(现实生活中,出生机率不是平均分布的)。

计算机率的方法是,首先找出p (n )表示 n 个人中,每个人的生日日期都不同的概率。

假如n > 365,根据鸽巢原理其概率为0,假设 n ≤ 365,则概率为 因为第二个人不能跟第一个人有相同的生日(概率是364/365), 第三个人不能跟前两个人生日相同(概率为363/365),依此类推。

生日攻击原理

生日攻击原理

生日攻击原理
生日攻击原理是一种密码学攻击方法,它利用了生日悖论的特性,通过枚举攻击者可以在较短的时间内破解密码。

生日悖论是指在一个集合中,只需要23个元素就有50%的概率出现两个元素的生日相同。

这个悖论的应用在密码学中,就是指在一个密码空间中,只需要枚举一部分密码就有可能找到与目标密码相同的密码。

生日攻击原理的应用非常广泛,比如在密码破解、数字签名攻击、密钥交换攻击等方面都有应用。

其中最常见的就是在密码破解中的应用。

攻击者可以通过生日攻击原理,枚举一部分密码,然后与目标密码进行比较,如果找到相同的密码,就可以破解目标密码。

为了防止生日攻击,密码学家们提出了一些防御措施。

其中最常见的就是增加密码空间的大小。

如果密码空间足够大,攻击者就需要枚举的密码数量就会变得非常大,从而降低了破解的概率。

另外,还可以采用加盐的方式来增加密码的复杂度。

加盐是指在密码中添加一些随机的字符串,这样即使攻击者找到了相同的密码,也无法破解目标密码。

生日攻击原理是一种非常有效的密码破解方法,但是它也有一些局限性。

比如在密码空间较大的情况下,攻击者需要枚举的密码数量非常大,从而降低了破解的概率。

另外,加盐也是一种非常有效的防御措施,可以有效地增加密码的复杂度。

因此,在设计密码时,我们需要考虑到生日攻击原理的影响,采取相应的防御措施,从而
保护密码的安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码学课程报告
学生姓名:xxxxxx
学号: xxxx
浅谈“生日悖论”与“生日攻击”
在开始正文之前,我想先简单地说明一下,我选择这个话题的原因,主要有三点:第一,比较贴近生活和实际;第二,趣味性较强,便于讨论;第三,容易理解。

既然是谈到“生日悖论”和“生日攻击”,那么肯定是少不了“生日”二字了。

众所周知,我们每个人都有自己生日,在生活中,如果能够遇到与自己同一天生日的人,大多数的我们都会很惊喜,觉得这种缘分似乎很少见,又或者说这是一个很小的机率。

那我们是否有想过,假若在23个人当中,出现两个人是同一天生日的这种缘分的概率有多大呢?是5%?10%?还是20%?又或者是更多呢?下面我来一一和大家说明。

文章开始我不想长篇大论地把很多公式给搬上来,那样没意思,吊足了大家的胃口,却不受待见。

所以,在开始的时候,我就不打算写那么多计算过程,留着后面慢慢讨论和解释。

那么我告诉各位:23个人中,有两个人生日是同一天的概率约为50%(甚至比这个数值还高出那么一丢丢),在50个人中有相同生日的概率,竟然高达97%,这两个数值,这两个结果,各位是不是有点不太敢相信?哈哈......
其实这个结果并没有算错,是经过科学计算而得出来的结果,是有理有据的,只是我们的直觉错了,科学与生活,就好比梦想和现实是一样:梦想往往是丰满的,现实呢,却常常是骨感的。

正因为经过科学方法计算出来的结果与我们日常生活的经验产生了如此大的落差,所以我们把这类问题称为“生日悖论(Birthday Paradox)”[1][2]。

什么是“生日悖论”?
在很多课程中,常用“生日悖论来说明一些违背直觉的结果”。

生日悖论是指:要想使得k个人中至少有两个人生日相同的概率大于0.5的话,k最小可以是多少?[1]我们不把某一年有2月29日或者某两人是双胞胎这样的或者类似的外界因素算在内,只考虑纯粹的随机概率,也就是说每个人出生的日子都随机分布在一年365天的任何一天。

最后答案是我们在前面所说的23人。

简单地说呢,就是假如一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。

就拿我身边的情况来作为例子吧,假如我们班30人,那
么有两个人生日是同一天的概率肯定是超过50%的,事实上,已经接近于73%了。

果不其然,我们班一共31人,而我和我们班的一位陈同学生日是同一天,嘿嘿,是不是有点巧哦......如果某个班级有60人之多的话,那么这个概率就已经接近100%了。

其实它要讲的就是科学计算与感性认识之间的矛盾,不过这其实并不引起真正地逻辑矛盾,所以倒也算不上严格意义上的悖论,从数学事实与一般直觉相抵触的意义上分析,它才称得上是一个悖论。

大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。

当然也许有人会说,我们在计算时,假定人们的生日均匀而随机地分布,但生活中却未必如此!朋友,别担心,不平均分布的情形其实也已经解决了[3],而且更进一步地证明是,不平均分布时,概率只会更高。

对于为何出现这种矛盾,我们可以一起来想想:首先,当只有1个人在一个房间的时候,和他同一天生日的人数肯定是零(除了他自己),那么概率肯定是0%,这个大家都好理解:当人数大于365时,肯定最少有两个人生日是同一天的,对吧,所以不难理解,概率是 100%。

于是,在1到365这个区间内,可能直觉告诉我们,对应的概率是线性地从0%增长到100%,哪怕不线性的话,也不会陡峭得太离谱,或者偏移的太离谱,所以对于23人来说,该概率应该在23/365,即十六分之一左右。

但事实上,这条曲线的增长劲头却是十分可怕。

下面,让我们看图说话!(图是网上找到的,这个把“生日悖论”这四个字译敲进百度搜索栏,大量相关图片都有了。


p(n)函数就是在不同的人数时,对应的存在相同生日的概率,它就像坐了火箭一样迅猛窜升,在50人时就已非常接近100%,与我们幻想的线性平缓曲线有天壤之别。

那么问题来了:为什么我们会误以为它是线性的?而且没想象中这么陡峭呢?Don’t worry,我们把问题稍作改动,就能得到启发。

新的问题是:在一群人当中,有人与你同一天生日,这个概率有多大?同样地,我们把概率曲线描出来(即上图q(n)),可以看到,它是十分平缓的。

我认为,就是因为当我
们看到“有人生日相同”时,下意识地用“与我生日相同”去推测,以致于把火箭发射当成了平稳增长,造成了生日悖论。

仔细想想,其实这两种情形还是可以很好地分辨出来的。

注意所有人都是随机选出的,作为对比,q(n)表示房间中 n 个其他人中与特定人(比如你)有相同生日的概率:n n q )365
364(1)(-=。

当n = 22时概率只有大约0.059,约高于十七分之一。

如果n 个人中有50%概率存在某人跟你有相同生日,n 至少要达到253.注意这个数字大大高于365/2=182.5.究其原因是因为房间内可能有些人生日相同。

如果我们把特殊性延伸到一般性,是不是照样可以解答出来呢?那么假设如果此时有n 个人在同一房间内,要计算之前的那种概率,即:有至少两个人生日是同一天的概率,在不考虑特殊因素的前提下,例如闰年、双胞胎,假设一年365日出生概率是平均分布的(虽然在现实生活中,出生时间并不是平均分布的)。

下面我们运用数学等自然科学来慢慢解答和计算: 首先,假设)(n p 代表n 个人中每个人生日都不一样的概率,前面说了,n 不能大于365,故3650≤≤n ,那么)(n p 为:
3651365365362365363365364)36511()36521)(36511(1)(+-⋅⋅⋅⋅⋅=--⋅⋅⋅--
⋅=n n n p 我想学过概率论的人都很好理解这个公式吧:第一个人的生日是365天的其中一天,假设是一定的,是不变的,那么第二个人不能跟第一个人有相同的生日的概率就是364/365,同理第三个人不能跟前两个人生日相同(概率为363/365),依此类推。

很容易用阶乘写成如下形式:)!
365(365!365n n -, 如果)(n p 表示n 个人中至少2人生日相同的概率[1],那么:
)!
365(365!3651)(1)(n n p n p n --=-= 当365≥n 时)(n p =1是必然的。

当23=n 时,带入公式得,概率大约是0.507。

其他数字的概率用上面的算法可以近似的得出来,这里我从网上下载了一张图表,我们可以大致感受下其变换过程:
从上图可以看出,当n 为41人是就已经超过了90%,47人是就已经超过了95%了。

到了这里,大家是否对“生日悖论”有了更深一步的了解呢?所以生日悖论的本质其实就是,随着元素的增多,出现重复元素的概率会以惊人地速率增加,但是我们往往低估了它的速率。

也许在生活中,这种情况是很常见的,大家都不足为奇,也不会放在心上。

但是这个问题在密码学的领域中却是不容忽视的,因为这样的话,我们会低估了散列值出现碰撞的概率。

这一结论应用于对散列函数的攻击中,我们称为“生日攻击(Birthday Attack)”[2]。

要想了解“生日攻击”,必须和大家先简单地介绍一下散列函数等相关知识。

什么是散列函数?[5]
简单地说,散列函数就是将任意长度的字符串压缩成短的字符串的函数。

散列函数的经典运用在数据结构中,也可用于数字签名,检查数据完整性[4],一个好的散列函数应该尽量避免碰撞,那么何为碰撞呢?笼统地说,就是假如有21x x ≠如果有)()(21x H x H =,那么这就算是碰撞了,和我们初中学的映射很类似,“多对一”那就是碰撞了,而为了避免这样的现象,我们一般需要“抗碰撞”的散列函数。

下面我们分析一个比较常见的问题:
[1]William Stallings著.孟庆树,王丽娜等译.密码编码学与网络安全——原理与实践(第四版)【M】.电子工业出版社2007.250-251.
[2]BirthdayProblem.Wikipedia./wiki/Birthday_Pa radox
[3] M. Klamkin and D. Newman .Extensions of the Birthday Surprise, Journal of Combinatorial Theory 3, 1967.279–282.
[4]Wade wrence C.Washington.著.王全龙.王鹏等译.密码学与编码理论(第二版)【M】.人民邮电出版社.2008.130-132.136-137.
[5]乔纳森.卡茨,耶胡达.林德尔著,任伟译.现代密码学——原理与协议【M】.国防工业出版社.2012.81-84,329-330.。

相关文档
最新文档