當前位置:
首頁 > 最新 > 千禧年的千年蟲

千禧年的千年蟲

關鍵詞:病毒防範、千年蟲病毒、系統時間存儲方式

一、讖曰

小白:東哥,你有沒有注意到今年上大學的小學弟小學妹全都是「千禧寶寶「呀。

大東:誒,還真是現在上大學的孩子們還真的都是出生在世紀之交,都是千禧寶寶。說到這個,小白白知不知道「千年蟲「呀?

小白:「千年蟲「,那是啥子呀?是不是恰巧在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 亞歐光纜

大東: 在信號傳輸的過程中我們第一個要想到的就是發生丟包或是傳輸出錯的概率。如果丟包,那麼只能重新傳送,如果發生傳輸出錯,那麼就會有兩種方法,一種是添加糾錯碼冗餘,一個是添加檢錯碼冗餘。

小白:這兩種冗餘有什麼不同嗎?

大東:糾錯碼可以檢測出錯誤並進行修改,而檢錯碼只能發現錯誤,不能修改,必須要求重傳。

小白:那麼這種功能強大的糾錯碼一定會伴隨著比較大的開銷吧?

大東:不錯,小白這個問題問的好,糾錯碼幾乎是檢錯碼兩倍的傳輸開銷,這兩種方法要按照受干擾的概率進行選擇,錯誤率低的就可以選擇檢錯碼。

小白:所以光纜這種穩定幾乎不受干擾的介質就可以使用檢錯碼來減少開銷了,對嗎?

大東:沒錯,傳輸開銷一下子可以下降很多,同時傳輸速度也將變快。

小白:為什麼還會變快呀?

大東:因為傳輸過程中一個比較大的影響因素就是傳丟或是傳錯的概率,因為傳錯要處理,傳丟要重傳,所以傳輸速度也會提高。

小白:這對於我國來說真是天大的好事呀。

大東:其實這條亞歐光纜除了傳輸更加迅速廉價這個「機遇」外,還伴隨著對我國網路安全的挑戰,有用的信號傳輸快,病毒攻擊以及有害信息也傳輸的快,對於我們網安人來說又是新的機遇和挑戰。

小白:大東要加油哦~

大東:加油!

來源:中國科學院計算技術研究所


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 中科院之聲 的精彩文章:

基於影像組學的腫瘤生物特徵無創評估研究取得進展

TAG:中科院之聲 |