通常情況下,正在設(shè)計(jì)的新嵌入式系統(tǒng)非??赡苁盏絹?lái)自黑客的惡意攻擊。當(dāng)然,如何避免這種情況的發(fā)生,都取決于你打算如何施加保護(hù)。有些黑客只是想導(dǎo)致你的系統(tǒng)崩潰,而另一些人則想借用它作為惡意平臺(tái)。還有一些人想要了解你設(shè)計(jì)的嵌入式內(nèi)部構(gòu)造是什么,畢竟這些算法值很多錢。
在過(guò)去,處理器只是負(fù)責(zé)開機(jī)運(yùn)行,而安全性是在程序或操作系統(tǒng)中實(shí)現(xiàn)的東西。它取決于你信任誰(shuí)以及他們的工作做得怎么樣。在最初階段,微控制器和微處理器采取了類似的做法,如添加內(nèi)存保護(hù),允許應(yīng)用程序放置到沙盒中等等,這都是最初的安全保護(hù)措施。
現(xiàn)在,虛擬化進(jìn)一步拓展了這一特點(diǎn),使高階系統(tǒng)能夠虛擬化整個(gè)系統(tǒng)。要保護(hù)沙箱工作,我們假設(shè)基礎(chǔ)軟件和硬件不能被影響。當(dāng)然,這種假設(shè)并不總是必要的,例如大多數(shù)硬件具有某種形式的軟件參與,像是硬盤驅(qū)動(dòng)器上的控制器。有人可能會(huì)想到,在硬盤驅(qū)動(dòng)器上的數(shù)據(jù)會(huì)被保存,這對(duì)于保護(hù)數(shù)據(jù)本身而言可能會(huì)是一個(gè)問題,可能需要使用加密的硬盤驅(qū)動(dòng)器。
不幸的是,通過(guò)一些被黑客入侵并植入木馬的實(shí)際案例,我們現(xiàn)在知道情況并不是這樣的,因?yàn)樾薷拇斯碳粌H僅是加固系統(tǒng)的方式,也同樣是黑客們滲透進(jìn)存儲(chǔ)設(shè)備的一種方法。在這種情況下,控制器固件被修改,所以存儲(chǔ)在驅(qū)動(dòng)器上的操作系統(tǒng)將受到影響。惡意固件隱藏自身和修改。想要深入這個(gè)系統(tǒng)其實(shí)很容易,因?yàn)榇疟P已經(jīng)做了這種類型的數(shù)據(jù)重新映射來(lái)處理不良扇區(qū),所以黑客只需要?jiǎng)觿?dòng)手指就能輕而易舉的獲取入侵代碼。
對(duì)于嵌入式系統(tǒng)的設(shè)計(jì)而言,在編程設(shè)計(jì)階段就為系統(tǒng)提供安全驅(qū)動(dòng)程序,是每一個(gè)工程師都需要從事的工作。隨著黑客入侵的次數(shù)愈加頻繁,為嵌入式系統(tǒng)增加牢固的安全程序就顯得愈發(fā)重要。那么,哪些方法能夠有效的防止黑客入侵?使用何種形式的加密密鑰能夠是程序更安全?
安全引導(dǎo)和加密代碼是防止初始攻擊得手的方法。
一次性可編程(OTP)或基于ROM的解決方案是另一種方法,但這些是防止許多應(yīng)用必要的現(xiàn)場(chǎng)更新。有些平臺(tái)還允許調(diào)試或者使JTAG支持失能,通常是通過(guò)OTP標(biāo)志,所以應(yīng)用程序代碼不再能直接訪問,使得逆向工程更加困難。如果檢測(cè)到攻擊,有些系統(tǒng)會(huì)進(jìn)入防篡改極端,清除代碼和數(shù)據(jù)。
設(shè)置安全密鑰和軟件保護(hù)方案
TI的MSP432有一個(gè)有趣的方法來(lái)保護(hù)應(yīng)用程序代碼,這給我們帶來(lái)了一些有用的啟示。這種保護(hù)方案允許只執(zhí)行閃存中的多個(gè)塊,但是要執(zhí)行這一步,要使代碼能夠在同一個(gè)塊中訪問數(shù)據(jù)。JTAG不會(huì)泄露代碼或數(shù)據(jù)的內(nèi)容。被定義的多個(gè)塊和加密密鑰用于驗(yàn)證并允許更新,這樣惡意物件就不能只是簡(jiǎn)單地除去或替換一個(gè)塊。MSP432不具有安全密鑰存儲(chǔ)或OTP支持,但這些都可以使用軟件保護(hù)方案來(lái)實(shí)現(xiàn)。該方法允許供應(yīng)商一個(gè)芯片上嵌入運(yùn)行時(shí)間支持,然后將其提供給開發(fā)者。開發(fā)者可以調(diào)用支持程序,但他們不會(huì)直接訪問那些可以分解的代碼。該計(jì)劃實(shí)際上適用于多個(gè)供應(yīng)商在同一芯片上提供服務(wù)。
相關(guān)閱讀:
技術(shù)詳解:利用嵌入式降低電池功耗
技術(shù)經(jīng)驗(yàn):做嵌入式硬件設(shè)計(jì)需具備的基本功
嵌入式設(shè)計(jì)可接受的抖動(dòng)水平要如何確定呢?