嚴(yán)重的隨機(jī)數(shù)生成器漏洞披露,數(shù)十億IoT設(shè)備受影響
研究人員披露了數(shù)十億物聯(lián)網(wǎng)(IoT)設(shè)備中使用的隨機(jī)數(shù)生成器嚴(yán)重漏洞,這意味著大量用戶面臨潛在攻擊風(fēng)險(xiǎn)。
網(wǎng)絡(luò)安全組織Bishop Fox的研究人員Dan Petro和Allan Cecil在上周發(fā)表的一項(xiàng)分析中表示:
“事實(shí)證明,在物聯(lián)網(wǎng)設(shè)備中,這些'隨機(jī)'選擇的數(shù)字并不總是像你希望的那樣隨機(jī),在許多情況下,設(shè)備會隨機(jī)選擇0或更弱的加密密鑰,這可能導(dǎo)致任何上游服務(wù)器出現(xiàn)崩潰,從而面臨安全問題。” |
隨機(jī)數(shù)生成(RNG)是一個(gè)支撐加密應(yīng)用的關(guān)鍵過程,其中包括密鑰生成、隨機(jī)數(shù)和加鹽。在傳統(tǒng)的操作系統(tǒng)中,RNG是由加密安全偽隨機(jī)數(shù)生成器 (CSPRNG)分化而來,后者使用了高質(zhì)量種子源中的熵。
在物聯(lián)網(wǎng)設(shè)備中,系統(tǒng)級芯片(SoC)裝有一個(gè)專門的硬件RNG外設(shè),稱為真隨機(jī)數(shù)生成器(TRNG),用于從物理過程或現(xiàn)象中捕獲“隨機(jī)性”。
研究人員指出,當(dāng)前調(diào)用外部設(shè)備的方式是不正確的,他們注意到因缺乏對錯(cuò)誤代碼響應(yīng)的全面檢查,導(dǎo)致產(chǎn)生的隨機(jī)數(shù)不是簡單的隨機(jī),更糟糕的是可預(yù)測的情況,包含部分熵、未初始化的內(nèi)存,甚至包含純零的密碼密鑰泄露。
“RNG外圍設(shè)備的HAL功能可能因各種原因而失效,但到目前為止最常見的或者說最可利用的設(shè)備已經(jīng)耗盡了熵。硬件RNG外設(shè)通過各種方式(如模擬傳感器或電磁場讀數(shù))從宇宙中提取熵,但并不能夠無限供應(yīng)。” |
RNG每秒鐘只能產(chǎn)生這么多的隨機(jī)位。如果在RNG HAL函數(shù)沒有任何隨機(jī)數(shù)可以給你的時(shí)候調(diào)用它,它就會失敗并返回一個(gè)錯(cuò)誤代碼。因此,如果設(shè)備試圖過快的獲得太多的隨機(jī)數(shù),調(diào)用將失敗。
這個(gè)是物聯(lián)網(wǎng)領(lǐng)域的獨(dú)有的問題。因?yàn)槲锫?lián)網(wǎng)設(shè)備通常缺乏帶有隨機(jī)性API的操作系統(tǒng)(例如,類似Unix的操作系統(tǒng)中的"/dev/random "或Windows中的BCryptGenRandom),研究人員認(rèn)為與CSPRNG子系統(tǒng)相關(guān)的熵池有更大的好處,從而消除了 "熵源中的任何單點(diǎn)故障"。
雖然這些問題可以通過軟件更新來補(bǔ)救,但理想的解決方案是物聯(lián)網(wǎng)設(shè)備制造商和開發(fā)人員從一組不同的熵源中生成CSPRNG API,并確保代碼不會忽略錯(cuò)誤條件,或在沒有更多的熵可用時(shí)能阻止對RNG的調(diào)用。
研究人員強(qiáng)調(diào):“這不是一個(gè)簡單的漏洞。為了防范這種風(fēng)險(xiǎn),物聯(lián)網(wǎng)操作系統(tǒng)中確實(shí)需要一個(gè)類似CSPRNG的復(fù)雜功能設(shè)計(jì)。”