本發(fā)明涉及隱私計(jì)算,尤其涉及一種基于ntru的批量化環(huán)上乘法三元組生成方法。
背景技術(shù):
1、安全多方計(jì)算允許一組互不信任的參與者在輸入數(shù)據(jù)上聯(lián)合計(jì)算一個函數(shù),并不泄露除計(jì)算結(jié)果之外的其他輸入數(shù)據(jù)。安全多方計(jì)算協(xié)議一般分為離線階段和在線階段,離線階段與參與者的輸入無關(guān),一般用于預(yù)處理和乘法三元組生成。乘法三元組用于復(fù)雜安全多方計(jì)算協(xié)議的乘法操作,是構(gòu)造安全多方計(jì)算協(xié)議的關(guān)鍵組件,其效率直接影響安全多方計(jì)算協(xié)議的效率。
2、2012年,ivan?damgard等人首次采用基于rlwe困難問題的同態(tài)加密生成乘法三元組,并設(shè)計(jì)了惡意模型下多方計(jì)算環(huán)境下的安全多方計(jì)算協(xié)議spdz;2016年,keller等人采用不經(jīng)意傳輸協(xié)議來生成乘法三元組,以替換spdz協(xié)議中離線階段乘法三元組生成,解決同態(tài)計(jì)算帶來的不高效性;2017年,keller等人提出了參數(shù)更緊湊的基于bgv的乘法三元組協(xié)議,但是這些協(xié)議只能在有限域上生成三元組,沒法生成上三元組;2018年,cramer等人提出基于不經(jīng)意傳輸?shù)沫h(huán)上乘法三元組生成方法,更加符合當(dāng)前信息系統(tǒng)的計(jì)算模式;2019年,orsini等人提出了基于同態(tài)加密的環(huán)上乘法三元組生成方法,效率比cramer等人提出的方法更高;2019年,deevashwer等人進(jìn)一步改進(jìn)了orsini等人的方案,基于rlwe的同態(tài)方案,引入了打包編碼,在64比特環(huán)上通信開銷降低到原方案的14.5%,計(jì)算開銷降低到原方案的27.8%。
3、通過對上述技術(shù)方案的分析,發(fā)現(xiàn)現(xiàn)有方案還存在以下技術(shù)問題:
4、(1)乘法三元組通信與計(jì)算效率不高,目前基于同態(tài)加密的乘法三元組生成需要交互6個多項(xiàng)式環(huán)元素,執(zhí)行4次多項(xiàng)式環(huán)上的乘法和4次多項(xiàng)式環(huán)上的加法,整體效率不高,無法滿足大規(guī)模密態(tài)數(shù)據(jù)高效計(jì)算的需求,亟需提升乘法三元組的效率;
5、(2)環(huán)上乘法三元組無法大批量高效生成,為了利用中國剩余定理的性質(zhì)來批量化生成乘法三元組,一般要求模數(shù)為素?cái)?shù)或者一系列素?cái)?shù)的乘積,而模數(shù)為素?cái)?shù)或者一系列素?cái)?shù)的乘積時(shí)無法實(shí)現(xiàn)環(huán)結(jié)構(gòu)的乘法三元組生成,因此,環(huán)上乘法三元組難以支持批量化生成。
技術(shù)實(shí)現(xiàn)思路
1、針對上述問題,本發(fā)明提出了一種基于ntru的批量化環(huán)上乘法三元組生成方法,將通信開銷降低到3個多項(xiàng)式環(huán)元素,將計(jì)算開銷降低到兩次多項(xiàng)式環(huán)上的乘法和兩次多項(xiàng)式環(huán)上的加法,使得安全多方計(jì)算協(xié)議乘法計(jì)算效率得到大幅提升。
2、本發(fā)明提出的一種基于ntru的批量化環(huán)上乘法三元組生成方法,包括以下步驟:
3、步驟s1,基于判定型的ntru困難問題設(shè)計(jì)同態(tài)加密方案ntruhe,所述同態(tài)加密方案支持同態(tài)加法ntru.add、同態(tài)明密文加法ntruhe.addplain、同態(tài)明密文乘法ntruhe.multplain操作;
4、步驟s2,基于同態(tài)加密方案ntruhe實(shí)現(xiàn)環(huán)上乘法三元組生成協(xié)議,設(shè)定兩個參與方,分別為p0和p1,參與方p0生成實(shí)例化同態(tài)加密方案ntruhe,在環(huán)上隨機(jī)選擇兩個n維向量作為自身的秘密份額<a>0,<b>0,通過打包編碼和加密生成兩個密文cta,0、ctb,0,并將公共參數(shù)、公鑰、密文cta,0和ctb,0發(fā)送給另一個參與方p1;參與方p1在環(huán)上隨機(jī)選擇兩個n維向量作為自身的秘密份額<a>1,<b>1,并在模數(shù)更大的環(huán)上選擇一個n維隨機(jī)數(shù)向量r作為掩碼,在加密狀態(tài)下計(jì)算出<a>0·<b>1+<a>1·<b>0+r的密文ctd,并將ctd發(fā)送給參與方p0;參與方p1、p0利用打包解碼和simd技術(shù),執(zhí)行一系列同態(tài)計(jì)算和解密操作后,參與方p0得到向量a和b相同位置元素乘積的份額<c>0,參與方p1得到乘積的另一個份額<c>1。
5、進(jìn)一步地,設(shè)計(jì)的同態(tài)加密方案ntruhe具體為:
6、建立算法ntruhe.setup(1λ):輸入安全參數(shù)λ,根據(jù)判定型ntru困難問題decisional_ntrun,q,σ,生成參數(shù)params=(n,q,σ,l,t,δ),使得困難問題的求解復(fù)雜度不低于2λ,其中,n表示整環(huán)生成多項(xiàng)式的次數(shù),q表示密文模數(shù),σ表示離散高斯分布的標(biāo)準(zhǔn)方差,t表示明文模數(shù),
7、密鑰生成算法ntruhe.keygen(params):輸入?yún)?shù)params,從離散高斯分布中隨機(jī)選取f′,計(jì)算f=tf′+1,判斷f是否可逆,如果不可逆,重新選擇f′,直到f可逆,令密鑰sk=f,從離散高斯分布中隨機(jī)選擇g,計(jì)算h=g·f-1mod?q;
8、加密算法ntruhe.enc(pk,m):輸入明文m∈rt,從離散高斯分布中隨機(jī)選取u,計(jì)算密文ct=u·h+δ·m?mod?q;
9、解密算法ntruhe.dec(sk,ct):輸入密文ct和解密密鑰sk,計(jì)算并輸出
10、同態(tài)加法ntruhe.add(ct0,ct1):輸入兩個密文ct0、ct1∈rq,計(jì)算并輸出ctadd=ct0+ct1?mod?q;
11、同態(tài)明密文加法ntruhe.addplain(ct,pt):輸入密文ct∈rq和一個明文pt∈rt,計(jì)算并輸出ctaddplain=ct+δ·ptmod?q;
12、同態(tài)明密文乘法ntruhe.multplain(ct,pt):輸入密文ct∈rq和一個明文pt∈rt,計(jì)算并輸出ctmultplain=ct·ptmod?q。
13、進(jìn)一步地,在步驟s2中,將打包編碼應(yīng)用到同態(tài)加密方案ntruhe方案中,具體為:
14、打包編碼ntruhe.packencoding(a):輸入一個向量明文槽的數(shù)量其中,是歐拉函數(shù),ord表示t在群中的階,采用打包編碼計(jì)算并輸出明文pt∈rt;
15、打包解碼ntruhe.packdecoding(pt):輸入一個明文pt∈rt,采用打包解碼計(jì)算并輸出向量
16、進(jìn)一步地,步驟s2具體為:
17、步驟s21:參與方p0根據(jù)安全參數(shù)λ,調(diào)用建立算法ntruhe.setup(1λ),生成公共參數(shù)params;
18、步驟s22:參與方p0調(diào)用密鑰生成算法ntruhe.keygen(params),生成公私鑰對(sk,pk),并將公共參數(shù)params和公鑰pk發(fā)送給參與方p1;
19、步驟s23:參與方p0在隨機(jī)選擇兩個n維向量作為參與方p0持有的份額
20、步驟s24:參與方p0采用打包編碼,將份額<a>0,<b>0編碼為兩個明文:pta,0=ntruhe.packencoding(<a>0),ptb,0=ntruhe.packencoding(<b>0);
21、步驟s25:參與方p0輸入公鑰pk對明文pta,0、ptb,0執(zhí)行加密,調(diào)用加密算法生成兩個同態(tài)密文:cta,0=ntruhe.enc(pk,pta,0),ctb,0=ntruhe.enc(pk,ptb,0),并將生成的密文cta,0和ctb,0發(fā)送給參與方p1;
22、步驟s26:參與方p1接收到公共參數(shù)params和公鑰pk后,在隨機(jī)選擇兩個n維向量作為參與方p1持有的份額
23、步驟s27:參與方p1采用打包編碼,將份額<a>1,<b>1編碼為兩個明文:pta,1=ntruhe.packencoding(<a>1),ptb,1=ntruhe.packencoding(<b>1);
24、步驟s28:參與方p1在隨機(jī)選擇一個n維向量r,采用打包編碼將r編碼為明文ptr=ntruhe.packencoding(r);
25、步驟s29:參與方p1接收到密文cta,0和ctb,0后,執(zhí)行同態(tài)計(jì)算,得到兩個密文cta0b1=ntruhe.multplain(cta,0,ptb,1),ctb0a1=ntruhe.multplain(ctb,0,pta,1),ctd=ntruhe.addplain(ntruhe.add(cta0b1,ctb0a1),ptr),并將計(jì)算結(jié)果ctd發(fā)送給參與方p0;
26、步驟s210:參與方p0接收到密文ctd后,輸入私鑰sk,對密文ctd解密,并進(jìn)行打包解碼:ptd=ntruhe.dec(sk,ctd),d=ntruhe.packdecoding(ptd)mod?2l;
27、步驟s211:參與方p0在加密狀態(tài)下計(jì)算持有的乘積份額:<c>0=<a>0·<b>0+d?mod2l;
28、步驟s212:在參與方p0側(cè)輸出<a>0,<b>0,<c>0;
29、步驟s213:執(zhí)行計(jì)算<c>1=<a>1·<b>1-r?mod?2l;
30、步驟s214:在參與方p1側(cè)輸出<a>1,<b>1,<c>1。
31、本發(fā)明圍繞乘法三元組計(jì)算與通信效率提升需求,針對乘法三元組通信與計(jì)算效率不高、環(huán)上乘法三元組無法大批量高效生成等問題,提出了一種基于ntru的批量化環(huán)上乘法三元組生成方法,該方法首先基于判定型的ntru困難問題設(shè)計(jì)一個同態(tài)加密方案ntruhe,以支持同態(tài)加法ntru.add、同態(tài)明密文加法ntruhe.addplain、同態(tài)明密文乘法ntruhe.multplain等操作,然后提出兩方的批量化環(huán)上乘法三元組生成協(xié)議,協(xié)議的參與方p0生成實(shí)例化同態(tài)加密方案ntruhe,在環(huán)上隨機(jī)選擇兩個n維向量作為自身的秘密份額<a>0,<b>0,通過打包編碼和加密生成兩個密文cta,0、ctb,0,并將公共參數(shù)、公鑰、密文cta,0和ctb,0發(fā)送給另一個參與方p1;參與方p1在環(huán)上隨機(jī)選擇兩個n維向量作為自身的秘密份額<a>1,<b>1,并在模數(shù)更大的環(huán)上選擇一個n維隨機(jī)數(shù)向量r作為掩碼,在加密狀態(tài)下計(jì)算出<a>0·<b>1+<a>1·<b>0+r的密文ctd,并將ctd發(fā)送給參與方p0;參與方p1、p0利用打包解碼和simd技術(shù),執(zhí)行一系列同態(tài)計(jì)算和解密操作后,參與方p0得到向量a和b相同位置元素乘積的份額<c>0,參與方p1得到乘積的另一個份額<c>1,本發(fā)明提出的三元組生成協(xié)議具有優(yōu)秀的計(jì)算和通信效率,并具有抗量子安全性。
32、綜上所述,本發(fā)明具有的有益技術(shù)效果為:
33、(1)乘法三元組生成更加高效,本發(fā)明提出的基于ntru的批量化環(huán)上乘法三元組生成方法,將通信開銷降低到3個多項(xiàng)式環(huán)元素,將計(jì)算開銷降低到兩次多項(xiàng)式環(huán)上的乘法和兩次多項(xiàng)式環(huán)上的加法,效率得到大幅提升;
34、(2)環(huán)上乘法三元組生成適配性更強(qiáng),本發(fā)明基于ntru數(shù)學(xué)困難問題設(shè)計(jì)同態(tài)加密方案,實(shí)現(xiàn)了環(huán)上的安全多方計(jì)算,更符合現(xiàn)代計(jì)算系統(tǒng)的計(jì)算模式,適配性更強(qiáng);
35、(3)乘法三元組能夠大批量生成,本發(fā)明兼顧環(huán)上的安全多方計(jì)算,通過利用參數(shù)之間的關(guān)系,將中國剩余定理應(yīng)用于協(xié)議,實(shí)現(xiàn)了單指令多輸出流,以支持一次協(xié)議執(zhí)行,能夠生成甚至高達(dá)上千組的乘法三元組。