当前位置: 东星资源网 > 日记大全 > 小学生日记 > 正文

密码:智力竞技场 图灵密码

时间:2019-01-18 来源:东星资源网 本文已影响 手机版

  岁末年初,一场“泄密风波”突如其来,包括国内最大的程序员网站CSDN、天涯社区等数家知名网站的用户信息外泄,在网上曝光的用户信息条数过亿。“你的密码安全吗?”一时间,密码受到的关注倍增。
  
  英剧《Sherlock》中出现的手机登陆密码
  “密码”一词对人们来说并不陌生,人们可以举出许多有关使用密码的例子。如在银行取款使用“密码”,在计算机登录和屏幕保护中使用“密码”,开启保险箱使用“密码”,登陆邮箱使用“密码”等等。这里指的是一种特定的暗号或口令。
  如果要下一个定义的话,密码是一种用来混淆的技术,它希望将正常的(可识别的)信息转变为无法识别的信息。当然,对一小部分人来说,这种无法识别的信息是可以再加工并恢复的。密码在中文里是“口令”(password)的通称。登录网站、电子邮箱和银行取款时输入的“密码”其实严格来讲应该仅被称作“口令”,因为它不是本来意义上的“加密代码”,但是也可以称为秘密的号码。
  说到密码的起源,那就得回到2000多年前的古希腊了。
  公元前405年,雅典和斯巴达之间的伯罗奔尼撒战争已进入尾声。斯巴达军队逐渐占据了优势地位,准备对雅典发动最后一击。这时,原来站在斯巴达一边的波斯帝国突然改变态度,停止了对斯巴达的援助,意图是使雅典和斯巴达在持续的战争中两败俱伤,以便从中渔利。在这种情况下,斯巴达急需摸清波斯帝国的具体行动计划,以便采取新的战略方针。正在这时,斯巴达军队捕获了一名从波斯帝国回雅典送信的雅典信使。
  伯罗奔尼撒战争催生了密码的诞生斯巴达士兵仔细搜查这名信使,可搜查了好大一阵,除了从他身上搜出一条布满杂乱无章的希腊字母的普通腰带外,别无他获。情报究竟藏在什么地方呢?斯巴达军队统帅莱桑德把注意力集中到了那条腰带上,情报一定就在那些杂乱的字母之中。他反复琢磨研究这些天书似的文字,把腰带上的字母用各种方法重新排列组合,怎么也解不出来。最后,莱桑德失去了信心,他一边摆弄着那条腰带,一边思考着弄到情报的其他途径。当他无意中把腰带呈螺旋形缠绕在手中的剑鞘上时,奇迹出现了。原来腰带上那些杂乱无章的字母,竟组成了一段文字。这便是雅典间谍送回的一份情报,它告诉雅典,波斯军队准备在斯巴达军队发起最后攻击时,突然对斯巴达军队进行袭击。斯巴达军队根据这份情报马上改变了作战计划,先以迅雷不及掩耳之势攻击毫无防备的波斯军队,并一举将它击溃,解除了后顾之忧。随后,斯巴达军队回师征伐雅典,终于取得了战争的最后胜利。
  雅典间谍送回的腰带情报,就是世界上最早的密码情报,具体运用方法是,通信双方首先约定密码解读规则,然后通信―方将腰带(或羊皮等其他东西)缠绕在约定长度和粗细的木棍上书写。收信―方接到后,如不把腰带缠绕在同样长度和粗细的木棍上,就只能看到一些毫无规则的字母。后来,这种密码通信方式在希腊广为流传。
  之后,密码的发展可以被看成一种演化竞争,一个密码产生之后,便会经常遭受密码破解者的攻击。当密码破解者发展了一种新的武器能够揭示这个密码的弱点,那么这个密码就不再有用。它或者永远消失或者进化为一种更新更强的密码,同样这个新密码也只能存活到密码破解者发现它的弱点为止。
  
  为了破解密码而制作的差分机是计算机的雏形
  密码在古代就被用于传递秘密消息。现在,传递情报和指挥战争、外交斗争均离不开密码。密码一般用于信息通信传输过程中的保密和存储中的保密。在密码编码者和密码破译者之间硝烟不断的战争中,一系列科学突破也应之而生。在解密和保密的斗争中,双方都吸收了各种原理和技术,从数学到语言学,从信息论到量子论,范围很广。反过来,密码编码者和密码破解者又丰富了这些理论,他们的工作促进了技术发展,其中对我们影响最大的就是现代计算机的发明。随着计算机和信息技术的发展,密码技术的发展也非常迅速,应用领域不断扩展。密码除了用于信息加密外,也用于数据信息签名和安全认证。
  密码是按特定法则编成,用以对通信双方的信息进行明密变换的符号。换而言之,密码是隐蔽了真实内容的符号序列。就是把用公开的、标准的信息编码表示的信息通过一种变换手段,将其变为除通信双方以外其他人所不能读懂的信息编码,这种独特的信息编码就是密码。
  当代密码的技术已经极其复杂,但归根结底,密码术可以大致别分为两种,易位和替换,当然也有两者结合的更复杂的方法。在易位中字母不变,位置改变;替换中字母改变,位置不变。
  将替换密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。
  苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替换密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做恺撒移位密码,也就是常说的恺撒密码。
  尽管苏托尼厄斯仅提到三个位置的恺撒移位,但显然从1到25个位置的移位我们都可以使用,因此,为了使密码有更高的安全性,单字母替换密码就出现了。
  如:
  明码表A B C D E F G H IJ K L M N O P Q R S T U V W X Y Z
  密码表QWERTYUIOPASDFGHJKLZXCVBNM
  明 文MORNING
  密 文DGKFOFU
  只需重排密码表二十六个字母的顺序,允许密码表是明码表的任意一种重排,密钥就会增加到四千亿亿亿多种,我们就有超过4×1027种密码表,破解就变得很困难。这里说的密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。
  许多古代学者认为替换密码是无法破解的,庞大数目的可能密钥的存在,使得几个世纪来都被认为是可靠的。但是,密码破解者最终发现了一种捷径来穷搜所有可能的密钥,不用花费数亿年的时间,也就是几分钟的事情。这项突破首先发生在东方,是一次语言学和统计学的卓越联合。其中用到的统计学知识不复杂,完全在我们掌握之内。
  这个方法就是字母频度分析,9世纪的科学家阿尔•金迪在《关于破译加密信息的手稿》对该技术做了最早的描述。“如果我们知道一条加密信息所使用的语言,那么破译这条加密信息的方法就是找出同样的语言写的一篇其他文章,大约一页纸长,然后我们计算其中每个字母的出现频率。我们将频率最高的字母标为1号,频率排第2的标为2号,第三标为3号,依次类推,直到数完样品文章中所有字母。然后我们观察需要破译的密文,同样分类出所有的字母,找出频率最高的字母,并全部用样本文章中最高频率的字母替换。第二高频的字母用样本中2号代替,第三则用3号替换,直到密文中所有字母均已被样本中的字母替换。”以英文为例,首先我们以一篇或几篇一定长度的普通文章,建立字母表中每个字母的频度表,再分析密文中的字母频率,将其对照即可破解。 当然,字母频度分析存在不足,短文可能严重偏离标准频率,假如文章少于100个字母,那么对它的解密就会比较困难,而且不是所有文章都适用标准频度。
  很明显,这种密码的密度是很低的,只需简单地统计字频就可以破译。所以,密码编码者想方设法去编一种更强大的密码。一些编码者对单字母替换密码做了一些改动,如在编码过程中,加入一些特殊的字符,或者令一些字母不代表另一个字母,而是代表一种程式,譬如是代表空格,代表删去前一个字母,代表换行等。但这一切起的作用并不大,聪明的破译师仍然能在里面找到许许多多破译密码的线索。直到有一天,佛罗伦萨的里昂巴蒂斯特•阿尔伯提提出了一种多字母替换密码,即用两个或两个以上的密码表交替使用来进行加密,如:
  明 码 表ABCDEFGHIJKLMNOPQRSTUVWXYZ
  密码表1QWERTYUIOPASDFGHKJLZXCVBNM
  密码表2EKPRJBDNCVOUHTYWZXMLASFIGQ
  第一个密码表加密第一个字母,第二个密码表加密第二个字母,第一个密码表又加密第三个字母,不断地重复……那么:
  明文 F O R E S T
  密文 Y Y J J L L
  
  维热纳尔方阵
  这样,按原来的方法进行频率分析就没有什么作用了。这只是两个密码表时的情况,如果用三个、四个或更多的密码表后,破译就显得非常非常困难。即使是这样,阿尔伯提未能把他的理念发展成一个完整的系统。最后,维热纳尔终于将其完善了。他编出了一个系统而有效的密码,那就是维热纳尔密码,其主要构成是维热纳尔方阵。它的明码表后有26个密码表,每个表相对前一个发生一次移位。如果只用其中某一个进行加密,那么只是简单的恺撒移位密码。但用方阵中不同的行加密不同的字母,它就是一种强大的密码了。加密者可用第7行来加密第一个字母,再用第25行来加密第二个字母,然后根据第8行来加密第三个字母等。维热纳尔密码既克服了频率分析,又具有数目众多的密钥。发送者和接收者可使用字典里任一个单词,或单词组合,或虚构的词作为关键词。
  19世纪的英国人查尔斯•巴贝奇通过寻找重复的字母段破解了这个密码系统。具体的方法比较复杂,就不作介绍了。他的独具创意的技巧将数学工具引入到了以前被认为专属于文字学的领域之中,即使一种编密码系统没有明确地使用数学,但其中隐藏的格式却通常需要以数学的方式进行整理。
  这只是密码历史上人们相互较量智力的几个回合而已,也不过是个起点,还有许多精彩的故事,比如影响一战爆发的“齐默尔曼电报”,如恩格玛机等等,有兴趣的同学可以找来看看。
  二战后,密码在商用和民用中的需求越多越大,以前是1对1发送,现在是1对N,密钥分发问题成为研究的重点。最终问题得到了解决,先看一下原理:在普通人眼里,如果A想给B发送一则加密的消息,使得只有B能阅读这则消息,那么A不得不给B密钥。看来交换密钥是加密不可避免的问题,可是换个角度来思考这个问题呢?假设A想给B发送一个消息,于是她把信件装在一个箱子里,加上锁,寄给B。B收到箱子后加上自己的锁寄还给爱丽丝,当A收到这个箱子时,它加了两把锁,然后,再次寄给B。这就是问题的关键所在:B可以打开箱子了,因为箱子上面只有他的那把锁,而他自己有那把锁的钥匙。为了把不对称密码这个概念变成可行的密码系统,必须有人找到一个合适的单向函数,在特定的情况下可以被逆运算。常见的RSA算法是一种非对称密码算法。
  重新回到开头提到的事件,如何设置一个安全的密码才是离我们最近的。简单说来,密码越长,越复杂,更换得越勤,就越是安全。当然,你自己的密码系统越庞大,使用起来就越不方便,所以在自己接受范围内尽量设置得复杂些,直接把用户名当密码、自己和家人的生日和常见的英文单词,就不要用了。

标签:竞技场 智力 密码