李 萍,朱春琴,曹 磊,孫 毅,魏房忠
(江蘇省大數(shù)據(jù)管理中心,江蘇 南京 210000)
目前,信息技術(shù)發(fā)展較快,已經(jīng)步入了人工智能技術(shù)時(shí)代。人工智能技術(shù)的建立主要基于大數(shù)據(jù)計(jì)算。現(xiàn)如今,大數(shù)據(jù)計(jì)算技術(shù)取得較快發(fā)展,在多種計(jì)算模式下,利用大數(shù)據(jù)處理技術(shù),能在大量而且分散的數(shù)據(jù)中,及時(shí)找出有價(jià)值、有意義的數(shù)據(jù),促使生產(chǎn)力水平得到顯著提高,助推經(jīng)濟(jì)發(fā)展。
如圖1所示為邏輯架構(gòu),從邏輯上來(lái)看,針對(duì)大數(shù)據(jù)安全,可把邏輯結(jié)構(gòu)分為3層。從邏輯架構(gòu)層中可以得知,密碼算法層占據(jù)關(guān)鍵的位置,在很大程度上,能為方案奠定有力的技術(shù)支撐。數(shù)據(jù)安全方案中含有多種密碼算法,例如大家熟知的SM4-XTS算法,通過(guò)密碼算法層,都能促使這些算法得到使用。在密碼算法層中,應(yīng)當(dāng)加大密碼技術(shù)的研究力度,不斷對(duì)相關(guān)的優(yōu)化算法進(jìn)行摸索,例如大整數(shù)運(yùn)算。此外,也不能忽視對(duì)眾核并行技術(shù)的研究,以便在FPGA平臺(tái)中,使高性能運(yùn)算得到實(shí)現(xiàn)。強(qiáng)化對(duì)眾核技術(shù)的優(yōu)化,重視對(duì)智能協(xié)同計(jì)算的健全,充分結(jié)合并發(fā)任務(wù),以便能促使處理陣列得到提升,有效發(fā)揮FPGA平臺(tái)的作用,有助于達(dá)到高速密碼算法的目標(biāo),基于大數(shù)據(jù)安全方案,保證方案能更好地滿足密碼運(yùn)算的要求。對(duì)密碼服務(wù)層來(lái)講,在多數(shù)情況下,服務(wù)對(duì)象往往是算法層,可實(shí)現(xiàn)對(duì)算法層的封裝。在此基礎(chǔ)上,能向外部提供接口,積極發(fā)揮密碼服務(wù)層的作用,操作人員能達(dá)到自定義指令的目的。在此情況下,能隨意使用密碼算法層,最終對(duì)目標(biāo)進(jìn)行服務(wù),比如文件儲(chǔ)存加密、身份認(rèn)證等。對(duì)于應(yīng)用層而言,主要是基于密碼服務(wù)層,對(duì)其接口進(jìn)行調(diào)用,來(lái)處理大數(shù)據(jù)應(yīng)用問(wèn)題[1]。在調(diào)用儲(chǔ)存加密接口之后,能在極短的時(shí)間內(nèi)解密較多的大數(shù)據(jù);通過(guò)對(duì)身份認(rèn)證接口進(jìn)行調(diào)用,可更好地滿足身份認(rèn)證需求;對(duì)模冪運(yùn)算進(jìn)行調(diào)用,能快速對(duì)同臺(tái)算法進(jìn)行封裝,有效完成業(yè)務(wù)需求。
對(duì)于大數(shù)據(jù)安全的快速實(shí)現(xiàn),本文主要從SM4-XTS的快速實(shí)現(xiàn)、SM2的快速實(shí)現(xiàn)等方面進(jìn)行分析。
SM4實(shí)現(xiàn):在SM4性能影響方面,S-BOX的影響最大。對(duì)于S-BOX的實(shí)現(xiàn),主要包括兩種方式,一種是基于數(shù)個(gè)S-BOX,而形成的邏輯方式;另一種是依據(jù)ROM的查找表,進(jìn)而形成的方式。若選取數(shù)個(gè)S-BOX,那么基于輪函數(shù),可通過(guò)組合邏輯方式,不需借對(duì)寄存器,往往只需依靠1個(gè)時(shí)鐘周期,就能有效完成迭代過(guò)程。另一方面,對(duì)于多個(gè)S-BOX而言,即便會(huì)耗用大多數(shù)的資源,然而通過(guò)對(duì)邏輯的控制,能降低復(fù)雜度,更加容易采用流水線處理;若通過(guò)一個(gè)S-BOX實(shí)現(xiàn),若要達(dá)到變換非線性的目的,則需分時(shí)復(fù)用S-BOX,與此同時(shí),雖然不使用資源,不過(guò)在邏輯控制方面,變得更加復(fù)雜,需使用到較多的寄存器資源,而且明顯提高花費(fèi)的時(shí)間,對(duì)于一次迭代的完成,需使用數(shù)個(gè)時(shí)鐘周期?;诖?,對(duì)于組合邏輯實(shí)現(xiàn)而言,采用多個(gè)S-BOX方式,能實(shí)現(xiàn)對(duì)流水線方式的支持,僅需一個(gè)周期,即可完成整輪函數(shù)[2]。
圖1 邏輯結(jié)構(gòu)
在SM4密鑰拓展方面,使用動(dòng)態(tài)即時(shí)輪技術(shù),在任何一個(gè)周期中,通過(guò)一個(gè)單獨(dú)密鑰,來(lái)對(duì)1個(gè)分組進(jìn)行加密解密,而且對(duì)性能不造成影響,可為流水線技術(shù)的應(yīng)用奠定堅(jiān)實(shí)的基礎(chǔ)。基于此硬件架構(gòu),在性能提升方面,可借助于流水線方式得以實(shí)現(xiàn)。采用即時(shí)輪拓展技術(shù),在SM4運(yùn)算方面,在同一時(shí)間內(nèi),即可以進(jìn)行加解密運(yùn)算,也能進(jìn)行輪密鑰拓展。對(duì)流水線開(kāi)展精心設(shè)計(jì),在一個(gè)周期內(nèi),采用一個(gè)單獨(dú)密鑰,對(duì)一個(gè)分組進(jìn)行加密解密,而且對(duì)性能不造成影響。通過(guò)這樣的方式,能以較少的周期實(shí)現(xiàn)對(duì)流水線的建立,在流水線被填滿之后,基于部分邏輯電路,能促使運(yùn)算能力得到積極發(fā)揮,極大地提高算法性能?;诳焖賹?shí)現(xiàn)方案,采用的流水線技術(shù)為32級(jí),使SM4算法得以實(shí)現(xiàn),為SM4-XTS的快速實(shí)現(xiàn),提供了強(qiáng)有力的技術(shù)支持。
對(duì)于SM2協(xié)議而言,通??蓜澐譃?層,圖2為SM2總體架構(gòu),頂層為SM2協(xié)議,其中包括諸多內(nèi)容,比如密鑰協(xié)商、簽名以及加解密等,對(duì)于全部協(xié)議而言,皆依據(jù)點(diǎn)乘操作。點(diǎn)乘操作的實(shí)現(xiàn),主要基于兩方面,一是倍點(diǎn)運(yùn)算,二是點(diǎn)加運(yùn)算。架構(gòu)底端的運(yùn)算為算數(shù)運(yùn)算,所包含的運(yùn)算一共有4種[3]。有效利用一系列的優(yōu)化策略,能實(shí)現(xiàn)加速運(yùn)算的目的?;诖?,不但能極大縮短運(yùn)算所需要的時(shí)間,而且在一定程度上,也能促使性能得到提升。
對(duì)模乘器的優(yōu)化:在全部的算術(shù)運(yùn)算中,對(duì)SM2協(xié)議來(lái)講,模乘運(yùn)算占據(jù)了重要的位置,在實(shí)際應(yīng)用中,模乘運(yùn)算使用的頻率是最高的,而且對(duì)于所有的模塊而言,模乘運(yùn)算是相當(dāng)重要的,從運(yùn)算時(shí)間上來(lái)看,所占的比例高達(dá)90%。對(duì)模減以及模加運(yùn)算來(lái)講,所包含的邏輯結(jié)構(gòu)較為簡(jiǎn)單,在實(shí)際應(yīng)用過(guò)程中,使用模逆運(yùn)算的情況相對(duì)較少,并沒(méi)有得到廣泛的利用,所以對(duì)于模逆運(yùn)算的實(shí)現(xiàn)而言,有必要對(duì)模乘器進(jìn)行優(yōu)化。優(yōu)化策略,主要包括以下幾點(diǎn):借助于DSP運(yùn)算單元,來(lái)對(duì)模乘器進(jìn)行構(gòu)建。對(duì)于DSP而言,主要基于FPGA平臺(tái),向其內(nèi)置的運(yùn)算單元,對(duì)于乘累加運(yùn)算是支持的?;贒SP,對(duì)其進(jìn)行精心設(shè)計(jì)并組合,避免主要路徑出現(xiàn)延時(shí),可為高速模乘運(yùn)算,提供強(qiáng)有力的支持。對(duì)于模乘運(yùn)算而言,在對(duì)運(yùn)算時(shí)間進(jìn)行確定的過(guò)程中,往往是依據(jù)一些積數(shù)量。對(duì)256b乘法進(jìn)行構(gòu)建,在少量加法形成方面,通過(guò)Karastusba算法,僅需使用3個(gè)128b乘法即可完成,相對(duì)于簡(jiǎn)單乘法,在使用Karastusba算法之后,能極大地降低運(yùn)算量,通常情況下能減少1/4。通過(guò)分而治之方式,對(duì)N使用相同的策略,能極大縮短模乘運(yùn)算時(shí)間。
圖2 SM2總體架構(gòu)
充分利用SM2參數(shù),實(shí)現(xiàn)對(duì)模約減運(yùn)算的優(yōu)化。為更好地實(shí)現(xiàn)模乘運(yùn)算,可基于模約減過(guò)程,有效結(jié)合協(xié)議素?cái)?shù),進(jìn)而能達(dá)到這一目的,這主要由于素?cái)?shù)P有一定的特殊性。可通過(guò)兩種方式,得到模約減結(jié)果,一種是采用若干次加法,另一種是借助于減法運(yùn)算[4]。相比于一般的Montgomery算法,可省掉多次乘法運(yùn)算,而且性能得到顯著提高。點(diǎn)加以及倍點(diǎn)的改進(jìn):針對(duì)倍點(diǎn)與點(diǎn)加,在對(duì)兩者進(jìn)行運(yùn)算時(shí),為避免模逆運(yùn)算,主要是由于此運(yùn)算比較耗時(shí),須對(duì)坐標(biāo)進(jìn)行改變,最終形成雅克比坐標(biāo)。在SM2協(xié)議中,對(duì)于倍點(diǎn)而言,需進(jìn)行四次模減、八次模乘以及六次模加;對(duì)于點(diǎn)加而言,需進(jìn)行六次模減、十一次模乘以及兩次模加。在優(yōu)化策略方面,主要有以下兩點(diǎn):針對(duì)模乘器,促使其流水線能力得到積極發(fā)揮,進(jìn)而有助于提升運(yùn)算效率;充分結(jié)合點(diǎn)加與倍點(diǎn),采取有效手段,盡可能減少模乘的相關(guān)性。對(duì)于模乘器而言,為更好發(fā)揮流水線性能,可有效結(jié)合運(yùn)算公式,全面分析數(shù)據(jù)的相關(guān)性,對(duì)計(jì)算順序進(jìn)行詳細(xì)的設(shè)計(jì),促使模乘運(yùn)算與模加運(yùn)算沒(méi)有數(shù)據(jù)相關(guān)性。點(diǎn)乘的優(yōu)化:對(duì)于簽名而言,在所有的操作中,點(diǎn)乘操作是最耗時(shí)的,也就是(x1,y1)=[k]G。針對(duì)系數(shù)k,以二進(jìn)制的形式,將其展開(kāi)為1和0的組合,通過(guò)NAF編碼方式,來(lái)實(shí)現(xiàn)對(duì)系數(shù)k的編碼,針對(duì)點(diǎn)乘系數(shù)K,增加其中0的數(shù)量,通過(guò)這樣的方式,在降低運(yùn)算次數(shù)的同時(shí),也能加快簽名速度。
通過(guò)同態(tài)加密算法,針對(duì)數(shù)據(jù)密文和明文,可保持兩者之間的同態(tài)關(guān)系,其中包括諸多算法。對(duì)于全同態(tài)算法而言,存在一系列的缺點(diǎn),比如效果不高、速度較為緩慢、有著很大的密文規(guī)模等,在此情況下,業(yè)務(wù)場(chǎng)景將很難適應(yīng);對(duì)于一系列的單同態(tài)算法而言,比如Paillier算法,在實(shí)現(xiàn)上較為簡(jiǎn)單。單同態(tài)算法主要研究的內(nèi)容是Paillier算法。通常情況下,在Paillier算法中,最為棘手的問(wèn)題就是模冪問(wèn)題。模冪運(yùn)算實(shí)質(zhì)上是大整數(shù)的模乘,基于此,對(duì)模乘的快速實(shí)現(xiàn)進(jìn)行介紹。圖3為大整數(shù)模乘算法,借助FIOS實(shí)現(xiàn)方式,有助于FPGA的實(shí)現(xiàn)。基于此算法,ω為128,也就是128b乘法運(yùn)算,由此當(dāng)s為4、8、12以及16時(shí),在模乘運(yùn)算位方面,長(zhǎng)度依次為512、1 024、1 536以及2 048,結(jié)合s不同值的解釋,由此基于乘器長(zhǎng)度,能達(dá)到動(dòng)態(tài)配置的目的[5]。
在實(shí)現(xiàn)過(guò)程中,值得一提的是,對(duì)結(jié)果儲(chǔ)存問(wèn)題要加以重視?;?個(gè)大整數(shù),若借助于寄存器來(lái)保存數(shù)據(jù),將會(huì)造成資源的大量浪費(fèi),在數(shù)據(jù)寬度加大的同時(shí),針對(duì)寄存器,促使其硬件資源顯著增加。因此針對(duì)M、A、B以及中間結(jié)果,可通過(guò)BRAM來(lái)進(jìn)行儲(chǔ)存,BRAM源于FPGA。通過(guò)實(shí)驗(yàn)證明,能極大地降低對(duì)資源的消耗,大概可降低60%左右,伴隨數(shù)據(jù)寬度的不斷加大,效果將會(huì)變得更突出??偟膩?lái)講,通過(guò)模冪處理器可實(shí)現(xiàn)動(dòng)態(tài)配置長(zhǎng)度?;贔IOS算法,對(duì)其進(jìn)一步優(yōu)化,并合理應(yīng)用BRAM,模冪的運(yùn)算能高速、高效地完成。
充分結(jié)合FPGA芯片,有助于對(duì)密碼協(xié)處理器的實(shí)現(xiàn),對(duì)于該處理器而言,其性能是很強(qiáng)的,具體而言,可為多種密碼功能的實(shí)現(xiàn)提供強(qiáng)有力的支持,比如模冪運(yùn)算、SM2簽名等。在實(shí)際應(yīng)用過(guò)程中,當(dāng)設(shè)置不同的密碼之后,能實(shí)現(xiàn)對(duì)密碼功能的調(diào)用。對(duì)于數(shù)據(jù)安全方案而言,通過(guò)對(duì)該處理器的有效使用,在單芯片方面能提供相應(yīng)處理方案,基于此,可為產(chǎn)品更好地推廣發(fā)揮一定的促進(jìn)作用。
借助于KC705開(kāi)發(fā)板,促使各算法得以實(shí)現(xiàn),并對(duì)方法進(jìn)行測(cè)試,獲取實(shí)驗(yàn)數(shù)據(jù)。對(duì)于KC705而言,是一種開(kāi)發(fā)套件,源于7系列的FPGA,對(duì)于FPGA芯片來(lái)講,屬于XC7L425T-4,源于Kintex-7系列,該系列屬于中端系列,在Xilinx公司所有的產(chǎn)品中,該產(chǎn)品有著最高的性價(jià)比,有助于對(duì)產(chǎn)業(yè)進(jìn)行推廣,而且推廣價(jià)值是很大的。通過(guò)對(duì)KC705開(kāi)發(fā)板的使用,基于密碼協(xié)處理器,可為密碼運(yùn)算的實(shí)現(xiàn)提供強(qiáng)有力的支持,對(duì)3種算法的有關(guān)內(nèi)容進(jìn)行了優(yōu)化處理,比如地址分配以及資源共享等,在輸入不一樣的命令碼之后,能實(shí)現(xiàn)對(duì)有關(guān)密碼功能的支持。
本方案的執(zhí)行有助于對(duì)密碼協(xié)處理的實(shí)現(xiàn),具體而言,可為多種密碼功能的實(shí)現(xiàn)提供強(qiáng)有力的支持,比如模冪運(yùn)算、SM2簽名等。在實(shí)際應(yīng)用過(guò)程中,當(dāng)設(shè)置不同的密碼之后,能實(shí)現(xiàn)對(duì)密碼功能的調(diào)用。在此該處理器中,存在3個(gè)密碼模塊,從功能上來(lái)分析,模塊之間是沒(méi)有聯(lián)系的,是相互獨(dú)立的;不過(guò)從時(shí)鐘頻率上來(lái)看,不同密碼模塊存在一定的差別,所以需要處理異步時(shí)鐘,與此同時(shí),充分結(jié)合算法模塊,來(lái)分配相應(yīng)的訪問(wèn)地址。該處理器實(shí)驗(yàn)結(jié)果如表1所示。
圖3 大整數(shù)模乘算法
表1 實(shí)驗(yàn)結(jié)果
從表中的數(shù)據(jù)可以得知,在資源占有率以及時(shí)鐘頻率方面,這三種算法存在不同。對(duì)于SM4-XTS而言,可運(yùn)行的時(shí)鐘頻率為250 MHz,在對(duì)1個(gè)SM4分組進(jìn)行處理時(shí),所需的時(shí)間為0.004 μs,在加密性能方面,可達(dá)到31.5 Gbps;對(duì)于SM2 Signature而言,可運(yùn)行的時(shí)鐘頻率為150 MHz,在簽名速度方面,可達(dá)到26 062次/s;對(duì)于大整數(shù)模冪運(yùn)算而言,可運(yùn)行的時(shí)鐘頻率為66 MHz,完成1次模冪運(yùn)算,所需的時(shí)間為149.3 μs,在速度方面,可達(dá)到6 702 次/s。如表2所示,針對(duì)此密碼協(xié)處理器,列舉了其資源使用情況,在表中LUT為look-up-table的簡(jiǎn)稱,DSP是乘法器,皆屬于基本邏輯單元。本方案有效應(yīng)用了元器件特性,促使各模塊實(shí)現(xiàn)效率得到提升。從表2中的數(shù)據(jù)可以得知,本方案是可行的,不僅能實(shí)現(xiàn)高性能算法,而且預(yù)留了很多的資源,有助于控制邏輯的實(shí)現(xiàn),比如邏輯調(diào)度。
表2 資源使用情況(FPGA)
通過(guò)以上的分析可以得知,對(duì)于多個(gè)S-BOX而言,雖然占用了大部分資源,然而通過(guò)對(duì)邏輯的控制,能降低復(fù)雜度,更加容易采用流水線處理;在流水線被填滿之后,基于部分邏輯電路,能促使運(yùn)算能力得到積極發(fā)揮,極大地提高算法性能。通過(guò)實(shí)驗(yàn)得知,本方案是可行的,不僅能實(shí)現(xiàn)高性能算法,而且預(yù)留了很多的資源,有助于控制邏輯的實(shí)現(xiàn)。