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