本文特別關(guān)注通常由電池供電并運(yùn)行輕量級(jí)、低帶寬射頻協(xié)議的小型無(wú)線連接系統(tǒng)。
明文披露
明文披露是指以“明文”或未加密的方式交付或存儲(chǔ)的秘密,例如密鑰或敏感數(shù)據(jù)。大多數(shù)傳輸漏洞適用于通過(guò)未加密通道傳遞的敏感用戶數(shù)據(jù),例如登錄憑據(jù)。存儲(chǔ)漏洞包括敏感的用戶數(shù)據(jù)和密鑰,這是一次性物聯(lián)網(wǎng)設(shè)備需要特別關(guān)注的領(lǐng)域。我們大多數(shù)人在處理筆記本電腦或智能手機(jī)時(shí)都會(huì)小心謹(jǐn)慎,以確保敏感信息已被適當(dāng)刪除。在連接燈泡時(shí),您是否同樣小心?“垃圾箱攻擊”是指從廢棄設(shè)備中提取敏感信息(例如 Wi-Fi 憑據(jù))。
中間人攻擊
“中間人” (MITM) 是一種攻擊,攻擊者在其中秘密中繼并可能改變認(rèn)為他們直接相互通信的兩方之間的通信。MITM 攻擊的漏洞表明身份驗(yàn)證存在弱點(diǎn)。在將新設(shè)備引入網(wǎng)絡(luò)時(shí),通常會(huì)在調(diào)試期間執(zhí)行這種類型的漏洞利用。有多種方法可用于驗(yàn)證設(shè)備以使其安全地加入網(wǎng)絡(luò)。其中一些需要用戶干預(yù),例如輸入 PIN 碼 (BLE) 或掃描條形碼 (Z-Wave)。其他的可以在沒(méi)有用戶干預(yù)的情況下發(fā)生,例如使用設(shè)備證書(shū)與證書(shū)頒發(fā)機(jī)構(gòu)和/或云服務(wù)相結(jié)合來(lái)提供身份驗(yàn)證。
MITM 最常見(jiàn)的實(shí)施問(wèn)題要么是未能包含身份驗(yàn)證(例如,BLE 中的“Just Works”配對(duì)方法),要么是未能使用受信任的第三方(例如證書(shū)頒發(fā)機(jī)構(gòu) (CA))正確驗(yàn)證證書(shū)。
蠻力攻擊
“蠻力”攻擊試圖利用密碼系統(tǒng)實(shí)施中的弱點(diǎn)。如果實(shí)施得當(dāng),破解密碼系統(tǒng)所需的努力可以在理論上進(jìn)行估計(jì),并且很容易超過(guò)計(jì)算的可能性。但是,實(shí)施中的弱點(diǎn)會(huì)大大減少整體解決方案的空間,將不可能的事情變成可行甚至容易的事情。示例包括弱密碼、加密功能的不當(dāng)使用、硬編碼密鑰和熵不足。
弱密碼
由于計(jì)算能力的提高以及發(fā)現(xiàn)加密弱點(diǎn)的進(jìn)步,許多早期的密碼系統(tǒng)已經(jīng)過(guò)時(shí)。例如,使用 40 位密鑰對(duì)密碼進(jìn)行暴力攻擊需要約 1.1 萬(wàn)億次測(cè)試。這聽(tīng)起來(lái)可能是一個(gè)很高的數(shù)字,但如果再加上當(dāng)今顯卡、FPGA 或云服務(wù)的計(jì)算能力,就顯得不夠了。
2017 年,比利時(shí)魯汶大學(xué)的研究人員成功破解了 DST40,這是早期特斯拉 Model S 密鑰卡中使用的 40 位密碼?!凹倜?fob”攻擊使用連接到 Raspberry Pi 的 RF 接收器“嗅探”汽車的標(biāo)識(shí)符 RF 信標(biāo),從汽車請(qǐng)求隨機(jī)挑戰(zhàn)短語(yǔ),計(jì)算并傳輸對(duì)挑戰(zhàn)的正確響應(yīng),然后可以使用解鎖車門(mén)或啟動(dòng)汽車,只需大約兩秒鐘。該系統(tǒng)使用包含所有可能的挑戰(zhàn)短語(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)室的一個(gè)團(tuán)隊(duì)破解,并在 2005 年的福特 Escape SUV 上以類似的方式進(jìn)行了演示。其他已被證明較弱的流行密碼包括 DES、3DES、RC2 和 RC4。在 TLS 連接或協(xié)商密碼或密碼套件的任何連接的情況下,不允許使用弱協(xié)議(例如 SSL)或弱密碼套件非常重要。
密碼學(xué)功能的不當(dāng)使用
高級(jí)加密標(biāo)準(zhǔn) (AES) 是一種分組密碼,它對(duì)固定大小為 128 位(16 字節(jié))的數(shù)據(jù)元素進(jìn)行操作。在對(duì)長(zhǎng)度超過(guò) 16 字節(jié)的數(shù)據(jù)流進(jìn)行加密或解密時(shí),需要進(jìn)行多次 AES 操作。獨(dú)立處理每個(gè)塊(稱為“AES_ECB”或“電子密碼本”)可以揭示密文數(shù)據(jù)中的某些模式,這對(duì)于機(jī)密性來(lái)說(shuō)是不可取的,因此建議使用 NIST 批準(zhǔn)的鏈?zhǔn)矫艽a模式,例如 AES_CBC(“Cipher Block Chaining”)或 AES_CTR(“計(jì)數(shù)器”),或者更好的是,使用經(jīng)過(guò)身份驗(yàn)證的加密模式,例如 AES_CCM(“帶有 CBC-MAC 的計(jì)數(shù)器”)或 AES_GCM(“Galois/計(jì)數(shù)器模式”),這可以確保機(jī)密性和真實(shí)性的數(shù)據(jù)。
請(qǐng)注意,其中許多模式都需要使用初始化向量 (IV),其安全要求取決于所選的特定模式。保守的指導(dǎo)是使用強(qiáng)隨機(jī)數(shù),例如來(lái)自經(jīng)批準(zhǔn)的密碼隨機(jī)數(shù)生成器,并且只使用一次 IV,使其成為“隨機(jī)數(shù)”。IV 最常見(jiàn)的錯(cuò)誤是使用硬編碼或常量 IV。
硬編碼鍵
“硬編碼”密鑰是指嵌入在源代碼中的密鑰。硬編碼密鑰不好,因?yàn)樗鼈冸y以更改(需要重新編譯源代碼),并且它們是最容易竊取的密鑰之一(通過(guò)逆向工程、閱讀源代碼或其他方式)。理想情況下,密鑰在需要時(shí)計(jì)算或以加密形式存儲(chǔ)。NIST SP 800-57 建議根據(jù)密鑰的使用方式定期更改密鑰,通常每 1 到 3 年或更頻繁。此外,系統(tǒng)還應(yīng)該支持一種機(jī)制,用于在密鑰被泄露的情況下撤銷密鑰。
熵不足
密碼學(xué)依賴于具有高熵的隨機(jī)數(shù)源。一個(gè)常見(jiàn)且看似無(wú)害的密碼學(xué)實(shí)現(xiàn)錯(cuò)誤之一是選擇了錯(cuò)誤的隨機(jī)數(shù)源。當(dāng)開(kāi)發(fā)人員使用編譯器原生的“rand()”函數(shù)而不是加密的強(qiáng)偽隨機(jī)數(shù)生成器 (PRNG) 或者他們使用具有錯(cuò)誤種子值(例如常量或時(shí)間參考)的良好 PRNG 時(shí),就會(huì)發(fā)生這種情況。
圖 2 顯示了使用“rand()”生成的位圖和使用 TRNG(真隨機(jī)數(shù)生成器)生成的位圖。請(qǐng)注意“rand()”圖片中的莫爾狀圖案。模式不是隨機(jī)的,這表明這是熵源的錯(cuò)誤選擇。
密碼學(xué)的強(qiáng)度取決于隨機(jī)數(shù)中的熵量。隨機(jī)數(shù)源中的任何模式或偏差都會(huì)減少暴力攻擊期間測(cè)試所需的選項(xiàng)數(shù)量。為了說(shuō)明,我們假設(shè)嵌入式系統(tǒng)使用“自上次復(fù)位后的系統(tǒng)時(shí)鐘”作為其“rand()”函數(shù)的種子,而“rand()”函數(shù)用于在系統(tǒng)初始化期間生成密鑰。由于 MCU 在很大程度上是確定性的,因此該系統(tǒng)將傾向于生成相同的密鑰或一小組密鑰中的一個(gè)。如果系統(tǒng)只生成八個(gè)唯一密鑰,那么密鑰是 128 位還是 256 位長(zhǎng)都沒(méi)有關(guān)系。該密鑰的強(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è),它們提供了極好的熵源。TRNG 是從物理源(例如熱能)中獲取熵的外圍設(shè)備。NIST 800-90A/B/C 和 AIS-31 規(guī)定了密碼學(xué)的合適要求。或者,如果使用 TRNG 源定期播種,則可以使用加密 PRNG(例如 CTR_DRBG)。
如果 MCU 沒(méi)有 TRNG 外設(shè),則可以使用其他外設(shè)(例如無(wú)線 RF 接收器或 ADC)作為熵源,但必須小心使用這種方法。具體來(lái)說(shuō),必須將源表征為熵源,以確定其數(shù)學(xué)屬性是否足以滿足 NIST 要求的密碼學(xué)要求。NIST 標(biāo)準(zhǔn)還要求對(duì)原始熵源添加健康檢查,以確保其保持適當(dāng)?shù)墓δ埽⑻砑诱{(diào)節(jié)功能(例如 SHA-256)以消除輸出中的任何偏差。
審核編輯:郭婷
-
mcu
+關(guān)注
關(guān)注
147文章
18411瀏覽量
380182 -
接收器
+關(guān)注
關(guān)注
15文章
2598瀏覽量
75711 -
soc
+關(guān)注
關(guān)注
38文章
4481瀏覽量
226691
發(fā)布評(píng)論請(qǐng)先 登錄
學(xué)習(xí)物聯(lián)網(wǎng)可以做什么工作?
電商API常見(jiàn)錯(cuò)誤排查指南:避免集成陷阱

評(píng)論