複製鏈接
請複製以下鏈接發送給好友

千年蟲

(計算機2000年問題)

鎖定
千年蟲,又叫做“計算機2000年問題”、“電腦千禧年千年蟲問題”或“千年危機”。縮寫為“Y2K”。是指在某些使用了計算機程序智能系統(包括計算機系統、自動控制芯片等)中,由於其中的年份只使用兩位十進制數來表示,因此當系統進行(或涉及到)跨世紀的日期處理運算時(如多個日期之間的計算或比較等),就會出現錯誤的結果,進而引發各種各樣的系統功能紊亂甚至崩潰。因此從根本上説千年蟲是一種程序處理日期上的bug(計算機程序故障),而非病毒
中文名
千年蟲
外文名
the Millennium bug
別    名
Y2K bug
類    型
bug(計算機程序故障)
危    害
引發各種各樣的系統功能紊亂,癱瘓
發生時間
2000年

千年蟲問題

廣泛地講,“千年蟲”還包括以下兩個方面的問題:一個是在一些計算機系統中,對於閏年的計算和識別出現問題,不能把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位時間拆分成兩部分並分別保存在兩個變量裏,這是一個麻煩而且效率低下的選擇。