楊國強 丁杭超 鄒 靜 蔣 瀚 陳彥琴
1(山東大學計算機科學與技術學院 濟南 250101) 2(山東大學數學學院 濟南 250100) 3(國網經濟技術研究院有限公司 北京 102209) 4(山東大學軟件學院 濟南 250101) 5(北京三未信安科技發展有限公司 北京 100102)
當今信息技術已經進入人工智能技術飛速發展的時代,新一代人工智能技術是建立在大數據計算基礎上的.而大數據計算技術發展速度可以說是日新月異.在云計算、霧計算、邊緣計算等計算模式下,大數據處理技術可以在海量的分散數據中迅速發現有價值的數據,極大地提高生產力水平,給經濟發展帶來巨大推動力,目前大數據技術已經成為云計算之后信息技術領域的另一個信息產業增長點.
大數據強大的數據計算處理能力,也對數據安全帶來了巨大的安全風險,大數據的機密性、認證性以及隱私保護等數據安全問題,目前受到高度關注[1].大數據的生命周期大概可以分成數據的采集、存儲、挖掘和發布4個主要環節.數據的采集是指數據的采集和聚合過程,需要關注的安全問題是數據匯聚過程中是傳輸安全問題;數據的存儲則需要保證數據的機密性以及加解密的性能;數據的挖掘則需要關注數據的敏感信息的隱私保護問題,以及挖掘者的身份認證問題;數據的發布則需要對數據進行安全審計以及數據溯源問題.可以看出,在大數據的每個應用環節,都有可能遇到安全問題,而密碼技術則是解決大數據安全問題的核心技術.
海量數據的應用背景,為密碼學提出了新的要求,其中最重要的就是密碼算法的效率問題.本文分析了大數據安全方案邏輯架構,抽取了關鍵的密碼底層算法以及運算模塊,提出了3個快速密碼部件的快速實現算法,并在基于Xilinx公司的KC705開發板上進行了驗證,同時給出實驗數據.具體有3方面內容:
1) 針對國產分組密碼算法標準SM4-XTS,進行了快速實現,該工作可以對海量的數據進行快速地加解密,性能可達31.5 Gbps,同時有效地保證數據安全;
2) 針對國產數字簽名算法標準SM2,進行了快速實現,該工作可以解決高并發的用戶身份認證問題;
3) 針對大整數模冪運算,進行了快速實現,大整數模冪運算可以作為同態加密的協處理器,可以直接對大數據密文進行處理,解決了大數據隱私保護的問題.
Elbirt等人[2]在2000年提出了一種在FPGA的快速AES的流水線實現方式,最高能到10 Gbps.負責對儲存媒介信息保護進行算法標準開發的IEEE 1619安全儲存委員會(SISWG)于2008年4月正式公布了XTS-AES算法標準[3],XTS-AES算法是一種可調整的窄式塊分組密碼,該算法主要用于以數據單元(包括扇區、邏輯磁盤塊等)為基礎結構的存儲設備中靜止狀態數據的加密.XTS-AES的公布解決了大數據存儲一系列的安全威脅,并且允許在算法實現上應用并行化和流水線結構,提高性能.隨著國密算法SM4標準的發布,國內的芯片廠商也生產了相應的SM4算法芯片并應用于國密市場.比較代表性的產品有北京宏思電子技術有限責任公司的HSM4A高性能分組密碼算法芯片和清華大學微電子學研究所的高性能SM4芯片.這幾款芯片大都只支持ECB和CBC模式,并不支持XTS模式,國內并沒有直接支持SM4-XTS模式的產品.
2006年Ansari等人[4]在X86架構上實現快速ECC算法,并在OpenSSL上提供了開源代碼的實現,單核CPU上ECC簽名的性能可以達到2萬次秒的級別.國外很多公司和高校也投入到ECC的快速實現當中[5-6].隨著國密標準算法SM2的發布,國內的芯片廠商也推出了相應的SM2芯片產品,比較具有代表性的是北京宏思電子技術有限責任公司的HSM2A高性能公鑰密碼算法芯片和北京華大信安科技有限公司的高性能ISECMM1521SV1芯片.
1999年Paillier[7]提出了一種新的同態加密算法,即Paillier加密算法,該方案在提出后受到了廣泛的關注.2001年Choi等人[8]通過選取特殊的參數改進了Paillier加密體制.基于Paillier體制的加法同態性可以有效地設計應用于大數據環境下的隱私保護方案.而Paillier算法的核心運算為大整數模冪.2012年Gueron[9]在X86架構上實現快速的大整數模冪運算,并在OpenSSL上提供了開源代碼的實現,單核CPU上512 b的大整數模冪性能可以達到8 000次秒的級別.國內支持大整數模冪運算的產品主要有北京芯光天地集成電路設計有限公司的SSX26芯片和北京華大信安科技有限公司的高性能ISRSAMM11KBV1芯片.
2012年3月國家密碼管理局正式公布了SM4分組密碼算法行業標準.與DES和AES算法類似,SM4算法是一種分組密碼算法,其分組長度為128 b,密鑰長度也為128 b.加密算法與密鑰擴展算法均采用32輪非線性迭代結構,以字(32 b)為單位進行加密運算,每一次迭代運算均為一輪變換函數F.SM4算法加解密算法的結構相同,只是使用輪密鑰相反,其中解密輪密鑰是加密輪密鑰的逆序.SM4算法的整體結構如圖1所示.

