信息加密与单向函数及ras算法.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息加密与单向函数及ras算法

ras ras 信息加密与单向函数及rraass算法 摘自matrix67的博客 密码学协议举例(一):带有防欺骗的承诺 我们常常在电视上看到这样的一幕:一位老太太兴冲冲地走上台去, 翻过三个商标牌,发现上面尽是5块钱、10块钱的小奖,垂头丧气地 回到观众席;然后马脸李咏会跑出来,边翻着另外几个牌子边说, 1000块的大奖在这个后面,800块的在这里,之类的。或许有人会纳 闷了,为什么主持人要演出“事后揭大奖”这一幕呢?道理很简单,节 目组想通过这一个“验证过程”告诉观众,这个环节不是骗人的,大奖 真的就在这后面,只是刚才那家伙运气背了没摸到而已。摸奖前宣称 有大奖,摸完奖之后还能证实大奖真的存在,这就是带有防欺骗的承 诺。 但是,同样的事情在网络上似乎是办不到的。一个典型的例子就是 QQ原来弄的那个恶心的砸金蛋砸银蛋。屏幕左边那个是银蛋,屏幕 右边那个是金蛋,你鼠标选一个敲下去,看能否砸出QQ宠物来。大 量测试表明砸出宠物的概率远远低于50%,让人质疑游戏的真实性。 鬼知道它那个程序是不是真的预先指定了一个有宠物的蛋蛋,很可能 不管你点了哪个蛋蛋结果都一样,系统按照概率直接显示出抽奖结果 来。当然,怀疑游戏的公平性也没办法,要想在网络上实现带防欺骗 的承诺是比较困难的,毕竟让你看一段从另一个蛋蛋里跳出一个宠物 的Flash动画不能让你相信刚才你是真的“选错”了吧。 我们的问题就是:如何设计一个协议,用以保证一个二选一的网络互 动抽奖游戏的真实性?换句话说,假如你选择了金蛋,结果没有中奖, 那么系统如何能够令你相信奖品刚才真的在银蛋里? md5一类的单向散列函数(主页菌注:普通的函数,比如y=2x,给 出输入x=1,得到y=2;给出输出y=2,也很容易得出x=1;可是对于 这种单向函数,给出x=1。比较容易得出y=2。可是反过来,给出 y=2,很难算出x是多少)提供了一个不错的方案。系统首先随机选 择一个蛋(比如银蛋),在蛋里面藏好奖品,然后把单词“silver”连同 一个随机字符串(比如“jq548s”)进行md5。在你抽奖之前,把这个 md5值先告诉你。然后你砸蛋,发现金蛋里没有奖品。此时,系统宣 布字符串“silverjq548s”,你计算它的md5值,发现和之前系统告诉 你的一模一样。此时,你便相信系统刚才是真的把奖品藏在银蛋里了。 若你刚才真的砸了银蛋,那系统就没办法抵赖了,因为md5函数是 一个单向的、不可逆的、不可预测的函数,想要构造一个“golden某 某某”形式的,且md5值和刚才一样的字符串,那比登天还难。另外, 注意到在单词后面添加随机字符串这一步骤是必须的,否则你可以尝 试计算“silver”和“golden”各自的md5值,从而获知哪个蛋里面有奖 品。 不过,现在看来,这个协议也不可靠了。系统有一个办法可以耍赖: 字符串“jq548s”有可能根本不是随机生成的,而是经过一系列精心构 造的。我们不能排除这样一种情况,即我们可以通过某种算法构造出 一对字符串xxx和yyy,使得“silverxxx”和“goldenyyy”的md5值是一 样的。md5被破解后,造成这种“碰撞”更是轻松,并且同一对碰撞还 可以反复用于欺骗不同的用户。其中一个解决办法是,你可以在协议 最初时生成一个自己的随机字符串发给系统,并要求系统传回 “silver/golden” + 系统生成的随机串 + 你自己传过去的随机串 三 者并在一起后的md5值。用户一旦参与了字符串的构造,系统作弊 就变得真正棘手了。 还有没有什么其它办法呢?我在《应用密码学》里看到了一个颇有意 思的协议,它用伪随机序列来代替单向散列函数。不妨把银蛋标为数 字“0”,金蛋标为“1”。在砸蛋之前,你给系统发一个足够长(比方说 100位吧)的随机01串A。然后,系统把奖品藏在标号为X的蛋里。 下面,系统选择一个随机种子,通过伪随机数列发生器生成100个随 机数,并全部模2得到一个100位的随机01串B。然后系统计算01串C, 其中 C[i] =B[i] 当A[i]为0 C[i] =B[i]xorX 当A[i]为1 系统把C传给你,并宣布准备完毕,开始抽奖。事后,系统公开自己 选取的随机种子的值,你便能还原序列B,验证序列C是否和系统之 前所给的一样。(主页菌注:这一招相当于一把锁需要两把钥匙同时 存在才能打开,开奖之前先给你一把,开奖之后再给你另外一把,只 有两把钥匙

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档