剛剛見識了KRACK密鑰重裝攻擊和ROCA加密攻擊不久,現在一個被稱為DUHK(Don’t Use Hard-coded Keys,禁用硬編碼密鑰)的新型攻擊手段又被曝光出來。根據撰寫相關論文的三位美國學者表示,DUHK是一個存在于傳統ANSI X9.31 RNG加密算法內的漏洞,在一定條件下,利用該漏洞的攻擊者甚至可以破解VPN上的加密通信以及WEB會話內容。
ANSI X9.31 RNG是什么鬼?
為了將數據加密的更安全,人們希望借由一種可以隨機產生的數字進行處理,這就出現了隨機數字生成器(RNG)。不過往往計算機生成的隨機數字,實際上都是根據一定算法和種子值生成的,并不是真正的隨機數,只是重復周期比較大的數列,因此這些數字也被稱為“偽隨機數(PN)”。
而使用偽隨機數的弊端是,一旦掌握了上述算法中的“種子密鑰”,利用這些偽隨機數加密的內容便形同虛設了。
ANSI X9.31 RNG便是一種使用非常廣泛的偽隨機數字生成器標準加密算法,雖然它被稱為“RNG”,此前也一直被用來加密VPN通信和網頁流量不被外部攔截。同時由于其被美國政府認作一種“美國聯邦信息處理標準(FIPS)”,所以在2016年1月以前被大量采用。
研究人員公布的涉及ANSI X9.31 RNG加密算法的主機狀態和密鑰恢復情況
DUHK攻擊的條件
不過,現在研究學者發現,一些網絡設備廠商在設備或者軟件上使用了X9.31偽隨機數生成器的同時,還使用了硬編碼的“種子密鑰”作為解密ANSI X9.31 RNG的密鑰。這就好像同時將“鎖”和“鑰匙”交給了闖入者,令“防盜門”失去了效力。而在此種條件下發動的攻擊便是DUHK攻擊了。
除了上述兩個條件外,使用隨機數的輸出直接用于生成加密密鑰,以及生成密鑰的隨機數沒有進行加密傳輸(SSL/TLS和IPSec)也會招致DUHK攻擊。而這些主要影響使用了X9.31 RNG算法以及硬編碼種子密鑰的設備。
據研究學者論文中指出Cisco Aironet 7.2.115.2版等11款使用了硬編碼X9.31 RNG種子密鑰的FIPS認證產品。而Fortinet早期版本操作系統FortiOS 4.3.0到4.3.18版的產品也涉及硬編碼X9.31 RNG算法,可能招致DUHK攻擊而獲得密鑰,解密VPN通信。
受影響設備列表
鑒于涉及DUHK漏洞的產品型號較多,目前還不清楚是否有針對ANSI X9.31 RNG開發的攻擊程序,因此建議相關硬件廠商和開發人員不要在使用傳統的ANSI X9.31 RNG加密了。
如果必須使用區塊式RNG加密算法的話,應避免使用硬編碼密鑰,而且保持經常更新。正使用上述產品的企業或政府單位用戶則應盡快向相關廠商索取應對補丁方案或最新的產品固件。
所幸由于2016年1月以后的FIPS標準已經移除了ANSI X9.31演算法,因此采用之后的新加密標準產品無需擔心受到DUHK漏洞影響。