確保嵌入式系統(tǒng)的網(wǎng)絡(luò)安全性
嵌入式系統(tǒng)設(shè)計(jì)師經(jīng)常認(rèn)為他們必須在安全性、可靠性和產(chǎn)品上市時(shí)間之間進(jìn)行艱難的平衡。大多數(shù)設(shè)計(jì)師將上市時(shí)間定在第一位,“足夠好的”可靠性放在第二位,之后才考慮安全性問題。
但世界處于不斷變化之中。首先,安全性已經(jīng)成為所有具有網(wǎng)絡(luò)連接性能設(shè)備的必備條件,因此將其列為第三的位置不再能滿足要求。其次,微處理器、操作系統(tǒng)和開發(fā)工具的不斷進(jìn)步使得更高的可靠性設(shè)計(jì)成為可能,也為產(chǎn)品的安全性和更快上市打下了堅(jiān)實(shí)的基礎(chǔ)。
當(dāng)然要實(shí)現(xiàn)這個(gè)目標(biāo)的前提是選擇正確的架構(gòu),該架構(gòu)包括處理器、操作系統(tǒng)和軟件部分在內(nèi),并在一開始就把高可靠性作為設(shè)計(jì)目標(biāo)。一般產(chǎn)品可靠性指標(biāo)可以采用傳統(tǒng)的架構(gòu)和開發(fā)技術(shù)“在測(cè)試中達(dá)到”,但高可靠性的設(shè)計(jì)必須從一開始就加以考慮。
任何理智的工程師都會(huì)采用模塊化的設(shè)計(jì)方式,將應(yīng)用系統(tǒng)劃分成多個(gè)軟件模塊,并通過定義完善的接口來控制這些模塊之間的互操作。但提供最高級(jí)別的可靠性需要采取更多的措施,除了模塊化外,還得具有劃分、隔離和分離的能力。要想獲得最高等級(jí)的可靠性,你需要將模塊放進(jìn)相互間隔離的存儲(chǔ)器區(qū)域。然后需要使用處理器的存儲(chǔ)器管理硬件以及合適的操作系統(tǒng),來控制主機(jī)資源的通信和使用,并加強(qiáng)模塊的分離性。
令人稱奇的是,硬件分離可以使復(fù)雜產(chǎn)品更快地上市。
應(yīng)該
模塊化(這點(diǎn)很顯然),然后分割設(shè)計(jì),使每個(gè)模塊只執(zhí)行單一的功能且與所有其它模塊隔離開來。每個(gè)模塊還可以被看門狗進(jìn)程(另外一個(gè)模塊)重新啟動(dòng),如果該模塊發(fā)生了故障,那么相應(yīng)的看門狗就會(huì)重啟這個(gè)模塊。這樣設(shè)計(jì)的系統(tǒng)肯定具有更高的可靠性。換句話說,用更少的工作量就能滿足系統(tǒng)可靠性要求。
保持模塊的簡(jiǎn)單化。復(fù)雜會(huì)導(dǎo)致脆弱性(涉及安全問題)和不可重復(fù)的行為(涉及開發(fā)和可靠性)。不同種類、多內(nèi)核設(shè)計(jì)將增加系統(tǒng)的復(fù)雜性。應(yīng)該確保你已在單個(gè)處理器中得到所需的處理能力,避免那些復(fù)雜設(shè)計(jì)。
確保你正在使用的處理器和操作系統(tǒng)具有不可或缺的存儲(chǔ)器管理功能。沒有存儲(chǔ)器保護(hù)就想建立非凡、可靠和安全的產(chǎn)品是不可能的。存儲(chǔ)器保護(hù)幫助你對(duì)系統(tǒng)進(jìn)行分割,并實(shí)現(xiàn)“深度防御”,從而保證系統(tǒng)某部分的弱點(diǎn)不會(huì)級(jí)聯(lián)起來影響其它部分。
置所有東西于內(nèi)核之外。內(nèi)核是唯一一個(gè)系統(tǒng)中其它部分都要依賴的部件,因此它必須異常穩(wěn)固。在內(nèi)核空間運(yùn)行任何對(duì)象只會(huì)降低可靠性,并帶來安全性問題。
選擇能夠符合公認(rèn)的安全和可靠性標(biāo)準(zhǔn)的內(nèi)核架構(gòu)。任何人都可以聲稱擁有可靠安全的操作系統(tǒng),但很少有人獨(dú)立地驗(yàn)證過他們聲明的內(nèi)容。在安全領(lǐng)域,需要選擇一個(gè)基于由國家安全機(jī)構(gòu)開發(fā)的獨(dú)立內(nèi)核保護(hù)機(jī)制的架構(gòu)。
使用強(qiáng)制執(zhí)行高安全編碼標(biāo)準(zhǔn)的工具。Misra C是汽車工業(yè)軟件可靠性協(xié)會(huì)(MISRA)為汽車工業(yè)開發(fā)的一個(gè)安全的C子集,其中許多代碼非??煽亢桶踩?。因此可在內(nèi)部使用Misra標(biāo)準(zhǔn),并選擇用來強(qiáng)制執(zhí)行這些標(biāo)準(zhǔn)的工具。
不應(yīng)該
低估可靠性的價(jià)值??煽啃圆粌H能使產(chǎn)品更受歡迎,更有利潤(rùn),還能有效減少開發(fā)難題。
在產(chǎn)品功能完善后才開始測(cè)試和修復(fù)缺陷。你的目標(biāo)應(yīng)該是:當(dāng)產(chǎn)品功能完善時(shí),你就已經(jīng)能交貨了。只有在設(shè)計(jì)一開始就考慮了可靠性(使用可靠性高的內(nèi)核),并在開發(fā)過程中使用存儲(chǔ)器漏洞檢測(cè)、實(shí)時(shí)錯(cuò)誤檢查以及硬件保護(hù)措施,盡早發(fā)現(xiàn)缺陷來保持內(nèi)核的可靠性,才能使你的產(chǎn)品更快地上市。如果工程師在沒有缺陷的產(chǎn)品中增加一個(gè)缺陷(缺陷是工程師增加進(jìn)去的,而不是自然產(chǎn)生的),這時(shí)候你要能夠快速找到此缺陷,并立即完成修復(fù)。
認(rèn)為你的網(wǎng)絡(luò)產(chǎn)品不會(huì)成為攻擊目標(biāo)。該產(chǎn)品可能不包含有價(jià)值的數(shù)據(jù),但只要把它放到網(wǎng)上去,它就可能泄漏產(chǎn)品以外的信息。隨著產(chǎn)品的逐漸成熟,它所擁有的信息可能就會(huì)值得攻擊。
低估入侵技術(shù)。要知道入侵技術(shù)也在突飛猛進(jìn)。隨著技術(shù)日趨先進(jìn),往日令人不感興趣的目標(biāo)(比如你的產(chǎn)品)也會(huì)變得值得一擊。
認(rèn)為可以日后再為安全或可靠性重新設(shè)計(jì)架構(gòu)。當(dāng)然,安全性非常高的系統(tǒng)(例如飛機(jī))需要采用面向可靠性和安全性的架構(gòu),因而需要嚴(yán)格苛刻和代價(jià)高昂的開發(fā)過程。但任何功能很強(qiáng)的產(chǎn)品,包括消費(fèi)類和工業(yè)控制類產(chǎn)品都會(huì)從相同的底層技術(shù)中獲益,盡管其開發(fā)過程要更加經(jīng)濟(jì)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論