text: 隨機數生成器攻擊的環節進行破壞或弱點利用的攻擊。一個密碼系統的安全性取決於機密訊息只能由已授權人員可知，其他人不可知且不可預測。為了達到不可預測性，通常會採用一些隨機化的過程。為了系統的安全性，必須要有一個高品質的隨機數生成方式，低品質的生成方式會產生安全漏洞，導致系統發生洩密。由於亂數生成的部分通常只牽涉到單個孤立的硬體或軟體，非常容易尋找，所以對攻擊者而言特別有吸引力。如果攻擊者可以用一種他可以預測的偽隨機數替換RNG過程，安全性就會受到完全損害，但是上游的測試對此通常是無法偵測到的。此外，對於已被破解的系統，攻擊者只需進行一次訪問，不需要再進行回傳。與之相較，電腦病毒在偷取金鑰後，還需要透過電子郵件等方式將金鑰回傳給攻擊者。人工生成的隨機數.對於產生亂數這件事，人類通常表現不佳。魔術師、職業賭徒和詐騙犯都仰賴於人類行為的可預測性。在第二次世界大戰中，德國的譯電員們在使用恩尼格瑪密碼機時會依照指示隨機選擇三個字母作為轉子的初始設定。然而有些人會選用一些可預測的字母，比如他們自己或女友的名字縮寫，這大大的幫助了盟軍破解這些加密系統。另一個例子是電腦的使用者常常會選用一些容易預測方式選擇密碼。儘管如此，Ran Halprin 與 Moni Naor 研究了在混合策略遊戲中的一些特定情況下，使用的人玩遊戲時的熵來產生隨機性。攻擊.軟體隨機數生成器.僅作為加密系統的其它元件而言，軟體隨機數發生器在設計上應該能抵抗一定的攻擊。攻擊型別可能包括：若攻擊者可以獲得隨機數生成序列的一部分，並且可以據此將發生器的輸出從真正的隨機流中區分出來時，此類攻擊可行。修改發生器的輸入來進行攻擊，例如透過將現存的熵“清洗”出現有的系統，並把系統設定為已知的狀態。在內部保密狀態的發生器在某個時間是已知的，據此可以預測未來發生器的輸出或恢復之前的輸出。 這可能發生在發生器剛剛啟動並且發生器僅擁有少量或沒有擁有任何熵的時候，因此在這個狀態下，攻擊者可能能夠獲得初步的猜測值。硬體隨機數生成器.許多針對硬體隨機數生成器的攻擊都是有可能的，包括嘗試捕獲計算機的射頻發射。隨機數生成器顛覆.顛覆隨機數可以在密碼學安全偽隨機數生成器中使用隨機數種子值來生成，種子值雖然隱藏在軟體中，但是對攻擊者已知。相對較短，比如24到40位元，種子可以是真正隨機的，可以防止重複，但是並不足以防止攻擊者恢復“隨機”生成的金鑰。隨機數在使用前會透過數層特定的軟體和硬體。資料可能在外圍裝置中生成，透過電纜傳輸，由作業系統元件收集並由系統呼叫進行檢索。這一過程中的任何一點都可以替換顛覆的資料，並且幾乎無法檢測。僅僅需要數平方毫米就可以使用積體電路建造一個用於生成顛覆隨機數的硬體電路。透過將這種晶片放置在上游任何隨機性字化的地方，就可以破壞最先進的硬體隨機數生成器，例如在輸出驅動晶片中甚至在把計算機與生成器連線起來的電纜中。破壞晶片可以帶有一個時鐘來來把操作啟動時間限制到單位初次啟動之後，並且還能透過接受測試，也可以帶有用於開關控制的無線電接收器。破壞晶片的安裝可以是國家情報服務機構對製造商的要求，或者是之後任何有物理訪問權的人。用於替換內建硬體隨機數生成器的CPU晶片的可以是任意的相容晶片，其韌體中可以包含已顛覆的隨機數生成器。防禦.設計一個安全隨機數生成器至少要求與設計密碼系統的其它部分一樣高的水平。突出例子.可預測的網景隨機數種子.在早期版本的網景傳輸層安全性協議得到修復。Microsoft Windows 2000/XP 中的隨機數生成器.微軟使用未釋出的演算法來為其Windows作業系統生成隨機數值，並透過CryptGenRandom實用工具提供給使用者。2007年11月，來自耶路撒冷希伯來大學與海法大學的Leo Dorrendorf et al. 釋出了一篇名為《Windows作業系統中的隨機數生成器的密碼學分析》發文稱“NSA向NIST於2006年接納的一向標準中植入了後門...名為Dual EC DRBG標準”，從而揭示了NSA對美國人民進行了惡意軟體攻擊。2013年12月，據路透社報道，愛德華·斯諾登釋出的檔案顯示，NSA已經向RSA安全公司支付了1000萬美元，將Dual_EC_DRBG作為後者的預設加密軟體，也因此出現更多關於該演算法包含NSA後門的擔憂。出於這些擔憂，2014年，NIST從其關於隨機數發生器的指導草案中撤銷了，推薦“現有的Dual EC DRBG使用者儘快切換到其餘三個演算法。”MIFARE Crypto-1.Crypto-1是由NXP開發的用於MIFARE晶片的加密系統。作為專有系統，其演算法最初並未公佈。根據對晶片的逆向工程，來自弗吉尼亞大學與Chaos Computer Club的研究人員發現了針對Crypto-1中隨機數發生器的初始化不良漏洞。Debian OpenSSL.2008年五月，安全研究員Luciano Bello透漏了一項發現，關於2006年在隨Debian GNU/Linux和其他基於Debian的發行版，例如Ubuntu，中分發的OpenSSL軟體包中隨機數生成器的變化。這些變化大大降低了生成值的熵值，使得各種安全金鑰易受攻擊。這個安全漏洞是由於Debian開發者為解決冗餘程式碼的編譯器警告，隨即對OpenSSL程式碼做出了這些修改，從而導致了金鑰在世界範圍內的大量重構，儘管所有人都注意到了這個問題，但可以推測出許多舊金鑰仍在使用中。受影響的金鑰型別包含SSH金鑰、OpenVPN金鑰、DNSSEC金鑰、SSL/TLS連線中使用的X.509證書金鑰材料與會話金鑰。使用GnuPG或GnuTLS生成的金鑰由於使用了不同的方法來生成隨機數而未受到影響。由非Debian系的Linux發行版生成的金鑰也未受到影響。接到報告之後，漏洞及時得到修補，但是任何仍然使用由舊程式碼生成的金鑰的服務仍然是脆弱。許多軟體包現在都包含針對弱金鑰黑名單的檢查，以試圖預防使用剩餘的弱金鑰，但是研究人員仍舊陸續發現了薄弱的金鑰實現。PlayStation 3.2010年12月，一個自稱"fail0verflow" 的團體宣佈了恢復橢圓曲線數字簽名演算法私鑰的方法。索尼公司使用這種私鑰來為PlayStation 3來簽名遊戲包。攻擊的可能性由於索尼未能為每個簽名產生一個新的隨機數。RSA公鑰分解.2012年，Lenstra、Hughes、Augier、Bos、Kleinjung與Wachter釋出了一篇關於從網際網路收集數百萬個RSA公鑰的分析。他們僅使用了歐幾里得演算法就分解了0.2%的金鑰，利用的是基於整數分解的密碼系統特有的弱點。若 "n" = "pq" 是一個公鑰，"n"′ = "p"′"q"′ 是另一個，那麼如果偶然間 "p" = "p"′，那麼簡單計算gcd("n","n"′) = "p" 因數都是 "n" 和 "n"′，完全破壞了兩個金鑰。一個進行過類似實驗的組織的一員Nadia Heninger說，劣質金鑰幾乎完全出現於嵌入式系統中，由兩組結果發現的共享素數問題是由於偽隨機數發生器最初做種不良，然後在第一個和第二個素數的產生之間發生了重新做種。Java實時碰撞.2013年八月，據透露Java類SecureRandom 中的錯誤可以在用於Android裝置上比特幣軟體中的"k" nonce數值上生成衝突。當錯誤觸發時，私鑰可以恢復，因而導致包含錢包中的比特幣失竊。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 隨機數生成器攻擊
metadata: https://zh.wikipedia.org/wiki?curid=5987726