糟糕的亂數將導致不安全的公鑰-2012-03-15

在坊間有一些非常出色的研究在審視公開金鑰,基本上,研究人員發現在這些公鑰中有一小部分(710萬中的27,000,或0.38%)都共同有著天生的弱點。
這些研究人員可以據此弱點破解那些公鑰,而任何人只要照著這些研究就可以做同樣的事。

造成這樣的原因幾乎可以確定是在一開始就使用了不良的亂數產生器來產生公鑰,對於這件事不須感到意外。在密碼學中要產生真正的亂數是屬於較困難的一部份,而要寫出一個不良的亂數產生器是非常容易的,但是知道該亂數產生器有多糟糕卻不是顯而易見地。

隨機性並不能算是功能上的需求,除非你特別去測試它,並且要知道如何正確地去測試它,否則你只會認為自己的密碼系統運作的還不錯 。 (有一個記者打電話告訴我說,這些研究人員跟他說有一些真實的亂數產生器只會產生7個不同的亂數)。因此,可能這些弱公鑰似乎只是偶然產生的。

這是有可能發生的,不過,有些亂數產生器的安全性是刻意被削弱的,很明顯的元兇就是像美國國家安全局這樣的情報服務機構。我沒有證據可以證明此事,但如果是我負責弱化現實世界中的密碼系統,我要做的第一件事就是對亂數產生器來下手,這些亂數產生器太容易被削弱,並且很難察覺你對它們動了什麼手腳。這樣做比起對演算法做調整要安全多了,因為演算法可經由已知的測試向量和替代方案來測試。再次提醒,以上都只是我的推測罷了。

什麼是安全風險?這裡有一些但很難知道有多少。我們可以假設這些攻擊者可以重覆這個實驗並且發現一些不安全的公鑰,但因為公鑰是隨機產生的,所以很難利用這些公鑰從中得益。也許這些攻擊者可幸運地因其中一把弱公鑰而找到一個明確的方式來竊取錢財、盜取商業秘密或國家情報…等,也許吧。

那麼現況又是如何呢?我希望這些研究人員知道那些公開金鑰加密的系統很容易受到不安全亂數的影響(他們並未在論文中命名這些系統)且提醒他們,此外那些公司也應該修復他們的系統。(我推薦我自己的吃飯工具,“密碼工程學。”)我希望有人都能夠自己實作亂數產生器,修復該弱點並且改良它。但我不抱太大的期望,許多密碼系統在過去已經因為不安全的亂數而被破解,並且這樣的案例在未來還會持續下去。

本文為【資訊安全實驗室】協助翻譯
原文網址:https://www.schneier.com/blog/archives/2012/02/lousy_random_nu.html

Leave a Reply