千年虫(英文名:Millennium Bug),又叫做“计算机2000年问题”“电脑千禧年千年虫问题”“千年危机”或“Year 2000 problem”,是指在某些使用了
计算机程序的智能系统(包括
计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃。从根本上说,千年虫是一种程序处理日期上的bug(计算机程序故障),而非病毒。
“千年虫”影响是巨大的,从
计算机系统包括PC机的BIOS、微码到操作系统、数据库软件、商用软件和应用系统等,到与
计算机和自动控制有关的电话程控交换机、银行自动取款机、保安系统、工厂自动化系统等,乃至使用了嵌入式芯片技术的大量的电子电器、机械设备和控制系统等,都有可能受到“千年虫”的攻击。
2000年,据
美国国务院对全球161个国家进行的调查显示,约有80个国家面临Y2K问题风险,这些国家在电信、能源及交通运输产业上面临中、高程度的风险,可能对国际贸易造成危害。针对千年虫问题,各国纷纷采取相应举措来防范和降低千年虫所带来的危害,对电力、通信和银行等础设施领域中的网络和设备都进行了必要的改造和升级,同时加强各国之间的交流和合作,共同应对千年虫问题。
概念来源
“千年虫”这一概念,来源于英文Milennium Bug。Millennium,是“一千年”的意思,Bug意为“
臭虫”。千年虫即指
计算机程序开发中没有注意到的漏洞和毛病,又因为这种毛病会在2000年来临时发作,所以千年虫问题也被称为2000年问题。此外,由于千在国外常被简写为K,所以2000年问题(Year2000)在国际上也简称为Y2K。Y2K一词的首创者是戴维·埃迪,首先出现在1995年6月12日的一份电子邮件中,邮件内容涉及的正是千年虫问题。
Y2K中的Y代表year,2K代表2000年(其中K代表
希腊语中的Kilo,意为“千”。
问题发现
20世纪40年代,
美国计算机科学家霍普女士,参与研制了“马克一号”计算机,完成了电脑史上第一个编译器,但由于内存资源有限又昂贵的情况,霍普为了节省内存,采用6位数来表示具体的日期,即年、月、日各两位,这就为后来千年虫问题的爆发留下了隐患。1960年,RobertBemer及其他47位计算机科学家预见到两位数表示年度可能带来的危险,开始四处奔走,呼吁用4位数表示年度。1995年,IBM承认
计算机存在千年虫问题,并向其客户公布“及时安全过渡计划”。
具体表现
20世纪六七十年代,受客观技术条件的限制,为了节约存储空间,人们在存储具体的年份时,选择了可节约许多存储空间的二位数而不是四位数。在后来新开发的一些程序中,由于开发人员思维的习惯使然,继续沿用了二位数来表示年份,这就使得计算机在判断四位数表示的年份时出现了困难,如1998年即被计算机表示为98,1999年则为99,随之而来的问题是2000年就会被计算机表示为00,即2000年将被计算机误认为是1990年或者是一个无效数据。
公元2000年是一个闰年,许多系统和应用程序开发者忽略了这一问题,在进行系统和应用程序的开发时,没有考虑到2000年的闰年问题,这些系统和程序不能将2000年2月29日这一天计算在内,系统将直接由2月28日过渡到3月1日。由于日期的计算错误,导致了一系列的
计算机逻辑错误。
很多旧版的应用程序将特定的日期当作为特定的含义和命令,如将9/9/99或00设定为某种特殊的含义,“00”表示末知年份的资料,“99”表示永不删除的资料,那么到了1999年9月9日和2000年,这些设定有特殊意义的程序将由于
计算机逻辑上的错误而出现不能运行的结果。
影响
地区影响
由于爆发大规模虫祸,
冈比亚政府已宣布2000年1月3日(周一)为非工作日,以暂时减轻出事机关所要承受的压力。冈比亚爆发虫祸的部门,主要集中在一些政府机构。国际千年虫中心指出,
联合国拨出资金太晚,令冈比亚未能及时修补海关和税务局的系统。
2000年1月4日,
美国广播公司报道称:
美国国防部间谍卫星情报因“千年虫”问题损失惨重。受“千年虫”的影响,美国贝尔沃尔堡间谍卫星地面站的情报处理系统全部瘫痪,根本无法破译间谍卫星传送回来的情报。美国国防部“计算机2000年作战中心”的电脑专家应急分队在空军“联合中心”的“千年虫”问题专家立即飞赴贝尔沃尔堡,协同那里的电脑专家一起进行系统的修复工作。两天之后,所有的情报处理系统才恢复正常工作。
由于“千年虫”的原因,一些海外旅游者为安全起见,纷纷放弃出远门旅行的计划。千年之交的
净慈寺敲钟活动,本来有620名海外旅游者报名参加,最后只到了366人。据
浙江省旅游局负责人介绍:“千年虫”的威胁使旅游业首当其冲。据不完全统计,因“千年虫”原因未能如期来浙江旅游的海外游客约有2500人次,占
元旦期间接待量的一半。
2000年2月29日,“千年虫”队伍中的“闰年小虫”在
日本兴风作浪:凌晨2时,因电脑不识闰2月,致使日本全国43个地方的气象部门气象数据出现差错。原本
京都、
大阪、
福冈市等地没下雨,但气象数据却表明上述地区分别降大雨359毫米-972毫米。
行业影响
由于医疗设备是采用计算机控制,千年虫问题会造成医疗系统死机、设备不运转;病人的信息出现严重错误,影响诊断,延误治疗;病例不能保留正确信息等问题。
千年虫也给世界航空带来了巨大影响。1999年12月31日午夜,从南、
北美洲,
远东、
近东地区,南亚、西亚和非洲抵达
英国的航班由原来的89班,削减为55班,旅客也由原来计划的11780位减少到10385位,全世界共取消航班10980班次;停飞航线5800多条;削减航班3800个;合并航班200个。其中比较突出的是:孟加拉航空公司(BANGL ADESH)全线停飞;
北欧航空公司(SAS)360架飞机多条航线停飞一天。
全日空航空公司(ANA)取消航班25个。
千年虫问题主要影响帐务系统及利息计算。主要表现为存、贷款周期计算错误,造成帐务混乱和资金损失,直接影响业务运转;由于信贷客户受千年虫问题的影响而间接影响金融机构的信贷资产质量,导致信贷风险;如果金融机构千年虫问题处理不当,影响到客户利益,致使客户对金融机构的信心减弱,引起金融动荡和金融风险;由于千年虫问题影响电力供应或电讯系统,使金融机构
计算机系统或网络系统无法正常运行,影响金融机构的业务处理。
千年虫问题导致电厂自动停止操作,在某些情况下也发生电压与频率方面的变化,造成用户全面停电、电器故障甚至烧毁;
美国联邦核管处更是担心全美的百余座
核电站里的仪器由于2000年间题失控造成核辐射外泻等灾难。
其他影响
“千年虫”问题不仅影响电脑及与资讯有关的行业,还将影响商贸机构、政府部门、通讯、出版、交通运输系统、能源供应和生产、生活设施等行业。例如:新加坡由电脑控制的300辆出租车的计价器于1999年1月1日中午停止计价达2小时;中国出现因客户信用卡有效期跨越2000年而被银行电脑拒付的情况,银行对此只能采取一些变通办法,如
中国工商银行的牡丹信用卡原本有效期为两年,改为一年。此外,部分国家和地区出现了水电、燃油供应系统瘫痪,电梯、中央空调等机电装置不能进行正常操作,日常产品不能及时供应居民生活等问题,这都在很大程度上影响了居民的正常生活。
解决方案
年域扩展法就是指将表示年代的信息域由后两位扩大到全部四位数,同时将那些需要对年代进行计算和比较的信息域也扩大,此外一些相关部分也要做相应的修改。
日期重译法又称为“70/30”,“80/20”法。如“70/30”表示:任何大于70的数字都为20世纪,小于70的数字为21世纪,使用这种方法不改动数据,只改动源码。程序中凡是用年代信息组进行比较计算时,都应将源码做相应的改动。例如日期02/02/02和01/02/99,在程序未经修改时,系统将其识别为02/02/1902和01/02/1999,而采取日期重译法,这两组数表示的日期分别为02/02/2002和01/02/1999。
日期操纵法指在现存的年份上加上某一年数,如日期01/02/99,01/02/00和01/02/03,将所有年代数后都加上80,则日期分别为01/02/79,01/02/80和01/02/83,即将2000年问题推后20年。
增加纪元代码法是指将原有的日期域DD/MM/YY格式改为CYYD-DD,其中DDD为YY年从第一天起计算的天数,C为纪元代码。
应对策略
在1999年末防止千年虫行动进入倒计时期间,IAEA(
国际原子能机构)和其他国际组织以多种行动加强了他们对一些国家主管部门的援助。这些行动有助于国家主管部门确保应用核与辐射技术的设施安全运行。在向2000年过渡期间,启动了IAEA的应急响应中心,以帮助国家主管部门和便于IAEA
成员国之间进行信息交流。
中国
1998年5月,吴邦国副总理主持召开国务院专题会议,听取信息产业部关于解决
计算机2000年问题的汇报,研究具体工作措施。按照国务院的有关要求,信息产业部在成立Y2K工作小组后,会同有关部门成立了由40多名专家组成的解决计算机2000年问题专家组,对部门、行业和地方存在的共性问题进行技术指导和协调;以
中国软件评测中心、国家电子计算机质量检测中心和中国电子技术标准化研究所为依托,建立了三个Y2K符合性测试中心,分别对计算机软件、硬件和嵌入式芯片产品进行测试;电信、邮政、电子行业各单位在对自身计算机系统进行认真分析、评估风险的基础上,都制定了详细的、可操作的工作计划和应急计划。
日本
20世纪90年代初,日本通产省就明确规定
计算机年份必须用4位数。
日本在1992年以后生产的计算机基本不存在千年问题。1997年日本设立了“计算机千年问题各部委联络会",要求政府各部委加强合作。日本的
金融界在20世纪90年代初期建立第三批计算机网络时就注意到了千年虫问题,提前实施了年份4位化的防范措施,后又投入了大量的资金、努力解决遗留问题;交通运输部门完成了
东航浙江公司的
计算机2000年问题检测及
新干线管理系统的更新和修改工作;电力、煤气、通信等基础设施领域中的网络和设备也都进行了必要的改造。1999年4月9日,以日本首相
小渊惠三为本部长的“高度信息通信社会推进本部”举行顾问会议,针对千年虫问题,要求各有关省厅对企业加强督促,特别要对电力、通信、交通等与人民生活密切相关的部门严格管理,要求他们依据有关法令解决千年问题,政府要给予企业以财政支援,必要时不排除强制执行的可能。此外,日本政府还向企业发布了“制定危机管理计划手册”,其中包括“对象业务的选定”“问题发生时的预想情景”“问题发生时的行动计划”“紧急联络一览表"等10个阶段的工作。
美国
美国于1995年就有企业开始着手进行这项工作。美国联邦政府共有33个部门涉及到Y2K问题,共有7850个重要系统必须作Y2K问题的修改,2048个地方政府必须对Y2K问题采取措施。
威廉·克林顿总统在1998年初任命新的Y2K问题委员会高层官员,对Y2K问题工作进行监督管理,委员会主任负责直接向总统报告工作情况。
波兰
1999年3月底,波兰政府出台了“解决2000年
计算机问题国家计划"。此举旨在19世纪末前彻底解决2000年
计算机问题或把“千年虫”问题所造成的危害减少到最低程度。波兰银行系统对全系统所有计算机进行测试,将所有计算机的时钟都调至2000年1月1日,以检验计算机工作是否正常,银行系统还计划将1999年的财政年度缩至1999年12月30日,以留出一天的应急时间。波兰总统于1999年1月就此专门召集有关部门领导和专家研讨和座谈。此外,波兰国家安全委员会与
俄罗斯国家安全委员会就2000年
计算机问题建立了合作关系,同时还与一些西方国家相互交流信息和经验。
衍生概念
Y2K20
2020年,一些已经修复过“千年虫”漏洞的系统和新安装的系统,出现了与“千年虫”类似的问题——这次的漏洞被称为“Y2K20”。此后两年,类似的漏洞时有出现,被称为“Y2K21”“Y2K22”。类似“千年虫”的问题之所以又会发生,是因为2000年前后用于修复“千年虫”问题的补丁只对本世纪前20年有效。设计产品的时候,为了减少对存储空间的占用,一些厂商会选择“简化问题”。有的汽车企业考虑到消费者可能在4~6年内就会换车,他们为
汽车设计的计时系统可能只涵盖了20年。例如,计时系统只涵盖了2002~2021年,当2022年到来时,汽车的系统又只能跳回到2002年了。
微软Exchange邮箱的问题也类似。系统的周期被设置得过短,无法进入2022年,用户在新一年的邮件便无法发送。数码评论员黄浩告诉《新闻超链接》,这次出现的“Y2K22”漏洞,与2000年的“千年虫”漏洞性质不同,是因为厂商为了节省成本而导致的故障,这不完全是软件问题,其中还有人为的低级错误。
2038年问题
由于软件代码运行时检测时间的方式存在一些问题,大量的计算机软件很可能会在2038年失效。工程师在20世纪七十年代开发出世界第一款
unix操作系统时,使用32位签名整数(或数字)来代表时间。整个计时系统的起始时间是1970年1月1日。之后,UNIX系统中的时间编码机制得到广泛应用,它被整合到所有需要检测时间的软件或
硬件系统之中。但是这个时间编码机制存在一个严重的问题,因为32位软件能够检测到的最大秒值为2147483647,这就是32位系统能够显示出的最大数字。通过计算,目前在各种软件中广泛应用的时间编码机制中的这个最大值对应的时间是2038年1月19日。如果无法解决这个问题,地球上的所有
计算机将在那个时刻点将时间计数“归零”,重新从1970年1月1日算起。
相关作品
2000年,新加坡导演陈建仪导拍了电视剧《
力克千年虫》,由
郑惠玉、
赖兴祥、
陈汉玮主演,以千年虫问题为线索展开故事叙述。
2022年,中国导演杨宇烨主导拍摄有关千年虫问题的纪录片《千年虫》,片长55分钟,于2022年3月18日上映。
相关争议
有关千年虫问题的争论主要包括以下几种:第一种观点认为其影响巨大,因为随着科技的飞速发展,人类对
计算机的依赖性不断增强,如果“千年虫”发作使计算机出现问题,就可能使整个人类的社会生活、经济生活发生混乱。水利、电力、交通、能源、金融、通讯等系统都会不同程度地受到影响。这种影响不仅存在于发达国家,也波及发展中国家。此外,还有一些从事计算机安全问题研究的专家认为:“千年虫”使计算机出故障可能导致
核武器意外发射,甚至可能导致一场核战争。
第二种观点以
微软总裁
比尔·盖茨为首,他们认为“千年虫”是计算机的小故障、小麻烦,只会暂时地使交通、通信、能源系统发生混乱。第三种观点认为,千年虫问题在宣传中产生被夸大的倾向,这种观点认为千年虫问题主要集中在金融、商业、保险、交通等领域。而在其他领域,通常采用对
计算机来说更方便和更有效的时间表示方式,计算结果通常也不依赖于日历日期而是依赖于相对时段的长度,这些系统的计时周期与2000年无关,没有一般意义上的千年虫问题。