Quantcast
Channel: 香港網頁開發網誌 »微軟
Viewing all articles
Browse latest Browse all 2

轉貼:微軟 2016 年開始不再支援 SHA-1

$
0
0

原文網站:微軟 2016 年開始不再支援 SHA-1

微軟建議用戶和認證機關 (Certificate Authority) 不要把 SHA-1 用在任何與密碼學有關的應用上,包括在 TLS/SSL 和用作簽署程式碼。她們也會在 2016 年開始不接受使用 SHA-1 的數碼認證 (Digital Certificate)。

SHA-1 是一個散列算法 (Hash Algorithm),1995 年由美國 NIST 發佈,散列算法的安全性在於 (1) 不同的輸入產生不同的輸出,及 (2) 不能從輸出反推算輸入 (單向運算法)。兩個輸入產生相同的輸出的情況稱為「衝突」,理論上「衝突」必定存在,即使說對於某個輸入 A,一定存在 (無數個) A 以至 A 和 A 有相同的散列值,但只要除了使用「暴力」(brute force) 外沒有其他方法可以尋找到 A,這個散列算法仍然算是安全的。

現在很多數碼證書都是使用 SHA-1 來製作「指紋」,收到證書的人 (或瀏覽器) 把證書的指紋與一個公開的指紋列表比對,相同的話便認為這張證書真確無訛,因為要製作一張虛假的證書,而它的指紋又要與真證書相同,便等同要尋找真證書的 「衝突」,對於安全的散列算法來說,唯一可用的方法是「暴力法」,但這樣做不啻愚公移山。

2005 年首次有密碼學家提出一個尋找 SHA-1 「衝突」的算法,這個算法只需要 269 次運算 (計算一次散列值),遠低於「暴力法」的 280 次運算,這一年 NIST 宣佈不建議使用 SHA-1。此後 SHA-1 不斷受到密碼學家的沖擊,2012 年最新的研究顯示尋找 SHA-1 「衝突」只需大約 260 次運算。

這個數字敲響了 SHA-1 的喪鐘,當年便有人計算過, 按照當年電腦的運算能力和成本,只需 277 萬美元便可以在一年時間內尋找到 SHA-1 的「衝突」,這個成本將會隨著電腦運算能力的提升和硬件成本下降而變得越來越便宜。即使說,偽冒一張數碼證書 (從而偽冒一個網站) 越來越容易。若果成功偽冒一個金融機構網站,把裏面數以萬計賬戶的金錢全部據為己有,277 萬美元的成本算得什麼?

所以,微軟宣佈不再使用 SHA-1 雖然有點遲 (早在 2005 年便應該依從 NIST 的建議放棄 SHA-1),但總比不做的好。至於為什麼要等到 2016 才拒絕使用 SHA-1 的證書,相信是因為一般數碼證書的年期是 1 至 3 年,屆時絕大部分的數碼證書都已經更新並使用較安全的散列算法,例如 SHA-2 甚至 SHA-3

SHA-1 是否就此退出電腦歷史的舞台?不是的,散列算法的安全性只有在密碼相關的應用上才有必要,在其他場合,例如用來檢驗一段資料在網絡傳送過程的完整性,SHA-1 仍然是適當的,甚至比它更早一代的 MD5 也同樣可用。


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images