千年虫
计算机2000年问题
千年虫,又叫做“计算机2000年问题”“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K”。是指在某些使用了计算机程序智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃。因此从根本上说千年虫是一种程序处理日期上的bug(计算机程序故障),而非病毒
问题
广泛地讲,“千年虫”还包括以下两个方面的问题:一个是在一些计算机系统中,对于闰年的计算和识别出现问题,不能把2000年识别为闰年,即在该计算机系统的日历中没有2000年2月29日这一天,而是直接由2000年2月28日过渡到了2000年3月1日;另一个是在一些比较老的计算机系统中,在程序中使用了数字串99(或99/99等)来表示文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999年9月9日(或1999年4月9日即1999年的第99天)来临时,计算机系统在处理到内容中有日期的文件时,就会遇到99或99/99等数字串,从而将文件误认为已经过期或者将文件删除等错误操作,引发系统混乱甚至崩溃等故障。
“千年虫”问题的根源始于60年代。当时计算机存储器的成本很高,如果用四位数字表示年份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。随着计算机技术的迅猛发展,虽然后来存储器的价格降低了, 但在计算机系统中使用两位数字来表示年份的做法却由于思维上的惯性势力而被沿袭下来, 年复一年,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨识公元2000年及其以后的年份。1997年,信息界开始拉起了“千年虫”警钟,并很快引起了全球关注。
地区影响历史
“千年虫”影响是巨大的。从计算机系统包括PC机的BIOS、微码到操作系统、数据库软件、商用软件和应用系统等,到与计算机和自动控制有关的电话程控交换机、银行自动取款机 、保安系统、工厂自动化系统等,乃至使用了嵌入式芯片技术的大量的电子电器机械设备 和控制系统,等等,都有可能受到“千年虫”的攻击。世界各国已纷纷由政府出面,全力围歼“千年虫”。正当有公众质疑「千年虫」问题是否被夸大之际,西非国家冈比亚却成为全球首个受千年虫严重影响的国家,除不少地方电力供应中断外,预计未来数月,海空交通、金融和政府服务亦大受影响,其中财政部、税局和海关更因而无法运作。总部设在华盛顿的国际千年虫合作中心表示,冈比亚出现千年虫祸,其实是意料中事,皆因国际社会太迟帮助冈比亚除虫。
冈比亚
冈比亚爆发虫祸的部门,主要集中在一些政府机构。由于爆发大规模虫祸,冈比亚政府已宣布当天(周一)为非工作日,以暂时减轻出事机关所要承受的压力。
埃及和索马里
国际千年虫中心指出,联合国当局太迟拨出资金,令冈比亚未能及时修补海关和税局的系统。专家表示,若国际不加快援助冈比亚,问题可能持续至一月底或数月后。该中心承认,冈比亚的电力中断未必一定与千年虫有关,然而其他系统所出现的毛病,不少确实是因千年虫而起。幸其他国家顺利过渡。
英国科技顾问公司「国际监察」早前曾发表报告,将埃及索马里和孟加拉列为千年虫最高危国家,而冈比亚、土耳其和部分东南亚国家,则属于次一级。报告指这些国家均没有为对付千年虫作好准备。
幸而,千禧元旦来临时,除了冈比亚外,其他国家均顺利过渡,没有发生太大问题。电脑专家最关注的是,周一各地的金融市场商业机构重开时,会否出现千年虫祸。其中芝加哥开市最受关注。
美国
芝加哥期货交易所将在当地时间周日下午五时半开市(香港时间上午七时半),是全球第一个在二千年进行电子买卖的重要国际市场,备受各界关注。当局表示,他们周六曾彻底测试电子买卖系统,发现一切正常。主要股市已完成测试。
此外,全球其他重要的股票、证券市场和银行系统,早前均曾接受过渡千禧的测试,结果令人乐观。澳洲新西兰马尼拉曼谷和很多其他地方,均表示它们的股票市场已完成测试。亚洲多国官员亦指出,贸易市场、通讯系统和其他重要基建设施均能顺利过渡。美国及不少国家均曾高度戒备,防范虫祸。很多国已把戒备降级。
中国
2000年1月1日,新世纪钟声敲响,在大家的开心的笑容中,轻松的欢庆中,我们迎来了一个新的世纪,迎来了真正意义上的新千年。可就在大家静静地聆听新年钟声的时刻,让人们已经几乎遗忘了的千年虫竟然悄悄来了。
时候终于到了
据广州某商务公司称,上午上班不久,公司里的7台电脑就接二连三出现故障,当他们向软件供应商公司求助时发现,那里已经接到100多家公司数据库瘫痪的消息,他们怀疑这是“千年虫”又在作祟。
北京市计算机2000年问题办公室从1日至3日已经接到十几个求助电话,反映自己的电脑出现了千年虫问题。一位魏小姐的炒股机不能工作了;王先生的某国内知名品牌的电子记事本里几百个电话号码一夜之间不见了……
紧接着香港也传来报道:著名的7-Eleven便利连锁店星期一遭到类似千年虫的计算机漏洞的袭击。这个连锁店的计算机把2001年当成1901年,使许多使用信用卡的用户感到不便。便利店一发言人说,星期二晚上他们已经控制了事态,星期三,商店已经开始正常营业。1999年,它对千年虫作了充分的准备,总共投入了880万美元对付千年虫。对于这次出现的同样是由计算机计时系统引起的问题,连锁店发言人说;“这的确是一个非常特殊的事件。我们已经对计算机系统做了近万次测试,工作一直正常,直到星期一。” 千年虫还袭击了挪威国家铁路系统。不过好在这个问题在爆发前夕就发现了。公司的发言人称,火车仪表板上的电脑显然不能分辨出这个日期。1999年,电脑专家们都以为当时钟转到2000年1月1日时就可能在全球出现千年虫问题,但他们并未料到2000年12月31日才爆发千年虫问题。
最新的报道还表明,由于电脑千年虫作怪,瑞典多达10万网上银行客户在进入2000年之后无法进入网上账户。新千年开始后,瑞典一些网上银行客户试图进入平常使用的银行服务网页时,却获得这样的提示:“许用权已无效”,尽管他们的账户中还有存款,却无法支配其网上银行账户。据估计,受影响客户大约要占到瑞典全国经营网上银行业务或网上股票业务的金融客户数量的10%。
有些消息不断传出。或许事情不会太大,但这确实出乎人们意料,由于很多人以为千年虫已经成为了美丽的传说,所以这些报道在世界范围造成了较大的影响。
2000年雷声大雨点小
千年虫问题产生的原因是由于在计算机软、硬件以及数字化程序控制芯片的各种设备和业务处理系统中,只使用了两位十进制数来表示年份,因此,当日期从1999年12月31日进入2000年1月1日后,系统将无法正常识别由“00”表示的2000年【计算机可能将这个年分识别为1900年】这一具体年份,从而带来进行跨世纪的年份、日期处理时的计算错误,引发各种各样的计算机业务处理系统和控制系统的功能紊乱
1999年这个时候,全球高度紧张,严密防范着“千年虫”。在2000年来临的前几年,一些政府和企业就耗费了不计其数的资金来解决千年虫问题。同时,有关千年虫的恐怖预测使许多公司、代理机构、学校、商店以及普通市民为了避免即将来临的2000年灾难总共花费了数以亿计的美元
就在2000年来临前的几个星期,大量的有关千年虫问题危言耸听的谣言逐渐得到了澄清。尽管一些问题的确发生了,但是许多专家都改变了原有的看法转而认为:高科技历史上最著名的千年虫将给人们带来的损失已经被控制到最小范围。在2000年的上半年,生产软件和电脑的厂家都宣布说千年虫对他们开发的软件程序以及软件和电脑的销售所造成的影响都非常小。
在经过零点的那一刻,不少人的心情复杂而激动。在随后发生的事情,让大家不免有点因为期望太高而产生的些许失落。千年虫并没有如我们预言的那么如同世界末日,甚至没有听到大的灾害消息。
“我觉得以前大家对千年虫问题的确做了过高的估计,”Total Immersion公司(纽约的一个小公司)的创意部经理兼信息技术联络人Glenn Mills如是说。Mills在对2000进行回顾时说,“千年虫问题是新旧世纪交替之时的一个重大事件。这一事件无论是对人类,还是对计算领域或者技术领域来说都是一个很好的教训。”
这个教训还没有结束,被人们担忧了一年的千年虫,终于露出狰狞。放松的防范之心又紧张起来。 防虫之心不可无 有关专家表示,仍有用户担心千年虫问题而不敢开机,这其实是对千年虫问题的一种误解。千年虫问题不像电脑病毒,光躲是躲不过的,如果您的电脑没有解决千年虫问题,它可能在2000年1月1日后的任何一天“咬”你一口。
俗话说的好:“害人之心不可有,防人之心不可无。”千年虫看来是又和人们缠上了,日前公安部有关负责人提醒广大计算机用户,在2000年第一次开启设备时,千万不要掉以轻心,还要高度重视“千年虫”及其他计算机bug,提早作好准备,以防造成重大损失。这个警告体现了中国计算机安全部门高度的警惕性和责任感,为中国避免遭受千年虫的侵害起了相当关键的作用。
行业影响
哪些地方有虫 ?
那么,千年虫主要会在什么地方发作呢?就世界上的情况来说,千年虫主要集中发作于两个方面:
一个是配备比较早(大约在80年代中期以前投入使用)的主机上的应用系统,如在IBM 4381,IBM AS/400等机型上运行的应用程序。这些机器系统国际上都应用的相当早,因此其上面的应用程序经过十余年的开发和发展其规模已经非常庞大,比如美国的AT&T电讯公司,其内部就有超过3.6亿行的应用程序需要检测是否存在2000年问题,这确实是很大的工作量,因此给解决2000年问题造成了极大的麻烦。
千年虫另外一个容易发作的方面是嵌入式设备。所谓嵌入式设备,就是指设备中使用了智能芯片的系统,由于智能芯片价格低廉,嵌入式设备已变成无处不在,由生产线、大量的自动化仪器仪表、汽车、电梯、警报系统、消防检测器医疗设备,以至电话交换机、空调机、交通灯恒温器等,可谓渗透到日常生活每个角落。这些设备中应用的程序往往都已经固化到元器件中,因此一旦产品只使用了两位数来表示年份,就会引发2000年问题,而要替换这些芯片,又往往不得不把整个系统都替换,这会造成资金和操作上的困难,使解决2000年问题更加麻烦,也是无法按时解决2000年问题的隐患之一。
对于我们普遍使用的PC机又会怎样呢?从硬件角度讲,2000年问题主要存在于微机的BIOS不能实现向2000年的自动过渡,相对来讲是比较简单的。否则问题一旦发作起来就会让你手忙脚乱,狼狈不堪。具体来讲,在微机硬件中有一个实时系统时钟,它依靠微机主板上的纽扣电池作为电源和动力,时刻保持运转,这样微机在关机时也能够保持时间前进。这个实时系统时钟的时间数值是保存到主板BIOS中的存储器CMOS)中的。当微机启动时,微机操作系统从BIOS的那个时间存储器里读取当前时间,包括四位数的年份以及月份、日、小时、分钟、秒等,从此,只要不关机,操作系统的时钟就会以微机外接电源(不再是主板上的纽扣电池)为动力单独向前运转,并保存在微机的内存中(不再是BIOS中的存储器)。微机的2000年问题主要表现,尽管RTC—实时系统时钟中使用了四位数来表示年份,但其年份数据的前两位(世纪信息,如“19”,“20”等)并不和后两位发生联系,也就是说,当后两位从“99”变为“00”时,并不能向前进位使前两位数由“19”变为“20”,这样,RTC中1999年的下一年便应该是1900年,从而引发了2000年问题。
应用的操作系统(如DOS 5.0以上版本、Windows 3.xWindows95Windows 98以及 Linux 、SCO Unix、Windows NT)时钟来说,其年份都是用四位数来表示的,因此不会存在2000年问题。但问题是操作系统中附带的一些小实用程序、工具或函数调用,有可能因为年份表示不完整而引起千年虫发作,但可以肯定的一点是,只要你不使用到这些小实用程序或工具,就不会引发2000年问题。如果你要详细了解这些操作系统中到底有哪些实用程序、工具或函数调用存在,总之,对于我们自己使用的微机来说,其系统方面的2000年问题是相对简单的,其难点还应该是其上面规模庞大的应用程序上。
如果千年问题没有得到及时的解决,那么我们的生活可能会出现一些意想不到的混乱……
金融业
到了2000年,银行里面的电脑可能将2000年解释为1900年,引起利息计算上的混乱,甚至自动将所有的记录消除;自动取款机会拒收“00”年的提款卡。
保险业
保险公司可能会将每份保险的年限算错。
电信业
你在1999年12月31日23:59分打了三分钟的电话,电话局的账单却可能显示为(-100年+3分钟);
电力系统
美国夏威夷电力公司曾经做了一项实际的实验,输入00年,结果电厂自动停止操作,在某些情况下也发生电压与频率方面的变化,造成用户全面停电、电器故障甚至烧毁;美国联邦核管处更是担心全美的百余座核电厂里的仪器由于2000年问题失控造成核辐射外泄等灾难。
税务系统
税务局的电脑可能会认为你拖欠了100年的税款,从而寄来天文数字般的补税通知。
医药业
医疗仪器如救生系统或监视系统可能死机导致患者生命危急以及血库管理、医嘱系统与病历、器材管理全部无法正常运作。
交通系统
由于控制雷达的电脑失灵,空中管制完全瘫痪,班机停飞。
2000年问题更成了美国各大汽车公司的头疼问题,原来,美国汽车都有确定的使用年限(比如10年),超过该时间期限后汽车便会自动拒绝发动。麻烦出在一些刚刚生产出来的自动化程度较高的汽车,其内部控制芯片仍用两位10进制数表示年份,那么到了2000年后,由于年份变成了00年,和出厂日期(比如1998年)一比较,竟然已运行了98年,汽车当然便会自动拒绝发动了。美国花旗银行(CITYBANK)在对其属下的汽车进行2000年问题测试时,便发现了这个问题。
怎么样,即使你还没有买电脑,也不会觉得千年虫与你一点关系没有吧。不过,随着各行各业解决千年问题的迅速进展,上述问题也几乎不可能在我们的生活中发生了。
再次现身
2010年问题
2000年的千年虫事件,这个使几乎所有电子设备瘫痪的漏洞,在沉寂了10年之后,再次悄然现身。
据最近的网络消息称,出乎人们的预料,2010年再次出现类似2000年的“千年虫”问题。(2010年)
银行卡失灵
德国银行协会5日警告说,在进入2010年之际,超过2500万张德国银行卡可能遭到类似“千年虫”软件漏洞的损害,导致电脑芯片无法识别年份“2010”,从而让使用自动取款机或在德国境内甚至境外分行取款、用卡消费的银行客户无法使用银行卡。
跳过2010直至2016年
不知道什么原因,澳大利亚昆士兰银行卡处理中心的计算机时钟,在越过2009年12月31日之后,反常地直接翻至2016年1月1日,掠过了中间的6个年头。然而,出现这样的状况会有什么样的后果呢?
最直接的,大量的昆士兰州的企业依靠该银行处理他们的信用卡支付业务,而大量信用卡在2016年之前就已经到期失效,所以几乎所有的交易都面临瘫痪。不过虽然还没有查明原因,银行已经启动人工批准流程,以保证经济的正常运转。
千年虫问题竟手机再现
也许大家觉得澳大利亚的银行离我们还比较遥远,但如果同样的漏洞出现我们的手机里,会是什么效果呢?已发现的大多出现WM系统机型上,用户收到的在2010年1月1日后发送的短信,都会显示为2016年1月1日。尽管已经有玩家放出了补丁,但微软官方并没有对此作出任何行动。
“收到未来的信息”始终是个玩笑,但在相隔10年之后再次出现相同的事件,确实令人匪夷所思。是机器本来就不可靠?还是人类编写的机器语言本身就是有漏洞的?一切尚无定论。
赛门铁克产品事件
12月6日消息,据国外媒体报道,赛门铁克警告称,其Endpoint Protection Manager(端点保护管理器)服务器产品错误地把2010年发布的病毒特征更新标记为过期。
这个问题影响到赛门铁克这种产品的小企业版本Endpoint Protection v11.x和v12.x版。赛门铁克在博客中说,在2009年12月31日晚上11点59分以后发布的杀毒软件反间谍软件入侵检测软件更新都被认为是过期的。
赛门铁克已经发布了一些新版本编号的更新软件绕过了这个问题,不过,软件的日期是12月31日。赛门铁克正在研制永久性的补丁。
赛门铁克称,这个问题还影响到同时使用赛门铁克Host Integrity软件和NAC(网络接入控制)软件的用户。Host Integrity软件检查连接到网络的客户机的杀毒软件定义是不是最新的。赛门铁克说,Host Integrity检查将失败,但是,赛门铁克在博客中详细介绍了绕过这个问题的方法。
出租车计价受影响
重庆晚报1月3日报道 因系统时间不能自动跳入2010年,安徽芜湖市近千辆出租车出现了2010年第一个零时计价器就“清零”的失灵状况。
据介绍,出现故障的计价器有两种“症状”,其中产自上海的计价器在2000年1月1日零时一到,其显示价格就自动跳为0元,而溧阳产的计价器则无故将起步价由5元变为6元。专家分析说,故障是由于计价器的电脑系统时间不能自动从2009年跳入2010年而导致功能混乱,非常类似于“千年虫”,所以老款的计价器必须更换芯片。
2038年问题
和21世纪初的千年虫(the Millennium bug)问题类似,32位的Unix操作系统和Linux操作系统时间溢出问题又称为2038年问题(the Year 2038 problem)。如果你想知道什么是2038问题的话,你需要知道一些技术上的东西。这个bug是由用来写Unix/Linux的C语言引起的,C语言中用 time_t 来代表时间和日期,time_t 是整数(int)型的,它用来记载从1970年1月1日到2000年所经历的秒数。
这个数据是以32位存储的,第一位是符号位,其余的31位用来存数字,而这31位数字可以存储的最大数字为2147483647。
从1970年开始计算,这31位的数字可以表示的秒数最多可以用到2038年01月19日03时14分07秒,当时间到达这个数字的时候系统将会出现问题,到时候数字不会自动增加,而是会变为-2147483648,而这串数字代表的时间是1901年12月13日20时45分52秒,这会导致很多的程序出现问题,甚至崩溃。
2038年问题不仅比千年虫更隐蔽,而且比之前千年虫问题更具有破坏力,因为千年虫问题只会导致应用层的程序出现问题,比如信用卡支付系统,或者管理系统。而2038这个bug,将会影响系统最底层的时间控制的功能。
要解决这个问题,最简单的方式是扩展Unix时间的长度,用64位数字来表示它。64位二进制数的实际可用位数是63位,最大表示到公历的UTC时间292,277,026,596年12月4日15时30分08秒. 如果那个时候人类文明还存在的话,公元纪年很可能已经因为太难用而被抛弃了. 理想的情况是到2038年,64位系统已经成为主流,从而避免特意去修正这个问题所需要的大量开销。否则,人们就必须把新的64位时间拆分成两部分并分别保存在两个变量里,这是一个麻烦而且效率低下的选择。
参考资料
最新修订时间:2024-11-30 11:04
目录
概述
问题
参考资料