第111章 百万富翁问题
作者:正律和鸣   学霸就是要肝最新章节     
    第111章 百万富翁问题
    rsa加密算法,其利用的主要原理就是大数素因子分解的困难性。
    比方说,我们都知道17*13=221,但是当我们看见221这个数字的时候,是否又能够立马就看出它等于17x13,那就不一定了。
    而如果这两个数字越大,就越难被破解。
    当然,作为专门用来对大数进行因子分解的筛法,就成为了针对这种加密的重要破解方法了。
    毕竟筛法本身的原理就是通过不断的往上乘,而剔除掉那些各种各样的因子。
    所以在针对rsa加密体系中,就有一个叫做一般数域筛的攻击方式,被公认为最有效破解rsa的加密方法。
    当然同样的问题是,筛法之中存在的奇偶校验问题,使其在处理那些特别大的数字时,就显得比较麻烦了,而对于现代rsa加密算法,所使用的就是那些特别大的数字,因此在使用筛法的时候,不可避免的就会在破解的过程中出现极大的偏差。
    然而现在……
    “对哦……以前用筛法来破解rsa密码的话,存在较大的困难,毕竟奇偶校验问题是一个很大的问题。”
    梅纳德笑哈哈地拍了拍萧易的肩膀说道:“但是现在嘛,奇偶校验问题的影响程度都直接被你的分类筛给压下去了,他们这些搞密码的都要头疼咯。”
    陶哲轩也笑着说道:“外面的那些人不是总觉得咱搞数学的没有实际应用的地方吗?这下好了,咱们直接给他们实际应用一个密码攻击。”
    见到这两个数学家幸灾乐祸的样子,旁边的计算机学家克莱因洛克教授就没好奇地说道:“有你们这样去想的么?要是银行密码体系出问题,咱们的社会安定那就也要出问题了。”
    “放心啦,咱们都知道,只是有了被破解的风险而已,想要真正实现破解的话肯定还差的远,毕竟就算是使用筛法去破解,也需要非常多的时间。”陶哲轩倒是没有被吓着,摆摆手说道:“不过能让他们头疼一下,我们还是挺高兴的。”
    像他们这些研究纯数学的,经常被人问,他们的研究有什么应用的地方,这也就让纯数学界和其他领域常常发生摩擦。
    比如张一唐当年在孪生素质猜想上实现突破后,谷歌就曾经邀请过他去进行演讲,但是他拒绝了,因为他表示害怕过去演讲之后,被别人问到他的这个成果有什么用。
    同样的,当年佩雷尔曼在证明了庞加莱猜想后就被各大学校邀请去做演讲,对他的证明进行解释。
    结果就有人提问他,他解开了这个方法后有什么应用的地方,一听这个问题,佩雷尔曼顿时就勃然大怒,表示怎么有人问这么愚蠢的问题,最后受不了,他就直接回俄国了。
    总而言之,他们搞纯数学的和其他搞应用的,基本上尿不到一个壶里。
    当然,这也就形成了一部分纯数学人的一种脾性,如果搞出来的东西越不能用于应用上面,他们就越自得,认为这就是真正的【纯粹数学】。
    听见眼前这几位教授的讨论,萧易无奈地摇摇头。
    这可不是他有意的啊,他当初哪会去想如果自己搞出分类筛,会给密码学带来被破解的风险。
    “好了,你们也别幸灾乐祸,我现在也是想要请教伱们对于这个问题,该怎么解决,这种涉及到纯数学方面的东西,最终也还是要落到你们这些纯数学家的头上。”
    克莱因洛克教授说道。
    随后三位数学家也都收拾了一下心情,等待克莱因洛克的解释。
    “唔……想要说明一下何为多方安全算法,咱们首先还是从一个经典问题出发吧。”
    “也就是百万富翁问题,这个问题你们知道吗?”
    陶哲轩点了点头,他对计算机同样也有一定的研究,在十几年前他就曾经搞出来过一个叫做信息获取指导理论的东西,简单来说,这是一种数字压缩成像技术,最终这个技术被广泛运用于信息领域等等各大方面,充分表现了他在应用数学方面也有着十分强悍的能力。
    不过,萧易和詹姆斯·梅纳德就显得有些为难了。
    后者倒是还好,表示自己听说过这个,“我记得提出这个问题的人是一位图灵奖得主来着。”
    “哈哈,是的。”克莱因洛克点点头,说道:“说起来,这位图灵奖获得者和萧易一样,也都是华国人,他的英文名叫做安德鲁·姚,中文名好像是叫做姚启智吧。”
    “简单来说,百万富翁问题就是,假设有两位分别叫做爱丽丝和鲍勃的百万富翁,现在想要比较他们谁更加有钱,但是他们又不想向对方暴露自己到底有多少钱,那么在这种情况下,他们该如何进行财富上的比较呢?”
    说着,克莱因洛克也在黑板上写下了描述。
    【假设爱丽丝和鲍勃两个人的财产分别为i、j,并且i、j的大小都位于1百万到10百万之间,那么要如何让对方不知道i或j的具体数字,而实现对i、j大小的比较?】
    看着这个问题,陶哲轩倒是知道该怎么解决,不过梅纳德和萧易就开始思考了起来。这个问题看上去也挺有意思的。
    稍稍过了一会儿,给这两位留下了一点思考时间,不过克莱因洛克也并没有想过让他们现场解答,随后就开口道:“好了,这个问题咱们可以之后再……”
    “等等。”
    然而就在这个时候,萧易开口了,“我想,这个问题也许可以这样解决。”
    随后他便走到了黑板前,拿起笔开始写了起来。
    【设m是一个所有元素为n-bit非负整数的集合,qn是m到m的置换群。】
    “如果我的设计没有出错,只要按照接下来的这个协议进行比较,他们就可以在对自身资产保密的情况下完成财富对比。”
    “首先,爱丽丝从qn中随机选择一个元素ea作为公钥,并将其告诉给鲍勃,同时保留ea的逆da作为私钥自己保留。”
    “然后,鲍勃随机选择一个n-bit的整数x,并利用爱丽丝给的公钥计算k=ea(x)……”
    随着萧易的讲述开始,旁边的三个人就略显沉默了起来。
    他们相互对视一眼,对眼前这一幕有些猝不及防。
    特别是詹姆斯·梅纳德。
    虽然吧,这个问题如果真的要仔细研究一下的话,也不至于难住他,作为一道类似数学建模题而言,它的难度也就那样。
    毕竟,这个问题都已经完全具体化了,从抽象程度来说,它和梅纳德研究的那些解析数论上面的问题比较,实在是太小儿科了。
    但是,要让他这么快就能够反应过来,并且直接就开始给出方案,那就有些做不到了。
    看着萧易已经写了半个黑板的东西,梅纳德第一次体会到了什么叫做【降维打击】。
    大概他以前在自己的学生面前展示什么叫做【顶级数学逻辑思维】的时候,他的学生们也是这样的感觉吧?简直是开了挂了!克莱因洛克的反应和梅纳德也差不多,本来吧,他提出这个问题也没想过让他们当场解决出来,刚才留了那么几分钟的时间,也只是让他们对这个问题稍微熟悉一些。
    结果,谁成想,这才几分钟过去,这个年轻人就已经开始动笔写了起来。
    原谅他作为一名计算机科学家,数学上面真的不是特别好,至少相比起这些数学家们来说,毕竟有一句话说得好,只有真正数学好的人才能够一直扎根于纯数学,数学不好的人早早地就转行了。
    但是吧,萧易的这个“数学很好”,未免好得有些超出他想象了。
    “第4步,爱丽丝随机生成一个n/2-bit的素数p,并计算zu=yu mod p,其中u=1,2,…,10。”
    “然后我们保证,所有zu中至少有两个不相等,否则重新x选择p计算……”
    “爱丽丝将素数p以及【z1,z2,…,zi,zi+1】……重新标记为……”
    “鲍勃检查第zj`,若zj`=x mod p,则说明i大于或等于j,否则i小于j。”
    在黑板上写下了最后一笔,随后萧易便回过头,从头到尾重新浏览一遍,他便满意地点点头,然后放下了笔,转过头对旁边的三个人说道。
    “这样,爱丽丝和鲍勃的财富,比较就完成了,而除了双方财富相等的情况下,他们并没有向对方暴露出自己的真实财产。”
    “克莱因洛克教授,我这个方法应该是可以的,不过具体的程序该怎么写,我就不会了。”萧易谦虚地说道:“我对编程这方面完全不懂。”
    然而让他疑惑的是,眼前的三位教授在此时都稍稍有些沉默。
    片刻后,克莱因洛克小声地问向陶哲轩:“你们数学学的好的人都是这样的吗?把我们计算机领域的难题,就当做一个……100以内的加减法给搞定了?”
    陶哲轩连连摆手:“呃……这倒不是,但你知道的,这个世界上总会有那么一些特殊情况,发生一些小概率事件,萧易就是这样的小概率事件,你懂的。”