對(duì)于基于數(shù)字信號(hào)處理器(DSP)的設(shè)計(jì),如果DSP沒(méi)有足夠的安全能力,便特別容易受到入侵。在許多應(yīng)用中,如果使用FPGA以作配合來(lái)卸載DSP的部分工作,便可以輕易實(shí)施先進(jìn)的安全功能。而且,如果配合的FPGA使用flash存儲(chǔ)技術(shù),在芯片上存儲(chǔ)結(jié)構(gòu)中的配置位流以及關(guān)鍵性密匙信息,便可以實(shí)現(xiàn)固有的防止復(fù)制或克隆的安全性,使得設(shè)計(jì)人員能夠自動(dòng)保護(hù)設(shè)計(jì)避免這些類型的偷竊。
DSP和FPGA系統(tǒng)結(jié)構(gòu)
在使用FPGA或DSP的系統(tǒng)中(圖1),DSP實(shí)施高級(jí)信號(hào)處理算法,而FPGA實(shí)施前端抽取功能。高速串行RapidIO總線用于連接FPGA和 DSP;FPGA還連接至PCIe總線,經(jīng)由互聯(lián)網(wǎng)用作遠(yuǎn)程接入管理端口。PCIe總線還可橋接進(jìn)入和離開(kāi)RapidIO總線的通信量,以期把擴(kuò)展遠(yuǎn)程管理連接至DSP。FPGA控制一個(gè)外部DDR3 DRAM,后者用作無(wú)線接口所收發(fā)數(shù)據(jù)包的緩存,并且允許FPGA從DSP卸載任何低層數(shù)據(jù)協(xié)議處理和緩存管理功能。
圖1: 使用FPGA和DSP的無(wú)線通信系統(tǒng)。
FPGA還將負(fù)責(zé)從外部SPI Flash “導(dǎo)引”DSP,F(xiàn)PGA使用自身的SPI存儲(chǔ)器作為DSP代碼來(lái)源,通過(guò)來(lái)自DSP的SPI端口的導(dǎo)引功能來(lái)映射引導(dǎo)過(guò)程。一旦代碼傳送完成,F(xiàn)PGA便允許DSP開(kāi)始執(zhí)行。
安全根
如果系統(tǒng)不保護(hù)導(dǎo)引過(guò)程,侵入者便能夠以自己的代碼替代,然后有效地劫持整個(gè)系統(tǒng),這可能導(dǎo)致系統(tǒng)的損壞、重大的財(cái)務(wù)損失以及可能的個(gè)人責(zé)務(wù)。我們必需使用安全的導(dǎo)引過(guò)程來(lái)最大限度地減小此類攻擊,而硬件信任根是實(shí)施安全導(dǎo)引過(guò)程的必要條件。
硬件信任根支持系統(tǒng)數(shù)據(jù)完整性和保密性的驗(yàn)證,同時(shí)可以將這個(gè)信任擴(kuò)展至內(nèi)部和外部實(shí)體。硬件信任根可避免被侵入或修改,也能夠作為安全地鋪設(shè)更高級(jí)功能的起點(diǎn)。在嵌入式系統(tǒng)中,信任根與其它系統(tǒng)組件共同工作,以確保主處理器僅使用授權(quán)代碼進(jìn)行安全導(dǎo)引,從而擴(kuò)展信任區(qū)域至處理器及其應(yīng)用。
硬件信任根必需在安全的FPGA上構(gòu)建,其配置位流必需保護(hù)避免復(fù)制或反向工程,以避免被惡意入侵者破壞信任根。所以,保護(hù)FPGA器件的知識(shí)產(chǎn)權(quán)(IP)就是保護(hù)嵌入式系統(tǒng)其余部分的必要條件。
多級(jí)導(dǎo)引過(guò)程的安全要求
從其它部分進(jìn)行嵌入處理系統(tǒng)的初始化,需要安全的導(dǎo)引過(guò)程,以執(zhí)行不受惡意內(nèi)容或泄漏影響的受信任代碼。圖2所示為安全導(dǎo)引過(guò)程為充分保護(hù)嵌入式系統(tǒng)的初始化而必需經(jīng)過(guò)的各個(gè)不同階段。每一個(gè)階段都必需由先前的成功階段來(lái)驗(yàn)證,以確保直到頂層應(yīng)用層的“信任鏈(chain-of-trust)”。不可修改的引導(dǎo)加載程序(階段0)代碼能夠嵌入在FPGA器件中,并且通過(guò)安全的信任根,使用受保護(hù)的安全密匙和相關(guān)的安全算法進(jìn)行驗(yàn)證,以確保代碼的完整性和真實(shí)性。把代碼和執(zhí)行轉(zhuǎn)移至每個(gè)安全導(dǎo)引的順序階段前,這些階段都必須經(jīng)過(guò)先前受信任的系統(tǒng)進(jìn)行驗(yàn)證。
圖2: 多級(jí)安全導(dǎo)引過(guò)程概述
實(shí)施安全的嵌入式系統(tǒng)
加密位流數(shù)據(jù)是保護(hù)用于上電的配置位流(就象用于基于SRAM的 FPGA配置位流)的一個(gè)常用方法。這使得在配置啟動(dòng)過(guò)程中僅通過(guò)觀察來(lái)捕獲位流變得更加困難。解密密匙存儲(chǔ)在FPGA中,用于在配置FPGA之前解密數(shù)據(jù)。通常需要使用電池,以期在掉電時(shí)保留安全密匙。
另一個(gè)保護(hù)FPGA配置位流的方法是使用非易失性存儲(chǔ)器將其完全存儲(chǔ)在片上,避免在啟動(dòng)中暴露。一些FPGA器件,比如美高森美的SmartFusion2和IGLOO2系列,還通過(guò)在制造期間進(jìn)行編程時(shí)將位流加密以提供額外的保護(hù)功能。這還保護(hù)設(shè)計(jì)避免不道德的合同制造商進(jìn)行復(fù)制或反向工程,使得所需的硬件信任根被破壞。
一旦我們創(chuàng)建了安全的FPGA,下一個(gè)主要要求就是實(shí)施硬件信任根。FPGA必需保護(hù)安全密匙和片上不可改變的初始階段(Phase 0)導(dǎo)引載入程序,使得惡意侵入者完全無(wú)法攻擊或修改它們。如果使用基于Flash 的FPGA在片上存儲(chǔ)不可改變的代碼和安全密匙,還可以經(jīng)由配置過(guò)程來(lái)加載配置位流以獲得安全性。安全密匙僅是整個(gè)設(shè)計(jì)的一小部分,然而,它對(duì)于保護(hù)設(shè)計(jì)避免其它形式的攻擊是十分重要的。
評(píng)論