首页 >> 计算机科学 >> 文章

电影《无间道》里,梁朝伟饰演的角色陈永仁很尴尬,警校没毕业就被派到黑社会做卧底,到斗争最激烈的时候,他的身份证明被黑帮打入警局的刘建明(刘德华饰)彻底删除了,与陈永仁单线联系的黄督察(黄秋生饰)也死了,陈永仁再也没法证明自己是警察了,他成了一个黑人。剧情安排他被杀了,这是没办法的事,否则他完成任务之后,如何再回到警局去上班呢?谁又能帮他证明警察身份呢?

如果我是他,出于自保的目的,会在当卧底之前把各种可能性都考虑清楚,首先我会要求警局把我的电脑卧底资料加密,密码由我一人掌握,以防刘建明之流从中获取我的信息。但这还不够,因为刘建明之流虽然看不到我的具体信息,但他有可能找到卧底人信息的加密文件,他一鼓脑都删除了,那我也会同样地悲剧了。

命运要掌握在我自己手里,根据这个原则,我按与黄督察约定好的条款写了一份卧底证明,即我的掩护名为“阿仁”,韩琛帮覆灭后就回警局工作,升两级且获奖金50万元,并要求黄督察签字盖章。但是,我不能让他看到这份证明,因为黄督察有可能事后变节,把“阿仁”是卧底的情况泄露给黑帮。

我把证明打印好后,把文字部分遮挡住,只留下空白处让黄督察签字盖章。但是黄督察不干,因为他对我写的证明内容没信心,他认为我可能写的是“卧底1个月即退休,退休金2000万”。

如何才能让黄督察既看不到我写的证明内容,又让他确信他已经知道了我的证明内容呢?这看似不可能,但这却是信息安全理论中已经解决了的“盲签字”内容。

我设计了以下的签字流程:

1、我写了10份掩护名不同的证明,有的叫“阿仁”,有的叫“阿德”等等,其它内容都完全一致,用同一种加密方法进行加密,得到十份不同的密文。特别的是,这种加密方法对明文的变化很敏感,即使两份证明中仅有“仁”“德”两个字不同,那密文也显得毫无关系的样子,这叫作雪崩效应,即一丁点的扰动就会引起结果巨大的差别。

2、我找黄督察签字盖章,他随机挑出9份,让我当场解密,他看到解密后的明文与我们的约定相同,只是掩护名不同而矣。于是,黄督察放心地在第10张密文上签了字盖了章,他当然不知道我的掩护名是什么,现在我放心了。

3、我把这份签字盖章的证明妥善保管起来,以备将来回警局时使用,只是掩护名是10个我起好中的随机的一个了,这有点令我不爽,本来是想叫“阿德”的,但黄督察恰好把“阿仁”这份留下来了。

这里面还有3个问题:

1、我为什么选择了有雪崩效应的加密算法呢?

如果没有这种特性,那我加密后的十份密文会非常相似,只有个别位置不相同,黄督察当然会知道不相同之处就是掩护名的密文,他获得了十份掩护名的密文及一一对应的九份掩护名的明文,会很容易地根据这些规律推导出他签字盖章的那份证明的掩护名的明文。而有了雪崩效应,他就找不出掩护名所对应的密文是哪个了,我也就安全了。

2、如果对同一个密文有两种不同的解法,一种可解成不捣鬼的,一种解成捣鬼的,那我当着黄督察的面用前一种解密算法忽悠他签了字,下个月我拿他签字盖章的证明密文找他要钱,使用后一种捣鬼算法,那他不就傻了吗?

这其中涉及到了单向函数问题,什么是单向函数呢?给定了被除数和除数,余数就很容易确定了,例如被除数4除以除数3,余数是1,但给定了除数3和余数1,被除数会有无穷多个。正向推很容易得到确定解,反向推就难以得到确定解了,这就是一种单向函数。黄督察规定我必须使用单向函数加密,这就保证了我不可能有第二种解法,否则我就当知名数学家了,还做卧底这苦差干吗?

3、黄督察为什么也会放心呢?

因为我捣鬼了1份以上(不含)的证明,当场解开9份后一定会被发现,我只捣鬼了1张,而黄督察恰巧没抽到的概率只占1/10,这是我欺骗成功的唯一机会。为了避免欺骗的发生,他事先跟我约定了一个严重的欺诈惩罚条例,只要发现我作弊就开除甚至法办我,如果他还不放心,可以要求我搞100份或更多的证明来,直到他认定我不会傻到为了这么小的可能性而去冒这么大的风险。

