2038年漏洞如何擾亂你的數字生活及應對之策——南華早報青年郵報
scmp
想象一下,現在是2038年1月19日。你正在使用智能手機,突然被多個應用強制登出,手機系統崩潰。新聞裏充斥着銀行交易失敗與航班停飛的報道。
這聽起來像科幻災難片的劇情,但"2038年問題"是可能顛覆數字世界的真實威脅。這個計算機軟件漏洞將影響所有采用Unix時間格式的系統,這些系統在UTC時間2038年1月19日03:14:07後將無法處理日期和時間。
要理解其成因,需瞭解計算機存儲和解讀時間的方式。
什麼是Unix時間?
Unix時間是操作系統、文件系統和數據庫等計算機系統的通用標準,它從UTC時間1970年1月1日00:00:00開始以秒為單位累計計時。
協調世界時(UTC)是全球統一的時間標準,以穿過英國格林尼治的本初子午線午夜為24小時週期的起點。香港時間比UTC快8小時。
Unix開發者選擇1970年1月1日作為計時起點,因該系統誕生於1960年代末至1970年代初。這個特定時刻也被稱為"紀元"(epoch)。
自紀元起每過一秒,Unix時間值就會增加1。當從紀元倒計時時,則使用負值。
傳統上,Unix時間以有符號32位整數存儲。有符號32位整數是一種可以存儲正負整數的數據類型。其"位"是二進制的,即用0或1表示數值的系統。
該系統能表示的最小值是-2,147,483,648,最大值是2,147,483,647(見圖表)。
這也意味着Unix時間可以覆蓋1970年1月1日00:00:00 UTC前後的2,147,483,648秒。這對應的時間範圍是從1901年12月13日20:45:52 UTC到2038年1月19日03:14:07 UTC。
有符號32位整數如何導致2038年問題?
當Unix時間達到最大值2038年1月19日03:14:07 UTC時,再加一秒會導致時間跳轉回1901年12月13日。
這就是2038年問題的根源。但為什麼會發生這種情況?
在二進制中,1加1等於10。因此如果我們給最右邊的1加1,最右邊的位會變成0,多餘的1會進位到左邊的下一位。
這種進位會持續進行,最終到達最左邊的位——即符號位。當到達這一點時,整數會完全翻轉,使系統回到最小值。
由於許多計算機系統依賴精確的時間計算,這可能導致交通、銀行和電力設施等關鍵領域出現故障。
我們該如何解決這個問題?
許多系統正在實施的一個解決方案是增加用於存儲時間信息的位數;這使得系統能夠記錄更長時間的時間信息。
然而,無法更新的舊系統和設備,如工廠機器、醫療設備和家用電器,將更具挑戰性。
好消息是,計算機專家早已意識到這個問題,並正在努力解決它。
也就是説,如果你想在2038年1月19日那天穿上乾淨的衣服,最好在那之前更換你的舊電器——比如舊洗衣機。
《青年郵報》已與香港科學館和香港太空館合作,鼓勵你追求科學。每個月,這些博物館都會回答關於我們周圍世界、宇宙及其他領域的問題。
要查看我們的內容,請關閉您的廣告攔截器點擊這裏查看説明註冊YP教師通訊
獲取直接發送到您郵箱的教師更新信息
註冊即表示您同意我們的條款和條件及隱私政策評論
青年郵報我們報道關於香港學生、校園生活、體育和本地教育的最新新聞、觀點和故事,同時關注熱門和冷門話題。