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