在“盲签字”运用中,10个样本是极少的,实际中的样本量可能有几百万个之多,几百万分之一的可能性才能获益,而在绝大多数的情况下会受到严重惩戒的事,但凡有一点理智的人都是不会干的。正是基于这样的考虑,“盲签字”就成为了一种很可靠的安全协议,跟上两篇《阿里巴巴的零知识证明》和《象棋大师的身份欺诈》一样,这种安全协议最不怕的就是惟利是图的人,他们对自己获利的小算盘打得越精,就越能牵着他们的鼻子走。

0
为您推荐

117 Responses to “《无间道》中的“盲签字””

  1. neo说道:

    沙化

  2. EDWARDIITII说道:

    香港警察是不能收獎金的,就算是臥底都一樣
    收多過500元,都要申報
    那象國內那樣.....

  3. @man080808说道:

    读完后对算法比较好奇

  4. lalunasun说道:

    一看剃刀叔就是坏银,净弄这些唬人的事。。。。。。。

  5. Edward说道:

    哇!!!!
    小纠结·······················

  6. 不要找我说道:

    请具体说说“盲签字”的运用例子?

  7. 伊藤博文说道:

    同LUNA桑!剃刀大叔既抽烟又喝酒,是坏淫!

    我记得DES算法也是有雪崩效应的,结果还是架不住Distribute.net,硬算啊,破解鸟…

    • 奥卡姆剃刀说道:

      没错,啥加密算法也抗不住分布式暴力破解。不过一种加密算法如果能做到除了暴力破解就没别的法了,那就说明该算法很成功鸟。

      • 伊藤博文说道:

        1998年7月,分布式网络破解56bit版滴DES花鸟41天…99年的时候他们和EFF(Electronic Frontier Foundation)联手,只花了22小时…

        DES算是废鸟,不过AES 256bit还安全,目前应该没有一台计算机能在太阳寿命用完前破解它吧…

        不过我相信任何对通信安全有兴趣滴人看到crack这个词,还是会浑身一抖,嘻嘻~

        • crazy_piggy说道:

          完全正确啊!哈哈,没有无条件安全的加密,只有计算上安全的加密啊!

  8. 10086说道:

    微博上一看题目就猜是奥卡姆剃刀写的,果然啊。

  9. 路人甲说道:

    会不会黄督察在演示解密的过程中理解了加密算法,知道了第十份的明文是什么,这样如何防备事后变节?

    • 变形机器猫说道:

      你应该相信现代的RAS加密/解密技术。
      搞一个像样的密匙,别说黄督察,就算是超级计算机……

      • 伊藤博文说道:

        哼,机器猫也是坏淫~不给瓦们喜欢搞穷举猜解的人留活路~

        不就是RSA么,不就是大素数分解么,哼!

        瓦偏不去找快速因数分解算法,偏要穷举~有请量子计算机!

        不过话说回来,RSA的加密强度高是高,加密时间就……

        • 变形机器猫说道:

          我怎么打成了RAS……可能是因为我刚玩了RAS小组破解的游戏?

      • Jammy说道:

        说道rsa,这个成都有进展,边信道攻击。

        另外,关于另一位提的加密慢的问题,这个一般不是用来直接加密数据的哈。

  10. [...] 《无间道》中的“盲签字” AKPC_IDS += "1052,";Popularity: unranked [?]相关文章2010年04月26日 -- [...]

  11. yuhudie63说道:

    没看懂啊

  12. 何炜说道:

    有点晕…

  13. 尖椒炒蛋说道:

    不错 讲得很有意思

  14. 锋了说道:

    好像都是博弈论的延伸?

  15. 寒冰说道:

    2、我找黄督察签字盖章,他随机挑出9份,让我当场解密,他看到解密后的明文与我们的约定相同,只是掩护名不同而矣。于是,黄督察放心地在第10张密文上签了字盖了章,他当然不知道我的掩护名是什么,现在我放心了。

    “我”事先知道了10份文件的原文,只要花点功夫背下来,随便他抽哪九份,我只要写九份内容上去,那黄督查还是被我骗了啊,事实上,这10份只是内容大同小异“卧底1个月即退休,退休金2000万”的内容。

    事实上这个方法不如事先用明文写好合同,但留名字处空白,“我”在黄督查签字画押后自行填上不是更好么?

    当然也有很多其他办法,比如将算法放置在保险箱里,放置两把钥匙,我一把,公证处一把,由当时的公证处将九份合同进行解密,然后在合同上用明文注明除非“我”死了,否则必须由“我”和公证处同时持钥匙打开保险箱后解密方为有效。是不是比lz的方法要好?

    • 萌宅说道:

      物理方法永遠行之有效且直接簡潔............-_-..............

  16. alan说道:

    单纯从身份证明这个事来讲,陈永仁还不如写个格式文本,证明**是卧底之类的全部是明文,只把化名留空。这样不就行了。黄督查也可以直接签字,而化名他也不会知道,因为名字是后填的。这样不更简单?!

    • 寒冰说道:

      单纯从身份证明这个事来讲,陈永仁还不如写个格式文本,证明**是卧底之类的全部是明文,只把化名留空。这样不就行了。黄督查也可以直接签字,而化名他也不会知道,因为名字是后填的。这样不更简单?!

      如果是酱紫的话,那谁都能拿着这张证明说自己是卧底为国家立了大功了

      • 奥卡姆剃刀说道:

        寒冰的解释有理

      • KonW说道:

        "单纯从身份证明这个事来讲,陈永仁还不如写个格式文本,证明**是卧底之类的全部是明文,只把化名留空。这样不就行了。黄督查也可以直接签字,而化名他也不会知道,因为名字是后填的。这样不更简单?!
        如果是酱紫的话,那谁都能拿着这张证明说自己是卧底为国家立了大功了"

        那用这样的方法后我拿到那张证明还不是一样的可以说自己是卧底已经立功了

    • 默小土说道:

      嗯,有道理……

  17. cobra4956说道:

    话说。。有门 技术 叫 零知识验证 。。。似乎 是 这名字 吧?

  18. David说道:

    我觉得有一个问题,黄警官变节的话,给韩琛看卧底的照片就好了,用得上说名字么,再说,你还要证明你的这个东西不是你伪造的,比如签名和盖章,因为这东西不在警局保管而是你自己保管的

    • 寒冰说道:

      不是酱紫的,因为外表是会变化的,时间长了可能会认不出,再说也有可能是做了整容手术后再去做卧底的

    • 寒冰说道:

      所有机关的印章都是有印记的,伪造不伪造其实鉴定起来不是很困难,但还是不如用我推荐的方法吧。。。。。

  19. 绿枫说道:

    信息安全理论还有点意思哎

  20. Metaverse说道:

    单向函数……那解密应该就是正向操作(被除数/除数得出结果)而加密是逆向操作(用余数和除数给出被除数)?这样看来,被除数和余数的例子如果写成公式y=kx+b的话,实际上加密就是知道k和b的情况下选定x造出y,对于不同的x,y就有无限种可能,而解密就是反过来求x,一个y就只有一个x,解密的复杂程度就取决于y=f(x)的复杂程度,这样没理解错吧?

    • sun说道:

      这个应该不对,y=kx+b, 单向指的是给出y和x,可以直接得出且唯一的b, 而如果反过来,给出x和b,因为不同的k,所以有多个y出现,造成无法解密(这是否称之为多向函数呢?呵呵); 对于运用单向函数加密,是指阿仁把加密的方法(类似与y和x)告诉了黄督察,黄督察一看,通过y和x不可能算出多个b(即解密后的密文内容都是一样,只是名字不一样,不会解出既是内容不一样,名字也不一样的明文),因此可以相信阿仁的加密方法是用了单向函数。
      至于解密,如果你的y=kx+b就是一个加密过程,y是原文,b是加密后的文,加密通过了取x=3(这个叫密匙么?)的余数来得到b,加密过程中你得到了k(k应该也算是密匙的一部分),则解密就是需要通过x,k将b算到y,这下明白了吧...... PS:以上纯属个人空想出来的,请大家指正错误

  21. derek说道:

    不需要这么复杂,打印10份协议,含有10个不同的人名,让黄督察在10份上都签名。然后挑出1份自己中意的名字的协议。黄督察只能看到你挑出了一份,但不能知道里面名字是哪个,然后当着黄督察的面烧掉其余9份即可。

    • asion说道:

      这样不对吧。10个名字黄督查完全可以都记录下来。一旦变节,只要用这10个名字的都会成为怀疑对象,卧底仍然是不安全的。

  22. 沈小棠说道:

    有意思内~ 一个完全数学白痴怎么有点喜欢你讲的数学了呢

  23. cryfox说道:

    完全没看明白

  24. 拼图者说道:

    剃刀,你这三篇文章我都认真的看了,真的觉得很不错。你的文章让我越来越爱科学了。

    • 奥卡姆剃刀说道:

      谢谢支持~

      • 拼图者说道:

        写个剃刀科学三十六计吧。最近关注房产消息发现房地产业就一直在用象棋大师欺诈身份这一招。好像市面上有很多有钱人在买房子,其实一直都是银行在买房子。虽然大家都知道,但是您写出这个来就像一个规律总结一样。就像我们都知道苹果会掉在地上,但是牛顿用科学的方式解释了苹果为什么会掉在地上一样。零知识和盲签名也都是我们日常生活中用的一些计策的科学规律总结。
        零知识的社会应用就是我给你结果,你别管我怎么弄的,这招在上班的时候常用。老板不管你怎么搞定客户,他只关心你有没有签单。而我不想让老板知道我怎么搞定客户,因为我想把这个客户做为我自己的资源。更不想让同事知道内幕交易等等。

  25. vantasy说道:

    不太明白。
    看起来主人公最终的目标是为了拿到一大笔钱,那还不如干脆先要求支付了这笔钱,最后谁死了都不怕。

  26. dribbler说道:

    不是太明白,看作者原意是不想让头知道自己的卧底名字。
    那么在解密9封协议的时候,是当着头的面解密,而这个解密算法应该是个私密算法吧,不是公开的。(否则头用这个公开解密算法解密第10封也就知道了)
    好,那么既然是用了一个私密的解密算法,又在头面前演示了,又如何能让头是相信你这个解密算法具有唯一性呢?

    • EVA说道:

      算法可以由双方约定,由头儿提供设备(比如一块芯片),然后卧底输入密码。
      每份协议的密码都不相同,这样即使头儿的芯片有后门记录了密码,也没法用于最后留下的那份协议。

  27. ShiningRay说道:

    没太看明白哈

    加密信息是为了防止被骗,而这里的应用却是要去骗人,似乎有点矛盾

  28. 淬念说道:

    上次的阿里巴巴0知识证明后,又一片让我醍醐灌顶的文章。逻辑啊逻辑,这就是逻辑。

  29. 梦梦说道:

    剃刀同学,我觉得这个盲签字的方法跟信息论(Information theory)有很大关系叻,判断一件事物是否正确不是看它的绝对正确和绝对错误,而是看它正确的概率有多大。足够大以至于错误的可能性几乎不可能发生的时候我们就认定它是正确的。也就是说我们日常生活所下的结论都应该基于概率来看了0,0。使用明文的方法就是为了保证绝对正确的发生。

  30. 伊藤博文说道:

    额,剃刀大叔,提个小建议,看鸟版面上一些人的回帖,介绍通信安全的基本原理是非常好的,但是看来仍然有人对此没有理解透彻,下一篇要不要从明文,公钥私钥,这些基本的开始讲起,基本概念理解之后再来说进阶(没有预先商定共享密钥条件下的加密通信?),是不是能好点…

    另外是不是该考虑,故事严谨一些(这个故事读起来有点生涩),文字表述中尽量顾忌到可能的误解…这个比较有难度啊~

    那就体现下怪蜀黍的功力吧~

  31. 寒冰说道:

    剃刀评评我的加密方法吧。。。。

    请公证处参与进来,将算法放置在保险箱里,放置两把钥匙,我一把,公证处一把,由当时的公证处将九份合同进行解密,得出结论当然是我当时所宣称的那样,在合同上也要用明文注明,“必须由“我”(即钥匙持有人)和公证处两方同时持钥匙打开保险箱后将解密方法取出后的解密方为有效。”可以么?

    • 奥卡姆剃刀说道:

      假如公证员和黄督察一并被黑帮收买了,那你怎么办?

      • 寒冰说道:

        这是无所谓的,因为公证员也好,黄督查也好都没有看到过解密状态的我的那份合同啊,公证员见过解密方法,黄督查见过加密后的文本,为了防止黄督查把加密的文本给背出来找公证员去解密,那就想办法把加密后的文本搞到足够长,使正常人无法背出来就行了,比如100w位之类的,如果碰到真能背出100w位的老大,那被抓住了我也认了

        • 奥卡姆剃刀说道:

          你之所以找公证员,而不是随便找个人,其实就是相信公证员的公信力了,这就转到了带有“仲裁人”的三方安全协议了,这就变成了另一个话题。

          我这篇文章说的是“盲签字”,借用了《无间道》的故事来说事,其实并不是完全贴切的,也不是探讨卧底问题,只要此文有助于你理解“盲签字”就好了。

  32. 花栗鼠说道:

    小小顶礼一下 为这例子

  33. 110说道:

    您举的例子是10验9,在仅仅10个样本的时候我检验了90%很轻易,当实际样本量可能有几百万甚至更多的时候,我又该何从入手呢?这个能检验盲签安全性的抽样率是怎么计算的呢?“几百万分之一的可能性才能获益”,我不明白,怎么样严密的筛查能让立意捣鬼的人在几百万份样本中只能造一份的假?谢谢!

    • 奥卡姆剃刀说道:

      1、用电脑去办

      2、不是让立意捣鬼的人只造一份假,而是让他造一份以上的假的话,肯定就会被纠出来,而只造一份假且恰好被留下的可能性极低,而且选择权不在他,他就不会去犯傻冒险了。

      • 110说道:

        呵呵,我的意思想请问您这个检验率。都是取90%吗?实际样本有几百万甚至更多的时候,取90%这工作量也不小吧?取90%检测,一百万里面有10万个造假的话……
        “而是让他造一份以上的假的话,肯定就会被纠出来”——呵呵,俺就是没明白这个肯定被纠出来的机制怎么运作滴~

        • 玲子说道:

          您理解错了吧,是只剩一个,而不是百分之九时~

        • 110说道:

          重新问吧,上面写错了。我没明白在实际样本中应该取多少样本进行检验才合理。比如例中的90%?比率值固定吗?这个合理的比率值是如何计算出来的啊?我没懂“而是让他造一份以上的假的话,肯定就会被纠出来”的这个纠错机制是如何运作的?谢谢!饿得头晕脑胀地飘过~

  34. atp27说道:

    10个里面2个假,抽9个的话可能可以抽到假的呀。只造一个假或者采用了大样本的话不一定能抽到,但抽的几率非常大,近似于肯定能抽到。

    我想文中的方法还有个优点是牵扯的对象少,就两个人便可以。对于保密工作来说,牵扯到个体越少越好。

  35. atp27说道:

    第一个可能改为肯定……

  36. 玲子说道:

    剃刀老师好,以前没有接触过这些,虽然理解了,但还是有些地方有疑问,比如说,要运用盲签字的前提,是不是我自己必须会这种算法而不能假手他人?还有就是既然对方已经知道了全部的密文,那么他是不是也可以对它解密呢?还是说只有加密的人才能解?
    我不明白加密和解密是怎样的一个体系。。。法学小本,诚心向您请教!

    • 奥卡姆剃刀说道:

      你的算法不能假手他人,但必须让他人相信这个解密算法是唯一的,这样才能令黄督察相信你没有欺骗他。

    • Kouga说道:

      算法可以用公开的双向算法加密文本(否则没法看内容啦喵~),再用单向算法进行签名认证。而这些都交给电脑好吧喵~如果不相信OS,也可以将加密交给特定芯片进行(硬件加密解密),这样就算想“偷窥”一下也只能获得密文和解密后的明文,密钥仍旧保留在硬件内部除非暴力一下喵~

  37. 寒冰说道:

    2、我找黄督察签字盖章,他随机挑出9份,让我当场解密,他看到解密后的明文与我们的约定相同,只是掩护名不同而矣。于是,黄督察放心地在第10张密文上签了字盖了章,他当然不知道我的掩护名是什么,现在我放心了。

    剃刀,我觉得加密的人同解密证实这些文件是其事先所宣称内容的人应该不能是一个,否则,我只要记性好,这十张内容都是可以对我有利的内容,而在所谓解密的过程中,我只是将事先背出的内容默写下来,不就能很容易地骗过黄督查了么?同样,我觉得是否是单向函数是没有必要的,因为黄督查是不可能看到这个函数的,否则既有密码,又有解码方法,他自然能够知道我的姓名是什么了。

    我觉得关键是要把解码方法单独放置在一个地方,而不能由其中任何一方单独宣称,这样不管是不是单向函数,那得出的必然是唯一的一个结果。(因为我还没想到如何使用同一种方法,对同一个文件进行解密,而得出不同结论的方法)

    剃刀,你觉得呢?

    • 奥卡姆剃刀说道:

      这样不行,你必须让黄督察确信你的解密算法是唯一的,否则他凭什么相信你没有欺骗他呢。

      • 寒冰说道:

        解密算法如果有两种的话,在当时公证处介入解密的时候已经发现了,而在黄督查签字后,解密方法就被立即放入保险箱,这样还不能保证解密方法唯一么?

        • 奥卡姆剃刀说道:

          这还是把身家性命寄托在了公证员身上,而“盲签字”的前提是除了自己谁都不相信。当然,你说的也不失为一个办法,不过这种办法是有仲裁人参加的三方安全协议,是另一个安全话题。

          • 玲子说道:

            “盲签字的算法是除了自己谁都不相信”,但是你怎么能让别人相信你?

      • sun说道:

        Hi,剃刀, 有一点不明白,看到你说的为了让黄督察相信是同一种解密方法,你当场是不是要把解密方法和9个样本算给黄督察看,而黄督察知道了解密方法,把它用在签字的文件上岂不是就可以算出加密前的掩护名是什么了?

        • 奥卡姆剃刀说道:

          解密算法并没有告诉黄督察,只是在使用时令黄确信,这的确是唯一的解密算法。那黄凭什么相信这是唯一解法呢?其理论根据就是单向函数。

          • 玲子说道:

            既然解密算法黄督查不知道,那他怎么能相信你当着他的面解出来的就是那份密文对应的明文呢?你可以事前准备好你要表达的明文内容然后再背出来不是吗?

  38. ~喵~说道:

    基本上懂了。不过剃刀都有自己的文风了啊。

  39. EVA说道:

    信息安全不依赖于算法的保密。完全可以用双方都认可的公开算法。

  40. nono说道:

    狂!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  41. 随处风流的风说道:

    牛B,LZ可以从一段电影引出一些数学的问题。我佩服。你不去当老师就真是可惜了,我一个数学白痴看得津津有味。

    我最喜欢这段
    3、我把这份签字盖章的证明妥善保管起来,以备将来回警局时使用,只是掩护名是10个我起好中的随机的一个了,这有点令我不爽,本来是想叫“阿德”的,但黄督察恰好把“阿仁”这份留下来了。
    看了爆笑。

    命运掌握在自己手中。我认为,某楼地人是对的,不填化名先。这样黄督察也就不知道了。这招还是比较高的。

  42. 二胖说道:

    盲签字、雪崩加密,都看懂了。这篇短文写得生动有趣,很有意思。但问题是在无间道这个故事里,这一招没什么用。

    作者说这样设计是为了防止黄秋生变节,但在无间道这个具体“情境”中,黄秋生如果要告发梁朝伟,他并不需要像“白社会”那样拿出证据,黑社会办事情是不走“法律程序”的。曾志伟的风格是宁可错杀不可错放,要什么“卧底证明”啊。

    这样做的目的只有一个:黄秋生不知道这份“卧底证明”在哪里,也就没法删除。然而,这就产生了另一个风险,那就是如果梁朝伟以后果然要做黑社会老大,不愿意再当警察的时候,你也没有任何证据说他曾经是警察(找不到档案)。于是“白社会”在“法律程序”上就拿梁朝伟没有办法了。
    而这个风险,是lz所没有想到的,

  43. 多多说道:

    挺有意思的,我现在在研究无线通信中的安全问题,主要就是一些MAC层的安全协议,看那些文档看的头疼,正好在这里放松一下

  44. 伊藤博文说道:

    啊,专业帖中碰到的前辈就是多…

    看IEEE 80X.X的标准已经头昏眼花了,冷不丁再瞟到IETF发布的RFC文档…卧槽!06年就已经积累到5000份!

    介个,要读到猴年马月啊!

    • 多多说道:

      已然将文档和文献当做小说来读,有时还能发现连贯性呢,可以变成连续剧

  45. 伊藤博文说道:

    我一直觉得,以MB大小计算的文献,可以用心精读,以GB计算的,花些工夫好好筛选筛选一样可以读,以TB计算的,肯定得靠学术共同体,以PB计算的,直接崩溃…对于目前互联网上介些个以EB大小计算的信息量么……

    直接一脚踹翻主机以泄愤…

  46. L说道:

    如果是怕黄督查事后变节,根本不用这么麻烦去知道朝伟的掩护名啊,只要把照片拿给黑社会或者抓几个小喽罗就可以打探到了,那这样签了又有什么意义呢?

  47. crazy_piggy说道:

    又一次拜读剃刀老师的文章了,还是有许多同学在纠结文中举的例子。把盲签字解释得这么深入浅出!不过盲签字还是有很多限制的!其中很重要的一点,就是加密方要证明自己使用的是单向函数算法!这个是比较麻烦的!

    • 多多说道:

      单向函数有很多啊,像哈希之类的,逆向不可解的

  48. xiaon说道:

    能用技术解决管理上的问题么?
    是不是太脱离生活了?

  49. 萝卜说道:

    很有意思

  50. 傻鱼说道:

    楼上诸位纠结于案例是没有意义的,剃刀只有以这个案例说盲签。我的理解是这样:
    首先,盲签的前提和适用的范围是:一份文书的内容对于两个人来讲有不同的重点,对于A来讲,需要确定文书的内容符合其要求,对于B来讲,最终要执行的文书中的某个特定部分内容应该是A所不知的,同时,这部分内容应该是可变的,也是B可选的。我们以(AB)来代表该文书。则(A)部分是不变的,(B)是变化的,B可以从不同的(B)中任选一个。(这个是使用盲签的前提)
    其次,由B编制了若干(AB)文书,记住,每一份的(A)都是相同的,而(B)是不相同的。文书的数量要足够多。
    第三,将所有文书采用同一种方法加密,加解密软件由B提供,得到与文书份数相同的加密文件。(加解密软件必须由B提供,可以防止A对未解密的文书自行解密)
    第四,A提供若干文书,现场由A使用B提供的加解密软件对A提供的文书加密、解密,确认解密输出确实与加密文件有关。(这个是为了防止B在解密上做手脚,例如楼上某些同学所说,输出文件与加密文件无关)
    第五,由A从B提供的加密文件中选出N-1份,由A使用B提供的加解密机制进行解密,验证文书确实由(AB)组成,符合A的要求。
    第六,A在最后一份加密文件上签字。

  51. HR说道:

    感觉寒冰说的那个把化名留着,不太对!如果让他自己写,那他回去随便写,不就成了万能保护伞了,在黑道里拍卖,养老钱随便就回来了,谁还玩命做卧底!

  52. 贝雅特丽齐的但丁说道:

    引入含有密钥的加密/解密算法,这样就可以把算法提供出去,自己保留密钥。
    让签名的人相信这个算法是单向的。
    然后对于每一份文书用不同的密钥加密。

  53. 黑白积木说道:

    博主的研究实在是太让人瞠目结舌了

  54. laoma说道:

    “对同一个密文有两种不同的解法,黄督察规定我必须使用单向函数加密。”
    1)黄督察如何知道我是用的是单向函数加密?是否需要他成为密码学教授才能知道?
    2)是否存在同一个密文,不同的密钥的到不同的明文的算法?
    比如密文“QWERTYUIOP”,用“阿仁”解密得到“韩琛帮覆灭后就回警局工作,升两级且获奖金50万元”;用“仁仔”解密得到“卧底1个月即退休,退休金2000万”。
    密文“ASDFGHJKL:”,用“阿德”解密得到“韩琛帮覆灭后就回警局工作,升两级且获奖金50万元”;用“德仔”解密得到“卧底1个月即退休,退休金2000万”。
    “阿仁”“仁仔”“阿德”“德仔”对黄警官是保密的,到时候可以随便我忽悠。

  55. 边涯说道:

    看了半天,说一下理解的一些东西:
    1、黄督察从“我”的N份加密过的密文里随机选出N-1个,至于选哪些不是我能决定的,但无论他选哪些我都能解密,如果N非常大,就可以在大概率上证明:
    a 剩下未解密的那一份明文跟前面N-1份也是相同的(当然除了名字部分)。这个可以让黄督察相信我没有伪造剩下未解密的那一份的内容而愿意为我签字。
      b 我是可以解密所有N份密文的。这个保证我自己可以不靠黄督察而解密最后这一份黄督察已经签过字的文件,得到我的退休金。

    2、上面有些朋友说的引入第三方公证的,我认为公证相信我和黄督察相信我没什么区别,他们俩都会怀疑我造假,也同样会被黑帮收买,引入这个人应该解决不了这个问题。

  56. yang说道:

    在别处看到,过来探讨一下,欢迎指正。先谢过了!

    上文对“雪崩效应”理解有误,“雪崩效应”是指对加密后的文件(密文)做任何一点改动即导致全文(实际应用中主要是后文)不可用(不能正确解密)。第1步中所说的(任何两份有丁点不同的文件用同样的方式——同样的加密算法和相同的密钥——加密得到完全不同的密文)是对合格加密算法的基本要求。

    在这里的假定中,由于十份文件互相之间没有关联,如果“我”将其中一份文件内容表述为“卧底1个月即退休,退休金2000万”,黄督察没有选中它的可能性有10%,也就是说,“我”将黄督察耍了的可能性高达10%。这显然是不可接受的,密码系统的理论安全性要达到超出计算的可能,万亿(10^12,大约和2^40在一个量级)分之一都太高,对比现在一般密码系统的要求,AES/SHA-1都开始要被替代了,而AES的强度为2^64,经过王小云的努力SHA-1的强度降低到为2^63。

    其实整个系统的设计本身就是有问题的:“我”需要“黄督察”为他所不了解的内容背书。从黄督察的角度,他为无法确认可靠性的内容作保证,这样是违背基本安全准则(due care)的。原文系统设计者忽略了一个基本问题,即“我”是由黄督察安排去做卧底的,如果黄督察要出卖“我”,“我”就不可能幸免;如果黄督察本身是不可信任的,那“我”就不能接受卧底的任务;否则,就必须接受“黄督察是可信赖的”这一前提。于是,问题简化为,其他人只要确认“‘我’所持的证明材料是真的”即可——那么这只需要防我篡改,签名算法的一个很基础的应用而已:很简单,黄督察用相应算法(RSA/DSA/ECDSA)产生一对密钥(公钥和私钥),用私钥对我的文件进行加密,产生一个电子签名(一串“乱码”),然后把公钥公开发布。这样,当“我”拿着证明材料和当初“黄督察”给我的电子签名出现时,其他人任何人用当初黄督察发布的公钥即可验证电子签名的真伪,即可判断我的证明材料是否是真的,这时候不需要“黄督察”加密时的私钥。实际运算是,“黄督察”并不直接用他的“私钥”加密我的证明材料,而是先用摘要算法算出“我”证明材料的摘要(digest),然后用私钥加密摘要,密文即是他的电子签名;“我”需要获得清白时,大家只需要用公钥解密电子签名,然后重新计算我提供的证明材料的摘要(“黄督察”将摘要算法和他的公钥一并公开),如果相同,即可验证“我”的卧底身份。

  57. yang说道:

    盲签的应用并不是这样的场合,而且盲签机制一般也是基于公钥密码算法,其安全性也不可能靠“十选九”来保证

  58. yang说道:

    写完觉得有点不妥,把Bruce的《应用密码学》找出来翻了翻,作些补充。“十选九”在实际中可以作为一种盲签机制,但有二个前提:签名者不关心所证明材料的具体内容,而只证明他确实有签署这一过程;如果一次作假被发现,处罚将远远超过其他九次的获益。楼主提到了,我没注意。。。
    另:敲急了,AES的强度应该是2^128,生日攻击只对摘要算法有效。。。

  59. Qianet说道:

    仔细观察了剃刀的头像 忽然觉得:贼像奥巴马!!

  60. KonW说道:

    文章很好,,,但
    感觉如果1,2,3步骤后加一步,,,4,如此,我就已啊仁为名卧底,,,,
    就更清楚多了
    不知道是否作者故意这样以故弄玄虚显得高深

  61. Jarod说道:

    这个故事让人很容易理解盲签字这种安全协议是个怎么回事。

  62. smillpp说道:

    ....其实,这个貌似还是可以找到漏洞的说,如果在10份签名中单项函数计算上有判断语句什么的,目的性就是要黄警官的签名,这个,真是不好办的说。

  63. nyfor说道:

    1. 算法选择双方可以信赖的公开的加解密算法, 各自获取该算法的软件(避免软件留后门来欺骗对方)而不是由卧底提供算法软件.
    2. 卧底对10份材料使用10个不同的密钥进行加密.
    3. 黄警官对10份密文随机抽取9份, 让卧底提供相应的9份密钥用自行获取的软件进行解密
    4. 解密确认内容无误, 便可在最后一份密文材料上签字, 最后一份密文的密钥由卧底保存.

  64. mimi说道:

    学知识了。

  65. st4k说道:

    感觉很模糊,漏洞太多了,如果想说明盲签名这件事情,lz可以不用无间道这个故事,否则越看越乱。

  66. fan说道:

    剃刀叔这篇依然精彩,但是我能力不足,看完又看评论.有地方越想是懵了.
    剃刀叔果然应该先写一篇普及基本概论的通俗文章,像"雪崩效应的加密算法"、"盲签字"这些词在看完故事之后,也不能反过来,对它有认识,文里缺少足够的提示和读者没有缺少这面的认识. (我解析不清楚问题...)

  67. 谁抢我坚果说道:

    纯理论贴
    仅仅讨论盲签名可以,实际无意义。

    如果讨论事件处理方法
    防黄根本没法防的,无论你如何隐藏,直接联系者都可以发现并指认你。因为你要与之交换情报。哪怕你是第三方中转情报,也可以通过行为模式缩小可选择范围。
    所以唯一防止的是事先约定的报酬类事宜被否认。可考虑明文,一式2份,不记录卧底者身份,身份确认可使用特殊物品确认即可。

    当然如果是电子化合同,可考虑非对称加密,卧底直接持有阅读权限的公钥即可。

  68. 谁抢我坚果说道:

    以上实际无意义,仅对lz所说的无间道案例。

    实际中抓内奸,绝大多数是从行为模式分析中获得足够线索的。直接抓住都是分析出内奸后蹲点,设套抓住的。

    用lz的方法实际上是多此一举。

  69. 谁抢我坚果说道:

    其实我觉得,最大的问题是合同没有一式几份,特别是卧底手中没有合同,才是最大的问题,事实上,在卧底之初,陈将合同安置在妥善的地方,被发现的可能性几乎为零。
    无论你盲签名也好,啥啥也好,只要刘一狠心,把警局的服务器给灭了。不又回到你最初的设定?你就是加个17,8次密也没用。
    另外,按照特定物品确认身份的方法,哪怕刘拿着合同给黑帮,最多证明有内奸,仍旧无法指认何人是内奸。身份确认物品与合同早就被藏好了。人家黑帮说不定还考虑是不是离间计呢。

    纯讨论盲签名的化,盲签名的解释还算比较清晰的。
    只是案例选的实在不能恭维。

  70. 木耳说道:

    没看懂……我是数学盲,呜呜呜~~~

  71. 四海沉烟说道:

    喜欢。

  72. 张家林说道:

    都是理性派

  73. nichai说道:

    你EQ也太令人绝望了。。。。

  74. zhuyugang说道:

    我见过最难模仿的签名是一份海上保险合同书,第一,它使用的是阿拉伯文;第二,她用左手自右向左书写;第三,她只用自己的笔来签名!大家不妨提早练一练.