天天看點

嵌入式開發:保護嵌入式軟體的5個步驟

作者:粵嵌教育

  在嵌入式開發中,随着越來越多的功能嵌入到越來越小的裝置尺寸中,安全性問題也随之增加。通常,新功能會排擠基本的安全性問題,因為供應商将越來越多的功能打包到軟體包中,而很少進行整體系統工程設計,并且隻進行粗略的安全性測試。

  嵌入式環境已經發展成熟,安全性必須像20世紀90年代PC發展時一樣,成為重中之重。随着物聯網(IoT)的爆炸式增長,毫無疑問,任何安全漏洞都會被利用。物聯網裝置使非常有用的商業案例成為現實。同時,它們也帶來了失控的風險。今天的嵌入式系統要強大得多,也脆弱得多。如果嵌入式系統要避免20世紀90年代的陷阱,在它們成為新一代黑客的切入點之前,協定和方法必須到位。

  IT标準組織,如IT軟體品質聯盟(CISQ)、MITRE公共弱點列舉(CWE)、ISO 9000和ISO 25000,釋出指導方針和軟體品質标準。CISQ公布了安全性、可靠性、性能效率和可維護性的自動化品質措施。這些度量提供了一些特定的屬性,這些屬性應該被用作嵌入式系統可能需要完成其業務/使命功能的證據。在檢查嵌入式系統的狀态時,很明顯安全性應該在前面進行設計。

  實施安全政策

  當考慮安全性時,大多數嵌入式開發工程師會立即關注保護資料的問題。系統不僅應該保護資料(在應用程式中),還應該保護接口不被濫用。這五個步驟代表了開發嵌入式安全政策的合理起點。

  l 中沒有未經測試的程式執行空間——除了執行功能所必需的程式之外,任何程式都不應該存在于可以執行它們的地方

  l 資料必須是私有的——程式不應該無意中向彼此或網絡暴露資訊

  l 确認兩端的資料–所有資訊必須能夠驗證,并且必須在預期範圍内,超出範圍的資訊将被拒絕

  l 安全裝置——裝置應該能夠在啟動時驗證其完整性;裝置應該在發送或接收資料之前進行自我驗證

  l 遵循标準——看看IT軟體品質聯盟(CISQ)的品質特征測量,這些測量可以自動進行持續的安全性和軟體品質分析和緩解

  l 采取行動——如果出現異常,程式必須在處理問題的同時繼續運作

  

  執行空間中沒有未經測試的程式

  在嵌入式開發中,随着嵌入式供應商努力使他們的産品與衆不同,他們将程式添加到他們的标準發行版中。其中許多都不會被使用,并且存在潛在的安全風險。這些程式必須被删除,或者更好的是,永遠不要安裝。要求一個作業系統發行版,裡面除了作業系統工作和手動安裝程式的基本要素之外,沒有任何東西。極簡政策對代碼來說是最好的。如果供應商不提供剝離的發行版,作業系統可以限制對這些程式和敏感API的通路權限,或者可以删除未使用的代碼。

  更好的方法是為自定義和第三方應用程式提供一個沙箱來執行,然後通過API推送通信,API提供了必要的隔離。

  硬體本身應該是“幹淨”的,沒有安裝任何程式。關鍵是裝置上的任何程式都是由開發人員安裝的。每一段代碼必須來自一個值得信賴的嵌入式開發人員,不能在安裝前修改。

  資料必須是私有的

  程式不應該無意中向彼此或網絡公開資訊。相信一個裝置在網際網路上不會被黑客攻擊是很誘人的,但這根本不是事實。随着程式中子產品的增長,資料工件也随之增長,資料也變得越來越暴露。

  嵌入式裝置收集敏感資料(如醫療保健、企業資料),資料流量很有可能在到達目的地之前被重新路由和修改。應該有防止複制和粘貼的檢查,以及在裝置落入壞人之手時遠端擦除資料的能力。

  面臨期限壓力的嵌入式開發人員傾向于從自己和同僚那裡借用代碼和例程。任何安全缺陷都會被傳播。第一次就正确地設計和建構代碼。

  确認兩端的資料

  所有資訊都必須在預期範圍内得到驗證,并被清楚地識别。在兩端使用相同的例程來驗證内容是至關重要的。接口應該對輸入的内容敏感,并且能夠在資料不正确時采取行動。當一個裝置從一個“可信”的裝置接收到壞資料時,這種入侵很可能是黑客行為。對于直接硬體接口也是如此。

  像隐私一樣,所有與外部世界的聯系都需要被視為可疑。應該驗證接口并檢查資料。

  

嵌入式開發:保護嵌入式軟體的5個步驟

  安全裝置

  裝置應該能夠在啟動時驗證其完整性,并且應該在發送或接收資料之前進行自我驗證。知道誰在發送資料是很重要的,一個簡單的方法是替換未經驗證的裝置。

  啟動時,嵌入式開發裝置必須使用加密生成的數字簽名。資源受限的裝置可以使用獨特的硬體特征而不是計算密集型算法來生成用于認證的數字簽名。未通過檢查的裝置應該有計劃的響應。預設操作可能不适合任何給定的裝置。

  每個裝置都應該有一個密鑰,并且每個裝置都應該知道其類型可接受的密鑰。當接收到未識别的密鑰時,應該計劃響應,而不是簡單地忽略。如果資訊的接收對裝置的功能至關重要,則不止一次接收錯誤的ID應被視為攻擊。針對此故障進行規劃至關重要。

  遵循标準

  CISQ釋出了一項安全标準,旨在識别IT應用軟體中的25個已知安全弱點,由MITRE在常見弱點枚舉(CWE)中維護。cwe是一組可衡量的項目,可用作彈性、安全性和安全性的證據。CAST等代碼分析器可以從複雜的環境中挑選出這些。開發人員應該經常接觸這些重要的标準。

  采取行動

  如果出現異常,程式必須在處理問題的同時繼續運作。嵌入式開發人員通常關注收到好資料時會發生什麼,但錯誤處理通常很簡單。開發人員教育訓練假設壞資料是程式設計的産物,而不是黑客,這是需要審查的政策。對所有關鍵元件進行保證案例測試。保證案例支援實作的疊代審查和修訂,直到系統顯示正确的行為。

  在某些情況下,裝置可能有辦法通知另一個裝置它受到了攻擊。在其他情況下,它可能會簡單地選擇忽略或避開威脅。無論哪種情況,溝通都是避免黑客攻擊的有力武器。

  保護嵌入式裝置

  嵌入式安全性正成為嵌入式裝置的一項關鍵需求。通過遵循這些建議,你的嵌入式開發解決方案可以專注于解決其設計要解決的問題,而不會為新一代黑客打開閘門。

繼續閱讀