Fig. 1 The overall architecture of SM4圖1 SM4的整體結構圖
XTS模式是可調整的分組密碼模式,跟傳統的分組密碼相比,除了密鑰和明文這2個輸入以外,XTS模式還多了一個輸入,這個輸入被稱作調整值[10](Tweak).Tweak的作用類似于CBC模式中的初始向量和OCB模式中的Nonce[11].引入這個調整值的原因是在一般情況下,密鑰的改變對整個加密系統來說是一項開銷很大的事情,所以在保持密鑰不變的情況下,通過改變這個調整值,能夠對整個加密系統提供多變性,相比于改變密鑰來說,改變調整值對整個加密系統開銷更少,并且沒有任何風險性,因為調整值可以公開[12],而不用擔心像密鑰那樣泄漏的問題.對于不同的Tweak,XTS模式就代表2個不同的分組密碼,優點體現在改變Tweak比改變密鑰的代價更小;因為改變密鑰,就意味著要重新進行密鑰擴展算法.XTS模式的作用主要體現在存儲加密,尤其是磁盤扇區加密上.
SM2是2010年12月國國家密碼管理局發布的具有自主知識產權的國產密碼算法.該算法是基于橢圓曲線離散對數難題提出的公鑰密碼算法.SM2簽名算法可滿足大數據應用中身份認證的安全需求.SM2具體的簽名流程如下.
設待簽名的消息為M,用戶A的身份信息為ZA,為了獲取消息M的數字簽名(r,s),作為簽名者的用戶A應實現運算步驟為:
① 置M=ZA‖M;
② 計算e=SM3(M);
③ 用隨機數發生器產生隨機數k∈[1,n-1];
④ 計算橢圓曲線點(x1,y1)=[k]G;
⑤ 計算r=(e+x1) modn,若r=0或r+k=n,則返回步驟③;
⑥ 計算s=(1+dA)-1(k-r.dA) modn,若s=0則返回步驟③;
⑦ 消息M的簽名為(r,s).
同態加密機制分為3個階段[13],分別為初始化階段、加密階段和解密階段.

