《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 你信嗎?一個(gè)關(guān)鍵的隨機(jī)數(shù)發(fā)生器漏洞就會(huì)影響數(shù)十億物聯(lián)網(wǎng)設(shè)備?

你信嗎?一個(gè)關(guān)鍵的隨機(jī)數(shù)發(fā)生器漏洞就會(huì)影響數(shù)十億物聯(lián)網(wǎng)設(shè)備?

2021-08-15
來源:網(wǎng)空閑話

  數(shù)十億物聯(lián)網(wǎng)設(shè)備使用的硬件隨機(jī)數(shù)生成器存在嚴(yán)重漏洞,無法正常生成隨機(jī)數(shù),導(dǎo)致設(shè)備安全性下降,面臨攻擊風(fēng)險(xiǎn)。

  Bishop Fox研究人員稱,這個(gè)漏洞影響了整個(gè)物聯(lián)網(wǎng)行業(yè)。關(guān)鍵是漏洞并不存在于單個(gè)設(shè)備的SDK或任何特定的SoC實(shí)現(xiàn)。物聯(lián)網(wǎng)需要一個(gè)偽隨機(jī)數(shù)生成器(CSPRNG)子系統(tǒng)。這個(gè)問題不能僅僅通過更改文檔和責(zé)備用戶來解決。對于這樣一個(gè)CSPRNG子系統(tǒng)來說,最優(yōu)雅的地方是在一個(gè)日益流行的物聯(lián)網(wǎng)操作系統(tǒng)中。如果您正在從頭開始設(shè)計(jì)一個(gè)新設(shè)備,建議在操作系統(tǒng)中實(shí)現(xiàn)一個(gè)CSPRNG。自己編寫RNG代碼應(yīng)該被認(rèn)為是危險(xiǎn)的,就像加密代碼一樣。不管你有多聰明,永遠(yuǎn)不要自己編寫與RNG硬件接口的代碼。你幾乎肯定會(huì)弄錯(cuò)。相反,您應(yīng)該使用由較低抽象層提供的CSPRNG子系統(tǒng)。不要直接從RNG硬件中使用熵??偟膩碚f,硬件RNG不適合(立即)加密使用。弱熵可以也應(yīng)該通過軟件,通過cspring來修復(fù)。

  “事實(shí)證明,當(dāng)涉及物聯(lián)網(wǎng)設(shè)備時(shí),這些‘隨機(jī)’選擇的數(shù)字CSPRNG并不總是像你希望的那樣隨機(jī),”Bishop Fox研究人員丹·彼得羅和艾倫·塞西爾在上周發(fā)表的一份分析報(bào)告中說。“事實(shí)上,在很多情況下,設(shè)備選擇的加密密鑰是0或更糟。這可能會(huì)導(dǎo)致任何上游應(yīng)用的安全性崩潰?!?/p>

  隨機(jī)數(shù)生成(RNG)是一個(gè)至關(guān)重要的過程,它支持多個(gè)加密應(yīng)用程序,包括密鑰生成、nonces和salt。在傳統(tǒng)的操作系統(tǒng)上,它來自一個(gè)加密安全的偽隨機(jī)數(shù)生成器(CSPRNG),該生成器使用從高質(zhì)量種子源獲得的熵。

  當(dāng)涉及到物聯(lián)網(wǎng)設(shè)備時(shí),這是由一個(gè)片上系統(tǒng)(SoC)提供的,它包含一個(gè)專用的硬件RNG的外圍設(shè)備,稱為真正的隨機(jī)數(shù)生成器(TRNG),用于從物理進(jìn)程或?qū)]嬕魳罚╬henomenа)中捕獲隨機(jī)性。

  研究人員指出當(dāng)前調(diào)用外圍設(shè)備的方式是不正確的,缺乏對錯(cuò)誤代碼響應(yīng)的全面檢查,導(dǎo)致產(chǎn)生的隨機(jī)數(shù)不是簡單的隨機(jī),更糟糕的是可預(yù)測的,導(dǎo)致部分熵,未初始化的內(nèi)存,甚至包含純零的加密密鑰。

  研究人員指出:“RNG外圍設(shè)備的HAL功能可能會(huì)因各種原因失效,但到目前為止最常見的(也是可利用的)是設(shè)備的熵耗盡?!庇布NG外設(shè)通過各種方式(如模擬傳感器或EMF讀數(shù))將熵從宇宙中提取出來,但并不是無限供應(yīng)的。

  “它們每秒只能產(chǎn)生這么多隨機(jī)比特。如果你嘗試調(diào)用RNG HAL函數(shù)時(shí),它沒有任何隨機(jī)數(shù)給你,它將失敗并返回一個(gè)錯(cuò)誤代碼。因此,如果設(shè)備試圖快速獲取太多隨機(jī)號碼,呼叫就會(huì)開始失敗?!?/p>

  這個(gè)問題是物聯(lián)網(wǎng)領(lǐng)域特有的,因?yàn)樗鼈內(nèi)狈νǔв须S機(jī)API的操作系統(tǒng)(例如,在類unix操作系統(tǒng)中是“/dev/random”,在Windows中是BCryptGenRandom),研究人員強(qiáng)調(diào)了與CSPRNG子系統(tǒng)相關(guān)聯(lián)的更大熵池的好處,這樣就消除了“熵源中的任何單點(diǎn)故障”。

  雖然可以矯正軟件更新的問題,理想的解決方案是物聯(lián)網(wǎng)設(shè)備制造商和開發(fā)商包括CSPRNG API的種子從一組不同的熵源并確保代碼沒有忽略錯(cuò)誤條件,或未能阻止調(diào)用RNG當(dāng)沒有更多的熵是可用時(shí)。

  研究人員說:“這個(gè)漏洞的難點(diǎn)之一是,它不是一個(gè)簡單的‘你在應(yīng)該曲折的地方曲折了’的情況,可以很容易地修補(bǔ)。”他們強(qiáng)調(diào)了在物聯(lián)網(wǎng)操作系統(tǒng)中實(shí)現(xiàn)CSPRNG的必要性。“為了解決這個(gè)問題,必須在物聯(lián)網(wǎng)設(shè)備中設(shè)計(jì)一個(gè)實(shí)質(zhì)性和復(fù)雜的功能?!?/p>

  最后,研究人員建議:

  對設(shè)備所有者而言:

  留意更新,并確保在它們可用時(shí)應(yīng)用它們。這是一個(gè)可以用軟件解決的問題,但可能需要一些時(shí)間。與此同時(shí),要小心不要太相信你的物聯(lián)網(wǎng)設(shè)備。對于需要連接互聯(lián)網(wǎng)的家用設(shè)備,把它們放在一個(gè)只能連接到外部的專用網(wǎng)絡(luò)段。這將有助于防止任何漏洞蔓延到你的網(wǎng)絡(luò)。

  對物聯(lián)網(wǎng)設(shè)備開發(fā)人員而言:

  如果可能,請選擇包含從包括硬件 RNG 在內(nèi)的各種熵源中播種的 CSPRNG API 的物聯(lián)網(wǎng)設(shè)備。如果沒有可用的 CSPRNG 并且您別無選擇,請仔細(xì)檢查您所依賴的庫以及您自己的代碼,以確保您沒有使用從未初始化的內(nèi)存讀取、忽略硬件 RNG 外設(shè)寄存器或錯(cuò)誤的代碼條件,或者在沒有更多可用熵時(shí)無法阻塞。仔細(xì)考慮阻塞不是可行選項(xiàng)的實(shí)時(shí)情況的影響。

  對設(shè)備制造商/物聯(lián)網(wǎng)操作系統(tǒng)而言:

  在SDK中棄用和/或禁用任何直接使用RNG HAL函數(shù)。相反,要包含一個(gè)CSPRNG API,該API使用健壯的、不同的熵源和適當(dāng)?shù)挠布NG處理。Linux內(nèi)核的/dev/urandom實(shí)現(xiàn)可以作為一個(gè)很好的參考。




電子技術(shù)圖片.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。