在嵌入式開發中,隨著越來越多的功能嵌入到越來越小的設備尺寸中,安全性問題也隨之增加。通常,新功能會排擠基本的安全性問題,因為供應商將越來越多的功能打包到軟件包中,而很少進行整體系統工程設計,并且只進行粗略的安全性測試。
嵌入式環境已經發展成熟,安全性必須像20世紀90年代PC發展時一樣,成為重中之重。隨著物聯網(IoT)的爆炸式增長,毫無疑問,任何安全漏洞都會被利用。物聯網設備使非常有用的商業案例成為現實。同時,它們也帶來了失控的風險。今天的嵌入式系統要強大得多,也脆弱得多。如果嵌入式系統要避免20世紀90年代的陷阱,在它們成為新一代黑客的切入點之前,協議和方法必須到位。
IT標準組織,如IT軟件質量聯盟(CISQ)、MITRE公共弱點列舉(CWE)、ISO9000和ISO25000,發布指導方針和軟件質量標準。CISQ公布了安全性、可靠性、性能效率和可維護性的自動化質量措施。這些度量提供了一些特定的屬性,這些屬性應該被用作嵌入式系統可能需要完成其業務/使命功能的證據。在檢查嵌入式系統的狀態時,很明顯安全性應該在前面進行設計。
實施安全策略
當考慮安全性時,大多數嵌入式開發工程師會立即關注保護數據的問題。系統不僅應該保護數據(在應用程序中),還應該保護接口不被濫用。這五個步驟代表了開發嵌入式安全策略的合理起點。
l中沒有未經測試的程序執行空間——除了執行功能所必需的程序之外,任何程序都不應該存在于可以執行它們的地方
l數據必須是私有的——程序不應該無意中向彼此或網絡暴露信息
l確認兩端的數據–所有信息必須能夠驗證,并且必須在預期范圍內,超出范圍的信息將被拒絕
l安全設備——設備應該能夠在啟動時驗證其完整性;設備應該在發送或接收數據之前進行自我驗證
l遵循標準——看看IT軟件質量聯盟(CISQ)的質量特征測量,這些測量可以自動進行持續的安全性和軟件質量分析和緩解
l采取行動——如果出現異常,程序必須在處理問題的同時繼續運行
執行空間中沒有未經測試的程序
在嵌入式開發中,隨著嵌入式供應商努力使他們的產品與眾不同,他們將程序添加到他們的標準發行版中。其中許多都不會被使用,并且存在潛在的安全風險。這些程序必須被刪除,或者更好的是,永遠不要安裝。要求一個操作系統發行版,里面除了操作系統工作和手動安裝程序的基本要素之外,沒有任何東西。極簡策略對代碼來說是最好的。如果供應商不提供剝離的發行版,操作系統可以限制對這些程序和敏感API的訪問權限,或者可以刪除未使用的代碼。
更好的方法是為自定義和第三方應用程序提供一個沙箱來執行,然后通過API推送通信,API提供了必要的隔離。
硬件本身應該是“干凈”的,沒有安裝任何程序。關鍵是設備上的任何程序都是由開發人員安裝的。每一段代碼必須來自一個值得信賴的嵌入式開發人員,不能在安裝前修改。
數據必須是私有的
程序不應該無意中向彼此或網絡公開信息。相信一個設備在互聯網上不會被黑客攻擊是很誘人的,但這根本不是事實。隨著程序中模塊的增長,數據工件也隨之增長,數據也變得越來越暴露。
嵌入式設備收集敏感數據(如醫療保健、企業數據),數據流量很有可能在到達目的地之前被重新路由和修改。應該有防止復制和粘貼的檢查,以及在設備落入壞人之手時遠程擦除數據的能力。
面臨期限壓力的嵌入式開發人員傾向于從自己和同事那里借用代碼和例程。任何安全缺陷都會被傳播。第一次就正確地設計和構建代碼。
確認兩端的數據
所有信息都必須在預期范圍內得到驗證,并被清楚地識別。在兩端使用相同的例程來驗證內容是至關重要的。接口應該對輸入的內容敏感,并且能夠在數據不正確時采取行動。當一個設備從一個“可信”的設備接收到壞數據時,這種入侵很可能是黑客行為。對于直接硬件接口也是如此。
像隱私一樣,所有與外部世界的聯系都需要被視為可疑。應該驗證接口并檢查數據。
安全設備
設備應該能夠在啟動時驗證其完整性,并且應該在發送或接收數據之前進行自我驗證。知道誰在發送數據是很重要的,一個簡單的方法是替換未經驗證的設備。
啟動時,嵌入式開發設備必須使用加密生成的數字簽名。資源受限的設備可以使用獨特的硬件特征而不是計算密集型算法來生成用于認證的數字簽名。未通過檢查的設備應該有計劃的響應。默認操作可能不適合任何給定的設備。
每個設備都應該有一個密鑰,并且每個設備都應該知道其類型可接受的密鑰。當接收到未識別的密鑰時,應該計劃響應,而不是簡單地忽略。如果信息的接收對設備的功能至關重要,則不止一次接收錯誤的ID應被視為攻擊。針對此故障進行規劃至關重要。
遵循標準
CISQ發布了一項安全標準,旨在識別IT應用軟件中的25個已知安全弱點,由MITRE在常見弱點枚舉(CWE)中維護。cwe是一組可衡量的項目,可用作彈性、安全性和安全性的證據。CAST等代碼分析器可以從復雜的環境中挑選出這些。開發人員應該經常接觸這些重要的標準。
采取行動
如果出現異常,程序必須在處理問題的同時繼續運行。嵌入式開發人員通常關注收到好數據時會發生什么,但錯誤處理通常很簡單。開發人員培訓假設壞數據是編程的產物,而不是黑客,這是需要審查的政策。對所有關鍵組件進行保證案例測試。保證案例支持實現的迭代審查和修訂,直到系統顯示正確的行為。
在某些情況下,設備可能有辦法通知另一個設備它受到了攻擊。在其他情況下,它可能會簡單地選擇忽略或避開威脅。無論哪種情況,溝通都是避免黑客攻擊的有力武器。
保護嵌入式設備
嵌入式安全性正成為嵌入式設備的一項關鍵需求。通過遵循這些建議,你的嵌入式開發解決方案可以專注于解決其設計要解決的問題,而不會為新一代黑客打開閘門。