2) 加密階段.設有明文m∈Zn,且m 加法同態的定義:如果已知密文E(x)和E(y),通過一系列運算可以計算出E(x+y),而不需要知道x,y的值.即C(E(x),E(y))=E(x+y),此處C代表任意運算. Paillier算法的加同態性質證明: 已知密文E(x)和E(y),則: D(E(x)×E(y) modn2)= D(gx+y(r1r2)nmodn2)= x+ymodn=D(E(x+y)), 由此式可以推出,在不知道x和y的情況下可以求出E(x+y),所以說Paillier算法滿足加法同態性質. 本文分析了基于高性能密碼實現的大數據安全方案邏輯架構,如圖2所示,該方案從邏輯上分為3層:密碼算法層、密碼服務層和應用層. Fig. 2 The logic architecture of big data scheme圖2 大數據安全方案邏輯架構 密碼算法層是整個大數據安全方案的核心層,為整個大數據安全方案提供技術支撐,在該層實現了安全方案需要的所有密碼算法,包括SM4-XTS存儲加解密算法、SM2簽名驗簽算法、大整數的模冪算法.在密碼算法層,重點研究高性能密碼實現技術,研究大整數運算、橢圓曲線計算等優化算法以及眾核并行技術,實現FPGA高性能密碼運算. 通過改進眾核并行和流水線技術,優化智能調度和協同計算,提高并發、多任務密碼處理陣列,在FPGA平臺實現高速密碼算法,保證滿足大數據安全方案對高性能密碼運算的需求. 密碼服務層是對密碼算法層的封裝,對外提供應用接口.在這一層,用戶可以自定義指令來調用密碼算法層實現密碼服務,如身份認證、存儲加密、Paillier同態加解密運算等. 應用層是調用密碼服務層的接口來解決大數據應用中存在的實際問題.調用存儲加密接口可以對海量的大數據進行高速地加解密;調用身份認證接口可以處理高并發用戶的身份認證需求;調用大整數模冪運算可以快速封裝成Paillier同態算法,完成一些加同態加解密的業務需求. 本文的核心工作是密碼算法層在FPGA上的快速實現.本方案中密碼算法層主要支持3種快速算法的實現:SM4-XTS模式、SM2簽名驗簽、大整數的模冪.下面分別介紹3種算法的快速實現方案. SM4-XTS模式的快速實現分為2個步驟:1)32級流水線SM4的高速實現;2)伽羅華域乘法的快速實現,并與32級流水線的配合. 4.1.1 32級流水線SM4的高速實現 S-BOX是SM4實現中最影響性能的部分.S-BOX的實現有2種方式[14]:1)采用多個S-BOX的組合邏輯方式;2)基于ROM的查找表實現方式.如果選擇多個S-BOX,整個輪函數可以由組合邏輯實現,中間不需要插入寄存器,一次迭代可以在一個時鐘周期內完成.此時,多個S-BOX雖然多占用了資源,但是控制邏輯可減少復雜度,而且方便使用流水線處理;如果只用一個S-BOX實現,為了完成非線性變換,需要對S-BOX進行分時復用,此時必須在S-BOX的輸入和輸出端插入2級寄存器,此時雖然省去了S-BOX占用的資源,但是控制邏輯復雜很多,而且增加了大量的寄存器資源,并且花費的時間也大大增加,一次迭代至少需要多個時鐘周期才能完成.所以我們選擇采用多個S-BOX的組合邏輯實現方式,即可以在一個周期內完成輪函數,又支持流水線方式. 對于SM4的密鑰擴展,我們采用動態即時輪密鑰擴展技術,每個周期都可以使用一個單獨密鑰加解密一個分組而不影響性能,這為我們使用流水線技術打下了基礎. 在這種硬件架構下,可以采用流水線的方式提升性能.通過即時輪密鑰擴展技術,SM4運算時,輪密鑰擴展和加解密運算是可以同時進行的.通過精密設計的流水線,使得每個周期都可以使用一個單獨密鑰加解密一個分組而不影響性能.這樣,我們就可以在算法工作前期花費少量的周期建立起流水線,當流水線填滿后可以充分發揮部分邏輯電路的運算能力,大幅度提升算法性能. 在本文的快速實現方案中,我們使用了32級流水線技術來完成SM4算法的高速實現[15],為SM4-XTS的快速實現提供了技術基礎. 4.1.2 SM4-XTS的高速實現 XTS加密算法示意圖如圖3所示,其中SM4-ENC為標準的SM4加密算法,Key2為調整值的密鑰,Key1為待加密數據的密鑰.伽羅華域模乘中的α為有限域GF(2128)域上的本原元,該有限域的生成多項式為x127+x7+x2+x+1.計算的順序步驟: ①T=SM4-ENC(Key2,i)?αj; ②PP=P⊕T; ③CC=SM4-ENC(Key1,PP); ④C=CC⊕T. Fig. 3 The overall architecture of SM4-XTS圖3 SM4-XTS的整體結構圖 步驟①中伽羅華域模乘在j是迭代遞增的情況下相當于移位加異或運算,所以可以每個時鐘周期更新一次結果.故在SM4流水線建立完成后,每個周期j遞增1,然后計算出來的T可以用于步驟②③的運算中,依然保證SM4-XTS模式可以每個周期都向外輸出128 b的結果,實現高速SM4-XTS模式. SM2協議可分為4層,如圖4所示,最頂層是SM2協議(包括簽名、驗簽、加解密和密鑰協商等),所有協議的基礎都是點乘操作.點乘操作是基于點加、倍點運算來實現的.最底層是最基本的算術運算,包括模加、模減、模逆、模乘.針對SM2協議的每一層我們都可以使用一定的優化策略來加速運算,減少運算時間從而提升性能. Fig. 4 The overall architecture of SM2圖4 SM2的總體架構 1) 模乘器的優化 在最底層的4種算術運算中,模乘運算是整個SM2協議使用頻率最高、最核心,也是最重要的模塊,大約占用90%的運算時間.模加和模減邏輯結構相對簡單,模逆使用頻率低,所以模乘器的優化是我們在實現中關注的重點.優化策略主要包括3點: ① 利用FPGA內部的高速DSP運算單元構建模乘器.DSP是FPGA內置的算術運算單元,可以支持(25 b×18 b+48 b)的乘累加運算.通過精心設計DSP的組合,盡量減少關鍵路徑的延時,以支持高速的模乘運算. ② 利用Karastusba算法減少部分積數量.模乘運算的運算時間由部分積數量決定.構建256 b的乘法,Karastusba算法只需要3個128 b乘法生成的部分積和少量加法,相對傳統簡單乘法減少了25%運算量.同理,采用分而治之的方法,對N采取同樣的策略,最終可大幅降低模乘運算時間. ③ 針對SM2特殊參數優化模約減運算.模乘中的模約減過程可以針對SM2協議定義的素數P的特殊性來實現.我們可以采用若干次加法和減法運算來得到模約減結果,與目前普遍通用的Montgomery算法相比,節省了數次256 b的乘法運算,性能可以明顯提升. 2) 點加和倍點的優化 在點加和倍點的運算過程中,為了避免耗時的模逆運算,需要將普通坐標轉換成雅可比坐標下運算.在SM2協議中,倍點需要8次模乘、6次模加、4次模減,而點加需要11次模乘、2次模加和6次模減.優化策略主要包括2點: ① 利用模乘器流水線能力提高點加和倍點的運算效率. ② 降低倍點和點加運算的模乘相關性.為了充分發揮模乘器流水線的性能,需要對點加和倍點運算的公式進行數據相關性分析,設計詳細的計算順序,使連續的模乘模加運算不存在輸入輸出數據的相關性. 3) 點乘的優化 對簽名來說,最費時的操作為點乘操作(x1,y1)=[k]G.系數k按二進制展開為256位0和1的組合,我們可以采用NAF(非線性相關)編碼的方式,對點乘系數k進行編碼,增加系數k中0的數量,降低系數k的漢明重量,從而減少運算次數,提升簽名速度. 同態加密算法能夠保持數據明文與密文之間的同態關系,包括支持加法、乘法的單同態加密算法,以及支持加法和乘法的全同態加密算法.全同態的運算具有速度慢、密文規模大、效率低等缺點,使其很難適用于大規模業務場景;RSA,Paillier等單同態加密算法,因為其實現相對簡單,所以有比較具體的應用場景.所以本文主要研究Paillier單同態加密方案[16-17]. 眾所周知,Paillier算法的核心難題是大整數的模冪問題.而模冪的基本運算是大整數的模乘,所以在本節中重點介紹大整數模乘的快速實現. 如圖5的算法所示,大整數模乘算法[18],采用蒙哥馬利模乘算法的FIOS實現方式,便于FPGA實現.在該算法中,w=128,即基本的運算是128 b的乘法運算,這樣s=4,8,12,16就分別代表512,1024,1536,2048位長度的模乘運算,可以通過定義s的不同值來實現模乘器長度的動態配置. Fig. 5 Montgomery multiplication (FIOS) 在實現的具體過程中,需要注意中間結果的存儲問題.對于一個大整數,用寄存器存儲的話可能會帶來很大的資源浪費,隨著數據寬度的增加導致需要的寄存器硬件資源飛速增加.所以本節的實現中,可以用FPGA自帶的BRAM來存儲A,B,M以及中間結果Z.實驗證明,可以減少60%的資源消耗,而且隨著數據寬度的增加,效果會更加明顯. 總之,本方案提供了一個可以動態配置長度的大整數模冪處理器[19].通過FIOS算法的深度優化以及BRAM的充分利用,可以高效、高速地完成大整數模冪的運算. 本方案在FPGA芯片上實現一個高性能的密碼協處理器,該協處理器支持3種密碼功能:SM4-XTS模式加解密、SM2簽名、大整數的模冪運算.通過輸入不同的密令碼來調用不同的密碼功能.該密碼協處理器的實現為整個大數據安全方案提供單芯片解決方案,便于產品化的推廣. 我們基于Xilinx公司的KC705開發板快速實現了各個算法,并實際測試了我們的方法,取得了實驗數據. KC705是Xilinx公司提供的7系列FPGA的開發套件,開發板上的FPGA芯片是Kintex-7系列 的XC7K325T-2,屬于中端系列,是Xilinx公司最具性價比的產品,便于產業推廣,具有實際的推廣價值. 本方案在KC705開發板上實現同時支持3種密碼運算的密碼協處理器,對3種算法的資源共享、異步時鐘、地址分配等做了優化處理,通過輸入不同的命令碼便可以支持相應的密碼功能. 本方案實現了一個高性能的密碼協處理,同時支持3種密碼功能:SM4-XTS、SM2簽名以及大整數模冪運算.通過輸入不同的命令碼來調用不同的密碼功能. 該密碼協處理器內部包含3個密碼模塊,各個模塊在功能上相互獨立;但是每個密碼模塊運行的時鐘頻率各不相同,需要做異步時鐘處理,同時為3個不同的算法模塊分配不同的訪問地址.表1列舉了該密碼協處理各密碼模塊的實驗結果. Table 1 Results of Cryptographic Co-processor 由表1可以看出,這3種算法運行在不同的時鐘頻率、資源占有率也各不相同.SM4-XTS模式可以運行在250 MHz的時鐘頻率,處理一個SM4分組需要的時間為0.004 μs,SM4-XTS加密性能可達31.5 Gbps;而SM2簽名運行在150 MHz的時鐘頻率,做一次簽名運算需要的時間為38.5 μs,SM2簽名速度可達每秒26 063次;512 b大整數模冪運行在66 MHz的時鐘頻率,做一次模冪運算需要時間為149.2 μs,大整數模冪速度可達每秒6 702次. 表2列舉的密碼協處理器的資源使用情況.LUT是(look-up-table)的縮寫,DSP是FPGA內部實現的乘法器,二者都是FPGA的基本邏輯單元.本方案實現的密碼協處理充分利用了FPGA的元器件特性,提高各個模塊的實現效率.表2可以看出本方案切實可行,在實現高性能算法的同時,預留了大量的資源便于邏輯調度、訪問控制等控制邏輯的實現. Table 2 Utilization of FPGA 1) SM4-XTS性能比較 SM4是我國專用的對稱密碼算法,目前國內的產品基本都不支持SM4-XTS模式,只是支持ECB和CBC模式.其他產品的ECB模式與本文方案性能對比如表3所示: Table 3 Performance Comparison of SM4-XTS Encryption with Other Works HSM4A芯片是北京宏思電子技術有限責任公司生產的一款SM4算法芯片,加密性能可達2.5 Gbps. SSX1510是清華微電子所芯片研發的一款SM4芯片,其加密性能可達2.0 Gbps. 可以看出:本文的工作首先填補了國內該方向的空白,同時由表3的結果可以看出,本文采用32級流水線的高速實現方式,每個周期都可以輸出128 b的密文,加密性能已經基本達到了極限,遠超于其他產品的性能.所以本文提出的方案具有比較好的性價比,優勢巨大. 2) SM2和大整數模冪性能比較 如表4、表5所示,SM2與大整數模冪性能與國內其他廠商產品性能對比結果. Table 4 Performance Comparison of SM2 Signature with Other Works Table 5 Performance Comparison of 512 b Modular Exponentiation with Other Works HSM2A芯片是北京宏思電子技術有限責任公司生產的一款SM2算法芯片,簽名速度可達每秒20 000次. ISECMM1521SV1是北京華大信安科技有限公司開發的橢圓曲線公鑰密碼芯片產品,其簽名速度可達每秒14 000次. SSX26芯片是北京芯光天地集成電路設計有限公司設計的一款RSA算法芯片,支持大整數模冪運算,512 b的大整數模冪速度可達每秒1 400次. ISECMM1521SV1是北京華大信安科技有限公司開發的一款RSA算法芯片,支持大整數模冪運算,其512 b的大整數模冪速度可達每秒231次. 由以上結果可以看出:SM2和大整數模冪的性能比較,本文的工作都處于比較明顯的領先地位.所以本文的方案具有一定的優勢,可以良好地滿足該方案密碼算法的需求. 本文提出了基于高性能密碼實現的大數據安全方案,主張用密碼技術來解決大數據安全問題.實驗結果表明,本文提出的方案主要解決了大數據技術中存在的3個技術難題:1)大規模的海量數據高速加解密問題;2)高并發的用戶身份認證問題;3)大數據的部分隱私保護問題.而且該方案在安全性、易用性、性能方面都具有較大優勢,優于目前已知的其他方案.因此本文提出的方案是行之有效的. 未來可以繼續添加數據溯源和數據確權的解決方案,如此可以解決大數據全生命周期的安全問題,方案會更加完整、有效.
3 大數據安全方案邏輯架構

4 大數據安全方案的快速實現
4.1 SM4-XTS的快速實現

4.2 SM2的快速實現

4.3 大整數模冪的快速實現

圖5 蒙哥馬利模乘的FIOS實現5 實驗與結果
5.1 實驗環境
5.2 實驗結果


5.3 相關工作比較



6 總 結