本文特別關(guān)注小型無(wú)線連接系統(tǒng),這些系統(tǒng)通常由電池供電并運(yùn)行輕量級(jí),低帶寬RF協(xié)議。
明文披露
明文泄露是指機(jī)密(如密鑰或敏感數(shù)據(jù))以“明文形式”或未加密的方式傳遞或存儲(chǔ)。大多數(shù)傳輸漏洞適用于通過(guò)未加密通道傳遞的敏感用戶數(shù)據(jù)(如登錄憑據(jù))。存儲(chǔ)漏洞包括敏感的用戶數(shù)據(jù)和密鑰,這是一次性物聯(lián)網(wǎng)設(shè)備需要特別關(guān)注的領(lǐng)域。我們大多數(shù)人在處理筆記本電腦或智能手機(jī)時(shí)都要小心謹(jǐn)慎,以確保敏感信息已被適當(dāng)刪除。當(dāng)涉及到連接的燈泡時(shí),您是否同樣小心?“垃圾桶攻擊”是指從丟棄的設(shè)備中提取敏感信息(如 Wi-Fi 憑據(jù))。
中間人攻擊
“中間人”(MITM)是一種攻擊,攻擊者秘密中繼并可能改變認(rèn)為自己直接相互通信的雙方之間的通信。MITM 攻擊的漏洞表示身份驗(yàn)證存在弱點(diǎn)。這種類型的漏洞利用通常在調(diào)試期間將新設(shè)備引入網(wǎng)絡(luò)時(shí)執(zhí)行。有多種方法可用于對(duì)設(shè)備進(jìn)行身份驗(yàn)證,以允許其安全地加入網(wǎng)絡(luò)。其中一些需要用戶干預(yù),例如輸入 PIN 碼 (BLE) 或掃描條形碼 (Z-Wave)。其他情況可能會(huì)在沒(méi)有用戶干預(yù)的情況下發(fā)生,例如使用設(shè)備證書(shū)與證書(shū)頒發(fā)機(jī)構(gòu)和/或云服務(wù)結(jié)合使用來(lái)提供身份驗(yàn)證。
MITM 最常見(jiàn)的實(shí)現(xiàn)問(wèn)題是無(wú)法包含身份驗(yàn)證(例如,BLE 中的“Just Works”配對(duì)方法),或者未能使用受信任的第三方(如證書(shū)頒發(fā)機(jī)構(gòu) (CA))正確驗(yàn)證證書(shū)。
暴力攻擊
“暴力”攻擊試圖利用加密系統(tǒng)實(shí)現(xiàn)中的弱點(diǎn)。如果正確實(shí)現(xiàn),破解加密系統(tǒng)所需的工作量可以在理論上估計(jì),并且很容易超過(guò)計(jì)算可能性。但是,實(shí)現(xiàn)中的弱點(diǎn)會(huì)大大減少整體解決方案空間,將不可能的事情變成可行甚至容易的事情。示例包括弱密碼、加密函數(shù)使用不當(dāng)、硬編碼密鑰和熵不足。
弱密碼
由于計(jì)算能力的可及性越來(lái)越高,加上尋找加密弱點(diǎn)的進(jìn)步,許多早期的加密系統(tǒng)已經(jīng)過(guò)時(shí)了。例如,對(duì)具有 40 位密鑰的密碼的暴力攻擊需要大約 1.1 萬(wàn)億次測(cè)試。這聽(tīng)起來(lái)像是一個(gè)很大的數(shù)字,但當(dāng)與當(dāng)今顯卡、FPGA或云服務(wù)的計(jì)算能力相結(jié)合時(shí),它是不夠的。
2017年,比利時(shí)KU魯汶大學(xué)的研究人員能夠破解DST40,這是早期特斯拉Model S密鑰卡中使用的40位密碼。“假冒密鑰卡”攻擊使用連接到Raspberry Pi的RF接收器來(lái)“嗅探”汽車的標(biāo)識(shí)符RF信標(biāo),從汽車請(qǐng)求隨機(jī)挑戰(zhàn)短語(yǔ),并計(jì)算并傳輸對(duì)挑戰(zhàn)的正確響應(yīng),然后可用于解鎖門或啟動(dòng)汽車,所有這些都在大約兩秒鐘內(nèi)完成。系統(tǒng)使用包含所有可能的質(zhì)詢短語(yǔ)的 5.4 TB 數(shù)據(jù)結(jié)構(gòu)來(lái)查找正確的響應(yīng)。破解密碼的蠻力工作,使用相同的Raspberry Pi需要777天,這是使用更強(qiáng)大的計(jì)算資源預(yù)先計(jì)算的。
這種攻擊的對(duì)策是不選擇弱密碼,特別是如果這些密碼已經(jīng)被破解。上面的DST40密碼最初是在2005年由約翰霍普金斯大學(xué)和RSA實(shí)驗(yàn)室的團(tuán)隊(duì)破解的,并在2005年的福特Escape SUV上以類似的方式進(jìn)行了演示。其他已被證明較弱的流行密碼包括 DES、3DES、RC2 和 RC4。對(duì)于 TLS 連接或協(xié)商密碼或密碼套件的任何連接,重要的是不允許弱協(xié)議(如 SSL)或弱密碼套件。
加密功能的不當(dāng)使用
高級(jí)加密標(biāo)準(zhǔn) (AES) 是一種分組密碼,它對(duì)固定大小為 128 位(16 字節(jié))的數(shù)據(jù)元素進(jìn)行操作。加密或解密長(zhǎng)度超過(guò) 16 字節(jié)的數(shù)據(jù)流時(shí),需要執(zhí)行多個(gè) AES 操作。獨(dú)立處理每個(gè)塊(稱為“AES_ECB”或“電子代碼簿”)可以揭示密文數(shù)據(jù)中的一些模式,這對(duì)于機(jī)密性來(lái)說(shuō)是不希望的,因此建議使用NIST批準(zhǔn)的鏈?zhǔn)矫艽a模式,例如AES_CBC(“密碼塊鏈接”)或AES_CTR(“計(jì)數(shù)器”),或者更好的是,使用經(jīng)過(guò)身份驗(yàn)證的加密模式,例如AES_CCM(“CBC-MAC計(jì)數(shù)器”)或AES_GCM(“伽羅瓦/計(jì)數(shù)器模式”), 確保數(shù)據(jù)的機(jī)密性和真實(shí)性。
請(qǐng)注意,其中許多模式需要使用初始化向量 (IV),該向量的安全要求因所選的特定模式而異。保守的指導(dǎo)是使用強(qiáng)隨機(jī)數(shù),例如來(lái)自批準(zhǔn)的加密隨機(jī)數(shù)生成器,并且僅使用IV一次,使其成為“nonce”。IV最常見(jiàn)的錯(cuò)誤是使用硬編碼或常量IV。
硬編碼鍵
“硬編碼”密鑰是指嵌入在源代碼中的密鑰。硬編碼的密鑰很糟糕,因?yàn)樗鼈兒茈y更改(需要重新編譯源代碼),并且它們是最容易竊取的密鑰之一(通過(guò)逆向工程,讀取源代碼或其他方式)。理想情況下,密鑰在需要時(shí)計(jì)算或以加密形式存儲(chǔ)。NIST SP 800-57 建議根據(jù)密鑰的使用方式定期更改密鑰,通常每一到三年或更頻繁地更改一次密鑰。此外,系統(tǒng)還應(yīng)支持一種機(jī)制,以便在密鑰遭到破壞時(shí)吊銷密鑰。
熵不足
密碼學(xué)依賴于具有高熵的隨機(jī)數(shù)的來(lái)源。常見(jiàn)且看似無(wú)害的加密實(shí)現(xiàn)錯(cuò)誤之一是選擇錯(cuò)誤的隨機(jī)數(shù)源。當(dāng)開(kāi)發(fā)人員使用編譯器本機(jī)“rand()”函數(shù)而不是加密強(qiáng)偽隨機(jī)數(shù)生成器 (PRNG) 或使用具有錯(cuò)誤種子值的良好 PRNG(如常量或時(shí)間引用)時(shí),會(huì)發(fā)生這種情況。
圖 2 顯示了使用“rand()”生成的位圖和使用 TRNG(真隨機(jī)數(shù)生成器)生成的位圖。請(qǐng)注意“蘭特()”圖片中的摩爾紋狀圖案。模式不是隨機(jī)的,這表明這對(duì)于熵源來(lái)說(shuō)是一個(gè)糟糕的選擇。
密碼學(xué)的強(qiáng)度取決于隨機(jī)數(shù)中的熵量。隨機(jī)數(shù)源中的任何模式或偏差都會(huì)減少在暴力攻擊期間測(cè)試所需的選項(xiàng)數(shù)。為了便于說(shuō)明,我們假設(shè)嵌入式系統(tǒng)使用“自上次重置以來(lái)的系統(tǒng)時(shí)鐘”作為其“rand()”函數(shù)的種子,而“rand()”函數(shù)用于在系統(tǒng)初始化期間生成密鑰。由于MCU在很大程度上是確定性的,因此該系統(tǒng)將傾向于生成相同的密鑰或一小組密鑰之一。如果系統(tǒng)只生成八個(gè)唯一密鑰,則密鑰的長(zhǎng)度是 128 位還是 256 位并不重要。該密鑰的強(qiáng)度僅為三位,因?yàn)楣粽咧恍璋舜螄L試即可確定密鑰。此外,C標(biāo)準(zhǔn)規(guī)定“rand()”的周期至少為232,這完全在暴力攻擊范圍內(nèi),這意味著如果攻擊者能夠辨別PRNG序列中的當(dāng)前位置,則所有未來(lái)的數(shù)字都將是已知的。
幸運(yùn)的是,許多MCU和無(wú)線SoC都配備了硬件TRNG外設(shè),這些外設(shè)提供了極好的熵源。TRNG是從物理源(如熱能)獲取熵的外圍設(shè)備。NIST 800-90A/B/C 和 AIS-31 規(guī)定了加密的合適要求?;蛘?,如果加密 PRNG 定期播種 TRNG 源,則可以使用該加密 PRNG(例如CTR_DRBG)。
如果MCU沒(méi)有TRNG外設(shè),則可以使用另一個(gè)外設(shè)(例如無(wú)線RF接收器或ADC)作為熵源,但這種方法必須小心。具體來(lái)說(shuō),必須將源描述為熵源,以確定其數(shù)學(xué)屬性是否足以滿足 NIST 要求的加密。NIST標(biāo)準(zhǔn)還要求在原始熵源上添加運(yùn)行狀況檢查,以確保其保持正確的功能,并添加條件函數(shù)(如SHA-256)以消除輸出中的任何偏差。
審核編輯:郭婷
-
無(wú)線連接
+關(guān)注
關(guān)注
2文章
426瀏覽量
35994 -
電池
+關(guān)注
關(guān)注
84文章
10663瀏覽量
130725 -
IOT
+關(guān)注
關(guān)注
187文章
4228瀏覽量
197275
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論