賀依盟,周亞軍
(杭州電子科技大學(xué)自動(dòng)化學(xué)院,浙江 杭州 310018)
?
AXI總線加密模塊的設(shè)計(jì)與驗(yàn)證
賀依盟,周亞軍
(杭州電子科技大學(xué)自動(dòng)化學(xué)院,浙江 杭州 310018)
結(jié)合信息安全的需求以及SoC技術(shù)的發(fā)展,設(shè)計(jì)了一種基于AES加解密算法的AXI總線加密IP,達(dá)到從CPU到slave的整個(gè)數(shù)據(jù)通路的加解密目的,實(shí)現(xiàn)SoC內(nèi)部的端到端加密.其中通過內(nèi)置多個(gè)FIFO,分別在讀寫通道緩存CPU發(fā)出的AXI Burst傳輸,保證CPU發(fā)出的總線傳輸可以被順序的加解密處理.在AES算法實(shí)現(xiàn)方面,完成了ECB,CTR兩種便于并行處理的加密模式.在讀寫通道分別加入AES實(shí)現(xiàn)模塊,保證加解密操作的并行處理.同時(shí)構(gòu)建結(jié)構(gòu)化的UVM驗(yàn)證平臺(tái),結(jié)合APB和AXI的VIP來實(shí)現(xiàn)對(duì)該IP的隨機(jī)約束和覆蓋率分析,最終通過Synopsys的VCS仿真工具完成功能驗(yàn)證.
AXI加密;AES-CTR模式;驗(yàn)證VIP;統(tǒng)一驗(yàn)證方法學(xué)
隨著集成電路的發(fā)展,單位晶圓上可集成的晶體管越來越多,可實(shí)現(xiàn)的功能越來越多,各式各樣的知識(shí)產(chǎn)權(quán)核(Intellectual Property,IP)開始加入到片上系統(tǒng)(System On Chip,SoC)中.為保證數(shù)據(jù)通信的安全性,SoC中數(shù)據(jù)加密技術(shù)的研究成為重點(diǎn).ARM公司早在2008年便提出了Trust Zone技術(shù),在芯片中建立安全系統(tǒng)的概念,并在其處理器和總線矩陣IP中實(shí)現(xiàn)了對(duì)該技術(shù)的支持,在實(shí)際芯片設(shè)計(jì)中得到了廣泛的應(yīng)用[1].已有的運(yùn)用高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)加密的IP多是針對(duì)某一具體外圍設(shè)備的實(shí)現(xiàn),作為總線矩陣的從設(shè)備端(Slave)來集成在SoC中,這樣的IP只能處理單一模塊的加密,利用率不高[2].在加密IP中,由于加解密的操作,數(shù)據(jù)的處理速率會(huì)受到很大的影響,所以模塊內(nèi)部需要進(jìn)行相應(yīng)的處理來提高數(shù)據(jù)處理速率,如AXI Burst傳輸需要模塊內(nèi)部集成有緩存.IP設(shè)計(jì)時(shí)也必須考慮對(duì)AXI等數(shù)據(jù)接口總線支持,如AXI的寫地址不對(duì)齊訪問,需要額外的邏輯來實(shí)現(xiàn).但是目前的加密IP中,都沒有考慮這些方面.
本文設(shè)計(jì)了一種集成在ARM核與AXI總線矩陣之間的數(shù)據(jù)通路中的加密模塊,直接對(duì)ARM核輸出的AXI事務(wù)處理(Transaction)進(jìn)行加密,再將加密后的事務(wù)處理通過AXI Master接口發(fā)送給總線矩陣模塊.通過地址映射功能來選擇性地完成對(duì)片內(nèi)、片外的多個(gè)模塊進(jìn)行加解密處理,并支持ARM的Trust Zone技術(shù),通過寄存器的配置和ARM核的處理器狀態(tài)來限制模塊的訪問權(quán)限,提高芯片整體的安全性.同時(shí)為了保證本文IP設(shè)計(jì)的邏輯正確性,本文完成了基于統(tǒng)一驗(yàn)證方法學(xué)(Universal Verification Methodology,UVM)的驗(yàn)證平臺(tái)搭建,并結(jié)合Synopsys提供的AXI和APB的驗(yàn)證VIP,完成對(duì)IP的功能驗(yàn)證.
AXI總線是ARM公司于2004年提出的AMBA3.0協(xié)議中的重要組成部分[3],是一種面向高性能,高帶寬,低延時(shí)的片內(nèi)總線,在SoC中得到了廣泛的應(yīng)用.AXI協(xié)議將操作分為讀地址、讀數(shù)據(jù)、寫地址、寫數(shù)據(jù)、寫響應(yīng)5個(gè)通道.每個(gè)通道都由一組獨(dú)立信號(hào)組成,并使用雙向VALID和REDAY握手機(jī)制.信息源使用VALID信號(hào)表明通道上的數(shù)據(jù)和控制信息何時(shí)有效,目的端使用REDAY信號(hào)表明何時(shí)能夠接收數(shù)據(jù).讀數(shù)據(jù)通道和寫數(shù)據(jù)通道都包含一個(gè)LAST信號(hào),以顯示事務(wù)處理中的最后一個(gè)數(shù)據(jù)項(xiàng)的傳輸.而且每個(gè)事務(wù)處理都會(huì)在5個(gè)通道有相應(yīng)的ID號(hào),來支持亂序傳輸.讀寫數(shù)據(jù)通道可配置自己的數(shù)據(jù)總線寬度為8~1 024位,寫數(shù)據(jù)通道還包含8位的狹窄通道(wstrb)信號(hào),對(duì)每8個(gè)數(shù)據(jù)位進(jìn)行過濾,表明數(shù)據(jù)總線上哪些字節(jié)是有效的,來支持地址不對(duì)齊的Burst寫操作[3].
AES算法是美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)協(xié)會(huì)(NIST)2001年發(fā)布的高級(jí)加密算法,用以取代DES算法,滿足21世紀(jì)的數(shù)據(jù)安全需求.AES算法的數(shù)據(jù)塊長(zhǎng)度固定128位,密鑰長(zhǎng)度可以是128位、192位、256位相應(yīng)的迭代次數(shù)為10,12,14.數(shù)據(jù)塊包括明文和密鑰都以一個(gè)4×4的矩陣為單位進(jìn)行輪循環(huán)計(jì)算,矩陣的各個(gè)元素在有限域GF(28)上進(jìn)行計(jì)算.矩陣元素S00…S33代表128 bit的明文數(shù)據(jù)流,每個(gè)元素表示8 bit的明文.
加密流程如圖1所示,其中在第一輪開始之前會(huì)先進(jìn)行輪密鑰加,來防止直接輸入明文.解密流程通過等價(jià)變換之后與加密流程相同.AES算法共有5中加密模式:ECB(Electronic Codebook),CBC(Cipher Block Chaining),CFB(Cipher Feedback),OFB(Output Feedback)和CTR(Counter),其中只有ECB和CTR支持并行計(jì)算.ECB模式對(duì)于相同的明文分組得到的密文完全一樣,所以針對(duì)已知明文攻擊不安全.而CTR模式即能安全地對(duì)任意長(zhǎng)明文加密,又能通過并行技術(shù)提升加密速度[4].本文中通過配置寄存器在ECB和CTR中選擇加密模式.
圖1 加密流程圖
2.1字節(jié)替換運(yùn)算
字節(jié)替換又叫做Sboxes,是AES算法中唯一的一個(gè)非線性置換.由下面的兩個(gè)可逆的變換復(fù)合而成.
1)在有限域GF(28)內(nèi)取逆元,00的逆元規(guī)定為00;
2)將所得的逆元經(jīng)過一個(gè)有限域GF(28)內(nèi)的仿射變換.
在ASIC中,實(shí)現(xiàn)字節(jié)變換的途徑有兩個(gè)[5],一個(gè)是查找表(LUT),一個(gè)是有限域運(yùn)算.其中有限域運(yùn)算在求逆時(shí)需要將數(shù)據(jù)從GF(28)映射到GF(24)內(nèi),再?gòu)腉F(24)映射到GF(22)內(nèi)才可以進(jìn)行運(yùn)算,所以進(jìn)行時(shí)序分析時(shí),關(guān)鍵路徑可能會(huì)很長(zhǎng),影響整體的運(yùn)算速率,所以該IP通過查找表的方式來實(shí)現(xiàn).
2.2行移位運(yùn)算
行移位是一個(gè)線性操作,以字節(jié)為單位.在加密過程中,第1行不變,第2行左移1個(gè)字節(jié),第3行左移2個(gè)字節(jié),第4行左移3個(gè)字節(jié).解密過程中類似,左移位變?yōu)橛乙莆?
2.3列混合運(yùn)算
列混合運(yùn)算將狀態(tài)矩陣中的列逐一與一個(gè)固定的多項(xiàng)式做乘積[6]:
S′(x)=c(x)·s(x)mod(x4+1),
(1)
式中:s(x)表示狀態(tài)矩陣的某一列,“·”表示有限域乘法,c(x)在加密操作中的表達(dá)式為:
c(x)={03}·x3+{01}·x2+{01}·x+{02},
(2)
c(x)在解密過程中的表達(dá)式為:
c(x)={0b}·x3+{0d}·x2+{09}·x+{0e}.
(3)
在ASIC實(shí)現(xiàn)中,在GF(28)域中實(shí)現(xiàn)f(x)·x的計(jì)算過程可以用xtime函數(shù)來計(jì)算[7]:
xtime={b[6:0],1′b0}⊕(8′h1b⊕{8{b[7]}}),
(4)
式中:b[7:0]表示輸入的8 bit數(shù)據(jù).而后通過相加和迭代xtime函數(shù)的方式來實(shí)現(xiàn)整個(gè)列混合的操作.
2.4輪密鑰加運(yùn)算
在基于GF(28)中的運(yùn)算中,加運(yùn)算等價(jià)于異或運(yùn)算[7].所以輪密鑰加運(yùn)算等價(jià)為將密鑰矩陣與經(jīng)過輪循環(huán)的狀態(tài)矩陣進(jìn)行按位異或運(yùn)算.
模塊主要由4個(gè)子功能模塊組成:寄存器配置模塊(apb_logic),控制模塊(ctrl_logic),命令檢測(cè)模塊(valid_check),加解密模塊(aes_engine),如圖2所示.寄存器配置模塊主要實(shí)現(xiàn)與CPU的通信,完成自身寄存器的配置;控制模塊根據(jù)寄存器的值來發(fā)出各種使能信號(hào)和接受來自命令檢測(cè)模塊的狀態(tài)信號(hào)來置位中斷或錯(cuò)誤信號(hào);命令檢測(cè)模塊主要檢測(cè)CPU向該加密IP發(fā)送的AXI傳輸中ax_size與ax_prot信號(hào)的值,來決定總線訪問是否能夠被執(zhí)行以及訪問權(quán)限是否足夠,并將結(jié)果反饋給控制模塊;加密模塊主要完成AES-ECB,AES-CTR的加解密和地址空間的重新映射,F(xiàn)IFO緩存,并實(shí)現(xiàn)對(duì)AXI傳輸中的特殊情況的處理,如Burst地址未對(duì)齊等.
因?yàn)锳XI事務(wù)級(jí)傳輸基于Burst來傳輸?shù)?,所以本文中,所有處理AXI數(shù)據(jù)通道的模塊都會(huì)內(nèi)置FIFO,用來緩存transaction,以確保最終的結(jié)果無論是返回錯(cuò)誤還是發(fā)送給存儲(chǔ)器都是以Burst為單位.所有FIFO的深度都是4,也就是說最多緩存64 byte的數(shù)據(jù),最大支持的Burst長(zhǎng)度是4.
模塊接受到CPU發(fā)送的AXI寫操作時(shí)后的數(shù)據(jù)通道流程圖如圖3所示.在接收到CPU發(fā)送的不對(duì)齊的Burst傳輸時(shí),模塊內(nèi)部針對(duì)不對(duì)齊的地址進(jìn)行先讀后寫操作.
針對(duì)AXI的性能影響,以寫數(shù)據(jù)通道信號(hào)為例來進(jìn)行說明.因?yàn)锳XI transaction經(jīng)過FIFO鎖存之后,ARM核就可以繼續(xù)發(fā)送指令,不受繼續(xù)的加密操作的影響.所以在ARM核發(fā)送的寫操作AXI transaction中,AES對(duì)ARM核發(fā)送AXI transaction無影響.
圖2 功能框圖
圖3 寫數(shù)據(jù)通道流程圖
在讀數(shù)據(jù)通道中,AES加密的延時(shí)會(huì)體現(xiàn)在ARM核這一側(cè).如圖4所示,在1個(gè)ID號(hào)是2c,Burst等于1的讀操作中,從ARM核開始發(fā)送讀地址信號(hào)到最終的收到讀數(shù)據(jù)通道的last信號(hào),共消耗了127個(gè)時(shí)鐘周期.其中消耗在加密操作中的時(shí)鐘只有20個(gè)時(shí)鐘周期,而剩下的107個(gè)時(shí)鐘周期,會(huì)因?yàn)閟lave設(shè)備的Ready信號(hào)無效和AXI亂序操作的特性而消耗掉.
圖4 AXI讀操作時(shí)鐘消耗圖
UVM驗(yàn)證方法學(xué)由Accellera組織于2010年推出,基于SystemVerilog編寫,結(jié)合了隨機(jī)化約束,功能覆蓋率檢測(cè),面向?qū)ο缶幊痰忍攸c(diǎn),非常方便建立一種通用的驗(yàn)證平臺(tái),大大提高驗(yàn)證效率.UVM主體來源于OVM,同時(shí)繼承了VMM中的回調(diào)函數(shù)(callback)、寄存器抽象層(Register Abstract Layer,RAL)等技術(shù)[8],使得它成為應(yīng)用最為廣泛且最為成熟的驗(yàn)證方法學(xué).
驗(yàn)證平臺(tái)最重要的功能在于根據(jù)驗(yàn)證計(jì)劃產(chǎn)生各種各樣的激勵(lì),并且觀察待測(cè)試模塊(Design Under Test,DUT)的輸出結(jié)果,判斷結(jié)果的正確性,由此再來判斷DUT的正確性.一個(gè)基本的驗(yàn)證平臺(tái)的組成部分:1)Driver,產(chǎn)生不同的激勵(lì)施加給DUT;2)Monitor,檢測(cè)DUT的輸出.3)Scoreboard,比較期望值與Monitor檢測(cè)到的DUT的輸出值;4)Reference model,對(duì)DUT的高級(jí)語言建模,用于產(chǎn)生正確響應(yīng),以供Scoreboard進(jìn)行比較[9].
在UVM中,對(duì)Driver的功能進(jìn)行了細(xì)分,把其中負(fù)責(zé)接口信號(hào)轉(zhuǎn)換的部分保留下來,而把數(shù)據(jù)產(chǎn)生的部分重新定義為事務(wù)(Transaction),并在其中實(shí)現(xiàn)數(shù)據(jù)的約束與隨機(jī)化.并且新定義了2個(gè)部件:1)Sequence用來控制Transaction并且方便重載;2)Sequencer用來控制Sequence.這樣只需要在Driver中只實(shí)現(xiàn)向它們的Sequencer發(fā)出數(shù)據(jù)請(qǐng)求的功能,從而將數(shù)據(jù)部分與控制部分解耦[9].
驗(yàn)證平臺(tái)如圖5所示,其中AXI_VIP負(fù)責(zé)產(chǎn)生AXI的Transaction和響應(yīng),即產(chǎn)生AES加解密的明文以及相應(yīng)的操作,IPS_VIP負(fù)責(zé)通過APB總線配置寄存器,主要是配置AES的工作方式以及密鑰的數(shù)值.Reference model通過Systemverilog提供的DPI來調(diào)用C語言描述的AES加解密算法.Func_coverage組件在收到AXI_VIP中Monitor、Reg_predictor組件收到IPS_VIP中Monitor發(fā)送來的信息后[10],對(duì)自定義的覆蓋組進(jìn)行采樣,分別得到AXI傳輸和寄存器配置的覆蓋率信息.
圖5 UVM組件圖
地址不對(duì)齊操作波形如圖6所示.xx_s信號(hào)為CPU發(fā)出的信號(hào),xx_m為該IP發(fā)出的加密AXI傳輸.加密IP在SoC中有兩塊地址空間,addr_offset0和addr_offset1分別對(duì)應(yīng)重映射時(shí)的地址偏移量.addr_offset0對(duì)應(yīng)0x1000_000—0x1FFFF_FFFF的地址空間的重映射偏移量,addr_offset1對(duì)應(yīng)0x3000_0000—0x3FFFF_FFFF的地址空間的重映射偏移量.所以當(dāng)CPU發(fā)出寫地址0x3ea2_0258時(shí),New_addr=0x3ea2_0258-0x3000_0000+5015_0000.而ID信號(hào),由8 bit變?yōu)? bit,整體右移1位,所以0x96變?yōu)?x4b.根據(jù)波形可以看出模塊在處理不對(duì)齊的Burst傳輸時(shí),先讀后寫的操作和addr、strb信號(hào)的變化.
圖6 地址不對(duì)齊操作波形
AES-CTR加密仿真結(jié)果如圖7所示.模塊在進(jìn)行AES-CTR對(duì)Burst長(zhǎng)度為4的寫操作的加密時(shí),明文輸入信號(hào)由計(jì)數(shù)器的值和部分密鑰值組成.兩個(gè)時(shí)鐘周期可以處理AES算法中的一輪操作.在64 byte的數(shù)據(jù)加密過程中,時(shí)鐘頻率為100 MHz時(shí),共用時(shí)940 ps,僅僅寫通道的數(shù)據(jù)處理速率可以達(dá)到0.545 Gbit/s.本文設(shè)計(jì)時(shí)讀寫分別有自己的加解密模塊,可以實(shí)現(xiàn)讀寫操作的完全并行,總的數(shù)據(jù)處理速率可以翻一倍,達(dá)到1.09 Gbit/s.
圖7 AES-CTR加密仿真圖
測(cè)試用例測(cè)試場(chǎng)景test_addr_unalignedBurst地址不對(duì)齊test_all_random全部隨機(jī)場(chǎng)景test_axi_randomAxi_vip隨機(jī)場(chǎng)景test_axi_securitySecurity預(yù)設(shè)值場(chǎng)景test_ctr_modeAES-CTR模式場(chǎng)景test_disable_abort不使能中斷信號(hào)場(chǎng)景test_hard_reset過程中硬件復(fù)位場(chǎng)景test_illegal_sizeAxi_size不正確場(chǎng)景test_register_lockRegister_lock場(chǎng)景test_slave_errorAxi返回錯(cuò)誤場(chǎng)景test_wstrbWstrb指定帶寬場(chǎng)景
測(cè)試用例如表1所示,在做該設(shè)計(jì)模塊的回歸測(cè)試(regression)時(shí),驗(yàn)證平臺(tái)共創(chuàng)建了11種Testcase,在VCS中運(yùn)行Testcase并收集覆蓋率信息,不斷調(diào)整隨機(jī)約束,最終在Coverage中定義的關(guān)于寄存器配置信息的覆蓋組均被覆蓋,功能驗(yàn)證完備.LINE+COND+FSM+BRANCH的覆蓋率也均在90%以上,基本完成驗(yàn)證要求.
本文采用AES算法對(duì)ARM核的AXI外接總線進(jìn)行加解密,并將最終的讀寫操作映射到自定義的地址中,實(shí)現(xiàn)SoC片內(nèi)端到端的加解密,達(dá)到對(duì)片內(nèi)模塊和外部?jī)?chǔ)存器加密的目的.同時(shí),通過內(nèi)置FIFO等技術(shù)來緩存AXI的Burst傳輸,減小了加解密操作對(duì)AXI總線性能的影響.最終數(shù)據(jù)處理速率可以超過1 Gbit/s.而且設(shè)計(jì)組建了基于UVM的驗(yàn)證平臺(tái),根據(jù)驗(yàn)證計(jì)劃創(chuàng)建隨機(jī)約束,最終實(shí)現(xiàn)覆蓋組的100%覆蓋,代碼覆蓋率也達(dá)到90%以上,完成對(duì)該加密IP的驗(yàn)證.
[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è)計(jì)[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]費(fèi)雄偉,李肯立,陽王東.基于 CTR 模式的GPU并行AES算法的研究與實(shí)現(xiàn)[J].小型微型計(jì)算機(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è)計(jì)與驗(yàn)證[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]呂毓達(dá),謝雪松,張小玲.基于UVM的可重用SoC功能驗(yàn)證環(huán)境[J].半導(dǎo)體檢測(cè)與設(shè)備,2015,3(40):234-238.
[9]張強(qiáng).UVM實(shí)戰(zhàn)(卷1)[M].北京:機(jī)械工業(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è)計(jì).通信作者:周亞軍教授,E-mail:zyj@hdu.edu.cn.
文獻(xiàn)標(biāo)識(shí)碼:A
1001-9146(2016)01-0057-06