嵌入式系統在我們的日常生活中越來越豐富。它們存在于汽車、機器、建筑以及任何可以連接到互聯網的設備中。事實上,隨著物聯網(IoT)的發展,全球估計有100億臺聯網設備,其中包括從智能家居設備到聯網醫療設備的各種設備。隨著互聯設備的快速增長,圍繞這些設備的安全性也有許多擔憂。
安全性正在成為嵌入式社區中最重要的話題之一。一般來說,嵌入式開發人員必須了解三個要點,以便正確保護他們的系統。這些是:
1.黑客可能想要控制他們系統中的哪些類型的數據和資產?
2.黑客危害系統的攻擊媒介有哪些類型?
3.有哪些類型的功能可以幫助開發人員保護他們的系統免受黑客攻擊?
入侵者可能在尋找數據,如個人數據或公司知識產權(IP)。此外,他們可能會攻擊設備本身。攻擊媒介的類型因系統而異。但是,攻擊媒介主要有三類:
基于軟件的攻擊
基于網絡的攻擊
旁道攻擊
嵌入式開發人員還可以遵循一些最佳實踐來幫助系統從一開始就保持安全。第一步是始終跟上當前安全實踐的行業標準和趨勢。當前積極發布嵌入式安全信息的組織包括IEEE、開放Web應用程序安全項目(OWASP)和國家標準與技術研究所(NIST)。此外,在下面,我們將介紹一些當前普遍接受的最佳實踐。
編碼指南
遵循編碼指南來開發更安全、可靠的代碼是一個很好的起點。許多嵌入式系統都是用C/C++開發的。專門為更安全的系統開發的指南的例子有SEICERTC、MITRECWE和MISRAC。
安全啟動
使用安全引導也是常見的行業慣例。安全引導是一種在系統啟動時保護系統免受惡意軟件攻擊的功能。在啟動過程中,處理器將開始執行代碼來配置設備、內存和外設。安全引導通過檢查固件中的簽名來確保正在執行的代碼是正確的代碼。
禁用不必要的功能
在嵌入式開發中,嵌入式系統可以有多種方式與設備通信。這可以通過以太網端口、COM端口、USB端口、串行端口和各種其他通信端口,用于產品開發期間的測試和調試。關閉和禁用這些訪問方法是保護系統的重要的第一步。這可能涉及到在產品開發完成后,減少用于調試的頭,或者消除通信通道,如Telnet和文件傳輸協議。
智能內存管理
對于黑客來說,嵌入式系統的內存可能是一個很有吸引力的攻擊媒介。它們會使內存緩沖區溢出,從而導致系統將數據寫入相鄰的內存位置。因此,系統可能會覆蓋可執行代碼,導致系統行為不穩定、不可預測或完全崩潰。緩沖區溢出攻擊還可用于故意將惡意代碼寫入包含可執行代碼的內存區域,從而使攻擊者能夠獲得對系統的部分控制權。盡可能將內存設為只讀是最佳實踐。此外,對存儲器系統進行分區使得關鍵部分彼此隔離可以幫助保護系統。
安全通信渠道
許多嵌入式系統在開發后都會有一些訪問點。這可以用于固件更新或操作期間的數據通信(任何物聯網設備都需要接入互聯網)。通過數據加密來保護所有通信渠道是非常重要的。這包括通信、固件更新、憑證以及設備可能存儲或傳輸的任何數據。軟件混淆也是一種幫助嵌入式系統更加安全的方法。軟件混淆包括編寫人類難以理解的代碼。這樣做是為了隱藏代碼的真實目的,并使逆向工程更加困難。這可以由嵌入式開發人員手動完成,也可以通過自動化工具來完成。
生命周期支持
新的黑客和攻擊方法不斷被發現。因此,對于公司來說,保持產品最新以抵御最新的攻擊媒介是非常重要的。這可以通過固件更新和補丁來實現,使公司能夠保護其產品免受最新威脅的侵害。此外,在產品開發期間,有必要進行研究并了解產品整個生命周期所需的支持,以及完整的安全評估,以了解攻擊者可能如何攻擊產品、成功的可能性以及攻擊者可能想要的資產。
總的來說,嵌入式系統的開發者面臨著許多挑戰。他們不僅必須設計、測試和制造系統,還必須確保安全可靠地完成。此外,隨著嵌入式系統的數量呈指數增長,它們越來越多地成為黑客的目標。威脅可能以各種各樣的方式出現,所有這些都必須在開發過程中加以考慮。嵌入式開發從來沒有像現在這樣具有挑戰性和重要性。