賀依盟,周亞軍
(杭州電子科技大學(xué)自動化學(xué)院,浙江 杭州 310018)
?
AXI總線加密模塊的設(shè)計與驗證
賀依盟,周亞軍
(杭州電子科技大學(xué)自動化學(xué)院,浙江 杭州 310018)
結(jié)合信息安全的需求以及SoC技術(shù)的發(fā)展,設(shè)計了一種基于AES加解密算法的AXI總線加密IP,達到從CPU到slave的整個數(shù)據(jù)通路的加解密目的,實現(xiàn)SoC內(nèi)部的端到端加密.其中通過內(nèi)置多個FIFO,分別在讀寫通道緩存CPU發(fā)出的AXI Burst傳輸,保證CPU發(fā)出的總線傳輸可以被順序的加解密處理.在AES算法實現(xiàn)方面,完成了ECB,CTR兩種便于并行處理的加密模式.在讀寫通道分別加入AES實現(xiàn)模塊,保證加解密操作的并行處理.同時構(gòu)建結(jié)構(gòu)化的UVM驗證平臺,結(jié)合APB和AXI的VIP來實現(xiàn)對該IP的隨機約束和覆蓋率分析,最終通過Synopsys的VCS仿真工具完成功能驗證.
AXI加密;AES-CTR模式;驗證VIP;統(tǒng)一驗證方法學(xué)
隨著集成電路的發(fā)展,單位晶圓上可集成的晶體管越來越多,可實現(xiàn)的功能越來越多,各式各樣的知識產(chǎn)權(quán)核(Intellectual Property,IP)開始加入到片上系統(tǒng)(System On Chip,SoC)中.為保證數(shù)據(jù)通信的安全性,SoC中數(shù)據(jù)加密技術(shù)的研究成為重點.ARM公司早在2008年便提出了Trust Zone技術(shù),在芯片中建立安全系統(tǒng)的概念,并在其處理器和總線矩陣IP中實現(xiàn)了對該技術(shù)的支持,在實際芯片設(shè)計中得到了廣泛的應(yīng)用[1].已有的運用高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)加密的IP多是針對某一具體外圍設(shè)備的實現(xiàn),作為總線矩陣的從設(shè)備端(Slave)來集成在SoC中,這樣的IP只能處理單一模塊的加密,利用率不高[2].在加密IP中,由于加解密的操作,數(shù)據(jù)的處理速率會受到很大的影響,所以模塊內(nèi)部需要進行相應(yīng)的處理來提高數(shù)據(jù)處理速率,如AXI Burst傳輸需要模塊內(nèi)部集成有緩存.IP設(shè)計時也必須考慮對AXI等數(shù)據(jù)接口總線支持,如AXI的寫地址不對齊訪問,需要額外的邏輯來實現(xiàn).但是目前的加密IP中,都沒有考慮這些方面.
本文設(shè)計了一種集成在ARM核與AXI總線矩陣之間的數(shù)據(jù)通路中的加密模塊,直接對ARM核輸出的AXI事務(wù)處理(Transaction)進行加密,再將加密后的事務(wù)處理通過AXI Master接口發(fā)送給總線矩陣模塊.通過地址映射功能來選擇性地完成對片內(nèi)、片外的多個模塊進行加解密處理,并支持ARM的Trust Zone技術(shù),通過寄存器的配置和ARM核的處理器狀態(tài)來限制模塊的訪問權(quán)限,提高芯片整體的安全性.同時為了保證本文IP設(shè)計的邏輯正確性,本文完成了基于統(tǒng)一驗證方法學(xué)(Universal Verification Methodology,UVM)的驗證平臺搭建,并結(jié)合Synopsys提供的AXI和APB的驗證VIP,完成對IP的功能驗證.
AXI總線是ARM公司于2004年提出的AMBA3.0協(xié)議中的重要組成部分[3],是一種面向高性能,高帶寬,低延時的片內(nèi)總線,在SoC中得到了廣泛的應(yīng)用.AXI協(xié)議將操作分為讀地址、讀數(shù)據(jù)、寫地址、寫數(shù)據(jù)、寫響應(yīng)5個通道.每個通道都由一組獨立信號組成,并使用雙向VALID和REDAY握手機制.信息源使用VALID信號表明通道上的數(shù)據(jù)和控制信息何時有效,目的端使用REDAY信號表明何時能夠接收數(shù)據(jù).讀數(shù)據(jù)通道和寫數(shù)據(jù)通道都包含一個LAST信號,以顯示事務(wù)處理中的最后一個數(shù)據(jù)項的傳輸.而且每個事務(wù)處理都會在5個通道有相應(yīng)的ID號,來支持亂序傳輸.讀寫數(shù)據(jù)通道可配置自己的數(shù)據(jù)總線寬度為8~1 024位,寫數(shù)據(jù)通道還包含8位的狹窄通道(wstrb)信號,對每8個數(shù)據(jù)位進行過濾,表明數(shù)據(jù)總線上哪些字節(jié)是有效的,來支持地址不對齊的Burst寫操作[3].
AES算法是美國國家標(biāo)準(zhǔn)技術(shù)協(xié)會(NIST)2001年發(fā)布的高級加密算法,用以取代DES算法,滿足21世紀(jì)的數(shù)據(jù)安全需求.AES算法的數(shù)據(jù)塊長度固定128位,密鑰長度可以是128位、192位、256位相應(yīng)的迭代次數(shù)為10,12,14.數(shù)據(jù)塊包括明文和密鑰都以一個4×4的矩陣為單位進行輪循環(huán)計算,矩陣的各個元素在有限域GF(28)上進行計算.矩陣元素S00…S33代表128 bit的明文數(shù)據(jù)流,每個元素表示8 bit的明文.
加密流程如圖1所示,其中在第一輪開始之前會先進行輪密鑰加,來防止直接輸入明文.解密流程通過等價變換之后與加密流程相同.AES算法共有5中加密模式:ECB(Electronic Codebook),CBC(Cipher Block Chaining),CFB(Cipher Feedback),OFB(Output Feedback)和CTR(Counter),其中只有ECB和CTR支持并行計算.ECB模式對于相同的明文分組得到的密文完全一樣,所以針對已知明文攻擊不安全.而CTR模式即能安全地對任意長明文加密,又能通過并行技術(shù)提升加密速度[4].本文中通過配置寄存器在ECB和CTR中選擇加密模式.
圖1 加密流程圖
2.1字節(jié)替換運算
字節(jié)替換又叫做Sboxes,是AES算法中唯一的一個非線性置換.由下面的兩個可逆的變換復(fù)合而成.
1)在有限域GF(28)內(nèi)取逆元,00的逆元規(guī)定為00;
2)將所得的逆元經(jīng)過一個有限域GF(28)內(nèi)的仿射變換.
在ASIC中,實現(xiàn)字節(jié)變換的途徑有兩個[5],一個是查找表(LUT),一個是有限域運算.其中有限域運算在求逆時需要將數(shù)據(jù)從GF(28)映射到GF(24)內(nèi),再從GF(24)映射到GF(22)內(nèi)才可以進行運算,所以進行時序分析時,關(guān)鍵路徑可能會很長,影響整體的運算速率,所以該IP通過查找表的方式來實現(xiàn).
2.2行移位運算
行移位是一個線性操作,以字節(jié)為單位.在加密過程中,第1行不變,第2行左移1個字節(jié),第3行左移2個字節(jié),第4行左移3個字節(jié).解密過程中類似,左移位變?yōu)橛乙莆?
2.3列混合運算
列混合運算將狀態(tài)矩陣中的列逐一與一個固定的多項式做乘積[6]:
S′(x)=c(x)·s(x)mod(x4+1),
(1)
式中:s(x)表示狀態(tài)矩陣的某一列,“·”表示有限域乘法,c(x)在加密操作中的表達式為:
c(x)={03}·x3+{01}·x2+{01}·x+{02},
(2)
c(x)在解密過程中的表達式為:
c(x)={0b}·x3+{0d}·x2+{09}·x+{0e}.
(3)
在ASIC實現(xiàn)中,在GF(28)域中實現(xiàn)f(x)·x的計算過程可以用xtime函數(shù)來計算[7]:
xtime={b[6:0],1′b0}⊕(8′h1b⊕{8{b[7]}}),
(4)
式中:b[7:0]表示輸入的8 bit數(shù)據(jù).而后通過相加和迭代xtime函數(shù)的方式來實現(xiàn)整個列混合的操作.
2.4輪密鑰加運算
在基于GF(28)中的運算中,加運算等價于異或運算[7].所以輪密鑰加運算等價為將密鑰矩陣與經(jīng)過輪循環(huán)的狀態(tài)矩陣進行按位異或運算.
模塊主要由4個子功能模塊組成:寄存器配置模塊(apb_logic),控制模塊(ctrl_logic),命令檢測模塊(valid_check),加解密模塊(aes_engine),如圖2所示.寄存器配置模塊主要實現(xiàn)與CPU的通信,完成自身寄存器的配置;控制模塊根據(jù)寄存器的值來發(fā)出各種使能信號和接受來自命令檢測模塊的狀態(tài)信號來置位中斷或錯誤信號;命令檢測模塊主要檢測CPU向該加密IP發(fā)送的AXI傳輸中ax_size與ax_prot信號的值,來決定總線訪問是否能夠被執(zhí)行以及訪問權(quán)限是否足夠,并將結(jié)果反饋給控制模塊;加密模塊主要完成AES-ECB,AES-CTR的加解密和地址空間的重新映射,F(xiàn)IFO緩存,并實現(xiàn)對AXI傳輸中的特殊情況的處理,如Burst地址未對齊等.
因為AXI事務(wù)級傳輸基于Burst來傳輸?shù)模员疚闹?,所有處理AXI數(shù)據(jù)通道的模塊都會內(nèi)置FIFO,用來緩存transaction,以確保最終的結(jié)果無論是返回錯誤還是發(fā)送給存儲器都是以Burst為單位.所有FIFO的深度都是4,也就是說最多緩存64 byte的數(shù)據(jù),最大支持的Burst長度是4.
模塊接受到CPU發(fā)送的AXI寫操作時后的數(shù)據(jù)通道流程圖如圖3所示.在接收到CPU發(fā)送的不對齊的Burst傳輸時,模塊內(nèi)部針對不對齊的地址進行先讀后寫操作.
針對AXI的性能影響,以寫數(shù)據(jù)通道信號為例來進行說明.因為AXI transaction經(jīng)過FIFO鎖存之后,ARM核就可以繼續(xù)發(fā)送指令,不受繼續(xù)的加密操作的影響.所以在ARM核發(fā)送的寫操作AXI transaction中,AES對ARM核發(fā)送AXI transaction無影響.
圖2 功能框圖
圖3 寫數(shù)據(jù)通道流程圖
在讀數(shù)據(jù)通道中,AES加密的延時會體現(xiàn)在ARM核這一側(cè).如圖4所示,在1個ID號是2c,Burst等于1的讀操作中,從ARM核開始發(fā)送讀地址信號到最終的收到讀數(shù)據(jù)通道的last信號,共消耗了127個時鐘周期.其中消耗在加密操作中的時鐘只有20個時鐘周期,而剩下的107個時鐘周期,會因為slave設(shè)備的Ready信號無效和AXI亂序操作的特性而消耗掉.
圖4 AXI讀操作時鐘消耗圖
UVM驗證方法學(xué)由Accellera組織于2010年推出,基于SystemVerilog編寫,結(jié)合了隨機化約束,功能覆蓋率檢測,面向?qū)ο缶幊痰忍攸c,非常方便建立一種通用的驗證平臺,大大提高驗證效率.UVM主體來源于OVM,同時繼承了VMM中的回調(diào)函數(shù)(callback)、寄存器抽象層(Register Abstract Layer,RAL)等技術(shù)[8],使得它成為應(yīng)用最為廣泛且最為成熟的驗證方法學(xué).
驗證平臺最重要的功能在于根據(jù)驗證計劃產(chǎn)生各種各樣的激勵,并且觀察待測試模塊(Design Under Test,DUT)的輸出結(jié)果,判斷結(jié)果的正確性,由此再來判斷DUT的正確性.一個基本的驗證平臺的組成部分:1)Driver,產(chǎn)生不同的激勵施加給DUT;2)Monitor,檢測DUT的輸出.3)Scoreboard,比較期望值與Monitor檢測到的DUT的輸出值;4)Reference model,對DUT的高級語言建模,用于產(chǎn)生正確響應(yīng),以供Scoreboard進行比較[9].
在UVM中,對Driver的功能進行了細分,把其中負責(zé)接口信號轉(zhuǎn)換的部分保留下來,而把數(shù)據(jù)產(chǎn)生的部分重新定義為事務(wù)(Transaction),并在其中實現(xiàn)數(shù)據(jù)的約束與隨機化.并且新定義了2個部件:1)Sequence用來控制Transaction并且方便重載;2)Sequencer用來控制Sequence.這樣只需要在Driver中只實現(xiàn)向它們的Sequencer發(fā)出數(shù)據(jù)請求的功能,從而將數(shù)據(jù)部分與控制部分解耦[9].
驗證平臺如圖5所示,其中AXI_VIP負責(zé)產(chǎn)生AXI的Transaction和響應(yīng),即產(chǎn)生AES加解密的明文以及相應(yīng)的操作,IPS_VIP負責(zé)通過APB總線配置寄存器,主要是配置AES的工作方式以及密鑰的數(shù)值.Reference model通過Systemverilog提供的DPI來調(diào)用C語言描述的AES加解密算法.Func_coverage組件在收到AXI_VIP中Monitor、Reg_predictor組件收到IPS_VIP中Monitor發(fā)送來的信息后[10],對自定義的覆蓋組進行采樣,分別得到AXI傳輸和寄存器配置的覆蓋率信息.
圖5 UVM組件圖
地址不對齊操作波形如圖6所示.xx_s信號為CPU發(fā)出的信號,xx_m為該IP發(fā)出的加密AXI傳輸.加密IP在SoC中有兩塊地址空間,addr_offset0和addr_offset1分別對應(yīng)重映射時的地址偏移量.addr_offset0對應(yīng)0x1000_000—0x1FFFF_FFFF的地址空間的重映射偏移量,addr_offset1對應(yīng)0x3000_0000—0x3FFFF_FFFF的地址空間的重映射偏移量.所以當(dāng)CPU發(fā)出寫地址0x3ea2_0258時,New_addr=0x3ea2_0258-0x3000_0000+5015_0000.而ID信號,由8 bit變?yōu)? bit,整體右移1位,所以0x96變?yōu)?x4b.根據(jù)波形可以看出模塊在處理不對齊的Burst傳輸時,先讀后寫的操作和addr、strb信號的變化.
圖6 地址不對齊操作波形
AES-CTR加密仿真結(jié)果如圖7所示.模塊在進行AES-CTR對Burst長度為4的寫操作的加密時,明文輸入信號由計數(shù)器的值和部分密鑰值組成.兩個時鐘周期可以處理AES算法中的一輪操作.在64 byte的數(shù)據(jù)加密過程中,時鐘頻率為100 MHz時,共用時940 ps,僅僅寫通道的數(shù)據(jù)處理速率可以達到0.545 Gbit/s.本文設(shè)計時讀寫分別有自己的加解密模塊,可以實現(xiàn)讀寫操作的完全并行,總的數(shù)據(jù)處理速率可以翻一倍,達到1.09 Gbit/s.
圖7 AES-CTR加密仿真圖
測試用例測試場景test_addr_unalignedBurst地址不對齊test_all_random全部隨機場景test_axi_randomAxi_vip隨機場景test_axi_securitySecurity預(yù)設(shè)值場景test_ctr_modeAES-CTR模式場景test_disable_abort不使能中斷信號場景test_hard_reset過程中硬件復(fù)位場景test_illegal_sizeAxi_size不正確場景test_register_lockRegister_lock場景test_slave_errorAxi返回錯誤場景test_wstrbWstrb指定帶寬場景
測試用例如表1所示,在做該設(shè)計模塊的回歸測試(regression)時,驗證平臺共創(chuàng)建了11種Testcase,在VCS中運行Testcase并收集覆蓋率信息,不斷調(diào)整隨機約束,最終在Coverage中定義的關(guān)于寄存器配置信息的覆蓋組均被覆蓋,功能驗證完備.LINE+COND+FSM+BRANCH的覆蓋率也均在90%以上,基本完成驗證要求.
本文采用AES算法對ARM核的AXI外接總線進行加解密,并將最終的讀寫操作映射到自定義的地址中,實現(xiàn)SoC片內(nèi)端到端的加解密,達到對片內(nèi)模塊和外部儲存器加密的目的.同時,通過內(nèi)置FIFO等技術(shù)來緩存AXI的Burst傳輸,減小了加解密操作對AXI總線性能的影響.最終數(shù)據(jù)處理速率可以超過1 Gbit/s.而且設(shè)計組建了基于UVM的驗證平臺,根據(jù)驗證計劃創(chuàng)建隨機約束,最終實現(xiàn)覆蓋組的100%覆蓋,代碼覆蓋率也達到90%以上,完成對該加密IP的驗證.
[1]ARM.Building a Secure System using TrustZone Technology[EB/OL].[2009-04-01]. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.prd29-genc-009492c/index.html.
[2]林曉牧.基于AXI接口的多模式AES加解密IP核設(shè)計[D].廣州:華南理工大學(xué),2010.
[3]COTRET P,GOGNIAT G,DIGUET J P,et al.Lightweight reconfiguration security services for axi-based mpsocs[C]//Field Programmable Logic and Applications (FPL),2012 22nd International Conference on.Oslo:IEEE,2012:655-658.
[4]費雄偉,李肯立,陽王東.基于 CTR 模式的GPU并行AES算法的研究與實現(xiàn)[J].小型微型計算機系統(tǒng),2015,36(3):529-533.
[5]KSHIRSAGAR R V,VYAWAHARE M V.FPGA Implementation of High Speed VLSI Architectures for AES Algorithm[C]//Emerging Trends in Engineering and Technology (ICETET),2012 Fifth International Conference on.Oslo:IEEE,2012:239-242.
[6]劉晗嘉.AES加密算法IP核的設(shè)計與驗證[D].上海:上海交通大學(xué),2009.
[7]NIST FIPS PUB 197.Specification for the Advanced Encryption Standard (AES)[EB/OL].[2010-10-15].http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.
[8]呂毓達,謝雪松,張小玲.基于UVM的可重用SoC功能驗證環(huán)境[J].半導(dǎo)體檢測與設(shè)備,2015,3(40):234-238.
[9]張強.UVM實戰(zhàn)(卷1)[M].北京:機械工業(yè)出版社,2014:1-293.
[10]JAIN A,GUPTA R.Scaling the UVM_REG Model towards Automation and Simplicity of Use[C]//VLSI Design (VLSID),2015 28th International Conference on.Bangalore:IEEE,2015:164-169.
Design and Verification of AXI BUS Encrypt Module
HE Yimeng, ZHOU Yajun
(SchoolofAutomation,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
With the development of SoC technology and information safety needed, this paper provides RTL designs which encrypt and decrypt the AXI on-chip bus on-the-fly with AES arithmetic, to ensure the path to be safety from CPU to slave. The soft-IP provides the support for the AXI Burst transfer mode with some inside FIFO modules. The AES arithmetic can work in ECB and CTR mode and encrypt or decrypt paralleled. And the paper provides a structured universal verification methodology(UVM) verification platform to complete the constraint-random test and coverage analysis with the APB and AXI VIPs. At last using the Synopsys simulation tool—VCS to provide the coverage report.
AXI encrypt; AES-CTR mode; verification VIP; universal verification methodology
10.13954/j.cnki.hdu.2016.01.012
2015-05-05
賀依盟(1990-),男,浙江杭州人,碩士研究生,嵌入式系統(tǒng)設(shè)計.通信作者:周亞軍教授,E-mail:zyj@hdu.edu.cn.
文獻標(biāo)識碼:A
1001-9146(2016)01-0057-06