本發(fā)明屬于數(shù)據(jù)共享技術(shù)領(lǐng)域,尤其涉及一種針對(duì)leveled全同態(tài)密鑰分配方法。
背景技術(shù):
用戶隱私數(shù)據(jù)檢索是指用戶將自己的隱私數(shù)據(jù)存儲(chǔ)到不可信的第三方服務(wù)器上,例如云服務(wù)器。為了在不泄露隱私數(shù)據(jù)的前提下,完成對(duì)數(shù)據(jù)的檢索工作,這里不僅需要對(duì)數(shù)據(jù)加密,而且要對(duì)加密數(shù)據(jù)進(jìn)行一定的處理,同態(tài)加密算法正好滿足這種需求。若多個(gè)用戶參與完成共享數(shù)據(jù)檢索工作,同態(tài)加密算法使用的前提是必須實(shí)現(xiàn)多用戶之間的同態(tài)密鑰的共享。在群用戶共享隱私數(shù)據(jù)檢索中,現(xiàn)有的方案只是針對(duì)單個(gè)的檢索用戶來(lái)說(shuō),每個(gè)用戶有一套自己獨(dú)特的密鑰系統(tǒng),相互之間沒有任何干預(yù),對(duì)于群用戶共享的隱私數(shù)據(jù)來(lái)說(shuō),這樣的方式將導(dǎo)致每個(gè)用戶都必須有一對(duì)公私鑰,這不僅增加密鑰管理的負(fù)擔(dān),同時(shí)給利用同態(tài)加密的檢索技術(shù)帶來(lái)復(fù)雜的處理。與此同時(shí),已有的密鑰協(xié)商和分配技術(shù)只是利用同態(tài)的性質(zhì)來(lái)完成,針對(duì)同態(tài)加密算法的密鑰分配的技術(shù)尚未出現(xiàn)。以上的問題不利于密文檢索技術(shù)的發(fā)展和使用。
綜上所述,現(xiàn)有技術(shù)存在的問題是:對(duì)于多個(gè)用戶共享的數(shù)據(jù),在檢索時(shí)依舊需要每個(gè)用戶持有不同的檢索密鑰,由此帶來(lái)密鑰管理的負(fù)擔(dān);在基于同態(tài)的密文檢索技術(shù)中,密文運(yùn)算需要對(duì)應(yīng)同一個(gè)公鑰,多個(gè)密鑰使檢索十分困難。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)存在的問題,本發(fā)明提供了一種針對(duì)leveled全同態(tài)密鑰分配方法。
本發(fā)明是這樣實(shí)現(xiàn)的,一種針對(duì)leveled全同態(tài)密鑰分配方法,所述針對(duì)leveled全同態(tài)密鑰分配方法包括以下步驟:
(1)密鑰生成中心kgc為群成員計(jì)算簽名公私鑰并公開系統(tǒng)參數(shù);
(2)密鑰生成中心kgc給群成員分發(fā)簽名密鑰;
(3)群成員進(jìn)行群共享密鑰的協(xié)商;
(4)中間結(jié)點(diǎn)利用群共享密鑰進(jìn)行同態(tài)密鑰參數(shù)的共享,每一個(gè)群成員利用同態(tài)密鑰參數(shù)進(jìn)行計(jì)算,最后完成同態(tài)密鑰的分配。
進(jìn)一步,所述針對(duì)leveled全同態(tài)密鑰分配方法具體包括以下步驟:
(1)系統(tǒng)初始化:
(1a)密鑰生成中心kgc運(yùn)行sig_gen(1λ)算法,為群成員ui生成簽名和驗(yàn)證所需的密鑰,其中λ表示安全參數(shù);
(1b)密鑰生成中心kgc選擇素?cái)?shù)p,q滿足p=2q+1,并構(gòu)造有限域
(1c)密鑰生成中心kgc生成乘法循環(huán)群
(1d)密鑰生成中心kgc選取整數(shù)集合
(1e)密鑰生成中心kgc公開系統(tǒng)參數(shù)
(2)簽名密鑰分發(fā)
(2a)密鑰生成中心kgc通過安全信道將簽名密鑰(ski,hki,tki)發(fā)送給對(duì)應(yīng)的群成員ui;
(2b)密鑰生成中心kgc公布所有群成員的驗(yàn)證密鑰(pki,hki);
(3)群共享密鑰協(xié)商
采用星型群密鑰協(xié)商結(jié)構(gòu),假設(shè)有t個(gè)群成員,各自身份信息為{id0,...,idi,...,idt-1},選取計(jì)算能力強(qiáng)的群成員作為中間結(jié)點(diǎn)u0,其余的群成員ui(i=1,2...t-1)作為低能量結(jié)點(diǎn);
(3a)每個(gè)低能量結(jié)點(diǎn)ui本地計(jì)算步驟如下:
(3a1)每個(gè)低能量結(jié)點(diǎn)ui選擇隨機(jī)數(shù)
其中,pk0表示中間結(jié)點(diǎn)u0的公鑰,p表示模數(shù),mod表示模操作;
(3a2)每個(gè)低能量結(jié)點(diǎn)ui按照下式計(jì)算中間值yi和結(jié)點(diǎn)ui的簽名值σi:
σi=sign(ski,yi||idi);
其中,g表示子群gq的生成元,sign(·)表示shamir-tauman簽名算法,ski表示低能量結(jié)點(diǎn)ui的私鑰,idi表示低能量結(jié)點(diǎn)ui的身份信息,||表示級(jí)聯(lián)操作;
(3a3)每個(gè)低能量結(jié)點(diǎn)ui得到一組本地?cái)?shù)據(jù)(xi,xi-1,δi,yi,σi),并將簽名(yi,σi)發(fā)送給中間結(jié)點(diǎn)u0;
(3b)中間結(jié)點(diǎn)u0計(jì)算步驟如下:
(3b1)對(duì)每一個(gè)簽名(yi,σi),中間結(jié)點(diǎn)u0運(yùn)行verify(pki,yi,σi)算法,檢查低能量結(jié)點(diǎn)ui的簽名值σi的正確性,其中,pki表示ui的公鑰,若ui的簽名值σi正確,則繼續(xù)步驟(3b2);否則,拒絕ui的請(qǐng)求;
(3b2)中間結(jié)點(diǎn)u0隨機(jī)選擇秘密值
其中,sk0表示u0的私鑰;
(3b3)對(duì)于i=1,2,...t-1,中間結(jié)點(diǎn)u0計(jì)算公開值z(mì)i和線上驗(yàn)證元素δi':
(3b4)中間結(jié)點(diǎn)u0按照下式計(jì)算檢測(cè)值c和群共享密鑰k:
其中,h(·)表示單向哈希函數(shù),
(3b5)中間結(jié)點(diǎn)u0將檢測(cè)值c、公開值z(mì)i和線上驗(yàn)證元素δi',(i=1,2,...t-1)進(jìn)行廣播;
(3c1)每一個(gè)低能量結(jié)點(diǎn)ui在接收到步驟(3b5)的數(shù)據(jù)以后,驗(yàn)證如下等式是否成立:
δi=δi';
若等式成立,則繼續(xù)步驟(3c2),否則,中斷本次密鑰協(xié)商;
(3c2)每個(gè)低能量結(jié)點(diǎn)ui按照下式計(jì)算部分驗(yàn)證群密鑰m':
(3c3)每個(gè)低能量結(jié)點(diǎn)ui按照下式計(jì)算哈希值c':
(3c4)每個(gè)低能量結(jié)點(diǎn)ui驗(yàn)證如下等式是否成立:
c=c';
若等式成立,則繼續(xù)步驟(3c5),否則,中斷本次密鑰協(xié)商;
(3c5)每個(gè)低能量結(jié)點(diǎn)ui計(jì)算群驗(yàn)證共享密鑰k':
中間結(jié)點(diǎn)和每個(gè)低能量結(jié)點(diǎn)得到相同的群共享密鑰k=k';
(4)leveled全同態(tài)密鑰分配
leveled全同態(tài)計(jì)算深度為l,密鑰分配步驟如下:
(4a1)中間結(jié)點(diǎn)u0選取l+1個(gè)n維部分私鑰向量s'j←χn,(j=0,1,...l),令私鑰向量sj=(1,s'j),將l+1個(gè)私鑰向量sj表示為一個(gè)私鑰矩陣p,其中,χ表示離散高斯分布;
(4a2)中間結(jié)點(diǎn)u0選取均勻隨機(jī)分布的n行n列矩陣
(4a3)中間結(jié)點(diǎn)u0利用群共享密鑰k,進(jìn)行如下公式的計(jì)算:
e1=e(k,p);
e2=e(k,e);
其中,e1表示私鑰矩陣密文,e2表示誤差密文,e(·)表示aes對(duì)稱加密算法;
(4a4)中間結(jié)點(diǎn)u0將(e1,e2,a')進(jìn)行廣播;
(4b1)每個(gè)低能量結(jié)點(diǎn)ui收到中間結(jié)點(diǎn)u0的廣播信息,解密得到私鑰矩陣p和誤差向量e;
(4b2)每個(gè)低能量結(jié)點(diǎn)ui取出私鑰矩陣的第一行,s0=(1,s'0),按照下式計(jì)算部分公鑰b:
b=a's'0+2e;
(4b3)每個(gè)低能量結(jié)點(diǎn)得到共享公鑰a如下:
a=[b||-a'];
其中,||表示級(jí)聯(lián)操作。
(4c)中間結(jié)點(diǎn)u0進(jìn)行步驟(4b2)的操作,可計(jì)算得到共享公鑰a。
進(jìn)一步,所述(1a)中的密鑰生成中心kgc運(yùn)行sig_gen(1λ)算法包括如下步驟:
(1a1)先為每一個(gè)群成員ui隨機(jī)選擇私鑰
(1a2)運(yùn)行陷門哈希族的密鑰生成算法得到哈希密鑰hki和陷門密鑰tki;
(1a3)最終群成員ui的簽名密鑰是(ski,hki,tki),驗(yàn)證密鑰(pki,hki)。
進(jìn)一步,所述(3a2)中的shamir-tauman簽名算法是通過將任意普通的簽名算法和陷門哈希相結(jié)合形成的在線/離線簽名算法,包括如下步驟:
簽名分為兩個(gè)階段:
離線:
(a)選擇隨機(jī)數(shù)對(duì)
(b)運(yùn)行普通簽名算法s,利用私鑰ski對(duì)哈希值
(c)存儲(chǔ)隨機(jī)數(shù)對(duì)(fi',ri'),哈希值
在線:
(a)取出離線階段步驟(c)存儲(chǔ)的內(nèi)容;
(b)尋找
(c)最終的簽名值為σi=(r,∑i)。
進(jìn)一步,所述(3b1)中的中間結(jié)點(diǎn)u0運(yùn)行verify(pki,yi,σi)算法先利用驗(yàn)證密鑰(pki,hki)計(jì)算
本發(fā)明的另一目的在于提供一種應(yīng)用所述針對(duì)leveled全同態(tài)密鑰分配方法的用戶隱私數(shù)據(jù)檢索系統(tǒng)。
本發(fā)明的另一目的在于提供一種應(yīng)用所述針對(duì)leveled全同態(tài)密鑰分配方法的云服務(wù)器。
本發(fā)明的優(yōu)點(diǎn)及積極效果為:本發(fā)明首次實(shí)現(xiàn)了同態(tài)密鑰在群用戶中的共享,在以前的密鑰共享方案中,并沒有針對(duì)同態(tài)密鑰的共享,只是普通的對(duì)稱密鑰的共享,所以本發(fā)明是首次實(shí)現(xiàn)該功能。并且群以外的用戶無(wú)法獲得該密鑰。本發(fā)明的群共享密鑰協(xié)商協(xié)議,解決了中間人偽造攻擊,通過嵌入通信雙方提前計(jì)算的驗(yàn)證元素δ,使得攻擊者無(wú)法偽造出公開值z(mì)i,從而提高了協(xié)議的安全性。本發(fā)明實(shí)際上在一次協(xié)議中實(shí)現(xiàn)了雙密鑰的共享,可用于群用戶共享隱私數(shù)據(jù)的檢索,如下所示:
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的針對(duì)leveled全同態(tài)密鑰分配方法流程圖。
圖2是本發(fā)明實(shí)施例提供的協(xié)議采用的結(jié)構(gòu)圖。
圖3是本發(fā)明實(shí)施例提供的群共享密鑰協(xié)商的過程圖。
圖4為是本發(fā)明實(shí)施例提供的leveled全同態(tài)密鑰分配的過程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
下面結(jié)合附圖對(duì)本發(fā)明的應(yīng)用原理作詳細(xì)的描述。
如圖1所示,本發(fā)明實(shí)施例提供的針對(duì)leveled全同態(tài)密鑰分配方法包括以下步驟:
s101:密鑰生成中心kgc為群成員計(jì)算簽名公私鑰并公開系統(tǒng)參數(shù);
s102:密鑰生成中心kgc給群成員分發(fā)簽名密鑰;
s103:群成員進(jìn)行群共享密鑰的協(xié)商;
s104:中間結(jié)點(diǎn)利用群共享密鑰進(jìn)行同態(tài)密鑰參數(shù)的共享,每一個(gè)群成員利用同態(tài)密鑰參數(shù)進(jìn)行計(jì)算,最后完成同態(tài)密鑰的分配。
下面結(jié)合附圖對(duì)本發(fā)明的應(yīng)用原理作進(jìn)一步的描述。
本發(fā)明實(shí)施例提供的針對(duì)leveled全同態(tài)密鑰分配方法的實(shí)現(xiàn)步驟如下。
步驟1,系統(tǒng)初始化。
(1a)密鑰生成中心kgc運(yùn)行sig_gen(1λ)算法包括如下步驟:
(1a1)先為每一個(gè)群成員ui隨機(jī)選擇私鑰
(1a2)運(yùn)行陷門哈希族的密鑰生成算法得到哈希密鑰hki和陷門密鑰tki;
(1a3)最終群成員ui的簽名密鑰是(ski,hki,tki),驗(yàn)證密鑰(pki,hki)。
(1b)密鑰生成中心kgc選擇素?cái)?shù)p,q滿足p=2q+1,并構(gòu)造有限域
(1c)密鑰生成中心kgc生成乘法循環(huán)群
(1d)密鑰生成中心kgc選取整數(shù)集合
(1e)密鑰生成中心kgc公開系統(tǒng)參數(shù)
步驟2,簽名密鑰分發(fā)
(2a)密鑰生成中心kgc通過安全信道將簽名密鑰(ski,hki,tki)發(fā)送給對(duì)應(yīng)的群成員ui;
(2b)密鑰生成中心kgc公布所有群成員的驗(yàn)證密鑰(pki,hki)。
步驟3,群共享密鑰協(xié)商
參照?qǐng)D2,采用星型群密鑰協(xié)商結(jié)構(gòu),假設(shè)有t個(gè)群成員,各自身份信息為{id0,...,idi,...,idt-1},選取計(jì)算能力強(qiáng)的群成員作為中間結(jié)點(diǎn)u0,其余的群成員ui(i=1,2...t-1)作為低能量結(jié)點(diǎn)。
如圖3所示,具體協(xié)商步驟如下:
(3a)每個(gè)低能量結(jié)點(diǎn)ui本地計(jì)算步驟如下:
(3a1)每個(gè)低能量結(jié)點(diǎn)ui選擇隨機(jī)數(shù)
其中,pk0表示中間結(jié)點(diǎn)u0的公鑰,p表示模數(shù),mod表示模操作;
(3a2)每個(gè)低能量結(jié)點(diǎn)ui按照下式計(jì)算中間值yi和結(jié)點(diǎn)ui的簽名值σi:
σi=sign(ski,yi||idi);
其中,g表示子群gq的生成元,sign(·)表示shamir-tauman簽名算法,ski表示低能量結(jié)點(diǎn)ui的私鑰,idi表示低能量結(jié)點(diǎn)ui的身份信息,||表示級(jí)聯(lián)操作;
shamir-tauman簽名算法是通過將任意普通的簽名算法和陷門哈希相結(jié)合形成的在線/離線簽名算法,包括如下步驟:
簽名分為兩個(gè)階段:
離線:
(a)選擇隨機(jī)數(shù)對(duì)
(b)運(yùn)行普通簽名算法s,利用私鑰ski對(duì)哈希值
(c)存儲(chǔ)隨機(jī)數(shù)對(duì)(fi',ri'),哈希值
在線:
(a)取出離線階段步驟(c)存儲(chǔ)的內(nèi)容;
(b)尋找
(c)最終的簽名值為σi=(r,∑i);
(3a3)每個(gè)低能量結(jié)點(diǎn)ui得到一組本地?cái)?shù)據(jù)(xi,xi-1,δi,yi,σi),并將簽名(yi,σi)發(fā)送給中間結(jié)點(diǎn)u0;
(3b)中間結(jié)點(diǎn)u0計(jì)算步驟如下:
(3b1)對(duì)每一個(gè)簽名(yi,σi),中間結(jié)點(diǎn)u0運(yùn)行verify(pki,yi,σi)算法先利用驗(yàn)證密鑰(pki,hki)計(jì)算
(3b2)中間結(jié)點(diǎn)u0隨機(jī)選擇秘密值
其中,sk0表示u0的私鑰;
(3b3)對(duì)于i=1,2,...t-1,中間結(jié)點(diǎn)u0計(jì)算公開值z(mì)i和線上驗(yàn)證元素δi':
(3b4)中間結(jié)點(diǎn)u0按照下式計(jì)算檢測(cè)值c和群共享密鑰k:
其中,h(·)表示單向哈希函數(shù),
(3b5)中間結(jié)點(diǎn)u0將檢測(cè)值c、公開值z(mì)i和線上驗(yàn)證元素δi',(i=1,2,...t-1)進(jìn)行廣播;
(3c1)每一個(gè)低能量結(jié)點(diǎn)ui在接收到步驟(3b5)的數(shù)據(jù)以后,驗(yàn)證如下等式是否成立:
δi=δi';
若等式成立,則繼續(xù)步驟(3c2),否則,中斷本次密鑰協(xié)商;
(3c2)每個(gè)低能量結(jié)點(diǎn)ui按照下式計(jì)算部分驗(yàn)證群密鑰m':
(3c3)每個(gè)低能量結(jié)點(diǎn)ui按照下式計(jì)算哈希值c':
(3c4)每個(gè)低能量結(jié)點(diǎn)ui驗(yàn)證如下等式是否成立:
c=c';
若等式成立,則繼續(xù)步驟(3c5),否則,中斷本次密鑰協(xié)商;
(3c5)每個(gè)低能量結(jié)點(diǎn)ui計(jì)算群驗(yàn)證共享密鑰k':
最終,中間結(jié)點(diǎn)和每個(gè)低能量結(jié)點(diǎn)得到相同的群共享密鑰k=k'。
步驟4,leveled全同態(tài)密鑰分配
設(shè)leveled全同態(tài)計(jì)算深度為l,參照?qǐng)D4,密鑰分配步驟如下:
(4a1)中間結(jié)點(diǎn)u0選取l+1個(gè)n維部分私鑰向量s'j←χn,(j=0,1,...l),令私鑰向量sj=(1,s'j),將l+1個(gè)私鑰向量sj表示為一個(gè)私鑰矩陣p,其中,χ表示離散高斯分布;
(4a2)中間結(jié)點(diǎn)u0選取均勻隨機(jī)分布的n行n列矩陣
(4a3)中間結(jié)點(diǎn)u0利用群共享密鑰k,進(jìn)行如下公式的計(jì)算:
e1=e(k,p);
e2=e(k,e);
其中,e1表示私鑰矩陣密文,e2表示誤差密文,e(·)表示aes對(duì)稱加密算法;
(4a4)中間結(jié)點(diǎn)u0將(e1,e2,a')進(jìn)行廣播;
(4b1)每個(gè)低能量結(jié)點(diǎn)ui收到中間結(jié)點(diǎn)u0的廣播信息,解密得到私鑰矩陣p和誤差向量e;
(4b2)每個(gè)低能量結(jié)點(diǎn)ui取出私鑰矩陣的第一行,即s0=(1,s'0),按照下式計(jì)算部分公鑰b:
b=a's'0+2e;
(4b3)每個(gè)低能量得到結(jié)點(diǎn)共享公鑰a如下:
a=[b||-a'];
其中,||表示級(jí)聯(lián)操作。
(4c)中間結(jié)點(diǎn)u0進(jìn)行步驟(4b2)的操作,可計(jì)算得到共享公鑰a。
下面集合安全性和效率分析對(duì)本發(fā)明的應(yīng)用效果作詳細(xì)的描述。
1、安全性分析:
本發(fā)明采用的協(xié)議可以抵抗被動(dòng)攻擊,被動(dòng)攻擊是指一個(gè)敵手通過竊取廣播信道上傳送的信息建立協(xié)商密鑰的行為。在群共享密鑰協(xié)商過程中進(jìn)行了兩輪通信,出現(xiàn)在廣播信道的信息泄露之后,由于安全性建立在判定性的diffie-hellman問題假設(shè)的基礎(chǔ)上,所以最后生成的群共享密鑰k是安全的;之后利用k在廣播信道上發(fā)送同態(tài)密鑰所需參數(shù)的密文,由于敵手無(wú)法獲得k,所以該密文是安全的,即除了群成員可以安全地計(jì)算出密鑰,其余任何的被動(dòng)敵手都無(wú)法獲得密鑰。
本發(fā)明采用的協(xié)議可以抵抗中間人偽造攻擊,由于低能量結(jié)點(diǎn)采用了shamir-tauman簽名算法,可以實(shí)現(xiàn)中間結(jié)點(diǎn)每個(gè)低能量結(jié)點(diǎn)的認(rèn)證功能,由于線上驗(yàn)證元素δi'不能被偽造(基于離散對(duì)數(shù)問題)通過低能量結(jié)點(diǎn)的認(rèn)證,中間結(jié)點(diǎn)將線上驗(yàn)證元素δi'與秘密值m進(jìn)行計(jì)算,不僅完成低能量結(jié)點(diǎn)對(duì)中間結(jié)點(diǎn)的認(rèn)證,而且保證秘密值m的不可偽造性,從而有效抵抗中間人偽造攻擊
2、效率分析
如圖3和圖4所示,本發(fā)明的效率如下表1所示:
其中,tver表示verify()算法的運(yùn)行時(shí)間,texp表示模指數(shù)運(yùn)算時(shí)間,th表示單向哈希函數(shù)運(yùn)算時(shí)間;tmul表示模乘運(yùn)算,tsig表示shamir-tauman簽名算法(離線)運(yùn)行時(shí)間,tenc表示aes加密時(shí)間,tdec表示aes解密時(shí)間,k表示單向哈希函數(shù)輸出比特長(zhǎng)度,t表示群成員人數(shù),l表示同態(tài)運(yùn)算深度,n表示維數(shù)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。