关键词:病毒防范、千年虫病毒、系统时间存储方式
一、谶曰
小白:东哥,你有没有注意到今年上大学的小学弟小学妹全都是“千禧宝宝“呀。
大东:诶,还真是现在上大学的孩子们还真的都是出生在世纪之交,都是千禧宝宝。说到这个,小白白知不知道“千年虫“呀?
小白:“千年虫“,那是啥子呀?是不是恰巧在2000年爆发的一场蝗灾呀?
大东:还别说,这次事件真的是一场“蝗灾“,只不过这次”蝗灾“是一场计算机的”蝗灾“,在这次”蝗灾“中有许许多多的电脑接连受害,就像被蝗虫洗劫的稻田一样损失惨重。
小白:啥!这么可怕的吗?是不是一种特别厉害的病毒?
大东:这还真的不是哦,这个所谓的千年虫病毒中病毒的说法其实是大多来自于人们的谣传,因为当时瞬间有大量的计算机瘫痪,所以各种谣言四起。虽然确实出现了很大的问题,但是却被谣言夸大了,所以以后小白白在认识事情的时候一定要理性分析哦。
小白:原来是这样子,我记住了东哥,以后听到什么言论我一定先分析再接受。
图1 2000年千年虫事件漫画
二、话说事件
小白:内个内个,当时的情况到底是怎么样的呀。
大东:当时是这样子的,瞬间出现了银行:利息计算混乱,银行卡失灵;账单:税务、电话账单等按照100年计算;电力系统:全市停电、电器烧毁;交通:空中管制、班机取消;个人电脑:崩溃、清空。所以,人们就开始恐慌,各种谣传也就开始出现了。
小白:瞬间崩溃,是完全没有预兆的崩溃吗?
大东:对的,当时的情况是这样子,很多都是在正常使用的情况下毫无预兆地开始出现文件丢失,数据出错。
小白:那真是太过诡异了,可是这也不会引起大范围的恐慌啊。
大东:当时呢,虽然电脑在人们日常生活中还没有得到完全的普及,但是仍然有一部分电脑病毒产生。在当时人们的认知当中,只有联网的电脑可以感染病毒,所以一开始人们以为这仅仅是一次影响巨大的病毒传播,直到人们注意到在有些根本没有联网的电脑都发生了瘫痪,甚至有些没有经过拆封的电脑都在第一次开机时候出现故障,这种种表现使得人们陷入恐慌。
小白:对对对,是不是人们以为电脑中了某些魔咒。
大东:确实是这样子,千年虫主要是因为早期计算机设计漏洞引起的,所以在西方发达国家的的影响范围更大,同时西方这些国家大多信仰基督教,教义中恰巧有提及世界末日的说法,所以人们就将这些内容强行联系到了一起引起事件发酵。
小白:原来是这样子呀,所以事件才会不断扩大对吧。那千年虫事件是不是就是发生在2000年1月1号呀?
大东:对的,不过,这个千年虫还真的不全是发生在2000年1月1号,我在这里留个小小的悬念,在下一个部分再介绍给小白白。
图2 在千年虫影响下惊慌失措的人们漫画
三、大话始末
小白:可是这个诡异的魔咒到底是为什么呀?东哥你就别卖关子了,直接告诉我嘛。
大东:其实这是一个以前的操作系统开发者为了节省存储空间所导致的问题,因为在计算机发展的初期,也就是19世纪中叶,每一点内存都是非常珍贵的,所以大家考虑到在接下来的50年的时间里,前两位时间,也就是19都不会发生变化,所以在记录时间中年份的时候错误地使用了两位记录法,也就是只记录年份的后两位,例如1998只记录98。
小白:这个看起来并没有太大的问题呀,大家都是为了节省开销节约成本嘛,都是为了使得电脑可以更快地普及着想。
大东:这些系统在当时看来是正确的,但是如果是恰巧跨越世纪呢?比如到了2000年,就会出现虽然当前已经到达了2000年,但是在电脑看来你却是还处在1900年,所以在程序运行的时候就会出现冲突。
小白:原来是这样呀,所以程序到底都会出现哪些问题呢?不是只有操作系统在开发的时候存在没有记录前两位的问题吗?为什么各种程序也会对应出现类似问题呢?
大东:确实一开始是只有操作系统使用了这种不够完备的设计,但是不要忘了,操作系统是一切软件的运行环境,所以软件为了适应操作系统也是使用了这种不够完备的编写方法。一个配备比较早(大约在80年代中期以前投入使用)的主机上的应用系统,如在IBM 4381,IBM AS/400等机型上运行的应用程序。这些机器系统国际上都应用的相当早,因此其上面的应用程序经过十余年的开发和发展其规模已经非常庞大。
小白:所以在这些设计不全面的操作系统被淘汰之后,是不是这些问题就不存在了呀?
大东:这还真的不是。因为软件一般都是要求实现向前兼容的,所以后面开发的软件建立在前面开发的软件基础上依然会存在类似的问题。
小白:那之前东哥说的这个千年虫不仅仅发生在2000年的事情,是为什么呢?
大东:其实这个事件是从1999年4月9日就开始了,在程序中使用了数字串99(或99/99等)来表示文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999年9月9日(或1999年4月9日即1999年的第99天)来临时,计算机系统在处理到内容中有日期的文件时,就会遇到99或99/99等数字串,从而将文件误认为已经过期或者将文件删除等错误操作,引发系统混乱甚至崩溃等故障。
小白:这就是之前谈到的文件莫名其妙地消失或是打不开的原因是吗?
大东:对,其实不仅仅是在2000年1月1日之前,在2000年之后也有可能出现,例如,在2000年2月29日(2000年是闰年),有的电脑直接跳到了3月1日。
小白:这是为什么呀?难道是出现了新的bug?
大东:是这样,在2000年这一年呢有的电脑认为现在还是1900年,所以按照整百年是否为闰年的判断方法:每400年才有1次闰年(整百年闰年的判断例如判断1500年或是判断1600年),1900年的时候不是闰年,但是2000年却是,所以就会出现这个问题。
四、小白内心说
小白:那…我们以后该如何控制这种事件的发生呢?
大东:其实这个事情要求我们在设计一个程序或是软件的时候要考虑很多年之后的事情。
小白:可是我如何可以有规律地提前研究之后可能出现的问题呢?
大东:我们现在的软件开发逐渐趋向于一种专业化,也就产生了一种新的学科,就是软件工程。
小白:软件工程那是什么?
图3 软件工程设计过程
大东:其实就像这张图一样,在软件开发的初期要进行计划和需求分析,要在过程中不断地完善整个程序的测试和分析,来达到软件计划的完善无缺。
小白:可是这是一个很宽泛的描述呀,我们具体要提前考虑我们开发的软件的哪些特性呀?
大东:其实有几种,但是跟我们这次事件有关的主要是两种,一个是可信赖性,主要是考虑软件可以稳定运行的时间长短问题;另一个是安全性,主要是抵御外部攻击或是内部出错的能力。
小白:原来是这样子呀,这样子就可以大大降低类似事件发生的概率了。
大东:是的,如果大家都是按照这个标准来执行,那么在可靠性上一定是没有问题的,但是就有些人不遵守这个规矩,所以我们要继续推广软件工程思想的普及,并且让软件需求方一定要注意索要软件开发的标准文档。
五、那年那事
大东:小白白好不好奇,在我们的网络中,我们是如何实现跟欧洲的网络通信的呢?
小白:是不是就像手机发信号一样直接发一个信号呀?
大东:这种做法可是不行的,在我们日常生活中传播几公里的手机信号还会受到干扰,例如手机接电话断断续续的,如果一下子传播几千公里,那么传播质量真的就很难保证了,但如果使用纠错码又会使得传输成本大大提升。
小白:那该怎么办呢?
大东:可以在海底铺设一条通信光缆,其实就在我们这个事件发生的那一年, 2000年9月14日,亚欧海底光缆全线开通,实现了两地的网络连通。
小白:哦,这样子就可以稳定的通信了。光缆的传输效果会比无线信号好很多吗?
图4 亚欧光缆
大东: 在信号传输的过程中我们第一个要想到的就是发生丢包或是传输出错的概率。如果丢包,那么只能重新传送,如果发生传输出错,那么就会有两种方法,一种是添加纠错码冗余,一个是添加检错码冗余。
小白:这两种冗余有什么不同吗?
大东:纠错码可以检测出错误并进行修改,而检错码只能发现错误,不能修改,必须要求重传。
小白:那么这种功能强大的纠错码一定会伴随着比较大的开销吧?
大东:不错,小白这个问题问的好,纠错码几乎是检错码两倍的传输开销,这两种方法要按照受干扰的概率进行选择,错误率低的就可以选择检错码。
小白:所以光缆这种稳定几乎不受干扰的介质就可以使用检错码来减少开销了,对吗?
大东:没错,传输开销一下子可以下降很多,同时传输速度也将变快。
小白:为什么还会变快呀?
大东:因为传输过程中一个比较大的影响因素就是传丢或是传错的概率,因为传错要处理,传丢要重传,所以传输速度也会提高。
小白:这对于我国来说真是天大的好事呀。
大东:其实这条亚欧光缆除了传输更加迅速廉价这个“机遇”外,还伴随着对我国网络安全的挑战,有用的信号传输快,病毒攻击以及有害信息也传输的快,对于我们网安人来说又是新的机遇和挑战。
小白:大东要加油哦~
大东:加油!
来源:中国科学院计算技术研究所
温馨提示:近期,微信公众号信息流改版。每个用户可以设置 常读订阅号,这些订阅号将以大卡片的形式展示。因此,如果不想错过“中科院之声”的文章,你一定要进行以下操作:进入“中科院之声”公众号 → 点击右上角的 ··· 菜单 → 选择「设为星标」