文獻標識碼: 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)上進行了專項優(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ù)字序列按固定長度進行分組,在密鑰作用下逐組加密,最終變換為密文分組。分組密碼以混亂和擴散為基本原則,通常由子密鑰生成算法和加密、解密算法組成[3]。分組密碼處理流程如圖1所示。
分組密碼屬于對稱密碼體制,采用迭代型結(jié)構(gòu),由初始變換、末變換以及中間變換組成,中間變換一般為一定次數(shù)的輪函數(shù)迭代,通常由子密鑰異或、S盒置換以及算術(shù)、移位等多類操作組成。從其結(jié)構(gòu)特點不難歸納出分組密碼在硬件處理上具有以下幾個顯著特點:
(1)分組密碼處理屬于典型的數(shù)據(jù)密集型計算,基于數(shù)據(jù)流驅(qū)動的方式可以進一步加速分組密碼處理性能。
(2)分組密碼中數(shù)據(jù)為二進制字符串,大多為無符號的整數(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等典型的分組密碼算法進行映射,驗證陣列平臺的分組密碼算法高能效實現(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)輸入、輸出、路由和計算。目標陣列有四個配置頁面,具有較大的配置存儲空間和較高的配置靈活性。
在陣列中異構(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ǔ)上選取適當?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ù)各操作展開,陣列中的算子單元在每個時鐘周期都承擔著特定的運算任務(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)部分在一個頁面上并行映射達到加速處理的目的,余下的非循環(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)合并運算,進一步減少陣列中的資源消耗[6];
(3)最小配置信息量:映射方案的配置信息越少,說明需要配置的結(jié)構(gòu)單元越少,則映射復(fù)雜度越低,效率越高;
(4)啟用配置頁面:配置存儲器CM中包含4個配置頁面(Page0~Page3),當映射循環(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。映射按照如下步驟進行,流程圖如圖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算法為例,遵照以上步驟進行。劃分操作后選取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工作模式下的映射性能進行實測分析,得到的結(jié)果如表1所示。
文獻中分組密碼的處理性能通常以某個算法的吞吐率作為直接評價標準,而陣列結(jié)構(gòu)可以通過堆疊可重構(gòu)單元的方式顯著提升吞吐率,但同時這樣會帶來面積和功耗的等幅增加,僅僅考慮吞吐率指標是不夠客觀的,因此本文將能效作為重要評估指標。
陣列能夠動態(tài)配置中間數(shù)據(jù)的寄存與否,進而改變陣列內(nèi)部的關(guān)鍵路徑,所以針對不同的算法可以優(yōu)化映射方案,使其能夠在陣列上達到最優(yōu)運算頻率。根據(jù)實測的功耗數(shù)值,各個算法對應(yīng)功耗也穩(wěn)定在150~190 mW范圍內(nèi),其中DES算法映射共使用了11個FU,因而功耗最大。吞吐率受到算法的迭代周期、數(shù)據(jù)位寬以及頻率的影響,因此AES算法具有最少的迭代次數(shù),其吞吐率達到最高的586 Mb/s,能效也相對最高。
在陣列上利用循環(huán)并行方式對各算法進行映射,測得的結(jié)果如表2所示。
對比表1和表2中的結(jié)果,通過輪函數(shù)循環(huán)并行映射的方式,算法的吞吐率得到顯著提升,且和映射并行度成正相關(guān)。雖然并行映射的方式小幅度增大了陣列的功耗,但在能效指標仍然有較為明顯的提高。實驗證明循環(huán)并行映射能夠有效提升陣列映射分組密碼的吞吐率和能效。
在相關(guān)文獻中選取了關(guān)于AES算法CBC模式下密碼處理結(jié)構(gòu)作為對比,考慮到不同工藝制程對性能參數(shù)的影響,本文參照了文獻[8]中依據(jù)工藝特征尺寸的方法換算了等價能效,雖然無法完全消除工藝偏差帶來的影響,但是可以作為參考依據(jù),結(jié)果如表3所示。
在CBC模式并行映射下陣列AES算法能夠達到1 765 Mb/s的吞吐率,得益于映射方案的優(yōu)化,陣列整體功耗僅有0.18 W,能效為9.54 Mbps/mW,處理能效分別是文獻[8]和文獻[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ù)需求擴展PE數(shù)量以滿足分組密碼的性能、功耗等需求,因而具有較好的能效優(yōu)勢。
5 結(jié)論
本文分析了分組密碼處理的基本特點,并結(jié)合目標密碼邏輯陣列結(jié)構(gòu)特點,提出了分組密碼算法的映射模型和具體映射原則以及循環(huán)并行映射方式。本文選取了典型的分組密碼算法在目標陣列上的映射,并對映射結(jié)果進行實測驗證,數(shù)據(jù)表明,通過并行映射的方式提升了映射吞吐率和能效,該陣列同其他處理平臺相比達到了較好的能效值,能夠滿足分組密碼的映射需求。但是存在資源利用率低的問題。通過改善PE內(nèi)部算子單元結(jié)構(gòu)和擴充陣列規(guī)模,可以支持并行化映射,并對算法的映射方案不斷優(yōu)化,從而進一步提升陣列的吞吐率及能效。
參考文獻
[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] 李遠銘,嚴迎建,李偉.基于粗粒度可重構(gòu)密碼陣列的AES算法映射實現(xiàn)[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é)與計算機,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)