按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
侍猓酉吕椿嵴亲攀挚忌杓屏恕2还诖酥埃一嵯冉饩鲆患匾氖虑橛鳌! tone: 更为重要的事情? linus: 每一个男人都要经历过的事情啊,你懂的,哈哈! stone: 不懂。 linus: ……差点忘记你的年龄似乎比我要小不少了。我要去追求一位心仪的女孩,这该懂了吧? 林鸿看到linus的话,顿时有些汗颜。他刚刚的确没有反应过来,这也不能怪他,刚刚他们还在讨论技术方面的问题,突然之间就跳跃到追求女孩的话题上,作为一个世纪年龄才十四岁的中国籍技术宅来说,能想到这个问题才怪。 stone: 原来如此。那预祝你马到成功,早日抱得美人归。 linus: 哈哈,谢谢! linus:对了,之前忘记跟你说了,你移植bash的时候最好是按照posix的标准来,这样可以让我们的系统获得更大的兼容性,以后那些unix的用户转移到我们的linux中来也不会有任何障碍。 stone:posix标准? linus: 这是ieee组织为要在各种unix操作系统上运行的软件而定义api的一系列互相关联的标准的总称,最初起源于1985年的一个项目…… 接着,linus开始给林鸿详细介绍了一下这个标准的有关内容。 实际上,linus之前也对这个标准一点都不清楚,只是听学校的老师曾经说起过,因为这个标准是unix下的标准,统一规定了所有系统命令的实现细节。 于是,刚开始的时候,他便在minix的邮件讨论组中发布了一个求助帖子,寻求有关posix的相关标准下载地址,可是这个帖子并没有获得几个人的关注和回应,他没有找到posix的相关资料。 于是,他只好退而求其次,找来一份sun服务器的unix使用手册,按照上面的命令调用一个个对这些系统命令进行实现。 但是,这份unix手册上并没有详细说明这些命令所实现的内部细节,只描写了结果。 例如ls命令,手册上只描写了这个命令的结果,以及可以加上哪些参数实现,如“ls …all”可以将当前目录下所有的文件,包括隐藏文件在内,都显示出来。 具体的实现方式,则是linus按照文件系统中的原理自己想出来的,例如首先要找到当前目录的引导区,然后再分析里面的文件节点,从这些节点中读出每一个文件的名称,大小以及创建日期等信息,然后再将其显示在显示器屏幕上。 要实现这些系统调用的功能,必须对底层的基本原理非常了解,当然这并不能难倒linus,否则他还谈什么编写自己的操作系统? 他按照unix手册和《操作系统:设计与实现》中所提及到的资料,总共实现了二十来个系统调用,这正是林鸿在linux中所实现的那些。 linus: 前一阵子才有一个朋友给我寄了几卷厚厚的posix的手册,不过既然现在你已经开始移植bash了,接下来的工作你就继续做着吧。 stone: 从哪里可以找到posix的手册? linus: 这点我也不太清楚。不过,你身在美国,应该不难,去图书商城或者图书馆看看,应该可以找到。我这几本posix手册的出版社是…… 接着,linus将出版社和地址方面的信息全部提供给了林鸿,让他如果实在找不到,就按照这些信息去找,直接向出版社邮购也行。 linus: 还有,我一个朋友手里正好有基于苹果系统的服务器,上次我让他试用了一下cqcq软件,他愿意免费将服务器端进行托管,你觉得怎么样? linus说的事情,是上次林鸿提到自己想要将cqcq的服务器端托管到另外的地方,于是linus就留心了一下。 stone: 可以。我把服务器端的安装文件传给你。 随着访问用户的增多,sam官方的那个服务器的性能有点跟不上了,再加上最近又出现了德州仪器公司的那档子事情,林鸿最终同意将服务器端转走。 原本林鸿还打算将cqcq发布出去,让更多的人使用,并且继续改进,可是上次和凯文聊过一次之后,他的这个计划便搁浅了。 他决定重新设计cqcq的结构,增加其安全性,然后再发布出去。 目前这个版本,暂时就用来内部几个人沟通吧,等将服务器端移走之后,林鸿便决定推荐这个软件sam其他成员使用。 和linus结束聊天之后,林鸿便开始正式着手重新设计cqcq软件。
第220章 加密算法
对cqcq软件重构的想法,林鸿实际上在和凯文聊过之后,就开始在脑海中慢慢成型。 对发送消息进行加密这个问题比较好解决,据林鸿所知,目前有一些加密性能比较好的加密算法都是免费并且公开的,他可以直接拿来使用。 关键在于如何建立起负责消息传递中转的“秘密据点”。 这些据点必须具有随机的特点,不能一直固定,这样就可以增加被追踪拦截的难度。 现在这种一台服务器管理并转发所有在线聊天客户端的信息的模式肯定是行不通了,因为这种结构太过脆弱,只要对方攻占了服务器,整个聊天网络就会瘫痪。 林鸿经过慎重思考,觉得还是回归到自己最初的想法比较靠谱,也就是,把客户端和服务器端集成到一起。 也就是说,网络上有多少个是用整个软件的客户,那么就有多少台消息中继服务器,每一台服务器都可以对消息进行中转,构成一个庞大的没有任何规律的网状网络。 确定好了这个大体的方向之后,他脑海中各种灵感不断冒出,以至于他立刻从课桌里面拿出几张白纸,开始以极快地速度将这些想法以图形和简短的文字记录在这些纸上。 不一会儿,不断冒出的想法就记满了五张白纸,林鸿这才停了下来。 林鸿抽出其中一张,这张纸上,画了一张用方块代表计算机的网络拓扑图,用线条表示数据流动的方向。 林鸿重新回过头来,对之前的思路进行整理,然后又对这张图进行完善和修补。 接下来便又抽出另外一张纸,这张纸上画了四个方块表示计算机,中间用几条细线和一条粗线连接,细线表示少量数据交换,粗线表示真正的数据。 想了一下,林鸿又重新在它们之间添加了两条粗线,将原来的那一根粗线给划掉了。 经过刚才一阵头脑风暴,林鸿对于cqcq新版的架构已经有了底稿,总体的设计框架已经想清楚了,接下来就是对它的技术细节的实现。 放弃中央控制服务器的架构,转而采用点对点的架构,消息可以通过每一个客户端进行中转。 不过,还是会存在一个对整个拓扑网络节点进行维护的“中继服务器端”,这些服务器端并不涉及到数据的中转,只保存客户端节点信息,例如ip映射地址,在线节点列表以及它们之间的拓扑结构。 考虑到稳定性方面的问题,这些服务器端不能只有一个,而是多个,并且他们共同维护同一张数据表,即每一台服务器上都有全部的备份,这样,即时某一台服务器下线了,整个通信网络也不会受到影响。 并且,按照林鸿现在的设想,就算是所有中继服务器都被关停或者下线,也不会造成整个通信网络的瘫痪,最多会影响到消息发送的即时性。 当网络中存在中继服务器的时候,客户端会和中继服务器保持连接,以便获知自己好友在线状态,要发送信息的时候,也会先向中继服务器查询整个拓扑结构,然后通过算法计算,随机找出一条最优路径,通过这条最优路径将消息发送到目的地。 而假设所有中继服务器都挂掉了,大家便无法确认好友是否在线,数据传输的时候,是一种广播式的行为,即向全网广播自己的消息,在传输之前,还得确认下一个节点是否在线,然后再传输,最终总会到达自己发送的目的。 不过这样一来,通信就失去了时效性,可能一条信息发送出去,快则几秒钟,慢则要好几分钟甚至上十分钟对方才能够收到,时间的长短和网络的拓扑结构有关。 这种结构,在安全方面也有保证。 一条信息发出,会首先通过自身的软件进行加密,然后再传送到“中转节点”中,那些节点都是匿名的,经过至少五次跳转之后,完全查不到来源路径,最终从“出口节点”对消息进行解密,然后再传递到目标客户端。 在整个流程中,唯一有可能被监听的环节就在于最后的“出口节点”,假设有人正好在出口节点监控,则就可以截获被发送的消息,其他书友正在看:都市修仙之武道。 这个缺点林鸿也发现了,所以他在后来对图纸进行整理的时候,再次进行了完善。 他想了一个解决方案,那就是消息发送之后,会加密成一个数据包,然后再对这个数据包进行分割,包的各部分通过几条不同的路径最终传递到目的地,这样,就算某一个“出口节点”被监控了,他们截获的内容也只有一部分,没有截获其他包的话,根本无法对整个包进行解密。 理论上,同时将所有包都截获的可能性是趋近于零的,所以这样一来,通讯安全得到了最大限度的保障。 林鸿设计的整个新的架构,不但实现了信息传递的匿名性,而且消除了中心化的服务器端,极大地提升了软件的保密性和稳定性。 经过反复完善和优化,林鸿觉得最终没有问题之后,便开始着手进行代码编写。 由于他对加密解密方面还不是很了解,所先将其他基本功能暂时实现,将加密解密放到了最后。 到天亮的时候,新版cqcq的原型便被编写出来了,首先实现的功能非常简单,只能传递文字版,并且还没有对其进行加密。 今天是周一,林鸿的课不多,上午在十点多的时候就已经没课,他便立刻奔向了学校图书馆。 今天来这里有两个问题需要解决。 一个是查找一下,看看有没有posix标准的书籍,另外就是学习一下加密解密算法方面的内容。 由于林鸿是图书馆的常客,另外又是最近风头正盛的sam小组成员,图书馆中的不少工作人员都对他非常熟悉了,见到他之后,纷纷和他打着招呼重生猛禽。 林鸿微笑着一一回应,这几个月来,他算是彻底融入了拉丁学校的这个大集体当中。虽然这里也存在着一些瑕疵,但是总体上还是让人觉得比较舒服的,大家相互之间都比较友好,别人遇到什么困难,也会热心帮忙。 有一点林鸿感触最深: 这里的学生和老师之间的关系完全是对等的,相互间说话,完全没有国内的那种一个聆听,另外一个不是训话就是大讲道理的那种常见情况。 林鸿来到计算机科学类区域,开始慢慢寻找自己所需要的内容。 “posix……加密算法……” 林鸿口中念叨着这两个词汇,在书架间一格格看过去。 走过几个格子之后,林鸿停了下来,一本书籍吸引住了他的目光——《md5算法应用》。 他将这本书拿到手中,翻看了一下前言和目录,于是将其拿在了手里,继续查看书架上其他书籍。 在书架走廊上转了几圈之后,林鸿手中已经多了好几本大部头:《rsa加密算法》、《加密算法导论》、《公钥密码学》、《对称和非对称加密算法》…… 在选择这几本书的时候,林鸿都会大致看一下前沿和目录,他原本只是想研究其中的一本,可是这几本书他实在是难以选择,觉得都非常不错,于是决定干脆都进行阅读,反正他看书的速度很快。 让林鸿有点遗憾的是,这个图书管里面并没有关于posix标准的书籍。 实际上,对于这点他早就有所预料。算法这么科学本质上是属于数学领域,很早的时候就有数学家在进行研究,只是具体的应用实现在计算机领域得以开始爆发。 而posix标准则是最近几年才开始兴起的,发行量并不是很多,拉丁学校图书馆没有收藏是很正常的,毕竟这是一所中学的图书馆,有这么多关于算法的书籍已经非常不错了。 按照往常一样,林鸿找了一个比较偏僻的小角落位置坐了下来,然后开始按顺序阅读这几本书。 首先阅读的是《加密算法导论》,这本书对初学者来说比较容易理解,作者专门回顾了算法的历史,重点介绍了古代战场上凯撒大帝用于军队情报传递的密码系统。 当时的密码加密方式还比较简单,就是单纯地向前或者向后推移几个字母就得出了密文,解密的时候方向操作即可,例如abc情报,向后推移一位加密之后就变成了bcd,敌人就算截获了这份情报,如果不知道加密原理,是很难破解密文的。 不过随着时代的发展,简单的加密技术自然无法满足要求,破解和反破解技术是伴随着发展起来的。 看完《加密算法导论》,林鸿接着看其他几本书籍。 此刻,他的大脑急速运转,如同海绵一样吸收着书籍里面的知识。 林鸿一边看,一边还有时候在稿纸上计算着什么。他对书籍里面的内容理解起来完全没有障碍,甚至有一种如鱼得水,相见恨晚的感觉。 他真心感叹,前人的智慧真不是盖的,竟然在对这方面的内容有了如此深刻的研究,要是自己重新去摸索,可能一辈子都达不到这个高度。 时间逐渐流逝,林鸿完全陷入了加密算法的世界之中,对外界发生的事情完全没有了感知。
第221章 意外邮件
当一个人专注于做某一件事情的时候,大脑就会自动屏蔽外界的其他信号,这是潜意识下做出的动作,当事人也感觉不到时间的流逝。 林鸿一个人静静地坐在角落中,手中不断地翻着书页,偶尔又会在稿纸上不听地计算着什么。他周围的人,来了又走了。 “叮……” 随着一阵铃声响起,林鸿从书海中抬起头来,发现周围已经空空如也。 “刚刚那一阵铃声是图书馆关门铃声?” 林鸿惊讶之下,拿出计算器看了一下时间,发现竟然是已经下午四点半了尖兵悍装。 林鸿看了一下手中的书,还剩下大概一半左右的内容,这已经是最后一本,他看了一下页码,然后合了起来。 将其他几本书放回原地,然后拿着最后一本没有看完的《rsa加密算法》朝借书处走去,办理好手续之后,便回家了。 加密算法真是一个非常让人着迷的领域,林鸿沉迷之下直接从上午看到了下午,连午饭都忘记吃了,下午的课程也没有去上。 不过,他对此并不后悔,今天一天的收获非常大,他直到现在才发现,原来数学中还存在这样一个和计算机密切相关的领域。可以说,计算机的出现,让密码加密学有了应用基础,有了成长的土壤。 这个领域出现的很多重大研究成果都是在计算机出现之后才有所突破的。 现代任何算法,都绕不开计算机这一工具,以前那些古典加密算法,随着计算机的出现也彻底失去了加密的意义,一台普通配置的计算机只用花几分钟就可以直接将以前最为复杂的加密算法给破解出来。 林鸿这次相当于是将密码学整个给系统地学习了一遍,不但将密码学的来龙去脉搞清楚了,而且现在流行的那些加密算法也彻底进行了研究,除了“rsa算法”还有一部分内容没有看完,其他内容都完全理解并且记住了。 虽然今天是他第一次接触这些内容,但是他现在可以自信地说,这些内容他全部掌握了。 实际上,林鸿心中也对此有些惊讶。 他察觉到了,自己对这类算法理论或者数学方面的问题似乎有着惊人的理解能力。这点,他在上次研究加密算法的时候就感觉到了。 在别人眼里非常复杂的东西,需要长时间反复学习才能理解,他却往往可以轻易地就理解了。 难道这也是自己的特殊能力? 随着年龄的增长,他越来越发现自己和其他人的不同。 这个情况,应该是由于小时候自己的大脑曾经受过伤而导致的。 为此,他也曾到图书馆和网络上查找过这方面的资讯内容,的确有些报道记载过,有人脑部受伤,后来导致某一方面的能力特别突出。 林鸿推测,自己的大脑之所以越来越好用,很可能也因为那次而发生了某种奇特的变化。 总之,这个变化是好事不是坏事,变得聪明总比变成笨蛋要好,林鸿对这种结果还是非常高兴的,除了自己无法入睡以及经常头痛的毛病,似乎还没有其他副作用。而头痛的毛病随着自己练习三体式也逐渐减轻,最终突破暗劲阶段之后,就彻底消失不见。 回去的路上,林鸿脑海中不断地思考着到底该如何将所掌握的加密算法应用到自己的新版通讯软件当中去。 吃过晚饭回到自己的房间,林鸿首先将剩下的半本书给看完了。 等看完之后,他脑海中对软件信息的加密也有了解决方案——rsa算法就是他想要找的加密算法。 rsa算法是1977年由罗纳德*李维斯特、阿迪*萨莫尔和伦纳德*阿德曼一起提出的,当时他们三人都在麻省理工学院工作,rsa