visited 13 states (5.77%)
Create your own visited map of The World or Triposo world travel guide for Android

2007-02-27

確保嵌入式系統的網路安全性

嵌入式系統設計師經常認為他們必須在安全性、可靠性和產品上市時間之間進行艱難的平衡。大多數設計師將上市時間做為首要考量,『足夠好的』可靠性放在第二位,之後才考慮安全性問題。

但現實世界正不斷變化。首先,安全性已經成為所有具有網路連接性能設備的必備條件,因此將其列為第三已不再能滿足要求。其次,微處理器、作業系統和開發工具的不斷進步使得更高的可靠性設計成為可能,也為產品的安全性和更快上市打下了堅實的基礎。

當然要實現這個目標的前提是選擇正確的架構,該架構包括處理器、作業系統和軟體部份在內,並在一開始就把高可靠性作為設計目標。一般產品可靠性指標可以採用傳統的架構和開發技術『在測試中達到』,但高可靠性的設計必須從一開始就加以考慮。

任何理智的工程師都會採用模組化的設計方式,將應用系統劃分成多個軟體模組,並透過定義完善的介面來控制這些模組之 間的互通作業。但提供最高級別的可靠性必須採取更多的措施,除了模組化外,還得具有劃分、隔離和分離的能力。要想獲得最高等級的可靠性,你必須將模組放進 相互間隔離的記憶體區域。然後必須使用處理器的記憶體管理硬體以及合適的作業系統,來控制主機資源的通訊和使用,並加強模組的分離性。

令人稱奇的是,硬體分離可以使複雜產品更快地上市。

建議的方法

模組化(這點很顯然),然後分割設計,使每個模組只執行單一的功能且與所有其它模組隔離開來。每個模組還可以被看門 狗程序(另外一個模組)重新啟動,如果該模組產生了故障,那麼相應的看門狗就會重啟這個模組。這樣設計系統肯定具有更高的可靠性。換句話說,用更少的工作 量就能滿足系統可靠性要求。

保持模組的簡單化。複雜會導致脆弱性(涉及安全問題)和不可重覆的行為(涉及開發和可靠性)。不同種類、多核心設計將增加系統的複雜性。應該確保你已在單個處理器中得到所需的處理能力,避免那些複雜設計。

確保你正使用的處理器和作業系統具有不可或缺的記憶體管理功能。沒有記憶體保護就想設立非凡、可靠和安全的產品是不可能的。記憶體保護幫助你對系統進行分割,並實現『深度防禦』,因而保證系統某部份的弱點不會級聯起來影響其它部份。


將所有東西置於核心之外。核心是唯一一個系統中其它部份都要依賴的元件,因此它必須異常穩固。在核心空間執行任何對象只會降低可靠性,並帶來安全性問題。

選擇能夠符合公認的安全和可靠性標準的核心架構。任何人都可以聲稱擁有可靠安全的作業系統,但很少有人獨立地驗證過他們聲明的內容。就安全領域而言,必須選擇一個以國家安全機構開發出來的獨立核心保護機制架構。

使用強制執行高安全編碼標準的工具。Misra C是汽車產業軟體可靠性協會(MISRA)為汽車產業開發的一個安全的C子集,其中許多程式碼非常可靠和安全。因此可在內部使用Misra標準,並選擇用來強制執行這些標準的工具。

不建議的方法

低估可靠性的價值。可靠性不僅能使產品更受歡迎,更有利潤,還能有效減少開發難題。

在產品功能完善後才開始測試和修復缺陷。你的目標應該是:當產品功能完善時,就已經能交貨了。只有在設計一開始就考 慮到可靠性(使用可靠性高的核心),並在開發過程中使用記憶體漏洞檢測、即時錯誤檢查以及硬體保護措施,儘早發現缺陷來保持核心的可靠性,才能使你的產品 更快地上市。如果工程師在沒有缺陷的產品中增加一個缺陷(缺陷是工程師增加進去的,而不是自然產生的),這時候你要能夠快速找到此缺陷,並立即完成修復。

認為你的網路產品不會成為攻擊目標。該產品可能不包含有價值的數據,但只要把它放到網上去,它就可能洩漏產品以外的資訊。隨著產品的逐漸成熟,它所擁有的資訊可能就會值得攻擊。

低估入侵技術。要知道入侵技術也在突飛猛進。隨著技術日趨先進,往日令人不感興趣的目標(比如你的產品)也會提升其價值。

認為可以日後再為安全或可靠性重新設計架構。當然,安全性非常高的系統(例如飛機)必須採用針對可靠性和安全性的架構,因而需要嚴格苛刻和代價高昂的開發過程。但任何功能很強的產品,包括消費性和工業控制類產品都會從相同的底層技術中獲益,儘管其開發過程要更加經濟。

作者:Dave Kleidermacher

工程技術副總裁

Green Hills軟體公司

Rick Gentile

高階應用工程師

ADI公司

這些也是同標籤文章 :

沒有留言: