文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.190644
中文引用格式: 高嘉浩,李偉,,陳韜. 基于密碼邏輯陣列的分組密碼高能效映射方法[J].電子技術(shù)應(yīng)用,,2019,45(11):21-26,,31.
英文引用格式: Gao Jiahao,,Li Wei,Chen Tao. Block cipher energy efficient mapping method based on cipher logic array[J]. Application of Electronic Technique,,2019,,45(11):21-26,31.
0 引言
分組密碼是一類重要的密碼體制,,在信息安全領(lǐng)域有著廣泛的應(yīng)用。隨著分組密碼的不斷發(fā)展,,一方面算法的多樣性要求處理模塊具有一定的靈活性,,另一方面對運算速度有著一定的要求[1]。
分組密碼的專用集成電路(Application Specific Integrated Circuit,,ASIC)實現(xiàn)方式針對具體的一種或幾種算法設(shè)計,,密碼處理性能高,但無法滿足靈活性要求,。針對密碼運算設(shè)計的專用指令處理器(Application Specific Instruction-Set Processor,ASIP)在指令集和體系結(jié)構(gòu)上進(jìn)行了專項優(yōu)化,,在具有密碼處理性能的基礎(chǔ)上保證了一定的靈活度,。受制于指令集體系結(jié)構(gòu)的執(zhí)行模式,依然存在計算資源受限,,能效提升困難的問題,。
密碼邏輯陣列(Cipher Logical Array,CLA)較好地兼顧了靈活性和處理速度的需求,。與ASIP相比密碼邏輯陣列舍棄了“取指”,、“譯碼”等過程,,同時陣列中采用分布式寄存資源存儲分組密碼的運算結(jié)果,節(jié)省了大量的“訪存”時間,。這種由數(shù)據(jù)流驅(qū)動的方式將密碼處理集中于“執(zhí)行”階段,,因此在能效上優(yōu)于專用指令密碼處理器[2]。
本文依托于針對項目組設(shè)計的密碼邏輯陣列,,分析了分組密碼的基本特點,,提出了分組密碼在陣列上映射的基本原則和高能效映射方法,選取幾種典型的分組密碼算法,,論述對應(yīng)算法在陣列芯片上的映射步驟及流程,,并實測映射后的實驗數(shù)據(jù),以驗證陣列映射分組密碼的實現(xiàn)性能,。實測結(jié)果表明該密碼邏輯陣列支持多種分組密碼算法的映射實現(xiàn),,具有一定的靈活度和較好的能效特性。
1 分組密碼處理特點分析
分組密碼是將明文消息編碼的數(shù)字序列按固定長度進(jìn)行分組,,在密鑰作用下逐組加密,,最終變換為密文分組。分組密碼以混亂和擴(kuò)散為基本原則,,通常由子密鑰生成算法和加密,、解密算法組成[3]。分組密碼處理流程如圖1所示,。
分組密碼屬于對稱密碼體制,,采用迭代型結(jié)構(gòu),由初始變換,、末變換以及中間變換組成,,中間變換一般為一定次數(shù)的輪函數(shù)迭代,通常由子密鑰異或,、S盒置換以及算術(shù),、移位等多類操作組成。從其結(jié)構(gòu)特點不難歸納出分組密碼在硬件處理上具有以下幾個顯著特點:
(1)分組密碼處理屬于典型的數(shù)據(jù)密集型計算,,基于數(shù)據(jù)流驅(qū)動的方式可以進(jìn)一步加速分組密碼處理性能,。
(2)分組密碼中數(shù)據(jù)為二進(jìn)制字符串,大多為無符號的整數(shù),,長度介于64 bit到256 bit之間,,粒度為32 bit的陣列適合實現(xiàn)分組密碼操作的并行運算。
(3)分組密碼具有很強的數(shù)據(jù)局部性,,即第i輪迭代運算的輸入數(shù)據(jù)只與第i-1輪的輸出數(shù)據(jù)直接相關(guān),,而與之前的數(shù)據(jù)不直接相關(guān)。這使得輪內(nèi)操作只能串行執(zhí)行,而中間計算結(jié)果可被覆蓋,。
(4)輪函數(shù)作為運算主體部分,,輪函數(shù)內(nèi)部結(jié)構(gòu)簡單且算子排列有序,不存在相同運算操作,,控制實現(xiàn)簡單,,因此分組密碼具有速度快和易于軟硬件實現(xiàn)的特點[4]。
本文將選取AES,、DES等典型的分組密碼算法進(jìn)行映射,,驗證陣列平臺的分組密碼算法高能效實現(xiàn)結(jié)果。
2 CLA基本結(jié)構(gòu)
本文依托的密碼邏輯陣列面向?qū)ΨQ密碼算法高速處理而設(shè)計,,陣列中的計算單元(Process Element,,PE)包含多種算子結(jié)構(gòu),粒度為32 bit,,采取數(shù)據(jù)流驅(qū)動的方式,,根據(jù)存儲的配置信息確定算子結(jié)構(gòu)和互連結(jié)構(gòu),不同的配置信息對應(yīng)不同的內(nèi)部結(jié)構(gòu),,實現(xiàn)不同的密碼運算和所需功能,。
陣列整體上包含輸入輸出FIFO、共享存儲單元(Shared Store Unit,,SSU)和運算系統(tǒng),。其中輸入輸出FIFO起到數(shù)據(jù)緩存和數(shù)據(jù)交換的作用;SSU由寄存器堆和SRAM組成,,主要完成密碼算法中子密鑰,、常數(shù)的存取以及S盒操作;運算系統(tǒng)由16個PE和基于2D-Mesh的互連結(jié)構(gòu)組成,,通過可重構(gòu)的方式實現(xiàn)特定的密碼運算,,支持多個最小陣列組合成規(guī)模更大的陣列結(jié)構(gòu)。密碼邏輯陣列結(jié)構(gòu)圖如圖2所示,。
PE包含功能單元(Function Unit,,F(xiàn)U)、交互單元(Interaction Unit,,IU)和連接單元(Connection Unit,,CU)。連接單元實現(xiàn)PE內(nèi)部功能單元的互連,,交互單元實現(xiàn)PE之間的互連,,兩者構(gòu)成互連結(jié)構(gòu)。功能單元根據(jù)配置存儲器(Configuration Memory,,CM)中的配置信息,,在分布式控制器控制下實現(xiàn)輸入、輸出,、路由和計算,。目標(biāo)陣列有四個配置頁面,具有較大的配置存儲空間和較高的配置靈活性,。
在陣列中異構(gòu)PE(圖2中深色填充PE)中設(shè)計了能夠執(zhí)行某些低頻次的128 bit甚至更大位寬的操作算子,,在分組密碼映射實現(xiàn)的前提下,有效地平衡了陣列整體的功耗與面積,。
作為計算核心的可重構(gòu)密碼塊(Reconfigurable Cryptography Block,,RCB)由算術(shù)類單元AG、邏輯類單元LG,、置換類單元BP和非線性類單元NF共四類算子組成,;通過互連資源,各算子單元能夠以多種組合搭建數(shù)據(jù)路徑,,從而實現(xiàn)復(fù)雜的密碼運算,。
每一級單元后加入了旁路寄存器,可配置數(shù)據(jù)是否寄存,。PE內(nèi)部的旁路寄存器構(gòu)成了陣列的分布式存儲結(jié)構(gòu),,利用該類寄存器可控制數(shù)據(jù)路徑的延時,靈活應(yīng)對不同密碼算法不同應(yīng)用場景下的性能需求,。
3 分組密碼算法高能效映射
3.1 陣列映射模型
CLA是實現(xiàn)分組密碼的平臺,,通過集合抽象的方式來表示其硬件資源,可為映射提供各種硬件資源的抽象信息,。本文參考PRAM參數(shù)化描述形式[5],,將CLA的硬件資源模型(不考慮輸入輸出FIFO)定義如下:
(1)CLA中所有計算資源的集合可表示為FU={FUi,j|i,,j=1,,2,3,,4},;
(2)IU、CU以及FU內(nèi)輸入輸出選擇網(wǎng)絡(luò)組成的CLA中的互連資源集合可以表示為ConPE={(Con_PEI,,Con_PEO)i,,j|i,j=1,,2,,3,4},;
(3)CLA中的存儲資源包括SSU和內(nèi)部的寄存器,,可表示為SS={SSU,,RSi,j|i,,j=1,,2,3,,4},;
則CLA的硬件資源模型可以視為一個的三元數(shù)組D,D=(FU,,ConPE,,SS)。如果將輪函數(shù)視為一個有限集合,,則有R={op1,,op2,…,,opn},,集合中的每一個元素表示一種操作,若干個操作順序組合形成特定的密碼算法,。
將陣列中的每一個RCB視為一個集合F,,則F={ag,lg,,nf,,bp,rs},,F(xiàn)中元素代表四類算子單元和寄存器資源,。則有即在四類算子單元中至少可以找到一個用于實現(xiàn)分組密碼中一個獨立的操作。
映射過程中分組密碼操作順序最終表現(xiàn)為PE間互連資源即IU,、CU的配置使用以及PE內(nèi)算子單元的連接順序,,構(gòu)建的集合可以表示為:
IOicu={up,down,,left,,right}
IOrcb={up,down,,left,,right,ssu,,rs,,ag,lg,,nf,,bp}
通過一個二元向量即可將陣列中的互連關(guān)系表示出來:Con=<Vi,,Vo>,對應(yīng)的PE內(nèi)部和PE之間的連接關(guān)系可表示為:
Con_PEI={<Vi,,Vo>unit|<Vi,,Vo>∈IOreb,unit=ag,,lg,nf,,bp}
Con_PEO={<Vi,,Vo>unit|<Vi,Vo>∈IOicu,,unit=iu,,cu}
在確定互連關(guān)系集合之后,映射的存儲資源使用關(guān)系也被確定下來,。映射密碼算法的實質(zhì)就是在CLA硬件資源模型的基礎(chǔ)上選取適當(dāng)?shù)馁Y源,,確定各單元間的連接關(guān)系,配合時序控制實現(xiàn)密碼運算,。
若將分組密碼視為一個集合Block={I,,R,L},,集合中的元素分別代表初始變換,、輪函數(shù)循環(huán)和末變換。循環(huán)并行映射的集合可表示為:
Map={Pagem=(FU,,SS,,Con,Ctr)m|m=1,,2,,3,4}
即陣列最終的映射結(jié)果是全部4個配置頁面的配置信息,,每個頁面包含計算,、存儲、互連和控制4類配置要素,。
3.2 分組密碼循環(huán)并行映射
式(1)為吞吐率公式,,式中w為處理數(shù)據(jù)位寬即分組長度;f為頻率,;c為算法的運算周期,,表示每秒內(nèi)電路的數(shù)據(jù)處理能力,單位為b/s,。
式(2)中PFIFO,、PCM和PS分別表示陣列FIFO,、配置存儲器和陣列的靜態(tài)功耗,均可視為常量,;而陣列的動態(tài)功耗PD則取決于具體的映射方案并與消耗的FU數(shù)量直接相關(guān),。
結(jié)合式(1)、式(2)可知,,實現(xiàn)高能效映射一方面是增大數(shù)據(jù)處理位寬和運行頻率,,提高陣列的吞吐率;另一方面則是節(jié)約映射消耗資源,,以降低整體功耗,。
提高分組密碼處理速度的重點是加速輪函數(shù)的循環(huán)過程,主要有操作流水和映射并行兩種方式,。操作流水使用流水線技術(shù)將輪函數(shù)各操作展開,,陣列中的算子單元在每個時鐘周期都承擔(dān)著特定的運算任務(wù);映射并行則是在陣列上映射多個分組,,使得陣列資源實現(xiàn)對不同數(shù)據(jù)的并行處理,。這兩者都能有效提升分組密碼處理的吞吐率。
映射過程中往往要考慮到分組密碼的工作模式,,例如ECB這種數(shù)據(jù)不相關(guān)的工作模式,,可以實現(xiàn)操作流水,而CBC這類前后分組數(shù)據(jù)相關(guān)的工作模式,,則無法實現(xiàn)操作流水,。同時實現(xiàn)操作流水將顯著增大陣列控制的復(fù)雜度,因而映射并行是一種更為實用的提升吞吐率的方式,。
陣列預(yù)設(shè)有四個配置頁面,,靈活切換能夠充分容納更多的操作運算,有效支持輪函數(shù)循環(huán)的并行映射,。而陣列提供的資源總是有限的,,實現(xiàn)并行處理的組數(shù)取決于循環(huán)內(nèi)映射所需頻次最高的算子單元。以DES算法為例,,將DES算法的初始置換I和逆初始置換L映射到Page0,,而在Page1上并行映射兩組輪運算R1和R2,由陣列控制結(jié)構(gòu)控制配置頁面的切換,,這樣通過循環(huán)加速能有效提升DES算法的吞吐率,,如圖3所示。
通過將循環(huán)部分在一個頁面上并行映射達(dá)到加速處理的目的,,余下的非循環(huán)部分則通過時序控制映射到其他頁面,,最大限度利用陣列資源和相關(guān)配置,此時吞吐率可表示為式(3):
式中fp為循環(huán)并行的運算頻率,,n為映射并行度,,tdelay為切換配置頁面的時鐘延時,。使用多個配置頁面并行映射后,陣列運行頻率基本不變,,雖然引入了配置頁面切換延時,,增大了陣列的動態(tài)功耗,但是處理數(shù)據(jù)量近似成倍增加,,有效提高了陣列的吞吐率和最終映射的能效,。
3.3 分組密碼高能效映射方法
根據(jù)以上分析,結(jié)合分組密碼的基本特點,,在映射過程中遵循以下基本原則優(yōu)化映射方案:
(1)最少FU:盡可能減小PE單元使用量,,同時提高每個PE單元內(nèi)部功能單元FU的利用率,以提高陣列的整體飽和度和吞吐率密度,,簡化陣列內(nèi)部的連接關(guān)系,降低陣列功耗,;
(2)操作合并:陣列中的異構(gòu)PE算子單元支持級聯(lián)和大位寬數(shù)據(jù)處理,,同類型的操作和相鄰數(shù)據(jù)操作均可以實現(xiàn)合并運算,進(jìn)一步減少陣列中的資源消耗[6],;
(3)最小配置信息量:映射方案的配置信息越少,,說明需要配置的結(jié)構(gòu)單元越少,則映射復(fù)雜度越低,,效率越高,;
(4)啟用配置頁面:配置存儲器CM中包含4個配置頁面(Page0~Page3),當(dāng)映射循環(huán)并行頁面資源占用已滿或存在分支操作時,,應(yīng)選擇添加一個新的配置頁面,;
(5)中間值寄存:輪運算過程中的中間數(shù)據(jù)應(yīng)在PE中寄存,為下一輪運算提供數(shù)據(jù)輸入,,同時縮短陣列內(nèi)部關(guān)鍵路徑,,提高運行頻率和能效。
此外,,分組密碼的同一組子密鑰往往需要加解密若干組明,、密文,子密鑰生成算法運算一次即可,,其耗費時間同整個數(shù)據(jù)任務(wù)處理的時間相比可忽略不計[7],。在陣列中采用離線密碼生成方式,即子密鑰提前生成并存入SSU中,,待執(zhí)行輪函數(shù)時取出對應(yīng)的子密鑰參與運算,。
S盒變換是分組密碼中重要的非線性算子單元,在映射時使用SSU中的SRAM實現(xiàn)該算子,,具體地,,需在映射前將S盒的配置信息寫入SRAM,。映射按照如下步驟進(jìn)行,流程圖如圖4所示,。
(1)設(shè)定映射并行度:如需在陣列上實現(xiàn)循環(huán)并行,,需要在滿足資源限定下選擇合適的并行度,并確定各頁面映射內(nèi)容,;
(2)劃分算法操作,,選取算子單元:根據(jù)算法中主要包含的操作類型確定各操作適合采用AG、LG,、BP,、NF中的哪一類計算單元實現(xiàn);
(3)確定陣列中計算資源消耗:陣列的粒度為32 bit,,處理的數(shù)據(jù)位寬決定了算法映射所需的計算單元及其內(nèi)部算子單元數(shù)目,;
(4)由操作次序確定RCB內(nèi)算子單元的排列順序,即在輸入,、輸出網(wǎng)絡(luò)中確定待映射算子單元的數(shù)據(jù)來源,、流向,完成PE內(nèi)部映射,;
(5)通過PE中的IU,、CU單元確定陣列內(nèi)部互連關(guān)系,搭建陣列內(nèi)部數(shù)據(jù)路徑,;
(6)根據(jù)算法的時序圖確定相應(yīng)控制信號:控制信號的主體是時序控制,,主要包括配置控制和存儲使能控制,還包括算法過程中配置頁面切換和寄存器讀寫需求產(chǎn)生對應(yīng)時序的控制信號,。
4 分組密碼算法映射及性能分析
4.1 AES算法映射
以映射AES-128 bit算法為例,,遵照以上步驟進(jìn)行。劃分操作后選取SRAM,、BP,、LG和AG單元依次實現(xiàn)輪函數(shù)中的S盒變換、行移位,、列混合以及子密鑰異或4類操作,。根據(jù)所需算子單元數(shù)量,將AES算法的初始變換和輪運算分別映射到陣列上,,由數(shù)據(jù)處理順序確定PE內(nèi)部及PE間互連關(guān)系,,得到圖5所示的陣列數(shù)據(jù)路徑。
映射AES算法使用了12個FU以及若干互連單元,,考慮到初始變換只有子密鑰異或,,輪運算中也包含相同操作,若將初始變換放入輪運算中實現(xiàn)操作合并,AES算法流程可以調(diào)整為前9輪輪函數(shù)迭代,、第10輪的S盒,、行移位操作以及最后一輪的子密鑰異或;此外結(jié)合循環(huán)并行映射,,在陣列上并行映射2個AES分組,,得到如圖6所示的映射數(shù)據(jù)路徑。
確定數(shù)據(jù)路徑之后生成所需的時序控制,,最終生成配置信息,,完成AES算法的映射。調(diào)整后的映射方案使用了更少的FU以及互連資源,,結(jié)合映射的基本原則,,調(diào)整后的映射方案優(yōu)于調(diào)整前的方案,同時兩個分組并行處理有效提升了吞吐率和映射能效,。
4.2 映射性能分析
實驗室設(shè)計的密碼邏輯陣列基于CMOS 55 nm工藝流片,,選取幾種典型的分組密碼算法在CBC工作模式下的映射性能進(jìn)行實測分析,得到的結(jié)果如表1所示,。
文獻(xiàn)中分組密碼的處理性能通常以某個算法的吞吐率作為直接評價標(biāo)準(zhǔn),,而陣列結(jié)構(gòu)可以通過堆疊可重構(gòu)單元的方式顯著提升吞吐率,但同時這樣會帶來面積和功耗的等幅增加,,僅僅考慮吞吐率指標(biāo)是不夠客觀的,,因此本文將能效作為重要評估指標(biāo),。
陣列能夠動態(tài)配置中間數(shù)據(jù)的寄存與否,,進(jìn)而改變陣列內(nèi)部的關(guān)鍵路徑,所以針對不同的算法可以優(yōu)化映射方案,,使其能夠在陣列上達(dá)到最優(yōu)運算頻率,。根據(jù)實測的功耗數(shù)值,各個算法對應(yīng)功耗也穩(wěn)定在150~190 mW范圍內(nèi),,其中DES算法映射共使用了11個FU,,因而功耗最大。吞吐率受到算法的迭代周期,、數(shù)據(jù)位寬以及頻率的影響,,因此AES算法具有最少的迭代次數(shù),其吞吐率達(dá)到最高的586 Mb/s,,能效也相對最高,。
在陣列上利用循環(huán)并行方式對各算法進(jìn)行映射,測得的結(jié)果如表2所示,。
對比表1和表2中的結(jié)果,,通過輪函數(shù)循環(huán)并行映射的方式,算法的吞吐率得到顯著提升,且和映射并行度成正相關(guān),。雖然并行映射的方式小幅度增大了陣列的功耗,,但在能效指標(biāo)仍然有較為明顯的提高。實驗證明循環(huán)并行映射能夠有效提升陣列映射分組密碼的吞吐率和能效,。
在相關(guān)文獻(xiàn)中選取了關(guān)于AES算法CBC模式下密碼處理結(jié)構(gòu)作為對比,,考慮到不同工藝制程對性能參數(shù)的影響,本文參照了文獻(xiàn)[8]中依據(jù)工藝特征尺寸的方法換算了等價能效,,雖然無法完全消除工藝偏差帶來的影響,,但是可以作為參考依據(jù),結(jié)果如表3所示,。
在CBC模式并行映射下陣列AES算法能夠達(dá)到1 765 Mb/s的吞吐率,,得益于映射方案的優(yōu)化,陣列整體功耗僅有0.18 W,,能效為9.54 Mbps/mW,,處理能效分別是文獻(xiàn)[8]和文獻(xiàn)[12]的7.5倍和2.3倍。在同等資源密度下,,數(shù)據(jù)流驅(qū)動的陣列架構(gòu)相對于指令驅(qū)動的處理器架構(gòu)能夠省去在指令部分的相關(guān)資源開銷,,在能效上占據(jù)一定優(yōu)勢。本文提出的陣列結(jié)構(gòu)規(guī)模較小,,但實際應(yīng)用時可根據(jù)需求擴(kuò)展PE數(shù)量以滿足分組密碼的性能,、功耗等需求,因而具有較好的能效優(yōu)勢,。
5 結(jié)論
本文分析了分組密碼處理的基本特點,,并結(jié)合目標(biāo)密碼邏輯陣列結(jié)構(gòu)特點,提出了分組密碼算法的映射模型和具體映射原則以及循環(huán)并行映射方式,。本文選取了典型的分組密碼算法在目標(biāo)陣列上的映射,,并對映射結(jié)果進(jìn)行實測驗證,數(shù)據(jù)表明,,通過并行映射的方式提升了映射吞吐率和能效,,該陣列同其他處理平臺相比達(dá)到了較好的能效值,能夠滿足分組密碼的映射需求,。但是存在資源利用率低的問題,。通過改善PE內(nèi)部算子單元結(jié)構(gòu)和擴(kuò)充陣列規(guī)模,可以支持并行化映射,,并對算法的映射方案不斷優(yōu)化,,從而進(jìn)一步提升陣列的吞吐率及能效。
參考文獻(xiàn)
[1] COMPTON K,,HAUCK S.Reconfigurable computing:a survey of systems and software[J].ACM Computing Surveys,,2002,34(2):171-210.
[2] 金晨輝,鄭浩然,,張少武,,等.密碼學(xué)[M].北京:高等教育出版社,2009.
[3] 劉雷波,,王博,,魏少軍.可重構(gòu)計算密碼處理器[M].北京:科學(xué)出版社,2018.
[4] 朱敏,,劉雷波,,尹首一,等.面向?qū)ΨQ密碼領(lǐng)域的可重構(gòu)陣列設(shè)計[J].微電子學(xué),,2012,,42(6):815-818.
[5] 孫康.可重構(gòu)計算相關(guān)技術(shù)研究[D].杭州:浙江大學(xué),2007.
[6] 李遠(yuǎn)銘,,嚴(yán)迎建,,李偉.基于粗粒度可重構(gòu)密碼陣列的AES算法映射實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2018,,35(3):304-308,,326.
[7] 徐金甫,楊宇航.SM4算法在粗粒度陣列平臺的并行化映射[J].電子技術(shù)應(yīng)用,,2017,,43(4):39-42,46.
[8] SAYILAR G,,CHIOU D.Cryptoraptor:high throughput reconfigurable cryptographic processor[C].IEEE/ACM International Conference on Computer-aided Design.IEEE,,2014.
[9] FRONTE D,PEREZ A,,PAYRAT E.Celator:a multi-algo-rithm cryptographic co-processor[C].International Conference on Reconfigurable Computing & Fpgas.IEEE,,2008.
[10] 郭巖松,,劉雷波.一種面向分組密碼的粗粒度可重構(gòu)陣列及AES算法映射[J].微電子學(xué)與計算機(jī),,2015,32(9):1-5.
[11] LIU B,,BAAS B M.Parallel AES encryption engines for many-core processor arrays[J].IEEE Transactions on Computers,,2013,62(3):536-547.
[12] HUANG W,,HAN J,,WANG S,et al.A low-complexity heterogeneous multi-core platform for security SoC[C].Solid State Circuits Conference.IEEE,,2010.
作者信息:
高嘉浩,,李 偉,陳 韜
(解放軍信息工程大學(xué),河南 鄭州 450001)