本發(fā)明涉及信息安全和密碼硬件電路,具體涉及一種面向格基密碼算法的抗側(cè)信道攻擊ntt電路及其計(jì)算器。
背景技術(shù):
1、隨著科學(xué)技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)信息技術(shù)在各個領(lǐng)域的影響越來越大,確保信息系統(tǒng)的安全也變得愈發(fā)重要。公鑰密碼算法是信息安全的基礎(chǔ)構(gòu)件,近年來隨著量子算法和量子計(jì)算機(jī)的發(fā)展,傳統(tǒng)的基于大整數(shù)分解、離散對數(shù)等難題假設(shè)的公鑰密碼系統(tǒng)的安全性受到威脅,而基于格的公鑰密碼體系能在一定程度上抵御量子計(jì)算機(jī)的攻擊。2022年7月,在美國國家標(biāo)準(zhǔn)與技術(shù)研究院(nist)公布的后量子密碼標(biāo)準(zhǔn)算法的入選名單中,密鑰封裝算法kyber、ntru和saber,數(shù)字簽名算法dilithium均為基于格的密碼算法。在這些算法的運(yùn)算過程中需要進(jìn)行大量多項(xiàng)式環(huán)上的多項(xiàng)式乘法,占用較大的計(jì)算開銷。
2、快速數(shù)論變換(number?theoretic?transform,ntt)是用來加速多項(xiàng)式乘法最常用的方法,能夠在o(n?log?n)的時間內(nèi)實(shí)現(xiàn)兩個多項(xiàng)式的乘法操作。記g[x]為一個多項(xiàng)式,a=(a0,…,an-1)為其系數(shù)向量,當(dāng)時,通過ntt算法被轉(zhuǎn)化為點(diǎn)值向量其中表示素域zq中的n次本原單位根,也被稱為旋轉(zhuǎn)因子,計(jì)算公式為i∈{0,1,…,n-1},ai是a的第i項(xiàng);當(dāng)時,其中為zq中的2n次本原單位根,計(jì)算過程為不論何種情況,系數(shù)向量a都將通過分治算法不斷遞歸完成ntt轉(zhuǎn)化得到點(diǎn)值向量a,其中每輪操作都需要將向量元素與旋轉(zhuǎn)因子放入蝶形單元(butterfly?unit,bfu)中完成計(jì)算。
3、kyber和dilithium算法中進(jìn)行ntt轉(zhuǎn)化時的輸入長度分別為128與256,saber和ntru算法在經(jīng)過多項(xiàng)式項(xiàng)數(shù)和模數(shù)的擴(kuò)展后也能實(shí)現(xiàn)n=2n的輸入長度?,F(xiàn)階段在設(shè)計(jì)通用ntt電路時一般通過雙蝶形單元(2bfu)結(jié)構(gòu)或者利用基3、基4的計(jì)算單元對性能和功耗進(jìn)行平衡,并沒有使用基8、基16等更復(fù)雜的計(jì)算單元來實(shí)現(xiàn)更高的計(jì)算性能與并行效率。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是針對現(xiàn)有技術(shù)存在的不足,提供一種面向格基密碼算法的抗側(cè)信道攻擊ntt電路及其計(jì)算器。
2、為實(shí)現(xiàn)上述目的,在第一方面,本發(fā)明提供了面向格基密碼算法的抗側(cè)信道攻擊ntt電路的計(jì)算器,包括:
3、寄存器組regl和寄存器組regr,分別包括2k個寄存器,每一寄存器組用以接收外部發(fā)送的k=2k長度的向量并存儲,k為大于0的自然數(shù),每一寄存器的輸入端與一個寫入控制多路復(fù)用門的輸出端連接,每一寄存器的輸出端與讀出控制多路復(fù)用門的輸入端連接;
4、控制模塊,與所述寫入控制多路復(fù)用門和讀出控制多路復(fù)用門分別連接,用以向所述寫入控制多路復(fù)用門和讀出控制多路復(fù)用門發(fā)送控制信號lable,所述控制信號lable通過控制寫入控制多路復(fù)用門和讀出控制多路復(fù)用門工作,實(shí)現(xiàn)對寄存器組regl和寄存器組regr的數(shù)據(jù)寫入和讀出控制,當(dāng)控制其中一個寄存器組為輸入寄存器組,則另一個寄存器組為輸出寄存器組,所述控制信號lable在每輪計(jì)算后取反;
5、存儲器m_w,用以存儲旋轉(zhuǎn)因子;
6、計(jì)算模塊,與所述存儲器和控制模塊分別連接,以獲取所述存儲器m_w存儲的旋轉(zhuǎn)因子ω,所述計(jì)算模塊包括2k-1個蝶形單元,支持每輪2k個數(shù)據(jù)的并行運(yùn)算,所述計(jì)算模塊還用以接收外部發(fā)送的旋轉(zhuǎn)因子γ,γ是素域zq中的一個元素,所述控制模塊還用以通過隨機(jī)數(shù)接口接收外部產(chǎn)生的隨機(jī)序列random;
7、第一置換模塊pu1和第二置換模塊pu2,所述第一置換模塊pu1與控制模塊、寫入控制多路復(fù)用門和讀出控制多路復(fù)用門的輸出端、計(jì)算模塊的輸入端分別連接,所述第一置換模塊pu1用以根據(jù)控制模塊發(fā)送的控制信號is_idwt調(diào)節(jié)2k-1個蝶形單元的輸入的位置,以從所述寄存器組regl或寄存器組regr相應(yīng)位置的寄存器讀取數(shù)據(jù),并將讀取的數(shù)據(jù)發(fā)送給計(jì)算模塊進(jìn)行計(jì)算,發(fā)送過程中利用所述隨機(jī)序列random對蝶形單元的選擇進(jìn)行隨機(jī)化處理,以使每組數(shù)據(jù)隨機(jī)選擇蝶形單元,所述計(jì)算模塊根據(jù)讀取的數(shù)據(jù)、旋轉(zhuǎn)因子ω、旋轉(zhuǎn)因子γ生成運(yùn)算結(jié)果,所述第二置換模塊pu2與計(jì)算模塊的輸出端、寫入控制多路復(fù)用門和讀出控制多路復(fù)用門的輸入端分別連接,所述第二置換模塊pu2用以根據(jù)控制模塊發(fā)送的控制信號is_idwt調(diào)節(jié)2k-1個蝶形單元的輸出位置,以將本輪計(jì)算結(jié)果發(fā)送至所述寄存器組regr或寄存器組regl相應(yīng)位置的寄存器、實(shí)現(xiàn)不同輸入輸出的抽取算法,發(fā)送至regr或者regl期間利用與所述隨機(jī)序列random進(jìn)行隨機(jī)化選擇的逆過程,以使regr和regl中數(shù)據(jù)的順序與隨機(jī)化選擇過程無關(guān)。
8、進(jìn)一步的,所述蝶形計(jì)算單元包括2個乘法器,1個加法器,1個減法器,以及2個模乘1/2單元,所述2個乘法器的第一輸入端分別與存儲器m_w連接,以讀取所述存儲器存儲的旋轉(zhuǎn)因子,且其第二輸入端分別與第一多路復(fù)用門和第二多路復(fù)用門的輸出端連接,所述第一多路復(fù)用門和第二多路復(fù)用門的第一輸入端分別與第一置換模塊pu1連接,以接收從所述寄存器組regl或寄存器組regr中k=2k長度向量中特定位置的兩個多項(xiàng)式系數(shù),所述第一多路復(fù)用門和第二多路復(fù)用門的第二輸入端分別與加法器和減法器的輸出端連接,2個乘法器的輸出端分別與第三多路復(fù)用門和第四多路復(fù)用門的第一輸入端、2個模乘1/2單元的輸入端分別連接,所述第三多路復(fù)用門和第四多路復(fù)用門的輸入端與第一置換模塊pu1連接,以接收從所述寄存器組regl或寄存器組regr中k=2k長度向量中特定位置的兩個多項(xiàng)式系數(shù),所述第三多路復(fù)用門和第四多路復(fù)用門的輸出端均與加法器和減法器輸入端連接,所述加法器的輸出端和其中一個模乘1/2單元的輸出端分別與第五多路復(fù)用門的兩個輸入端連接,所述減法器的輸出端和另一個模乘1/2單元的輸出端分別與第六多路復(fù)用門的兩個輸入端連接,所述第五多路復(fù)用門和第六多路復(fù)用門的輸出端與第二置換模塊pu2的輸入端連接,以將計(jì)算結(jié)果發(fā)送至第二置換模塊pu2,所述第一多路復(fù)用門、第二多路復(fù)用門、第三多路復(fù)用門、第四多路復(fù)用門、第五多路復(fù)用門和第六多路復(fù)用門分別與控制模塊連接,以使所述蝶形單元根據(jù)控制模塊發(fā)送的控制信號sel執(zhí)行不同的運(yùn)算,所述控制信號sel由控制信號is_idwt決定,滿足關(guān)系式sel=is_idwt。
9、進(jìn)一步的,所述蝶形單元的運(yùn)算類型包括:
10、①e=ω′1*e+ω′2*f?mod?q,f=ω′1*e-ω′2*f?mod?q;
11、②e=e+ω′2*f?mod?q,f=e-ω′2*f?mod?q;
12、③e=(e+f)*ω′1/2?mod?q,f=(e-f)*ω′2/2?mod?q;
13、④e=(e+f)/2?mod?q,f=(e-f)*ω′2/2?mod?q;
14、其中,e、f分為所述蝶形計(jì)算單元的輸出結(jié)果,ω′1、ω′2均為存儲器m_w提供的旋轉(zhuǎn)因子,e、f分別為寄存器組存儲的k=2k長度的向量中的多項(xiàng)式系數(shù),mod表示取模運(yùn)算,q為模數(shù);當(dāng)控制信號sel=0時,所述蝶形計(jì)算單元進(jìn)行①或②類型的運(yùn)算,當(dāng)控制信號sel=1時,所述蝶形單元進(jìn)行③或④類型的運(yùn)算。
15、進(jìn)一步的,所述控制模塊還用以產(chǎn)生控制信號unit_model,所述控制信號unit_model決定計(jì)算模塊當(dāng)前的計(jì)算模式,所述計(jì)算模式包括2k-1路并行的基2ntt運(yùn)算和基2kntt運(yùn)算。
16、進(jìn)一步的,當(dāng)多項(xiàng)式為環(huán)zq[x]/(xn-1)中的元素時,控制信號is_idwt=0,所述計(jì)算模塊執(zhí)行ntt運(yùn)算和ntt逆運(yùn)算均為輸入逆序、輸出順序的時域抽取算法,當(dāng)多項(xiàng)式為環(huán)zq[x]/(xn+1)中的元素并且執(zhí)行數(shù)論變換時,控制信號is_idwt=0,所述計(jì)算模塊執(zhí)行輸入逆序、輸出順序的時域抽取算法,當(dāng)多項(xiàng)式為環(huán)zq[x]/(xn+1)中的元素并且執(zhí)行逆數(shù)論變換時,控制信號is_idwt=1,所述計(jì)算模塊執(zhí)行輸入逆序、輸出順序的頻域抽取算法。
17、在第二方面,本發(fā)明提供了一種面向格基密碼算法的抗側(cè)信道攻擊ntt電路,包括上述的面向格基密碼算法的抗側(cè)信道攻擊ntt計(jì)算器。
18、有益效果:本發(fā)明提供的ntt電路能夠適用于大部分場景中不同參數(shù)設(shè)置下基于mlwe/rlwe格密碼中的ntt/intt變換,并能根據(jù)實(shí)際情況選取合適的k值;通過提高k值可以提高電路的并行效率,實(shí)現(xiàn)抗側(cè)信道攻擊的通用ntt電路,在保證通用性的同時實(shí)現(xiàn)更高的計(jì)算性能和“乒乓”式迭代結(jié)構(gòu)存儲器數(shù)量的優(yōu)化,“乒乓”式迭代結(jié)構(gòu)在n點(diǎn)ntt/intt運(yùn)算中需要ram空間為2n,本方案僅需ram空間n和寄存器reg空間2k+1,具有廣闊的應(yīng)用前景。