作者:美國(guó)國(guó)家半導(dǎo)體 Richard F. Zarr 來(lái)源:電子設(shè)計(jì)應(yīng)用2009年第11期 我們經(jīng)常擔(dān)心自已的個(gè)人信息被放進(jìn)或存儲(chǔ)在沒(méi)有安全防護(hù)措施的系統(tǒng)中。這些系統(tǒng)包括信用卡掃描器、零售終端機(jī)、醫(yī)療設(shè)備以及其它非零售設(shè)備。這些設(shè)備網(wǎng)絡(luò)間的通信所需要的安全保護(hù)級(jí)別取決于信息的重要程度。 常見的安全措施 對(duì)嵌入式系統(tǒng)來(lái)說(shuō),安全防護(hù)措施涉及到一個(gè)最基本的概念——物理安全性。也就是說(shuō),如果像對(duì)待珍貴物品那樣將系統(tǒng)“鎖”起來(lái),那么丟失信息的風(fēng)險(xiǎn)將大大減少。這意味著需要將嵌入式控制器及其它關(guān)鍵任務(wù)系統(tǒng)放在上鎖的房間內(nèi)或安全的箱子中。這種方法適用于那些可以將系統(tǒng)“包裝”起來(lái)的應(yīng)用,但也往往會(huì)導(dǎo)致通信掉線、阻塞或攔截。這種方法適用于不少有線和無(wú)線系統(tǒng)。有線系統(tǒng)在一些安全級(jí)別較高的應(yīng)用中具有不可替代的優(yōu)勢(shì)。舉個(gè)簡(jiǎn)單的例子:如果發(fā)生黑客入侵,只要掐斷電線就能使關(guān)鍵數(shù)據(jù)不外泄。 應(yīng)用公共密鑰加密和橢圓曲線加密能獲得非常好的保護(hù)效果。這些方法廣泛用于電子商務(wù)及其它需要高級(jí)加密的應(yīng)用領(lǐng)域。然而,這類方法并不適用于那些對(duì)安全級(jí)別要求較高的嵌入式系統(tǒng)。有多種軟件和硬件技術(shù)可以用來(lái)使數(shù)據(jù)“散列”,從而使信息在存儲(chǔ)和傳輸期間難以被攔截。 一種保護(hù)嵌入式系統(tǒng)存儲(chǔ)與傳遞數(shù)據(jù)的簡(jiǎn)單方法是使用滾動(dòng)碼。滾動(dòng)碼已出現(xiàn)了很長(zhǎng)的時(shí)間,例如二戰(zhàn)期間的恩尼格碼密碼機(jī)。現(xiàn)代滾動(dòng)碼加密原理是采用串行移位寄存器以及異或函數(shù),使偽隨機(jī)碼確定性增強(qiáng),但逆向工程更加復(fù)雜,如圖1所示。 ![]() 圖1 流動(dòng)碼加密 該原理下異或函數(shù)的一個(gè)輸入是正傳輸(或加密)的當(dāng)前位。只要知道最初鎖存到寄存器中的起始的種子值,該函數(shù)是完全可逆的。在其它加密方案中使用時(shí),這種技術(shù)需要填充信息,以確保有足夠的數(shù)據(jù)來(lái)防止泄漏密鑰。此外,過(guò)長(zhǎng)的消息可能暴露偽隨機(jī)碼發(fā)生器的模式。網(wǎng)絡(luò)中大多數(shù)數(shù)據(jù)包流量都屬于這類加密的范疇。 時(shí)變加密 數(shù)據(jù)安全性的一個(gè)重要方面是確保密鑰不泄密。即使采用公共密鑰加密,如果私人密鑰泄密,系統(tǒng)也會(huì)崩潰。一個(gè)確保密鑰永不泄密的簡(jiǎn)單方法是不斷發(fā)布新密鑰。一種較好的做法是使用當(dāng)前時(shí)間。如果每個(gè)設(shè)備知道在某個(gè)時(shí)間廢棄密鑰并開始使用新密鑰,將很難對(duì)密鑰進(jìn)行逆向工程,因?yàn)樗堰^(guò)期。這種思想的一種簡(jiǎn)單應(yīng)用是酒店磁卡鑰匙。酒店的電子鎖已編程為接受編碼的磁卡,但只在您住宿期間有效。如果沒(méi)有其他人使用房間或者對(duì)電子鎖重新編程,電子鎖內(nèi)的時(shí)鐘會(huì)控制鑰匙的有效性。也就是說(shuō),電子鎖會(huì)在一段時(shí)間后使磁卡鑰匙無(wú)法打開房門。 現(xiàn)在的問(wèn)題是確保每個(gè)人都知道電子鎖會(huì)在何時(shí)令磁卡鑰匙失效。有多種方法可以解決這個(gè)問(wèn)題。一種方法是與主時(shí)鐘同步,這需要使用協(xié)議來(lái)維護(hù)當(dāng)前時(shí)間。所需協(xié)議取決于更新密鑰的時(shí)間間隔,可以使用帶有時(shí)間信息的周期性數(shù)據(jù)包(如NTP或網(wǎng)絡(luò)時(shí)間協(xié)議),也可以使用更加準(zhǔn)確的協(xié)議,如IEEE1588精確時(shí)間協(xié)議(PTP))。PTP提供非常高的準(zhǔn)確性,無(wú)需每個(gè)節(jié)點(diǎn)具有GPS接收器或銫原子鐘。以太網(wǎng)物理層器件,如美國(guó)國(guó)家半導(dǎo)體的DP83640,內(nèi)置了這項(xiàng)功能,且可以與任何媒體訪問(wèn)控制器(MAC)一起工作。 通過(guò)使用同步的時(shí)鐘,使用偽隨機(jī)碼的密鑰發(fā)生器可以頻繁更新密鑰。因此,每一秒鐘都會(huì)生成新的種子,且在該期間傳輸?shù)乃袛?shù)據(jù)包都將使用該種子,如圖2所示。 ![]() 圖2 密鑰發(fā)生器可以頻繁更新種子 這里的問(wèn)題是數(shù)據(jù)包傳遞的不確定性。在大型基礎(chǔ)設(shè)施以及Internet上,數(shù)據(jù)包到達(dá)的實(shí)際時(shí)間將差別很大,因此需要一個(gè)機(jī)制來(lái)確保到達(dá)稍晚的數(shù)據(jù)包不被拒絕。 完成這項(xiàng)工作的方法是使用滑動(dòng)時(shí)窗相關(guān),即加密的數(shù)據(jù)包應(yīng)在加密的有效載荷中嵌入校驗(yàn)和,以驗(yàn)證其內(nèi)容。此外,數(shù)據(jù)包的“存活時(shí)間”值將設(shè)置時(shí)窗大小(及時(shí)性)。因此,當(dāng)接收到數(shù)據(jù)包時(shí),解密引擎將根據(jù)本地的時(shí)鐘知道當(dāng)前時(shí)間,然后嘗試使用本地時(shí)間解碼數(shù)據(jù)包。如果解密失敗,解密算法會(huì)在時(shí)間上往回移動(dòng)時(shí)窗的階段,并再次嘗試解密有效載荷。理論上,應(yīng)該只需1~2次嘗試即可使兩個(gè)位置之間的延遲同步,通常最多需要10~20次嘗試。 如果數(shù)據(jù)包解密失敗,則發(fā)送的行為無(wú)效,而且該數(shù)據(jù)包會(huì)被丟棄。由于種子變化如此頻繁,因此幾乎或根本不可能實(shí)時(shí)解密信息。此外,可以將此功能內(nèi)置到通信軟件棧中或直接內(nèi)置到硬件中,從而使逆向工程非常困難。即使知道方法,由于缺乏固定的種子也會(huì)使解密數(shù)據(jù)極其困難。 結(jié)語(yǔ) 并非所有的嵌入式系統(tǒng)都需要金融行業(yè)所使用的加密強(qiáng)度,極其簡(jiǎn)單、易于實(shí)現(xiàn)的散列加密方案可能更有意義。通過(guò)使用簡(jiǎn)單的加密方法和使用時(shí)變密鑰,可以大大增強(qiáng)關(guān)鍵嵌入式系統(tǒng)的安全性。這種加密可以用固件或軟件實(shí)現(xiàn),而且給FPGA或CPLD添加加密算法能夠使代碼更難被破解。 |