針對FPGA實(shí)現(xiàn)安全的系統(tǒng)內(nèi)編程功能
FPGA正越來越多地作為現(xiàn)代電子系統(tǒng)的核心部分。這有多個(gè)可能原因:FPGA的成本低、立即可用及精密性不斷提高,但最重要的還是FPGA硬件可重新配置,因此能輕易配合系統(tǒng)規(guī)格隨時(shí)改變的要求。
硬件可重編程是FPGA器件的“殺手锏”,其優(yōu)點(diǎn)多不勝數(shù)。除了明顯的優(yōu)勢在于幾乎毋須額外的成本便能更改半導(dǎo)體的功能外 (這遠(yuǎn)較傳統(tǒng)的ASIC器件優(yōu)越),F(xiàn)PGA能夠應(yīng)對規(guī)格改變的能力、增加功能,或快速實(shí)時(shí)配置客戶的設(shè)置,這意味著FPGA產(chǎn)品能延長應(yīng)用壽命及提高盈利空間。
但有一個(gè)很重要的問題需要考慮:我們能在多大程度上安全地配置系統(tǒng)環(huán)境下的FPGA,即實(shí)現(xiàn)系統(tǒng)內(nèi)可編程 (ISP),使系統(tǒng)設(shè)計(jì)人員獲得最大的益處。我們當(dāng)然希望能夠在系統(tǒng)完全制成后甚至在場地應(yīng)用時(shí),都可以更改系統(tǒng)編程。也希望在大多數(shù)情況下,在器件重編程時(shí)進(jìn)行安全的控制。換言之,我們需要有完整的手段來控制對FPGA內(nèi)IP的存取及保護(hù),這手段稱之為“安全I(xiàn)SP”。
為什么會(huì)有這個(gè)需求?因?yàn)镕PGA的靈活性可為終端用戶帶來許多好處,但也可能在不法分子手上用以進(jìn)行不法的勾當(dāng),例如:
* 過建 (復(fù)制盜版)
* 盜取敏感的數(shù)據(jù)
* 篡改產(chǎn)品
* 黑客攻擊
隨著許多公司都在本土之外設(shè)立制造基地,過建的行為越來越猖獗。過建是非法的行為,即不道德的合約制造商會(huì)在市場上購買額外的芯片來制造合約規(guī)定以外的系統(tǒng)產(chǎn)品,然后在市場上銷售,與OEM廠商進(jìn)行不公平的競爭。這種行為不僅會(huì)使OEM廠商降低所銷售產(chǎn)品的營業(yè)額,同時(shí)也因額外的競爭而影響產(chǎn)品的邊際利潤,并且還增加技術(shù)支持成本和承擔(dān)更多負(fù)債責(zé)任。
盜取敏感數(shù)據(jù)是電子化數(shù)據(jù)時(shí)代中越來越嚴(yán)峻的問題。擁有高精技術(shù)的犯罪者每每能夠盜取各種特許信息,如銀行帳號、社會(huì)安全保險(xiǎn)號和其它重要資料。 手持銷售點(diǎn) (POS) 機(jī)可能成為盜取這類信息的一個(gè)途徑;因?yàn)檫@些敏感信息一般都保存于系統(tǒng)的非揮發(fā)性片上數(shù)據(jù)存儲器中。如果這些內(nèi)存未經(jīng)高度的加密保護(hù),攻擊者就能夠盜取其中的重要數(shù)據(jù)。由于設(shè)備具有便攜式的特性,如容易開啟和接入串連端口,就使問題更加嚴(yán)重。
篡改產(chǎn)品是系統(tǒng)易于重新配置引發(fā)的自然結(jié)果。篡改行為范圍廣泛,可以從微小但合法的程度 (如改動(dòng)引擎控制系統(tǒng)來提高汽車的性能),以至于犯法的行為 (如更改賭博機(jī)制的隨機(jī)性來牟利)。這種篡改意味著產(chǎn)品制造廠需要承擔(dān)被篡改產(chǎn)品的法定或/和產(chǎn)品質(zhì)量責(zé)任,嚴(yán)重時(shí)還會(huì)引起公眾安全問題。
黑客攻擊是互聯(lián)網(wǎng)時(shí)代中的一個(gè)小但卻會(huì)不斷擴(kuò)大的問題。SRAM FPGA更特別易受黑客攻擊。文獻(xiàn)報(bào)道過很多黑客攻擊實(shí)例,當(dāng)中,SRAM FPGA屢遭黑客采用隨機(jī)位流攻擊的方式實(shí)際地摧毀。因此,必須建立適當(dāng)?shù)南到y(tǒng)保護(hù)機(jī)制,確保器件只會(huì)接受作為授權(quán)編程位流經(jīng)的認(rèn)證信息。
Flash出現(xiàn)前的情況
以SRAM為基礎(chǔ)的 CPLD和FPGA是揮發(fā)性的,需要外部的配置內(nèi)存。因此,它們被公認(rèn)為最多安全隱憂的可編程器件。例如,要盜取以SRAM為基礎(chǔ) FPGA的設(shè)計(jì)十分容易,只要探測FPGA與外部 (非揮發(fā)性) 配置內(nèi)存的接口,截取當(dāng)中的位流便可。為此,SRAM器件制造商進(jìn)行了很多嘗試,以防止這些情況發(fā)生。為了保護(hù)FPGA上的數(shù)據(jù),有些廠家移除了非揮發(fā)性的配置內(nèi)存,并嘗試用電池來維持FPGA的配置數(shù)據(jù)。這在理論上可行,但在實(shí)際應(yīng)用中卻會(huì)顯著增加板級設(shè)計(jì)的成本:板卡更加復(fù)雜、需要添加電源線、采取電隔離措施 (防止其它芯片從器件至器件之間的互連為自己供電),以及電池本身的成本。即使采用這種方法,也不能排除系統(tǒng)因電壓/接地尖峰、物理沖擊或電池失效等問題而遭受瞬間掉電,從而丟失配置數(shù)據(jù)。
對于許多較新的SRAM FPGA產(chǎn)品,制造商引進(jìn)了以3DES或同類加密方案的位流加密支持,并儲存于外部內(nèi)存中。上電時(shí),可編程器件從內(nèi)存中讀入加密后的配置位流,并在器件中進(jìn)行解密,然后加載到半導(dǎo)體芯片上。雖然這種方法能防止大部分黑客盜取芯片中的IP,但還是不能阻止他們截獲位流或?qū)肫渌奈涣鳌?
較舊式的SRAM FPGA產(chǎn)品不支持位流加密,制造商因此采用了幾種方法來增加器件的安全性。常用的一種方法是采用所謂“握手令牌” (Handshake token)執(zhí)行設(shè)計(jì),即如果沒有收到所預(yù)期的令牌,F(xiàn)PGA內(nèi)的設(shè)計(jì)功能就會(huì)失效。握手令牌會(huì)在上電時(shí)隨機(jī)生成,或利用小型的非揮發(fā)性可編程器件 (NVPD) 重置,然后在運(yùn)行時(shí)定時(shí)監(jiān)控,以保證令牌沒有改變。假如令牌有變,F(xiàn)PGA的功能 (握手令牌電路除外) 將失效,直到收到正確的令牌為止。FPGA每隔一段時(shí)間就會(huì)向NVPD請求另一個(gè)令牌,以便進(jìn)行控制。一旦收到正確的令牌,F(xiàn)PGA的功能便會(huì)恢復(fù)。
這種方法希望能保證即使配置位流被復(fù)制并克隆到FPGA中,沒有正確的令牌也不能工作。然而,這種方法不能防止犯罪者將位流從外部配置內(nèi)存中復(fù)制,并經(jīng)過逆向工程獲得它在NVPD中的運(yùn)行算法,然后便可制備新的NVPD,以便在克隆的電路中生成令牌。雖然這種保證方法大幅增加了克隆設(shè)計(jì)的難度,但不能全面保護(hù)FPPGA中的專利IP。其它方法也可以用來保護(hù)SRAM FPGA,但也只是提高獲取或使用位流的難度,而不能完全保護(hù)IP。諷刺的是,在許多這類方法中,NVPD的內(nèi)容得到保護(hù),因?yàn)槠骷欠菗]發(fā)性的;而FPGA的內(nèi)容卻被暴露,因?yàn)槠骷看紊想姸夹枰獙⑴渲梦涣鲗懭隖PGA中。
安全I(xiàn)SP的完整解決方案
能充分保障器件及其編程安全的完整解決方案必須能抗衡這些嚴(yán)峻的安全問題。這樣的解決方案必須包含如下要素:
* 安全的基礎(chǔ)構(gòu)架。Flash FPGA具非揮發(fā)性、上電即行和單芯片等特性,在芯片上擁有一切所需的非揮發(fā)性內(nèi)存,在鎖定后也很安全。
* AES (先進(jìn)加密系統(tǒng)) 技術(shù)。必須采用先進(jìn)的加密技術(shù)確保編程位流的安全傳輸。
* 信息驗(yàn)證代碼 (MAC)。必須在安全位流傳輸中采用MAC驗(yàn)證來確保信息在傳輸時(shí)沒被更改。
* 非揮發(fā)性內(nèi)存/FlashROM (FROM)。FPGA板上的非揮發(fā)性FROM寄存器可存儲鍵和標(biāo)識,以實(shí)現(xiàn)安全I(xiàn)SP的控制和序列化處理。
AES加密系統(tǒng)
先進(jìn)加密系統(tǒng) (AES) - 美國聯(lián)邦信息處理標(biāo)準(zhǔn)197 (AES-FIPS 197) 是美國國家標(biāo)準(zhǔn)技術(shù)研究院 (NIST) 最新頒布的加密標(biāo)準(zhǔn)。AES算法能夠使用128、192和256位的加密鍵來實(shí)現(xiàn)128位數(shù)據(jù)塊的加密和解密,從而保護(hù)電子數(shù)據(jù)。AES算法替代了原本安全性較低的DES和3DES算法。AES-128能在多達(dá)3.4 * 1038個(gè)獨(dú)特密碼鍵中任挑一個(gè)來加密位流。這樣,每秒能破解一百萬個(gè)加密鍵并可用于設(shè)計(jì)的精密黑客程序 (這已是非常高的并發(fā)算法能力了) 也需要1 * 1025年(即千萬個(gè)萬億年) 才能找到AES-128生成的那個(gè)加密鍵。
信息驗(yàn)證代碼 (MAC) 的目的是檢測位流在傳輸過程中有否被更改。如果更改并非惡意,如由傳輸出現(xiàn)的一些問題引起,接收端可以檢測得到并請求重新傳送。如果更改是惡意的,MAC檢測出的改變將拒絕由攻擊者更改的信息被接受。從概念上講,這系統(tǒng)頗為簡單。發(fā)送端和接收端共享一個(gè)加密鍵。接收端利用共享的加密鍵計(jì)算接收信息的MAC。如果計(jì)算出來的MAC與接收到的MAC不匹配,說明信息在傳輸過程中被更改。系統(tǒng)軟件于是會(huì)拒絕該位流并請求重新傳輸。
FROM
FlashROM (FROM) 是安全I(xiàn)SP解決方案的一個(gè)關(guān)鍵組件。作為非揮發(fā)性板級數(shù)據(jù)存儲器,F(xiàn)ROM存儲著諸如加密鍵和獨(dú)特設(shè)備標(biāo)識之類的寶貴資源。FPGA通常采用的構(gòu)架,是讓FROM和FPGA結(jié)構(gòu)能獨(dú)立地進(jìn)行編程,容許FROM在毋須更改FPGA核心結(jié)構(gòu)的情況下也可以更新。為了保證FROM內(nèi)容的安全性, FROM只允許采用JTAG編程;并不能通過內(nèi)核來更新。但是為支持某些應(yīng)用,尤其是依賴于獨(dú)特器件標(biāo)識 (序列化) 的應(yīng)用,F(xiàn)PGA內(nèi)核應(yīng)當(dāng)能讀取FROM的內(nèi)容。
圖1 安全I(xiàn)SP的完整解決方案
采用適當(dāng)?shù)呐渲弥С?,并結(jié)合基本的編程功能如自動(dòng)增量和自動(dòng)減量,F(xiàn)ROM和AES的使用就能支持許多涉及設(shè)備序列化的應(yīng)用,即是支持獨(dú)的設(shè)備標(biāo)識。目的是為了更方便地管理大量器件的FROM內(nèi)容。序列化支持在面對下述功能和應(yīng)用領(lǐng)域時(shí)尤其有用:
* 資產(chǎn)管理跟蹤
* 日期和時(shí)間戳
* 互聯(lián)網(wǎng)協(xié)議尋址
* 庫存控制
* 基于認(rèn)購方式的經(jīng)營模式
* 系統(tǒng)校準(zhǔn)設(shè)置
* 版本管理
真實(shí)環(huán)境下的安全I(xiàn)SP
FPGA產(chǎn)品在過去20多年來獲得巨大成功,因?yàn)槟芴峁┡浜峡蛻羲璧纳a(chǎn)力和成本優(yōu)勢。這些優(yōu)勢主要分為三大類別,并被認(rèn)為是更改系統(tǒng)設(shè)計(jì)或配置變得越來越困難及執(zhí)行也日益昂貴的關(guān)鍵階段:
* 在設(shè)計(jì)接近完成或設(shè)計(jì)完成并進(jìn)入組裝的設(shè)計(jì)工程階段,出現(xiàn)了后來突發(fā)的系統(tǒng)變更需求,或出于制造考慮的變更需求。
* 在次級承包商的據(jù)點(diǎn),F(xiàn)PGA正進(jìn)行編程,而系統(tǒng)經(jīng)已組裝、測試及付運(yùn)至終端用戶,又或分銷商在交貨前必需對系統(tǒng)進(jìn)行定制的現(xiàn)場。
* 在客戶的應(yīng)用現(xiàn)場或其它遠(yuǎn)程現(xiàn)場,需要按最終客戶的要求變更系統(tǒng),添加所需功能或更新系統(tǒng)參數(shù)。
ISP安全架構(gòu)的三個(gè)級別分別對應(yīng)了這三個(gè)階段:
例1:工廠/可信賴環(huán)境。這是最簡單的選項(xiàng),器件的編程在可信賴的環(huán)境中進(jìn)行 (通常是客戶的“工廠”),也是系統(tǒng)設(shè)計(jì)完成的地方。在這種情況下,并不需要加密。這是保護(hù)設(shè)計(jì)的安全方法,因?yàn)樵O(shè)計(jì)的編程文檔不會(huì)離開這個(gè)可信賴的環(huán)境。當(dāng)OEM廠商不能進(jìn)行編程時(shí),編程服務(wù)通常由FPGA制造商(“IHP”) 提供,也就是向OEM廠商提供另一個(gè)安全的可信賴環(huán)境。
圖2 真實(shí)環(huán)境下的ISP
例2:合約制造。為了減少制造成本,器件編程一般都不會(huì)在實(shí)施設(shè)計(jì)的地方進(jìn)行。海外編程中心和合約制造商是這個(gè)情況的一些例子。在這種情況下,AES加密鍵最先由OEM廠 (可信賴的環(huán)境) 內(nèi)部進(jìn)行編程。最后的編程則連同AES加密編程檔案在工廠以外“不可信賴”的地點(diǎn)進(jìn)行。過建的情況不會(huì)在這里出現(xiàn),因?yàn)楹霞s制造商在市場上購買的任何額外部件由于沒有裝載適當(dāng)?shù)腁ES加密鍵,因此都無法使用,也不能用AES加密編程檔案進(jìn)行編程。
例3:現(xiàn)場“訂購”升級。為了提供最高的靈活性,最終用戶必須能在應(yīng)用現(xiàn)場享用ISP功能。這即是說需要在“不可信賴”的地點(diǎn)來進(jìn)行編程,包括在有線、互聯(lián)網(wǎng)、衛(wèi)星鏈路等公網(wǎng) (或私網(wǎng)) 的遠(yuǎn)程現(xiàn)場據(jù)點(diǎn)進(jìn)行消費(fèi)產(chǎn)品/設(shè)備的重新配置。與上面的例子一樣,這也需要使用AES加密編程檔案。在這種情況下,當(dāng)客戶要求系統(tǒng)升級時(shí),在供應(yīng)商據(jù)點(diǎn)的技術(shù)支持便會(huì)查詢設(shè)備的獨(dú)特器件標(biāo)識,該標(biāo)識已在可信賴的環(huán)境中安全地寫入FROM。器件的標(biāo)識將由系統(tǒng)于遠(yuǎn)程現(xiàn)場送回,并用來在“器件詞典”中查核對應(yīng)的AES鍵。該加密鍵會(huì)被送到內(nèi)部程序中,根據(jù)所請求的功能取得適當(dāng)?shù)木幊虣n案,然后利用該加密鍵生成加密位流。這樣器件就能利用加密編程后位流重新編程,并在MAC算法核對過收發(fā)雙方都擁有相同的加密鍵后進(jìn)行。
明顯地,AES、MAC和FROM非揮性內(nèi)存的結(jié)合能組成安全的可編程解決方案,為系統(tǒng)設(shè)計(jì)人員及客戶提供重大優(yōu)勢。非揮發(fā)性以Flash為基礎(chǔ)的FPGA,例如Actel的ProASIC3/E系列器件,便能提供所有這些甚至更多功能。以Flash為基礎(chǔ)的FPGA提供高度安全和低成本的單芯片解決方案,并通過非揮發(fā)性Flash技術(shù)實(shí)現(xiàn)上電即行的功能。AES-128加密技術(shù)可在不安全的環(huán)境下進(jìn)行安全I(xiàn)SP,而芯片上內(nèi)置的FROM可基于獨(dú)特的器件標(biāo)識而實(shí)行多種嶄新應(yīng)用。此外,以Flash為基礎(chǔ)器件能滿足實(shí)現(xiàn)安全I(xiàn)SP的所有要求,并主動(dòng)地保護(hù)客戶的產(chǎn)品免受各種棘手的安全問題威脅,包括過建、盜取敏感的數(shù)據(jù)、篡改產(chǎn)品和黑客攻擊等。
評論