葉 賓
(保密通信重點(diǎn)實(shí)驗(yàn)室,四川 成都 610041)
隨著信息化飛速發(fā)展的步伐,信息安全事故的不斷爆發(fā),推動(dòng)了安全保密設(shè)備的大量普及和應(yīng)用。由于安全保密設(shè)備是確保信息系統(tǒng)的安全,安全保密設(shè)備自身的安全就被放到了一個(gè)十分敏感和重要的位置,需要精心考慮。安全設(shè)備的安全性到底如何呢?常常看到有這樣一種現(xiàn)象出現(xiàn),在系統(tǒng)的安全性更多地寄托在采用的專用安全芯片上,安全芯片安全性就成為了焦點(diǎn)。
安全芯片的安全性包含兩層含義:一是芯片上運(yùn)行的密碼算法、協(xié)議的安全性,二是安全芯片實(shí)現(xiàn)的安全性。對(duì)于前者,隨著多年來密碼學(xué)的理論發(fā)展和技術(shù)進(jìn)步,密碼算法和協(xié)議都具有比較牢固的數(shù)學(xué)安全性基礎(chǔ),不論是對(duì)稱密碼算法還是非對(duì)稱密碼算法,其復(fù)雜度在現(xiàn)有計(jì)算能力下都足以抵御數(shù)學(xué)分析攻擊[1]。但是安全芯片實(shí)現(xiàn)的安全性方面,從許多報(bào)告、方案甚至文章中可以大量發(fā)現(xiàn)并不太經(jīng)得起推敲,存在一些問題或漏洞,可見安全芯片本身的安全性值得深入分析和探討。
安全芯片因?yàn)槠涮厥夤δ芎妥饔?,?dǎo)致從誕生開始就受到高度關(guān)注并被重點(diǎn)研究,對(duì)其開展的攻擊新手段層出不窮,也推動(dòng)了安全芯片的安全防護(hù)措施快速發(fā)展,攻與防演繹出不少跌宕起伏的故事,完全展現(xiàn)了魔高一尺、道高一丈的屬性。
當(dāng)前,針對(duì)安全芯片的攻擊方式中常見且比較有效的大概有旁路攻擊(非入侵式攻擊,如能量攻擊、差錯(cuò)導(dǎo)入攻擊、電磁攻擊等)、半入侵式攻擊、反向工程等。最熱門的有:
能量攻擊是P. Kocher1999年針對(duì)攻擊DES算法的實(shí)現(xiàn)引入,逐步受到重視,目前針對(duì)能量的攻擊分為簡(jiǎn)單能量分析 (SPA,Simple Power Analysis)攻擊和差分能量分析 (DPA,Differential Power Analysis)攻擊,其理論基礎(chǔ)是基于圖1的模型。
圖1 旁路攻擊原理
簡(jiǎn)單功耗分析易于實(shí)現(xiàn),主要通過觀察芯片運(yùn)行過程中的功耗軌跡來獲取一些與密鑰相關(guān)的有用信息,特別適合于攻擊具有分支結(jié)構(gòu)的加密算法。SPA雖然受制于環(huán)境噪聲,但是它對(duì)攻擊者縮小密鑰猜測(cè)范圍很有幫助,它對(duì)未作保護(hù)的DES、AES、ECC、RSA等密碼算法實(shí)現(xiàn)芯片均有不同程度的攻擊能力。差分功耗分析較為復(fù)雜,它是基于大量的芯片功耗信息的統(tǒng)計(jì)分析方法,能夠克服SPA難以避免的測(cè)量誤差和噪聲影響,對(duì)非對(duì)稱和對(duì)稱密碼系統(tǒng)都有強(qiáng)大的攻擊能力。此外,為了挫敗一些常規(guī)的防御措施,還發(fā)展出了一些如帶相關(guān)性分析的DPA攻擊和高階DPA攻擊等更為強(qiáng)大的攻擊方法[2]。
差錯(cuò)攻擊首先通過設(shè)置外在因素和環(huán)境條件改變,比如時(shí)鐘頻率、電源電壓、以及溫度、光照、輻射等,從而導(dǎo)致安全芯片內(nèi)部產(chǎn)生錯(cuò)誤狀態(tài),然后收集芯片在錯(cuò)誤狀態(tài)下的信息,將其與安全芯片正常狀態(tài)下的信息相對(duì)比,就可以在一定程度上可以獲取芯片內(nèi)部的敏感數(shù)據(jù)[3]。目前,通過以差錯(cuò)導(dǎo)入攻擊來獲取密鑰已經(jīng)從一種理論構(gòu)想轉(zhuǎn)化為一種切實(shí)可行的方法,攻擊對(duì)象從最初的RSA等公鑰制密碼實(shí)現(xiàn)逐步擴(kuò)展到DES和AES算法實(shí)現(xiàn)[2]。
反向設(shè)計(jì)傳統(tǒng)上被稱為“自底向上”的設(shè)計(jì)方法,也稱為逆向工程。實(shí)際上反向設(shè)計(jì)與正向設(shè)計(jì)一樣,都是IC設(shè)計(jì)的一種技術(shù)手段,通過分析別人的設(shè)計(jì),學(xué)習(xí)別人的設(shè)計(jì)經(jīng)驗(yàn)和先進(jìn)的設(shè)計(jì)思想用于自己的芯片設(shè)計(jì)中,這種方法特別是對(duì)于初學(xué)IC設(shè)計(jì)的人員十分有益,通過學(xué)習(xí)和研究比較成熟的電路版圖,可以迅速增加相關(guān)電路設(shè)計(jì)經(jīng)驗(yàn),快速熟悉整個(gè) IC設(shè)計(jì)流程和完善IC設(shè)計(jì)知識(shí)體系?!鞍雽?dǎo)體芯片保護(hù)法案(Semiconductor Chip Protection Act of 1984)”于1984年在美國(guó)誕生,從而在法律上確定了反向工程的合法性,從此,針對(duì)各類芯片(特別是安全芯片)的反向工程開展幾乎形成了一個(gè)產(chǎn)業(yè)般地迅猛發(fā)展起來,技術(shù)日趨成熟,應(yīng)用范圍越來越廣,也被分析破譯者常用。
目前反向工程流程如圖2所示。
圖2 反向工程流程[4]
從多個(gè)新聞及其他報(bào)道得知,目前最新的反向工程進(jìn)展情況是 45納米工藝的超大規(guī)模集成電路也能夠被成功地實(shí)施反向工程。
由此可見,安全芯片所處的生態(tài)圈環(huán)境較為復(fù)雜和險(xiǎn)惡,必須應(yīng)對(duì)多種分析手段對(duì)其開展的綜合分析和破譯。
為了應(yīng)對(duì)安全芯片所面臨的眾多安全威脅,安全芯片的設(shè)計(jì)、制造技術(shù)也得到了巨大發(fā)展,設(shè)計(jì)、制造者不斷根據(jù)新的分析破譯技術(shù),研究出并采用一些新的安全防護(hù)措施來不斷加強(qiáng)自身的安全性,比較典型的措施有:
從系統(tǒng)安全實(shí)現(xiàn)角度考慮,將安全算法與參數(shù)分割成兩部分或多個(gè)部分,由芯片結(jié)合整機(jī)或其他部件共同完成加密等關(guān)鍵功能,從而降低單個(gè)部分被分析透后帶來的整體性安全威脅。
隨著旁路攻擊技術(shù)的產(chǎn)生與發(fā)展,對(duì)傳統(tǒng)密碼芯片設(shè)計(jì)提出了嚴(yán)峻挑戰(zhàn)。國(guó)內(nèi)外眾多大學(xué)和科研機(jī)構(gòu)展開了針對(duì)旁路攻擊,尤其是功耗攻擊和防護(hù)技術(shù)的深入研究,取得了大量科研成果及發(fā)明專利。匯總起來主要包括:算法級(jí)的密碼芯片防護(hù)技術(shù)主要有掩碼技術(shù)、指令執(zhí)行隨機(jī)化技術(shù)以及外部接口編碼技術(shù)等,電路級(jí)的抗功耗攻擊措施的一種防護(hù)思想是采用專門的芯片電流控制模塊或者芯片供電結(jié)構(gòu),降低芯片功耗與其所執(zhí)行的密碼算法操作之間的相關(guān)性,還有一種思想是設(shè)計(jì)新型的電路邏輯和電路工作方式,從根本上去除電路工作功耗與密碼算法中間結(jié)果之間的相關(guān)性,比如基于隨機(jī)化的思想,通過在每個(gè)邏輯單元中加入隨機(jī)掩碼,使單元的瞬態(tài)功耗在統(tǒng)計(jì)上服從均衡分布;再如基于功耗恒定的思想,使邏輯單元在每個(gè)時(shí)鐘周期的功耗曲線形狀不隨單元邏輯值的變化而變化。這些辦法都具有比較強(qiáng)的針對(duì)性和作用[1-2]。
通過全定制設(shè)計(jì)的方式,在版圖中加入冗余邏輯和陷阱單元,從而干擾和破壞反向工程的版圖分析;也有采用特殊涂層材料,使得化學(xué)腐蝕和剖層環(huán)節(jié)難以實(shí)現(xiàn);還有采用可編程實(shí)現(xiàn)算法的方式,從而避免通過版圖逆向分析的方式竊取密碼算法的電路實(shí)現(xiàn)細(xì)節(jié)。當(dāng)然,前面提到的分割實(shí)現(xiàn)方式,也導(dǎo)致反向工程無法得到算法邏輯的全部電路,從而也具有抗反向工程的能力。
從業(yè)界來看,當(dāng)前攻擊手段中取得成果最多、最有效的攻擊方式是旁路功耗分析和實(shí)施反向工程,而在眾多防御手段中,由于采用可編程/可重構(gòu)實(shí)現(xiàn)算法的方式,通過編程容易實(shí)施采用指令執(zhí)行隨機(jī)化技術(shù)用于抗功耗分析,可編程/可重構(gòu)的實(shí)現(xiàn)架構(gòu)本身不包含完整的算法信息在芯片內(nèi),因此天然具有很好的抗版圖分析的能力,因此這種方式似乎成為了一種趨勢(shì)或潮流,但僅僅采用了可編程/可重構(gòu)架構(gòu)實(shí)現(xiàn)算法就果真安全了么?
當(dāng)前業(yè)界采用可編程/可重構(gòu)實(shí)現(xiàn)加解密算法的方式中,匯總起來主要有兩種技術(shù)路線:一是采用專用指令集的方式實(shí)現(xiàn)算法,核心思想的通過分析各種通用算法的特點(diǎn)和運(yùn)算邏輯,提取其共性邏輯單元,用硬件實(shí)現(xiàn)這些邏輯單元,采用處理器的方式,用專用指令來調(diào)用這些特殊的運(yùn)算單元,從而高效實(shí)現(xiàn)加解密算法;另一種方式是采用FPGA或類似于FPGA的結(jié)構(gòu)或方式實(shí)現(xiàn),它采用邏輯單元陣列,內(nèi)部包括可配置邏輯模塊 (CLB,Configurable Logic Block)、輸出輸入模塊 (IOB,Input Output Block) 和內(nèi)部連線(Interconnect)[5],F(xiàn)PGA 的可重構(gòu)實(shí)際上是改變CLB 和IOB 的觸發(fā)器狀態(tài)。目前主流 FPGA 都采用了基于SRAM 工藝的查找表結(jié)構(gòu)(也有一些FPGA 采用Flash 或者熔絲與反熔絲工藝的查找表結(jié)構(gòu),通過燒寫文件改變查找表內(nèi)容的方法來實(shí)現(xiàn)對(duì)FPGA 的重復(fù)配置)。
可編程/可重構(gòu)方式實(shí)現(xiàn)算法加解密的流程如圖3所示。
從分析破譯者的角度可見,專用指令處理器模式和FPGA實(shí)現(xiàn)模式依然存在比較明顯的薄弱環(huán)節(jié),盡管芯片并不包含完整的算法,但是通過反向工程,可以完全獲得片內(nèi)運(yùn)算單元和邏輯單元的詳細(xì)信息,這種分析的工作量遠(yuǎn)比分析破譯密碼算法本身小很多個(gè)數(shù)量級(jí)。
由于算法指令的目標(biāo)碼或 FPGA的配置數(shù)據(jù)來自于片外,無論是通過設(shè)備以遠(yuǎn)端在線方式傳達(dá)還是存儲(chǔ)在設(shè)備內(nèi)部的存儲(chǔ)器內(nèi),均十分容易被在線在芯片輸入接口處采集獲得,結(jié)合芯片的反向工程獲得的電路信息,就直接獲得了算法的詳細(xì)實(shí)現(xiàn)細(xì)節(jié),同樣,加密的算法參數(shù)和密鑰也能順利獲取,結(jié)合已經(jīng)掌握的詳細(xì)完整的算法及實(shí)現(xiàn)細(xì)節(jié),就能還原出明文的密鑰,這樣就實(shí)現(xiàn)了芯片的完全破譯。
圖3 可重構(gòu)算法實(shí)現(xiàn)工作流程
為此,許多實(shí)現(xiàn)模式中引入了一個(gè)對(duì)稱算法作為保護(hù)算法,從而增強(qiáng)其安全性。具體是在芯片中預(yù)置一個(gè)軟件實(shí)現(xiàn)的或硬件實(shí)現(xiàn)的對(duì)稱保護(hù)算法,先在片外將算法指令目標(biāo)碼或FPGA配置數(shù)據(jù)加密,這樣讓分析破譯者在接口端采集到的數(shù)據(jù)均為加密的數(shù)據(jù),這些加密的數(shù)據(jù)進(jìn)入芯片內(nèi)部后啟動(dòng)保護(hù)算法解密,然后再完成算法重構(gòu)或配置,從而在芯片內(nèi)構(gòu)成完整的用于數(shù)據(jù)加解密的算法。這種模式看上去更安全,但本質(zhì)并沒有根本改變,因?yàn)橛糜诒Wo(hù)的對(duì)稱保護(hù)算法及其密鑰本身在芯片內(nèi)或以軟的方式輸入,反向工程結(jié)合接口數(shù)據(jù)采集就一定能獲取到,從而導(dǎo)致這種機(jī)制的失效。
基于日益強(qiáng)大的破譯分析技術(shù)和多種新興的分析破譯手段出現(xiàn)的情況,筆者認(rèn)為安全芯片的安全性必須立足于密碼算法或同等的運(yùn)算分析復(fù)雜度,而決不能將安全芯片的安全性完全立足于芯片本身分析的難度,即采用增加冗余邏輯、增大芯片規(guī)模、加大剖片等環(huán)節(jié)難度、采用特殊工藝這樣的一些手段上,因?yàn)檫@些手段帶來的分析工作量無法與解決密碼學(xué)的數(shù)學(xué)分析難度相提并論。
基于此原則,為確保密碼算法與安全芯片的安全,筆者認(rèn)為當(dāng)前充分利用非對(duì)稱密碼算法的特點(diǎn),以非對(duì)稱算法分析破譯復(fù)雜度作為屏障,結(jié)合真隨機(jī)數(shù)發(fā)生器的完全不可預(yù)測(cè)性,安全芯片可以這樣構(gòu)成:
基于可編程/可重構(gòu)的算法實(shí)現(xiàn)架構(gòu)實(shí)現(xiàn)安全算法已經(jīng)逐步成為了一種趨勢(shì),從用戶角度看,可以實(shí)現(xiàn)算法的平滑升級(jí)換代,從而保護(hù)已有投資,二是可以根據(jù)不斷出現(xiàn)的新的攻擊手段,通過編程、重構(gòu)來調(diào)整應(yīng)對(duì)策略,并根據(jù)最新的防御技術(shù)成果來部署、實(shí)現(xiàn)新的防御技術(shù)措施。
安全芯片內(nèi)置真隨機(jī)數(shù)發(fā)生器已經(jīng)成為了國(guó)內(nèi)安全芯片標(biāo)準(zhǔn)對(duì)安全芯片的最基本要求,不僅真隨機(jī)數(shù)可以方便地用于動(dòng)態(tài)產(chǎn)生密鑰,而且可以方便地協(xié)助算法實(shí)現(xiàn)電路產(chǎn)生隨機(jī)時(shí)延、隨機(jī)噪聲等,從而加大功耗分析的難度等,當(dāng)然,最核心的作用是隨機(jī)數(shù)的不可預(yù)測(cè)性,從而確保即使反向工程完全獲取其結(jié)構(gòu)、電路,也無法獲知其任意時(shí)刻產(chǎn)生的密鑰值。
安全芯片內(nèi)部采用如時(shí)間隨機(jī)化、RDE、MRDE、MRRE[2]、RWNAF或FWNAF防御算法[6]等技術(shù)實(shí)現(xiàn)非對(duì)稱算法(如256位的ECC或2048位的RSA)作為保護(hù)算法,用于算法指令目標(biāo)碼/FPGA配置數(shù)據(jù)以及密鑰的單次運(yùn)行解密。眾所周知,非對(duì)稱算法的工作機(jī)理是采用公私鑰對(duì)進(jìn)行工作,加密密鑰和解密密鑰不同且不能相互推導(dǎo)得出,這樣,解密不可逆向由加密操作來進(jìn)行[7]。因此,可以放心地將密鑰對(duì)中的一個(gè)密鑰以明文方式傳輸?shù)狡猓ɑ蛟O(shè)備外)主控端,攻擊者獲取后也沒有可行的方法來解密已經(jīng)加密的指令目標(biāo)碼/FPGA配置數(shù)據(jù)和密鑰。主要工作流程如圖4所示。
圖4 改進(jìn)的可重構(gòu)算法實(shí)現(xiàn)工作流程
從上述流程可見,用于加密算法指令目標(biāo)碼/FPGA配置數(shù)據(jù)的密鑰以及加密了的指令數(shù)據(jù)/FPGA配置數(shù)據(jù)是能夠被攻擊者獲取的,但攻擊者要獲得明文的指令目標(biāo)碼/FPGA配置文件是很困難的,除非破譯ECC/RSA這樣的算法或者通過綜合攻擊手段在芯片單次運(yùn)行ECC/RSA算法時(shí)獲取到密鑰,顯然極其困難,因此這樣構(gòu)成的安全芯片的安全性基礎(chǔ)是基于非對(duì)稱算法的計(jì)算復(fù)雜度。當(dāng)然,因?yàn)榘踩酒瑑?nèi)部具有完整的非對(duì)稱算法實(shí)現(xiàn),因此可以方便地在流程中加入認(rèn)證等機(jī)制和環(huán)節(jié),使得整個(gè)系統(tǒng)的運(yùn)行更為嚴(yán)密、安全。
安全性時(shí)安全芯片的最顯著區(qū)別于其他通用芯片的特色,它同密碼算法一樣,既敏感又重要,且伴隨著分析破譯技術(shù)的發(fā)展必須不斷發(fā)展。進(jìn)一步分析上面提出的安全芯片實(shí)現(xiàn)結(jié)構(gòu)和流程看,兩種可編程/可重構(gòu)實(shí)現(xiàn)機(jī)制的適應(yīng)性存在較大差異[8-11]。業(yè)界廣泛采用的專用指令集方式實(shí)現(xiàn)的可編程算法實(shí)現(xiàn),由于算法編程代碼量?。ǘ鄶?shù)在kbit級(jí)),因此編程數(shù)據(jù)的傳輸以及片內(nèi)用非對(duì)稱算法對(duì)其實(shí)現(xiàn)解密、存儲(chǔ),性能是能夠容忍和接受的;但是 FPGA方式實(shí)現(xiàn)的可重構(gòu)算法實(shí)現(xiàn),由于大規(guī)模FPGA的配置數(shù)據(jù)量大(多數(shù)在兆級(jí)),因此配置數(shù)據(jù)的傳輸以及片內(nèi)用非對(duì)稱算法實(shí)現(xiàn)解密,性能和可操作性就存在較大問題,特別是出于安全性的需要,上兆的數(shù)據(jù)必須在片內(nèi)進(jìn)行解密并存放于片內(nèi)SRAM中,給芯片的面積開銷帶來不可想象的負(fù)擔(dān)。
[1]樂大珩.抗功耗攻擊的密碼芯片電路級(jí)防護(hù)關(guān)鍵技術(shù)研究[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2011.
[2]韓軍.信息安全芯片的防御攻擊技術(shù)研究[D].上海:復(fù)旦大學(xué),2006.
[3]HEMME L.A Differential Fault Attack Against Early Rounds of (Triple) Des[C]//In: Proceeding of Workshop on Cryptographic Hardware and Embedded Systems(CHES2004).Cambridge(Boston).USA:[s.n.],2004:254-267.
[4]ZOU Zhige.Layout and Circuit Extraction[EB/OL].(2010-12-01)[2013-05-01].http://wenku.baidu.com/view/834a7487bceb19e8b8f6ba98.html.
[5]張亮,沈沛意,肖瀟,等.基于Xilinx FPGA的多核嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2011.
[6]張濤.面向密碼芯片的旁路攻擊關(guān)鍵技術(shù)研究[D].成都:電子科技大學(xué),2008.
[7]宋震.密碼學(xué)[M].北京:中國(guó)水利水電出版社,2002:52-53.
[8]李海斌,周玉潔.一種抗DPA攻擊的DES設(shè)計(jì)[J].通信技術(shù),2007,40(11):277-279.
[9]趙征洋,張道法.FOX算法的差分故障攻擊[J].通信技術(shù),2010,43(08):175-177,180.
[10]張修麗,陳誠(chéng).一種抗DPA的AES的設(shè)計(jì)[J].信息安全與通信保密,2009(11):63-65.
[11]蔣燁,薛質(zhì),王軼駿.非接觸式 IC卡干擾式旁路攻擊與防護(hù)[J].信息安全與通信保密,2008(03):52-54.