西西河

主题:【原创】【周末小包子】【乱扯】从阿磕老兄随手打的乱码说起 -- 1001n

共:💬28 🌺32
分页树展主题 · 全看首页 上页
/ 2
下页 末页
  • 家园 【原创】【周末小包子】【乱扯】从阿磕老兄随手打的乱码说起

    长话短说,为了响应夏翁“全用密码书写”的号召,阿磕老兄主动请缨,双手奋战,提供了以下乱码:

    gdsgfdrgbvdfrgbvdfrstgbhjyhgtngbnhgn gmnnbmhgyjnhgmjnbm nbm bvngfgnhvbngfhbgfvnbhgjytuiulkojhkhgjgfhes cgvjnhgcvbzcvnhse gvxdgfsgbvxcbvfcxbzzcvbfdhgdf hfshgffdgbdfgsqdeyuaw;loiwfbsajhkfkjhsdfknvxjhsdhdf

    cdvfdsagfdag aefrastfrasgtdfragm,.cfn dfzsAdfaSDFXZSCFZSCYUOIEFRj;kjdsfsd;lgfdsl;gs;sas

    cfzdsf.jnfseslakfmjzs'dgv'ewodegfmvd'SASNVj:LSfsa

    尔后,泰让老兄当仁不让,提供解码成果如下:

    根据密码的频率,几乎全部出自键盘字母第二行,左边的键d,g,f,s出现频率大大小小高于右手对应键hjkl

    结论:阿瞌是左撇子。

    激赏之后,1001n还想补充两点:一、“磕”头不是“瞌”睡,泰让老兄特意错字一枚,在此姑且解释为迷惑分析人员的花招;二、乱码中后半部分有长而连续的大写字符,很有可能是当时按了CapsLock,后来在按j之前又按了一下,嘿嘿。。

    ——我们要说,阿磕老兄和泰让老兄的捧哏逗哏,实在是非常精彩;它精彩就精彩在:这短短的几行字里面,正蕴涵了密码学的一段往事。现在,1001n就含沙射影,泛泛地献个微型包子,供大家在周末研究批判以及开心解闷之用吧。

    如上阿磕信手所打的那些无规律、无意义字符组(其中还有符号,ENIGMA打不出这东西来,恨啊),大约是出自无心;果真如此的话,我们就来聊聊吧。

    要把明文变成密文,肯定离不开两样东西:一是加密算法,二是密钥。在加密算法数来数去就那么不多的若干种的情况下,密文的安全性,只有依赖不同的密钥才能得到保证。

    那么,什么样的密钥比较理想呢?

    从理论上讲,“一次一密”,即加密过的密钥永远不再使用,是最安全的加密方式;而它的密钥,最理想的状态下,就是彼此之间没有任何关联,自己内部也不要有什么逻辑性。当然“一次一密”体制其中也有很多限制,这里就不展开说了。

    这样一来,如果只是加密三封五封明文,倒也问题不大;如果是一个国家选择了该加密体制,那么要处理的明文可就太多太多了。我们可以设想一下,如果让你随便构思一个十字母长的密钥,恐怕一点都不费劲;但是如果让你连续想出一万个十字母长的密钥,这大概就有点头疼了。。即便是想出来了,也用不了几天,甚至用不到一天就耗光了;何况我们下面还会提到,这本身也是有问题的呢。。

    于是,人们就开始偷懒:有的去翻书刊报纸,包括查字典,找小说,翻年鉴,目的不外是寻找数字和字母。

    可是这样就产生了一个问题:不管查书刊还是查报纸,只要是发行过,理论上就无法避免敌人也获得这一密钥来源。因此,最理想的状态,自然就是找到某种能够批量产生毫无关联密钥的办法,敌人即便获取也无法重现。

    说来说去,最终就落在了“随机”二字上。

    我们说,阿磕老兄的随手一打,好就好在这个“随手”上。因为“随手”,不用仔细考虑,因此字母和字符之间彼此没有逻辑关联,比较符合“随机”的大致定义。

    但是与之相应的,如果真以阿磕老兄的这些字符作为随机密钥,却又不合格——成也萧何,败也萧何,不合格的原因,也还在这个“随手”上——随的是“手”,并不是“机”。而我们说泰让老兄的分析漂亮,就是因为他抓住了阿磕构造“随机”字符的这个最大缺陷。我没有对阿磕老兄的原文进行频率分析,但是泰让老兄的分析思路大抵应该是正确的,当然,阿磕老兄是不是真的左撇子,咱也还不知道:)

    非常有意思的是,戴维·卡恩曾经有过一段关于苏联人工生成密钥场面的描写,专门说这个问题,我们不妨来看一下:

    有趣的是,有些乱码本(即所谓一次一密的密钥本,1001n注)不是机器生产而是打字员打出来的。乱码本有涂改和删去处——都不象是机器产生的。更明显的是对数字的统计分析。例如,在一个这种乱码本中,许多数字组以1-5的数字和6-0的数字交替出现,如18293,这种数字组比纯粹随机排列时所出现的多七倍。这说明打字员是交替使用她的左手(在欧洲大陆打字机上可打1-5的数字)和右手(6-0的数字)打字的。

    而且,不是象随机选择所料到那样,有一半数字组,而是有四分之三的数字组以一个较小的数字开头,这可能是因为打字员用她的右手打空格,然后用她的左手打下一组的第一个数字,二连码(比如77,1001n注)和三连码比随机出现的要少。

    精彩的分析是这样的:

    可能这些姑娘奉命要随意打字,她们意识到在随机密文中会出现一些二连码和三连码,但由于怕太显眼反而打的少了

    ——摘自戴维·卡恩《破译者》,群众出版社1982年第一版,321-322页。

    人,总有意识;这一点,就决定了只靠人,无法做到冷冰冰地批量生产随机数字。

    不过,尽管卡恩认为这样的数字表现特点,对于密码分析来说还是不够显著,但是,它毕竟是个漏洞。德国的“一次一密”密钥本,本该用一次撕掉一页;但是由于战时经费问题,一个本子竟然印了九遍,导致最后盟国破译了该密钥本——1001n个人猜测,从这个角度看,不够随机的“随机密钥本”,或许也助了纳粹一臂之力呢。

    为了产生真正的“随机数字”,人们真是挖空心思,百折不挠,但是收获一直很小。究其根本原因,就是因为人们很难去真正大规模并且快速地实现随机过程。从理论上讲,我随便扔一百万次硬币,肯定是个挺大的随机过程;稍做更改(比如一次同时扔4个硬币,事先分别编号,则利用其正反面的组合状态,每次都可以产生一个十六进制随机数字),其实产生随机数并不难。

    ——但是,谁有那个耐心呢?何况,第124次扔,和第729475次扔,人的状态应该不太一样;换言之,单纯依靠人来生产随机数字,是不稳定的。而这要严格分析起来,很难说是不是个漏洞。

    为了快速、稳定地模拟这个过程,人们自然会想到机器。问题是,机器产生的也远不完美——就拿计算机来说,过去我们在用APPLE-Ⅱ的时候,BASIC语言里有一句RND(X),就是用来产生随机数字的。可惜,这样产生的永远只能是所谓的伪随机数字,因为这个函数的根源,还在CPU的时钟周期上;而时钟周期即便再短,也还是有规律性的。

    但是人们也不是毫无所得。有人发现,真空管在通电以后,会产生噪声——当然会有,一点都没有的话,就能组装出“完美收音机”了——而这个噪声,“基本”是“真随机”的。而据说,美国最大的安全机关,也是最大的密码机关国家安全局(NSA),在过去曾经应用这个原理,生产过随机数字来构造密钥本。

    当然也有费力不讨好,难以大规模批量生产的招数:比如冲上街头,去观察来往车辆的牌照数字,诸如此类,等等等等。

    事实上,我们常说的“无理数”,也就是无限不循环小数,其数字构成就是随机的。最著名的当然就是π,无论怎么分析,怎么截取,π的后续位数还真是非常争气,分布频率极为随机——当然,其中也出现过0000,9999这样的连续数字——类似的,还有自然底对数e,根号2,根号3,以及根号乱七八糟……

    有了无理数垫底,弄个随机十码数字组也就不难了。以1001n的土办法,描写一下过程,大致是这样的:1、去街上看车牌的倒数第二位数字,取得数字82373991;2、再从π的第82373991位开始截取连续10个数字;3、并以此数字作为e的起始截取位置,取出连续10个数字作为新的起始位置;4、从这个位置开始截取根号7结果里的小数部分,从此开始记录,并以此类推……

    这样获取随机数字的办法,我们称之为“休闲”。

    随机,其实是个非常大的话题,真要说起来且说不完呢——我们还是回到阿磕的随手乱码上吧。

    总的来说,“随手”不是“随机”,其中搀杂了“人”的因素——而这,也正是让密码对抗分外好看的关键因素。我想,以后的密码战中,如果双方全“真随机”了,密钥没规律也没头绪,想分析可以,自己暴力破解着玩吧——那可就真没什么意思了。

    最后,感谢阿磕和泰让二位老兄的友情客串!大家在这方面恐怕都很行家,有什么补充和不同意见,就一起聊聊吧:)

    关键词(Tags): #密码#破译#随机元宝推荐:不爱吱声,海天,
    • 家园 呵呵,无理数和随机数可不是一回事

      谁要能证明了,不管证明结果是还是不是,那可就出名了。

      随机性在于随机数中的每一个数字,还有每一个子数字组,出现的概率都一样。对于已知的无理数,现在人们只是怀疑它们是随机数,但是还没人能证明。

      现在一般来说自称可以产生随机数的人,都利用自然界里的现象,比如无线电噪声,放射源衰减等等。不难发现,这些人有一个特点,就是他们专玩数学家玩不转的东东,所以好像也没数学家证明他们错。

      当然也没有数学家证明他们对。

      密码学里的随机要求比这个松。一般只是有限长度内数字串的随机,就是“够随机”就行了。不必最求完美随机。

      不过密码学对于所需“随机数”还有一个要求,就是不可预测性。所以这些大家熟知的无理数,就算他们本身的随机特性再好,也不能用。

      • 家园 老兄说的非常对,索性把我的想法补充全了吧

        正因为我那个“产生随机数”的土办法其实是有漏洞的,所以,当时我才专门称之为休闲,其实是供大家一笑的……

        既然老兄提到了,我就干脆多说两句吧——我那个土办法,最大的漏洞在于:这个产生所谓随机数的办法,其过程本身,并不是严格随机的。

        例如,根号7是个无理数,它的数字分布也许符合随机分布,但是选择的开方对象,这个7,本身就有问题——怎么就选择了7,而不是别的数字呢?

        类似的问题还出现在π和e上。简而言之,如此取得的无理数,无论是小数点后多少位,其具体数字都是可以预知的。而适合密钥编制的随机数字,该不该有“可预知性”,这是个很大的问题。

        在截取数字的时候,也有问题。我说观察车牌,取得82373991,然后从π的第82373991位截取10个数字,再去截取……这个办法本身就是有漏洞的:

        第一、82373991是个8位数字,而8位数字的全排列不过100,000,000种(加上00000000),因此,实际上只能有一亿种截取方案。相应地,观察9次车牌,只有十亿种截取方案,如此类推。

        第二、截取方案数量有限,而截取结果却又是可知的。拿上面的例子来说,针对已经固定的π值,我们全部的选择,不过是从第00000001位截取10个数字起,到第99999999位截取10个数字止而已。

        具体说,也许我暂时不知道某一次观察车牌的具体结果,但是我知道,从第00000002位连续截取π,得到的10个数字一定是3.1415926535894932384……;而这个结果,即4159265358,一定是如此观察方法的可能结果之一

        如果我有足够的时间,肯定可以把它们全部截取下来。于是,它的总结果,实际就是1亿个顺序相连的数字组;而在相邻的每组之间,只有首尾两个数字不同。

        抛开这个可预知的问题不谈,下一个问题也很重要:无理数的数字分布,是不是随机的?

        如果是随机的,这么截取的思路应该是可以的,只不过在编制随机密钥本的时候,恐怕不能截取π这么显眼的数字,而该截取观察车牌结果的平方根或几次方根之类(假如真是无理数的话)。比如我们观察了34次车牌,得到一个34位或者68位(每个车牌取两位)的数字,开方之并得到一个无理数,虽然同样存在着可能被穷尽的危险,但是毕竟破解难度大太多了。如果取3000位车牌数字呢?或者10万个数字、1000万个数字呢?此外,具体开多少次方,也根据车牌数字确定;同时截取多少位数字,依然根据车牌数字生成——如此一来,即便不是真随机,也是随机性相当大的伪随机了……

        说到底,它根据的就是观察车牌取得的数字,是随机的——这是以上观点的总根据。至于这算不算真随机,嘿嘿,我觉得是——前提是,这个地方不会酷到只有一两辆车的地步吧……

        如果不是随机的,那就是个大问题了。不过以在下所看到的资料,至少对于π,是有人做了这个工作的:他统计了小数点后多少多少位,并且确定在这多少多少位之前,所有数字的分布,从多个角度观察,都的确是符合随机分布规律的。

        在他统计的位数之后会不会就有逆转,无法证明;其它的无理数是不是也如π一般有这个特性,问题更大,我也更不清楚。我只能以自己的一点极为不可靠的主观感觉,倾向于认同“无理数的数字分布,应该符合随机分布”这个论断。当然,主观感觉和科学实践是无法叫板的,所以,我也只能说“倾向于”“应该”,呵呵,实在没有确定的根据啊……如果有人证明过,也希望各位提供一下

        至于真空管噪声、放射衰变,这两个办法确实都被采用过。现在不见下文的缘故,大概还是不太理想,或者不太好使吧

        很赞同老兄的一个观点,那就是密钥选取,未必需要“真随机”的数字。其实,只要符合随机分布规律,有理数也没什么不可以,前提是:别人不能知道你选的是什么数字。

        总的来说,老兄的几次指正、补充和帮助,让我实在是受益良多。也请老兄不吝赐教,看到不对的地方,只管说——咱在这方面是外行,非常愿意听到中肯的专业意见,也好趁机进步一二

        以及,我原文中提到那被破译的密本,不是苏联而是德国的;破译方也不是纳粹而是盟国——这一点是我记错了,趁着没人发现,赶紧修正一下

        春节事多,今天才看到老兄的回复,匆忙之间做个补充回答,也望老兄原谅

        • 家园 老兄的钻研精神和文笔,

          我一向佩服得很。能把枯燥的密码写的有趣,这个可不是一般的难。能把enigma解剖得如此详尽,真是了不起。我虽然吃了几年密码饭,和老兄相比那只是侧重点不同,所谓指正那是万万谈不上的,最多互相学习吧。

        • 家园 顺便说一句,用平方根不是好的随机方法吧。

          从连分数来看,平方根都对应于循环的连分数。立方根也许好一些?我就不知道了。

        • 家园 无理数和随机数是两个不同的概念

          无理数就是通常所谓的无限不循环小数,例如

          0.1010010001000010000010000001...

          这里我们每次在两个1之间多插入一个0。这个数是无理数,但是他的每一位数字都是可以很容易预计的。相反的,对于有一些无理数,例如圆周率,数值计算表明它的数字分布似乎是随机的,只是没有办法证明而已。

          数学上也可以产生严格意义上的随机数,至少是渐近意义下的。例如取一个很大的(几百位的)素数p,对于每一个其它的素数q,令(q/p)=1,若q可以写成一个平方数和一个p的倍数之和,否则就令(q/p)=-1。象11=1*1+5*2,所以(11/5)=1,而(13/7)=-1。(据说)可以证明,当我们让q依次取遍所有的素数时,(q/p)的分布是随机的:我们不能从前面所有的数值推出下一个是1还是-1,而且1和-1的所有组合的出现概率也符合随机计算的结果。

          在实际应用中,这些数学上的方法相对而言要慢得多,所以大家宁可使用伪随机序列,大多数情形已经足够了。

          不是做密码的,只能根据自己的了解随便说说。

          关键词(Tags): #无理数#随机数#素数
    • 家园 惭愧惭愧

      大师就是大师,能从玩笑中阐发科学道理。

      另外关于计算机随机数的产生,Knuth的TAOCP第二卷有详细讨论,有兴趣的同学可以一看。

      • 家园 这么说就太过了

        咱就这点小爱好,啥也不是……真正的大师,不说别的,就连人家的思想咱都看不明白

        不过,老兄提到的书,有机会一定要找来看看的

    • 家园 随机,随手,随心。呵呵

      康熙微服私访里面那两个举人同测“因”字的段子,被解成 因 和 恩

    • 家园 再乐俺就要从树上掉下来啦。 花
    • 家园 嗬嗬,感觉自己变成了一只青蛙,

      在井中看到碗口大的天空中有无数的010101001100111001飘过。而且还看懂了一些。

    • 家园 景仰景仰。。。。

      崇拜崇拜。。。

    • 家园 不花没人性啊!

      不愧是偶像啊!

    • 家园 俺对密码兄的敬佩真是有如滔滔江水。。。
    • 家园 量子加密如何?

      理论上讲无法破译,不知老兄如何看?

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河