王春華,李 斌,杜高明,李楨旻
(合肥工業(yè)大學(xué) 微電子設(shè)計研究所,安徽 合肥 230601)
量子計算機面世后,RSA密碼系統(tǒng)[1]和橢圓曲線密碼系統(tǒng)(Elliptic Curve Cryptography,ECC)[2]不再安全。環(huán)上帶錯學(xué)習(xí)(Ring Learning With Error,RLWE)是后量子時代格密碼系統(tǒng)中最有潛力的候選方法之一。RLWE問題可以歸結(jié)為理想格上最壞情況的問題,目前沒有已知的量子算法可以有效地解決該問題[3]。由于其自身的安全性及易實現(xiàn)性,RLWE公鑰加密系統(tǒng)在云計算[4]、5G通信[5]、數(shù)據(jù)聚合[6]、簽名方案[7]、個人健康數(shù)據(jù)管理[8]、加密數(shù)據(jù)上訓(xùn)練神經(jīng)網(wǎng)絡(luò)[9]等眾多應(yīng)用中有著廣闊的應(yīng)用前景。
近幾年來,RLWE加密方案在軟件和硬件方面都得到了廣泛研究。文獻(xiàn)[10]提出了RLWE公鑰加密系統(tǒng)的軟件實現(xiàn)。文獻(xiàn)[11]在ARM NEON和MSP430架構(gòu)上實現(xiàn)了RLWE加密方案。文獻(xiàn)[12]提出了基于RLWE密碼方案的高安全等級的指紋認(rèn)證系統(tǒng)。
多項式乘法是RLWE公鑰加密系統(tǒng)中最關(guān)鍵、最耗時的操作之一。采用數(shù)論變換(Number Theoretic Transform,NTT)可以加速多項式乘法。文獻(xiàn)[13]提出了一個高效可擴展的RLWE加密微碼架構(gòu)。文獻(xiàn)[14]提出了高效緊湊的RLWE加密處理器,該架構(gòu)將NTT算法和“負(fù)折疊”卷積結(jié)合,避免了“負(fù)折疊”卷積的預(yù)計算。文獻(xiàn)[15]設(shè)計了通用模塊化單元,并提出了資源高效且能抵抗側(cè)信道攻擊的RLWE加密處理器。但是該架構(gòu)加解密的吞吐率較低,分別為0.056 Mbit·s-1和0.28 Mbit·s-1。文獻(xiàn)[3]提出了高吞吐率的RLWE加密硬件架構(gòu),該架構(gòu)采用基2、基8多路徑延遲NTT算法。其加密和解密的吞吐率分別達(dá)到每秒兆比特和每秒千兆比特的級別。
上述硬件實現(xiàn)中,文獻(xiàn)[14]采用順序處理的方式執(zhí)行RLWE加密和解密,該方法占用的硬件資源較少,但是加解密的周期較長且吞吐率低。文獻(xiàn)[3]中NTT采用基8算法,該架構(gòu)加密解密的吞吐率高,達(dá)到兆和千兆級別。但是該方法消耗了大量硬件資源,不適合在資源受限的FPGA開發(fā)板上實現(xiàn)。本文提出了一個完整的基于RLWE加密處理器硬件架構(gòu)。該架構(gòu)在面積和吞吐率上做了折中,在保證高吞吐率的前提下,降低了硬件資源消耗。本文主要研究內(nèi)容如下:(1)在加密過程中采用NTT運算與密文計算并行處理,同時在NTT以及INTT運算的處理過程中,將數(shù)據(jù)的讀寫過程及計算過程進行乒乓操作,隱藏數(shù)據(jù)的讀寫周期,降低RLWE加密處理器的延遲,提高了高硬件架構(gòu)的吞吐率;(2)設(shè)計資源復(fù)用的硬件架構(gòu),加密及解密過程復(fù)用蝶形模塊中的乘法器和加法器,INTT復(fù)用NTT的電路結(jié)構(gòu),存儲模塊復(fù)用同一塊控制電路,從而降低了RLWE加密處理器硬件資源消耗,提高了資源效率;(3)本文設(shè)計了中等安全等級(n=256,q=65 537)的RLWE加密處理器,并在Spartan-6 FPGA開發(fā)平臺上完成了電路實現(xiàn)和硬件測試。測試結(jié)果表明RLWE加密處理器加密周期數(shù)僅為2 440,解密周期數(shù)僅為1 732,吞吐率達(dá)到21.01 Mbit·s-1和29.60 Mbit·s-1,證明RLWE加密處理器的性能得到了提升。
本文首先回顧了RLWE加密方案及多項式乘法算法,然后對RLWE加密處理器設(shè)計做了詳細(xì)的介紹,并提出了RLWE加密處理器的硬件架構(gòu)。最后,本文在FPGA平臺上進行了功能仿真及綜合實現(xiàn),并將本文所提架構(gòu)與現(xiàn)有設(shè)計做了對比分析。
本文對一些符號進行了定義,并對理論背景、RLWE加密方案及RLWE相關(guān)算法進行簡要介紹。
假設(shè)多項式項數(shù)n為2的方冪,定義R=Z[x]/f(x)為分圓多項式環(huán),其中,f(x)=xn+1。對于正整數(shù)q,定義集合Zq=Z/q,Z∈{0,1,…,q-1},使用符號xmodq表示x落在集合Zq中。本文的向量均采用黑色斜體表示,使用log表示以2為底的對數(shù),⊙表示點乘。
RLWE方案主要包括多項式乘法運算和多項式加法運算。多項式乘法是RLWE加密方案最耗時的操作之一。多項式乘法技術(shù)主要包括Schoolbook、Karatsuba和NTT算法。算法時間復(fù)雜度分別為O(n2)、O(nlog3)和O(n·logn·loglogn)。由于NTT算法時間復(fù)雜度低,通常采用NTT算法實現(xiàn)多項式乘法。
NTT是定義在有限環(huán)上的離散傅里葉變換[16]。假設(shè)A(x)為n維多項式,a=(a0,a0,…,an-1)為多項式A(x)的系數(shù)向量,則向量a的n點NTT和INTT(Inverse Number Theoretic Transform)定義為
(1)
(2)
式中,n為多項式項數(shù);ωn為有限環(huán)上的n次單位根;模數(shù)q為素數(shù),且滿足q≡ 1mod 2n;n-1為n的逆,滿足n·n-1≡1 modq。
將NTT運用于兩個n維多項式A(x)和B(x)中,取n維多項式的n維系數(shù)向量a=(a0,a0,…,an-1)和b=(b0,b0,…,bn-1)。多項式乘法C(x)=A(x)×B(x)可由C(x)=INTT(NTT(a)⊙NTT(b))得到。值得注意的是,C(x)為2n維多項式,因此在進行NTT運算之前,需要在n維多項式系數(shù)向量a和b后填充n個零,使得系數(shù)向量維數(shù)為2n。填充0后,多項式乘法的時間復(fù)雜度將翻倍,為了避免“零填充”,本文采用“負(fù)折疊”卷積定理[13]和NTT的算法,如算法1所示,其中ψi和ψ-i為縮放因子。
算法1“負(fù)折疊”卷積定理和NTT的多項式乘法。算法步驟為:
步驟1對n維系數(shù)向量a、b和ψ=(1,ψ1,ψ2,…,ψn-1)進行點乘運算,得到n維向量aψ和bψ;
步驟2對n維向量aψ和bψ進行NTT運算,得到n維向量A、B;
步驟3對n維向量A、B進行點乘運算,得到n維向量C;
步驟4對n維向量C進行INTT運算,得到n維向量c;
步驟5對n維系數(shù)向量c和ψ-1=(1,ψ-1,ψ-2,…,ψ-(n-1))進行點乘運算,得到n維向量cψ,即為多項式乘法運算結(jié)果。
RLWE公鑰加密方案定義在多項式環(huán)中,而多項式乘法運算是RLWE公鑰加密方案最耗時的操作。本文采用“負(fù)折疊”卷積定理和NTT加速多項式乘法進行計算。RLWE加密方案算法包括秘鑰生成、加密和解密3個步驟[17],具體流程如算法2、算法3和算法4所示。
算法2公鑰和私鑰生成算法。具體步驟為:
步驟1在離散高斯分布中選取兩個n維向量r1和r2;
步驟2對n維向量a、r1、r2和縮放因子向量ψ=(1,ψ1,ψ2,…,ψn-1)進行點乘運算,得到n維向量aψ、r1ψ、r2ψ;
步驟3對n維向量aψ、r1ψ、r2ψ進行NTT運算,轉(zhuǎn)換到NTT域。NTT運算結(jié)果記為A、R1、R2;
步驟4計算P=R1-A⊙R2。其中n維向量(A,P)為RLWE加密方案的公鑰,n維向量R2為RLWE加密方案的私鑰。
算法3RLWE加密算法。具體步驟為:
步驟1使用編碼函數(shù)對消息m進行編碼,編碼結(jié)果加上n維向量e3,得到n維向量e3m;
步驟2對n維向量e1、e2、e3m和向量ψ進行點乘運算,得到向量e1ψ、e2ψ、e3mψ;
步驟3對n維向量e1ψ、e2ψ、e3mψ進行NTT運算,轉(zhuǎn)換到NTT域。NTT運算結(jié)果記為E1、E2、E3M;
步驟4計算C1=A⊙E1+E2,C2=P⊙E1+E3M,n維向量(C1,C2)為密文。
算法4RLWE解密算法。具體步驟為:
步驟1計算MD=C1⊙R2+C2;
步驟2對n維向量MD進行NTT運算,轉(zhuǎn)換到NTT域。NTT運算結(jié)果記為md;
步驟3對n維向量md和向量ψ-1進行點乘運算,得到n維向量mdψ;
步驟4mdψ通過譯碼函數(shù)獲得消息m。
參數(shù)為n=256,q=65 537的RLWE加密處理器硬件架構(gòu)如圖1(a)所示,該硬件電路主要包含3個模塊:存儲模塊、NTT模塊、控制模塊。NTT模塊如圖1(b)所示,主要包括倒序模塊、預(yù)計算模塊、蝶形模塊、取模模塊。存儲模塊用來存儲輸入噪聲向量、NTT運算過程中的中間系數(shù)以及NTT運算后的公鑰(A,P)和私鑰R2。倒序排列模塊用來對輸入系數(shù)進行倒序排列,然后將倒序后的數(shù)據(jù)存儲到存儲模塊中。預(yù)計算模塊用來處理系數(shù),系數(shù)乘以ψi,預(yù)計算后的數(shù)據(jù)傳遞到蝶形模塊。蝶形模塊用來對輸入的系數(shù)進行蝶形運算,運算得到的結(jié)果經(jīng)過取模模塊處理后存入存儲模塊。取模模塊用來對蝶形運算結(jié)果進行取模,保證存儲模塊輸入和輸出數(shù)據(jù)的一致性??刂颇K用于控制整個系統(tǒng),控制存儲模塊的地址生成及使能,并控制NTT模塊進行NTT運算和INTT運算。
存儲模塊是指圖1(a)中的RAM和ROM。存儲模塊包括6個雙端口RAM、兩個雙端口ROM和1個單端口ROM。圖1(a)中,RAM0深度為256,寬度為17 bit,存儲e1索引值為0~127的128個數(shù)和R2索引值為0~127的128個數(shù);RAM1深度為256,寬度為17 bit,存儲e1索引值為128~255的128個數(shù)和R2索引值為128~255的128個數(shù);RAM2深度為384,寬度為17 bit,存儲e2索引值為0~127的128個數(shù)和A;RAM3深度為384,寬度為17 bit,存儲e2索引值為128~255的128個數(shù)和P;RAM4深度為128,寬度為17 bit,存儲e3m索引值為0~127的128個數(shù);RAM5深度為128,寬度為17 bit,存儲e3m索引值為128~255的128個數(shù);ROM0深度為256,寬度為16 bit,存儲ψ索引值為0~127的128個數(shù)和ψ-1索引值為0~127的128個數(shù);ROM1深度為256,寬度為16 bit,存儲ψ索引值為128~255的128個數(shù)和ψ-1索引值為128~255的128個數(shù);ROM2深度為510,寬度為16 bit,存儲NTT運算所需的255個旋轉(zhuǎn)因子和INTT運算所需的255個旋轉(zhuǎn)因子。處理同一批數(shù)據(jù)時,公鑰和私鑰不變。因此,本文使用Python腳本語言對公鑰(a,p)和私鑰r2進行NTT運算,得到公鑰(a,p)和私鑰R2后存入RAM中。
圖1 RLWE加密處理器整體架構(gòu)圖
為了減少NTT運算的點數(shù),進而降低多項式乘法器的延遲,本文引入了“負(fù)折疊”卷積定理?!柏?fù)折疊”卷積需要對輸入數(shù)據(jù)進行預(yù)計算,并對乘法運算結(jié)果進行后計算。預(yù)計算和后計算模塊電路如圖2所示,該模塊的輸入數(shù)據(jù)為雙端口ROM中存儲的縮放因子ψi以及RAM中的系數(shù)。對e1和e2同時進行預(yù)計算時,e1、e2分別占用兩個乘法器,需要n個周期。而對e3m進行預(yù)計算時,4個乘法器并行計算,需要n/2個周期。整個預(yù)計算過程共需3n/2個周期。在解密過程中,在INTT運算的最后一級,圖1(b)中蝶形模塊0和蝶形模塊1的計算結(jié)果乘以縮放因子ψ-i后存入RAM4中。INTT運算結(jié)束后,從RAM5中讀取兩個數(shù)據(jù),乘以縮放因子ψ-i后存入RAM5。
圖2 預(yù)計算和后計算模塊
蝶形模塊包括通道選擇器和基2蝶形單元兩部分。通道選擇器負(fù)責(zé)選擇輸入數(shù)據(jù),基2蝶形單元負(fù)責(zé)計算。蝶形模塊兩輸入之間的間隔(gap)為2stage,stage∈[0,7],stage表示NTT運算級數(shù)。當(dāng)stage<7時,gap≤64,從同一個RAM中讀取蝶形模塊兩個輸入。當(dāng)stage=7時,gap=128,而RAM深度為128,因此蝶形模塊兩個輸入需要分別從兩個RAM中讀取一個數(shù)據(jù),通道選擇器負(fù)責(zé)選擇蝶形模塊的輸入數(shù)據(jù)。蝶形運算符號如圖3(a)所示,輸入數(shù)據(jù)A、B和旋轉(zhuǎn)因子C,經(jīng)過蝶形運算后輸出A+C×B,A-C×B。當(dāng)A 圖3 蝶形運算 本文選擇的模數(shù)q=65 537,如果要實現(xiàn)17 bit的數(shù)據(jù)操作,那么每一個運算結(jié)果都需要取模運算,這會占用大量硬件資源。對于模數(shù)q=65 537,有232modq=1,為避免每個運算結(jié)果都進行取模運算,本文將數(shù)據(jù)位寬擴展為32 bit。超過32 bit的部分加上低于32 bit的數(shù)據(jù),得到33 bit數(shù)據(jù)。為了降低數(shù)據(jù)的存儲量,將RAM的數(shù)據(jù)位寬設(shè)為17 bit。為了統(tǒng)一輸入輸出位寬,本文通過對蝶形運算的輸出結(jié)果進行取模,將數(shù)據(jù)位寬從33 bit降為17 bit。取模模塊電路如圖4所示。 圖4 取模模塊 乘法器時分復(fù)用時序如圖5所示,圖中e1ψ、e2ψ、e3mψ表示對多項式系數(shù)向量e1、e2、e3m的預(yù)計算過程;E1、E2、E3M表示e1ψ、e2ψ、e3mψ的NTT運算過程;C1表示密文C1計算過程,即A⊙E1+E2;PE1表示P⊙E1過程;C1R2表示C1⊙R2過程;md表示MD的INTT運算過程;mdψ表示md后計算過程。 圖5 乘法器時分復(fù)用時序圖 乘法器控制模塊如圖6所示,通過選擇端sel控制乘法器的時序,不同時間處理不同的數(shù)據(jù)。從圖5可以看出,e1、e2預(yù)計算過程分別采用兩個乘法器并行處理;e3m預(yù)計算過程采用4個乘法器并行處理;e1ψ、e2ψ進行NTT運算過程中分別采用兩個乘法器做并行蝶形運算;e3mψ進行NTT運算過程采用兩個乘法器做并行蝶形運算,NTT運算過程中,利用另外兩個乘法器計算C1和PE1,將這部分乘法運算時間隱藏到NTT運算過程中;C1R2過程采用4個乘法器并行計算;MD進行INTT運算的最后一級,兩個乘法器進行蝶形運算,另外兩個乘法器對md進行后計算;NTT運算結(jié)束后,采用4個乘法器md進行后計算。該方法充分利用乘法器進行并行計算,減少了加密解密的時鐘周期,提高了加密處理器的吞吐率,另外預(yù)計算、后計算及產(chǎn)生密文過程中復(fù)用NTT模塊中的乘法器,INTT運算過程復(fù)用NTT模塊,降低了硬件資源消耗。 圖6 乘法器時分復(fù)用模塊 加密和解密運算過程如下文所示。在進行加密操作過程中:(1)從RAM0、RAM1和RAM2、RAM3讀取e1和e2,并分別輸入到乘法器Mul0、Mul1和Mul2、Mul3中進行預(yù)計算,得到e1ψ和e2ψ,并分別寫入RAM0、RAM1和RAM2、RAM3中;(2)e1ψ和e1ψ分別輸入蝶形模塊0和蝶形模塊1進行并行NTT運算,得到E1和E2并分別寫入RAM0、RAM1和RAM2、RAM3中;(3)從RAM4和RAM5讀取e3m輸入到4個乘法器Mul0~Mul3中進行預(yù)計算,得到e3mψ;(4)將e3mψ輸入到蝶形模塊0進行NTT運算,得到E3M并寫入RAM4、RAM5中;(5)與此同時分別從RAM2和RAM3中讀取A和P,與ROM0、RAM1中的E1進行乘法運算,得到密文C1=A⊙E1+E2和P⊙E1,并分別存入RAM2、RAM3和RAM0、RAM1中;(6)在e3mψ進行NTT運算的最后一級,從RAM0、RAM1讀取P⊙E1進行加法運算,得到密文C2=P⊙E1+E3M,并存入RAM4、RAM5中。 在進行解密運算過程中:(1)分別從RAM2、RAM3和RAM4、RAM5中讀取C1和C2的4個數(shù),并從RAM0和RAM1中讀取R2的4個數(shù),使用兩個乘法器并行計算,算得到MD=C1⊙R2+C2并存入RAM2、RAM3中;(2)對MD進行倒序排列;(3)對MD進行INTT運算,在INTT運算的最后一級乘以縮放因子ψ-i。 圖7為RLWE加密處理器周期數(shù)。從圖中可以看出該架構(gòu)所有的串行和并行操作。該硬件架構(gòu)充分利用了乘法器并行計算,和串行計算相比,減少了加解密的時鐘周期,加快了加密解密速度,提高了加密處理器的吞吐率。其中Vi表示第i個操作得到輸出結(jié)果所需的時鐘周期數(shù)量。具體操作如圖7左邊編號所示。圖中步驟0~12符號表示與算法3、算法4一致;rearrange操作在算法3和算法4中未給出,其表示倒序排列。Vi的具體數(shù)值如圖7所示,加密時鐘周期為V0+V2+V4+V5,解密時鐘周期為V9+V10+V11+V12。代入圖7中的數(shù)值可得該架構(gòu)的加密和解密時鐘周期,即加密的時鐘周期為nlogn+3n/2+8,解密的時鐘周期為n/2logn+11n/4+4。 圖7 RLWE加密處理器周期數(shù) 為了驗證所提設(shè)計方法的正確性,本文在CPU平臺和FPGA平臺上分別進行了仿真驗證。CPU平臺為Intel(R)Core(TM)i5-8500處理器,主頻為3 GHz。基于Spyder集成開發(fā)平臺,本文使用Python腳本語言實現(xiàn)了RLWE加密方案。FPGA平臺為Spantan-6 xc6slx9-2cpg196,設(shè)計語言為Verilog HDL,設(shè)計軟件為ISE14.7和modelsim10.6d。RLWE加密方案中的離散高斯采樣器使用隨機函數(shù)代替,產(chǎn)生多項式e1、e2、e3后,使用Python腳本語言對公鑰(a,p)和私鑰r2進行NTT運算。在得到公鑰(A,P)和私鑰R2后,按照章節(jié)3.2所述的存儲方式存入存儲單元中。實驗結(jié)果表明,在兩個平臺上運行的結(jié)果一致,驗證了本文所提出的硬件實現(xiàn)方法的正確性。使用ISE14.7綜合工具進行綜合,綜合得到的電路數(shù)據(jù)如表1所示,其中時鐘頻率為195.4 MHz,LUT數(shù)量為2 957,F(xiàn)F數(shù)量為2 846,DSP數(shù)量為4,加密的吞吐率為21.01 Mbit·s-1,解密吞吐率為29.6 Mbit·s-1。 表1 Spartan-6 FPGA綜合結(jié)果 表2給出了本文與部分已發(fā)表文獻(xiàn)的綜合結(jié)果比較。對比對象全部采用RLWE加密方案,但是采用的實現(xiàn)方式各不相同。表中memory一欄中的指數(shù)1表示BRAM18;指數(shù)2表示BRAM9;指數(shù)3表示BRAM8。文獻(xiàn)[18]設(shè)計了一個可擴展的處理器,支持兩種不同安全等級的RLWE加密方案,該方案需要大量的存儲資源(14BRAM)。文獻(xiàn)[14]提出了一種資源高效的硬件架構(gòu),但是該架構(gòu)加密、解密的時間較長,吞吐率較低,加密和解密時間分別為4.5 ms和0.9 ms,吞吐率分別為0.056 Mbit·s-1和0.284 Mbit·s-1。相較于文獻(xiàn)[14],文獻(xiàn)[19]提出的硬件架構(gòu)使用更少的硬件資源實現(xiàn)了更快的加速。文獻(xiàn)[19]的架構(gòu)采用Schoolbook乘法實現(xiàn)了RLWE加密方案,該架構(gòu)硬件面積小,但是Schoolbook乘法器的時間復(fù)雜度高,因此加密解密的時間較長。文獻(xiàn)[14]采用了串行架構(gòu),依次對e1、e2、e3m進行NTT運算,運算時間為單次NTT運算的3倍。但是,文獻(xiàn)[14]只用一個DSP乘法器來加解密運算(如算法3和算法4所示)中的點乘運算均串行執(zhí)行,因此加密解密的時間較長,吞吐率較低。文獻(xiàn)[3]所提出的硬件架構(gòu)中蝶形單元采用了基8算法,由于n=256不是8的方冪,于是該研究實現(xiàn)了n=512的加密器。從實驗數(shù)據(jù)可以看出,該架構(gòu)吞吐率高,但是硬件面積大,不適合在資源受限的FPGA開發(fā)板上實現(xiàn)。針對這個問題,本文采用兩個NTT模塊和4個蝶形模塊的并行結(jié)構(gòu),在預(yù)計算和后計算過程中利用4個蝶形模塊中的乘法器進行并行計算;在加密過程中,NTT運算與密文計算并行處理,同時在NTT以及INTT運算的處理過程中,將數(shù)據(jù)的讀寫過程及計算過程進行乒乓操作,從而隱藏數(shù)據(jù)的讀寫周期,降低RLWE加密處理器的延遲,提高了RLWE加密處理器的吞吐率。加密過程和解密過程的資源消耗和性能對比如圖8和圖9給所示,其中,LUT、FF、時鐘周期單位為k(1k=2)個,吞吐率單位為Mbit·s-1。從圖8和圖9可以看出,本文提出的RLWE加密處理器時鐘周期最少,加密周期數(shù)為2 440,解密周期為1 732;在195.4 MHz時鐘頻率下,吞吐率最高,加密的吞吐率達(dá)到了21.01 Mbit·s-1,解密的吞吐率達(dá)到了29.60 Mbit·s-1。本文設(shè)計了資源復(fù)用控制電路,復(fù)用乘法器和取模模塊進行計算:兩個NTT模塊復(fù)用控制信號,NTT和INTT運算過程重用NTT模塊,節(jié)省了硬件資源。本文在Spartan-6開發(fā)板上進行綜合,LUT數(shù)量為2 957,F(xiàn)F數(shù)量為2 846,硬件面積適中,適合在資源受限的開發(fā)板上實現(xiàn)。 表2 RLWE加密處理器性能比較(n=256) 圖8 加密過程LUT、FF、DSP、時鐘周期和吞吐率對比圖 圖9 解密過程LUT、FF、DSP、時鐘周期和吞吐率對比圖 本文提出了優(yōu)化的高性能RLWE加密處理器硬件架構(gòu),設(shè)計并實現(xiàn)一種高性能的基于RLWE的全同態(tài)加密處理器。該電路采用兩個NTT模塊和4個蝶形模的并行電路結(jié)構(gòu),充分利用4個蝶形模塊中的4個乘法器進行并行計算,將密文計算過程隱藏在NTT運算過程中,將后計算隱藏在INTT運算過程中,從而減少了RLWE加密處理器的時鐘周期,提高了RLWE加密處理器的吞吐率。同時,設(shè)計資源復(fù)用控制電路、復(fù)用乘法器和取模模塊進行計算。兩個NTT模塊復(fù)用相同的控制信號,NTT和INTT運算過程重復(fù)調(diào)用NTT模塊,以降低硬件資源消耗。本文設(shè)計了參數(shù)為n=256,q=65 537的RLWE加密處理器,并在Spartan-6 FPGA上完成了電路實現(xiàn)及電路測試。測試結(jié)果顯示,完成1次加密只需要12.18 μs,吞吐率達(dá)到21.01 Mbit·s-1;完成一次解密只需要8.65 μs,吞吐率達(dá)到29.60 Mbit·s-1。該結(jié)果表明,該硬件架構(gòu)可以顯著降低延遲,提升RLWE加密器的吞吐率,從而提升加密器的性能,使加密器更具有實用性。該硬件電路適用于大數(shù)據(jù)、高吞吐率的應(yīng)用場景。本設(shè)計的電路面積仍有可降低的空間,因此未來將重點設(shè)計并實現(xiàn)高資源效率的RLWE加密器。2.5 取模模塊
2.6 乘法器時分復(fù)用模塊
3 實驗結(jié)果與分析
4 結(jié)束語