本發(fā)明屬于信息安全技術(shù)領(lǐng)域,具體涉及一種基于屬性的bgn型密文解密外包方案。
背景技術(shù):
云計算概念的提出,將信息產(chǎn)業(yè)的發(fā)展帶入了快車道。云服務(wù)在給用戶提供海量的存儲服務(wù)和強大的計算能力的同時,也推動了經(jīng)濟的發(fā)展,公共云主要由不可信的第三方服務(wù)提供商來維護和運行,云計算伴生的安全問題也日益凸顯。云的安全問題被認為是云服務(wù)實際應(yīng)用面臨諸多困難中最大的挑戰(zhàn),也是云服務(wù)亟待解決的最大難題。如果用戶以明文形式將敏感數(shù)據(jù)保存到云服務(wù)器,由于云端可能會復(fù)制甚至篡改這些信息,而用戶根本無法得知云端的非授權(quán)行為,從而造成不可估計的損失,所以云是不能被無條件信任的。為了防止敏感數(shù)據(jù)的惡意泄露和非法訪問,用戶可以以密文形式對數(shù)據(jù)進行外包。
傳統(tǒng)的云計算加解密模型,無法實現(xiàn)對計算結(jié)果的細粒度訪問控制。shamir在1984年提出了基于身份的加密,用戶的公鑰是由與其身份相關(guān)的唯一標識生成,訪問時服務(wù)器端不需要再查詢用戶的公鑰證書。基于屬性的加密由sahai和waters提出,可以看做是對基于身份的加密的推廣,在這種加密體制中,用戶的密鑰和密文與屬性關(guān)聯(lián)起來,只有屬性滿足訪問控制策略時,用戶才能合法解密,從而實現(xiàn)了對密文的細粒度訪問控制。
在基于屬性的加密系統(tǒng)中,用戶的密鑰和密文分別關(guān)聯(lián)著描述性屬性集和訪問策略。只有相關(guān)聯(lián)的屬性和訪問策略相互匹配,一個特定的密鑰才能夠解密一個特定的密文。目前,有兩種基于屬性的加密方法已經(jīng)被提出,包括密鑰策略的基于屬性的加密(kp-abe)和密文策略的基于屬性的加密(cp-abe)。在kp-abe中,訪問策略被嵌入在私鑰中,而在cp-abe中,訪問策略被嵌入在密文中。基于屬性的加密abe提供了一種安全的方式,使得數(shù)據(jù)擁有者在不可信的服務(wù)器上共享外包數(shù)據(jù),而不是在有著特定用戶的可信服務(wù)器上進行。這一優(yōu)勢使得abe這種方法在云存儲上大受歡迎,因為云存儲需為屬于不同組織的大量用戶提供安全的訪問控制。
盡管如此,基于屬性的加密abe卻在效率上有一個主要的缺陷,即密鑰分發(fā)和解密階段的計算代價會隨著訪問模式的復(fù)雜性的增長而增長。密文大小和解密所需時間隨訪問公式的復(fù)雜而增加,這對資源受限的移動用戶而言無疑是個巨大的挑戰(zhàn)。為了保證遠端資源受限的移動用戶也能安全高效的解密,外包的abe這一概念被提出來,它使得加解密可以外包給第三方服務(wù)提供商。abe解密外包的核心就是修改密鑰產(chǎn)生算法,生成兩個鑰匙,一個是由用戶保存的短的elgamal密鑰,一個是變形鑰匙tk。對于滿足訪問函數(shù)的密文ct,可以先在云端使用tk將ct轉(zhuǎn)化為簡單而短小的elgamal密文ct’。用戶只需要一個簡單的指數(shù)運算就可以進行解密。這種外包解密方案相較于傳統(tǒng)的基于屬性的加密方案,提高了系統(tǒng)的解密效率,降低了接收者的存儲開銷。然而,這一方案中對密文的解密有一部分是由云端進行的,這要求對外包服務(wù)器信任,密文、轉(zhuǎn)換密鑰tk都存在被非法讀取的可能。
因此,設(shè)計一種不僅可以提高解密外包過程中信息安全性,同時又不增加用戶解密難度的密文解密外包方案具有重要價值。
技術(shù)實現(xiàn)要素:
為了提高現(xiàn)有技術(shù)中cp-abe方案的解密外包方案解密外包過程中信息安全性,同時又不增加用戶解密難度,本發(fā)明提供了一種基于屬性的bgn型密文解密外包方案。本發(fā)明提供了基于屬性的bgn型密文解密外包方案,按照本方案的加密方法得到的密文,可允許服務(wù)器對密文數(shù)據(jù)進行多次加法同態(tài)及一次乘法同態(tài)操作,從而在不增加用戶解密難度的同時大大提升了用戶信息的cpa安全性。
本發(fā)明要解決的技術(shù)問題通過以下技術(shù)方案實現(xiàn):
一種基于屬性的bgn型密文解密外包方案,包括以下步驟:
步驟(1):設(shè)定系統(tǒng)參數(shù),產(chǎn)生加密密鑰,主密鑰msk和公鑰pk;
步驟(2):發(fā)送方選擇一個訪問結(jié)構(gòu),對消息進行加密,并輸出密文ct;
步驟(3):接收方輸入主密鑰msk和屬性s,隨機選擇參數(shù),輸出轉(zhuǎn)換密鑰tk和私鑰sk;
步驟(4):發(fā)送方通過公開信道向云端發(fā)送密文數(shù)據(jù)ct;
步驟(5):接收方向云端發(fā)送轉(zhuǎn)換密鑰tk;
步驟(6):云端利用轉(zhuǎn)換密鑰tk對密文ct進行轉(zhuǎn)換計算得到部分密文ct’,并將所述部分密文ct’發(fā)送給接收方;
步驟(7):接收方利用私鑰sk對部分密文ct’進行解密,獲取消息;
在所述步驟(4)和步驟(5)之間還包括云端對密文的同態(tài)計算操作步驟。
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述步驟(1)具體為:
步驟(1-1):設(shè)定系統(tǒng)參數(shù),輸入安全參數(shù)λ和屬性空間u,其中u={0,1}*;
步驟(1-2):運行算法ξ(λ),得到元組(q1,q2,g,g1,e)和雙線性映射e:g×g→g1,其中,q1,q2為素數(shù),g,g1都是階為n=q1q2的群;
步驟(1-3):在群g中隨機選擇生成元k,u,并令
步驟(1-4):隨機選擇由{0,1}*映射到g′的哈希函數(shù)f和由g′t映射到(0,1)的哈希函數(shù),隨機選擇系數(shù)α,a∈zp,zp即為模p的整數(shù)域,則算法的主密鑰表示為:msk=(gα,pk);公鑰表示為:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述步驟(2)具體為:
步驟(2-1):發(fā)送方選擇lsss訪問結(jié)構(gòu)(m,ρ),其中,m是一個與屬性有關(guān)的l×n的矩陣,ρ是與m的行元素mi相關(guān)的函數(shù),i=1,2,…,l;
步驟(2-2):隨機選擇n個zp中的元素(s,y2,……,yn)∈zp,組成向量v,v=(s,y2,……,yn),其中,s為秘密共享參量,計算λi=mi·v,其中,mi是m的第i行元素所組成的向量,再隨機選擇l+1個zp中的元素(r,r1,……,rl)∈zp,輸出密文ct,密文ct包括以下三個部分:
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述步驟(3)具體為:
步驟(3-1):接收方輸入主密鑰msk和屬性s,隨機選擇t′∈zp,輸出
sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)
步驟(3-2):隨機選擇z∈zp,并令t=t′/z,得到轉(zhuǎn)換密鑰tk和接收方的私鑰sk:
tk為:
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述步驟(6)具體為:
步驟(6-1):云端利用接收方發(fā)送的轉(zhuǎn)換密鑰tk對密文ct進行轉(zhuǎn)換計算,當接收方的屬性s不滿足訪問結(jié)構(gòu)(m,ρ),則云端輸出⊥,系統(tǒng)停止運行;
當接收方的屬性s滿足訪問結(jié)構(gòu)(m,ρ),定義
所述轉(zhuǎn)換算法計算具體為:
步驟(6-2):云端向接收方返回部分密文ct′=(c,q)。
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述步驟(7)具體為:
步驟(7-1):接收方輸入私鑰sk=(q1,z)和部分密文ct′,利用(z,q)計算出e′(g,g)sα=qz;
步驟(7-2):接收方再利用部分私鑰q1計算
步驟(7-3):接收方通過pollard’slambda算法解密以
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述同態(tài)計算操作步驟為至少一次加法同態(tài)操作和最多一次乘法同態(tài)操作。
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,步驟(4):發(fā)送方通過公開信道向云端發(fā)送密文數(shù)據(jù)ct后,云端對密文的同態(tài)計算操作步驟為至少一次加法同態(tài)操作,
云端接收密文數(shù)據(jù)包含c1和c2:
則經(jīng)過加法同態(tài)計算后的密文為:
c=gs,
步驟(5):接收方向云端發(fā)送轉(zhuǎn)換密鑰tk;
步驟(6):云端利用轉(zhuǎn)換密鑰tk對加法同態(tài)操作后的密文進行轉(zhuǎn)換計算,并將部分密文發(fā)送給接收方,步驟(6)具體過程如下:
步驟(6-1):云端利用接收方發(fā)送的轉(zhuǎn)換密鑰tk對密文進行轉(zhuǎn)換計算,
當接收方的屬性s滿足訪問結(jié)構(gòu)(m,ρ),定義
所述轉(zhuǎn)換算法計算具體為:
步驟(6-2):云端向接收方返回部分密文ct′=(c,q);
步驟(7):接收方利用私鑰sk對部分密文ct’進行解密,步驟(7)具體過程如下:
步驟(7-1):接收方輸入私鑰sk=(q1,z)和部分密文ct′,利用(z,q)進行一次指數(shù)運算,計算e′(g,g)sα=qz,得到e′(g,g)sα,從而得到h(e′(g,g)sα)的值;
步驟(7-2):接收方再利用部分私鑰q1計算:
步驟(7-3):接收方通過pollard’slambda算法解密以
因為經(jīng)過一次加法同態(tài)得到的密文中c′∈g,說明云端接收密文ct后可以進行多次加法同態(tài)操作。
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,步驟(4):發(fā)送方通過公開信道向云端發(fā)送密文數(shù)據(jù)ct后,云端對密文的同態(tài)計算操作步驟為一次乘法同態(tài)操作,
令k1=e(k,k),h1=e(k,h),則k1的階為n,h1的階為q1,并且一定有β∈z,使得
c=gs,
步驟(5):接收方向云端發(fā)送轉(zhuǎn)換密鑰tk;
步驟(6):云端利用轉(zhuǎn)換密鑰tk對密文進行轉(zhuǎn)換計算,得到部分密文,并將所述部分密文發(fā)送給接收方,步驟(6)具體過程如下:
步驟(6-1):云端利用接收方發(fā)送的轉(zhuǎn)換密鑰tk對密文進行轉(zhuǎn)換計算,當接收方的屬性s滿足訪問結(jié)構(gòu)(m,ρ),定義
所述轉(zhuǎn)換算法計算具體為:
步驟(6-2):云端向接收方返回部分密文ct′=(c,q);
步驟(7):接收方利用私鑰sk對部分密文ct’進行解密,獲取消息,步驟(7)具體過程如下:
步驟(7-1):接收方輸入私鑰sk=(q1,z)和部分密文ct′,利用(z,q)進行一次指數(shù)運算,即計算e′(g,g)sα=qz,得到e′(g,g)sα,從而得到h(e′(g,g)sα)2的值;
步驟(7-2):接收方再利用部分私鑰q1計算:
步驟(7-3):接收方通過pollard’slambda算法解密以
更具體地,本發(fā)明所述的基于屬性的bgn型密文解密外包方案中,所述隨機選擇所指的參數(shù)產(chǎn)生算法具體為使用偽隨機數(shù)生成器隨機選擇512bit大小的兩個大素數(shù)q1、q2,g、g1都是階為n=q1q2的群,e:g×g→g1是雙線性映射。
下面對本發(fā)明所應(yīng)用的數(shù)學(xué)理論作出說明:
本發(fā)明所述的“雙線性映射”即“雙線性對”,是指一種函數(shù)映射,將群g中的元素映射到群gt中去,其含義如下:
g,gt是兩個階為p的乘法循環(huán)群,g為g的生成元,則雙線性映射e:g×g→gt滿足下列性質(zhì):
(1)雙線性:對任意u,k∈g和a,b∈zp,都有e(ua,kb)=e(u,k)ab。
(2)非退化性:存在u,k∈g,使得e(u,k)≠1。
(3)可計算性:存在有效算法使得對任意u,k∈g,都可以計算出e(u,k)。
其中,zp為模p的整數(shù)域;
本發(fā)明所述的“訪問結(jié)構(gòu)”具有如下含義:
假設(shè){p1,p2,…,pn}是秘密共享的參與者集合,定義p=2{p1,p2,…,pn},訪問結(jié)構(gòu)γ是{p1,p2,…,pn}的非空子集,即
本發(fā)明所述的“l(fā)sss(linearsecretsharingscheme)訪問結(jié)構(gòu)”具有如下含義:
一個定義在秘密共享參與者集合p上的線性秘密共享機制(linearsecretsharingscheme,lsss)π是指:
(1)所有參與者的份額組成一個zp上的向量。
(2)存在一個l×n的矩陣m,它是一個關(guān)于π的共享生成矩陣。m的第i行對應(yīng)實體ρ(i),其中i=1,2,…,l,ρ是從{1,2,…,l}到p的映射函數(shù)。隨機選擇列向量
線性重構(gòu)性:假設(shè)π是一個關(guān)于訪問結(jié)構(gòu)γ的lsss,令授權(quán)集s∈γ,定義i={i:ρ(i)∈s}且
本發(fā)明的有益效果:
1、本發(fā)明的解密外包方案中,信息在加密過程中產(chǎn)生的密文包括三個部分,其中一部分密文嵌入到bgn型密文中,可允許服務(wù)器對該部分密文進行多次加法同態(tài)及一次乘法同態(tài)操作,這種處理結(jié)果與直接對明文進行同樣的運算再將結(jié)果加密一樣;因此,對密文進行類同態(tài)操作后,不僅可以大大提升數(shù)據(jù)安全性,同時并不增加用戶解密過程的難度。
2、同態(tài)計算操作可以在加密數(shù)據(jù)中進行諸如、檢索、比較等操作,得出正確結(jié)果,而在整個處理過程中無需對數(shù)據(jù)進行解密,也就是說服務(wù)器不需讀取用戶敏感數(shù)據(jù)就可以處理數(shù)據(jù)信息。
3、本發(fā)明的解密外包方案利用雙線性映射技術(shù),并使用國產(chǎn)哈希函數(shù)sm3算法,將方案的安全性歸約到子群判定問題困難假設(shè),使其達到了cpa安全。
4、對云端計算結(jié)果的訪問控制上,通過加入基于屬性的加密方法,實現(xiàn)了對同態(tài)運算結(jié)果解密權(quán)限的基于屬性的細粒度訪問控制;訪問規(guī)則由用戶指定,可以隨時進行訪問權(quán)限的變更,即共享生成矩陣式和消息綁定在一起生成密文的,所以可以隨時更改與共享生成矩陣相關(guān)聯(lián)的身份特征集,而用戶的私鑰只與身份特征集相關(guān)。
5、效率方面,在移動云存儲環(huán)境下,用戶將屬性控制經(jīng)過哈希處理之后嵌入到bgn型密文中,上傳到云端存儲,再通過密文轉(zhuǎn)換步驟,將密文的部分解密外包到云端進行,保證了數(shù)據(jù)在云端的安全性,在不泄露明文數(shù)據(jù)的前提下,借外包解密代理強大的運算能力,加快解密速度,降低了接收者的存儲、解密開銷,提高了系統(tǒng)的解密效率。
以下將結(jié)合附圖及實施例對本發(fā)明做進一步詳細說明。
附圖說明
圖1是本發(fā)明基于屬性的bgn型密文解密外包方案的流程示意圖。
具體實施方式
為進一步闡述本發(fā)明達成預(yù)定目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及實施例對本發(fā)明的具體實施方式、結(jié)構(gòu)特征詳細說明如下。
實施例1:基于屬性的bgn型密文解密外包方案
如圖1所示的基于屬性的bgn型密文解密外包方案,其具體步驟如下:
步驟(1):設(shè)定系統(tǒng)參數(shù),產(chǎn)生加密密鑰,主密鑰msk和公鑰pk,步驟(1)具體過程如下:
步驟(1-1):設(shè)定系統(tǒng)參數(shù),輸入安全參數(shù)λ和屬性空間u,其中u={0,1}*;所輸入的安全參數(shù)λ的取值比較大,本實施例中,λ選擇1024bit大小,足以保證方案的安全性。
步驟(1-2):運行算法ξ(λ),得到元組(q1,q2,g,g1,e)和雙線性映射e:g×g→g1,其中,q1,q2為素數(shù),g,g1都是階為n=q1q2的群;ξ(λ)是公開的參數(shù)產(chǎn)生算法,q1,q2為大素數(shù),本實施例中選擇q1,q2為512bit大小的素數(shù)。
步驟(1-3):在群g中隨機選擇生成元k,u,并令
步驟(1-4):隨機選擇由{0,1}*映射到g′的哈希函數(shù)f和由g′t映射到(0,1)的哈希函數(shù)h,隨機選擇系數(shù)α,a∈zp,即α、a均在模p的整數(shù)域上隨機選擇,zp即為模p的整數(shù)域,則算法的主密鑰表示為:msk=(gα,pk);
公鑰表示為:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。
步驟(1)中所使用的哈希函數(shù)f和哈希函數(shù)h均為公開的國產(chǎn)哈希函數(shù)sm3算法。
步驟(2):發(fā)送方選擇一個訪問結(jié)構(gòu),對消息進行加密,并生成密文ct,步驟(2)具體過程如下:
步驟(2-1):發(fā)送方選擇lsss訪問結(jié)構(gòu)(m,ρ),其中,m是一個與屬性有關(guān)的l×n的矩陣,ρ是與m的行元素mi相關(guān)的函數(shù),表示可以將矩陣m的每一行對應(yīng)到訪問結(jié)構(gòu)中某一元素的映射,i=1,2,…,l。
步驟(2-2):隨機選擇n個zp中的元素(s,y2,……,yn)∈zp,組成向量v,v=(s,y2,……,yn),其中,s為秘密共享參量,計算λi=mi·v,其中,mi是m的第i行元素所組成的向量,再隨機選擇l+1個zp中的元素(r,r1,……,rl)∈zp,即在模p的整數(shù)域上隨機選擇r,r1,…,rl,輸出密文ct,ct包括以下三個部分:
步驟(3):接收方輸入主密鑰msk和屬性s,選擇隨機參數(shù),輸出轉(zhuǎn)換密鑰tk和私鑰sk,步驟(3)具體過程如下:
步驟(3-1):接收方輸入主密鑰msk和屬性s,隨機選擇t′∈zp,輸出:
sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)。
步驟(3-2):隨機選擇z∈zp,并令t=t′/z,得到轉(zhuǎn)換密鑰tk和接收方的私鑰sk:
sk=(q1,z)。
步驟(4):發(fā)送方通過公開信道向云端發(fā)送密文數(shù)據(jù)ct。
云端接收到發(fā)送方發(fā)送的密文數(shù)據(jù)ct之后;可對密文進行同態(tài)計算操作步驟,同態(tài)計算操作步驟為至少一次加法同態(tài)操作和最多一次乘法同態(tài)操作;云端接收到的按照本實施例方案進行加密得到的密文ct包括三個部分,其中第一部分密文c嵌入bgn,可允許服務(wù)器對該部分密文進行多次加法同態(tài)及一次乘法同態(tài)操作。
步驟(5):接收方向云端發(fā)送轉(zhuǎn)換密鑰tk。
步驟(6):云端利用轉(zhuǎn)換密鑰tk對密文ct進行轉(zhuǎn)換計算,得到部分密文ct’,并將所述部分密文ct’發(fā)送給接收方,步驟(6)具體過程如下:
步驟(6-1):云端利用接收方發(fā)送的轉(zhuǎn)換密鑰tk對密文ct進行轉(zhuǎn)換計算,當接收方的屬性s不滿足訪問結(jié)構(gòu)(m,ρ),則云端輸出⊥,系統(tǒng)停止運行;
當接收方的屬性s滿足訪問結(jié)構(gòu)(m,ρ),定義
所述轉(zhuǎn)換算法計算具體為:
步驟(6-2):云端向接收方返回部分密文ct′=(c,q)。
步驟(7):接收方利用私鑰sk對部分密文ct’進行解密,獲取消息,步驟(7)具體過程如下:
步驟(7-1):接收方輸入私鑰sk=(q1,z)和部分密文ct′,利用(z,q)進行一次指數(shù)運算,即計算e′(g,g)sα=qz。
步驟(7-2):接收方再利用部分私鑰q1計算:
步驟(7-3):接收方通過pollard’slambda算法解密以
在本實施例的密文解密外包方案中,其中,步驟(3)的操作主體為接收方,與步驟(2)和步驟(4)不同,因此步驟(3)的順序可以有變化,步驟(3)不需要必須在步驟(2)和步驟(4)之間,只要在步驟(1)之后、步驟(5)之前即可。本發(fā)明方案中的“隨機選擇”所指的參數(shù)產(chǎn)生算法具體為使用偽隨機生成器隨機選擇512bit大小的兩個大素數(shù)q1、q2,g、g1都是階為n=q1q2的群,e:g×g→g1是雙線性映射。偽隨機數(shù)生成器不做具體指定,只要它能夠達到隨機選擇的目的即可,只要能夠?qū)崿F(xiàn)隨機選擇,則對方案安全性不產(chǎn)生影響。
實施例2:基于屬性的bgn型密文解密外包方案
具體方案如下:
步驟(1):設(shè)定系統(tǒng)參數(shù),產(chǎn)生加密密鑰,主密鑰msk和公鑰pk,步驟(1)具體過程如下:
步驟(1-1):設(shè)定系統(tǒng)參數(shù),輸入安全參數(shù)λ和屬性空間u,其中u={0,1}*;所輸入的安全參數(shù)λ的取值比較大,本實施例中,λ選擇1024bit大小,足以保證方案的安全性。
步驟(1-2):運行算法ξ(λ),得到元組(q1,q2,g,g1,e)和雙線性映射e:g×g→g1,其中,q1,q2為素數(shù),g,g1都是階為n=q1q2的群;ξ(λ)是公開的參數(shù)產(chǎn)生算法,q1,q2為大素數(shù),本實施例中選擇q1,q2為512bit大小的素數(shù)。
步驟(1-3):在群g中隨機選擇生成元k,u,并令
步驟(1-4):隨機選擇由{0,1}*映射到g′的哈希函數(shù)f和由g′t映射到(0,1)的哈希函數(shù)h,隨機選擇系數(shù)α,a∈zp,即α、a均在模p的整數(shù)域上隨機選擇,zp即為模p的整數(shù)域,則算法的主密鑰表示為:msk=(gα,pk);
輸出公鑰表示為:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。
步驟(1)中所使用的哈希函數(shù)f和哈希函數(shù)h均為公開的國產(chǎn)哈希函數(shù)sm3算法。
步驟(2):發(fā)送方選擇一個訪問結(jié)構(gòu),對消息進行加密,并生成密文ct,步驟(2)具體過程如下:
步驟(2-1):發(fā)送方選擇lsss訪問結(jié)構(gòu)(m,ρ),其中,m是一個與屬性有關(guān)的l×n的矩陣,ρ是與m的行元素mi相關(guān)的函數(shù),表示可以將矩陣m的每一行對應(yīng)到訪問結(jié)構(gòu)中某一元素的映射,i=1,2,…,l。
步驟(2-2):隨機選擇n個zp中的元素(s,y2,……,yn)∈zp,組成向量v,v=(s,y2,……,yn),其中,s為秘密共享參量,計算λi=mi·v,其中,mi是m的第i行元素所組成的向量,再隨機選擇l+1個zp中的元素(r,r1,……,rl)∈zp,即在模p的整數(shù)域上隨機選擇r,r1,…,rl,輸出密文ct,ct包括以下三個部分:
步驟(3):接收方輸入主密鑰msk和屬性s,選擇隨機參數(shù),輸出轉(zhuǎn)換密鑰tk和私鑰sk,步驟(3)具體過程如下:
步驟(3-1):接收方輸入主密鑰msk和屬性s,隨機選擇t′∈zp,輸出:
sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)。
步驟(3-2):隨機選擇z∈zp,并令t=t′/z,得到轉(zhuǎn)換密鑰tk和接收方的私鑰sk:
sk=(q1,z)。
步驟(4):發(fā)送方通過公開信道向云端發(fā)送密文數(shù)據(jù)ct。
云端接收到發(fā)送方發(fā)送的密文數(shù)據(jù)ct之后;可對密文進行同態(tài)計算操作步驟,同態(tài)計算操作步驟為至少一次加法同態(tài)操作和最多一次乘法同態(tài)操作。在本實施例中,進行一次加法同態(tài)操作:
云端接收密文數(shù)據(jù)包含c1和c2:
經(jīng)過加法同態(tài)計算后的密文為:
c=gs,
因為經(jīng)過加法同態(tài)得到的密文中c′∈g,說明云端接收密文ct后可以進行多次加法同態(tài)操作。
步驟(5):接收方向云端發(fā)送轉(zhuǎn)換密鑰tk。
步驟(6):云端利用轉(zhuǎn)換密鑰tk對加法同態(tài)操作后的密文進行轉(zhuǎn)換計算,得到部分密文ct’,并將所述部分密文ct’發(fā)送給接收方,步驟(6)具體過程如下:
步驟(6-1):云端利用接收方發(fā)送的轉(zhuǎn)換密鑰tk對密文ct進行轉(zhuǎn)換計算,當接收方的屬性s不滿足訪問結(jié)構(gòu)(m,ρ),則云端輸出⊥,系統(tǒng)停止運行;
當接收方的屬性s滿足訪問結(jié)構(gòu)(m,ρ),定義
所述轉(zhuǎn)換算法計算具體為:
步驟(6-2):云端向接收方返回部分密文ct′=(c,q)。
步驟(7):接收方利用私鑰sk對部分密文ct’進行解密,獲取消息,步驟(7)具體過程如下:
步驟(7-1):接收方輸入私鑰sk=(q1,z)和部分密文ct′,利用(z,q)進行一次指數(shù)運算,即計算e′(g,g)sα=qz,得到e′(g,g)sα,從而得到h(e′(g,g)sα)的值。
步驟(7-2):接收方再利用部分私鑰q1計算:
步驟(7-3):接收方通過pollard’slambda算法解密以
云端接收到的按照本實施例方案進行加密得到的密文ct包括三個部分,其中第一部分密文c嵌入到bgn型密文中,可允許服務(wù)器對該部分密文進行多次加法同態(tài)操作,這種處理結(jié)果與直接對明文進行同樣的運算再將結(jié)果加密一樣;因此,對密文進行類同態(tài)操作后,可以大大提升數(shù)據(jù)安全性,同時并不增加用戶解密過程的難度。因為經(jīng)過加法同態(tài)得到的密文中c′∈g,說明云端接收密文ct后可以進行多次加法同態(tài)操作。
在本實施例的密文解密外包方案中,其中,步驟(3)的操作主體為接收方,與步驟(2)和步驟(4)不同,因此步驟(3)的順序可以有變化,步驟(3)不需要必須在步驟(2)和步驟(4)之間,只要在步驟(1)之后、步驟(5)之前即可。
本發(fā)明方案中的“隨機選擇”所指的參數(shù)產(chǎn)生算法具體為使用偽隨機生成器隨機選擇512bit大小的兩個大素數(shù)q1、q2,g、g1都是階為n=q1q2的群,e:g×g→g1是雙線性映射。偽隨機數(shù)生成器不做具體指定,只要它能夠達到隨機選擇的目的即可,只要能夠?qū)崿F(xiàn)隨機選擇,則對方案安全性不產(chǎn)生影響。
實施例3:基于屬性的bgn型密文解密外包方案
具體方案如下:
步驟(1):設(shè)定系統(tǒng)參數(shù),產(chǎn)生加密密鑰,主密鑰msk和公鑰pk,步驟(1)具體過程如下:
步驟(1-1):設(shè)定系統(tǒng)參數(shù),輸入安全參數(shù)λ和屬性空間u,其中u={0,1}*;所輸入的安全參數(shù)λ的取值比較大,本實施例中,λ選擇1024bit大小,足以保證方案的安全性。
步驟(1-2):運行算法ξ(λ),得到元組(q1,q2,g,g1,e)和雙線性映射e:g×g→g1,其中,q1,q2為素數(shù),g,g1都是階為n=q1q2的群;ξ(λ)是公開的參數(shù)產(chǎn)生算法,q1,q2為大素數(shù),本實施例中選擇q1,q2為512bit大小的素數(shù)。
步驟(1-3):在群g中隨機選擇生成元k,u,并令
步驟(1-4):隨機選擇由{0,1}*映射到g′的哈希函數(shù)f和由g′t映射到(0,1)的哈希函數(shù)h,隨機選擇系數(shù)α,a∈zp,即α、a均在模p的整數(shù)域上隨機選擇,zp即為模p的整數(shù)域,則算法的主密鑰表示為:msk=(gα,pk);
輸出公鑰表示為:pk=(n,g,k,h,e,e′(g,g)α,ga,f,h,g,g1)。
步驟(1)中所使用的哈希函數(shù)f和哈希函數(shù)h均為公開的國產(chǎn)哈希函數(shù)sm3算法。
步驟(2):發(fā)送方選擇一個訪問結(jié)構(gòu),對消息進行加密,并生成密文ct,步驟(2)具體過程如下:
步驟(2-1):發(fā)送方選擇lsss訪問結(jié)構(gòu)(m,ρ),其中,m是一個與屬性有關(guān)的l×n的矩陣,ρ是與m的行元素mi相關(guān)的函數(shù),表示可以將矩陣m的每一行對應(yīng)到訪問結(jié)構(gòu)中某一元素的映射,i=1,2,…,l。
步驟(2-2):隨機選擇n個zp中的元素(s,y2,……,yn)∈zp,組成向量v,v=(s,y2,……,yn),其中,s為秘密共享參量,計算λi=mi·v,其中,mi是m的第i行元素所組成的向量,再隨機選擇l+1個zp中的元素(r,r1,……,rl)∈zp,即在模p的整數(shù)域上隨機選擇r,r1,…,rl,輸出密文ct,ct包括以下三個部分:
步驟(3):接收方輸入主密鑰msk和屬性s,選擇隨機參數(shù),輸出轉(zhuǎn)換密鑰tk和私鑰sk,步驟(3)具體過程如下:
步驟(3-1):接收方輸入主密鑰msk和屬性s,隨機選擇t′∈zp,輸出:
sk′=(pk,k′=gαgat′,l′=gt′,{kx′=f(x)t′}x∈s)。
步驟(3-2):隨機選擇z∈zp,并令t=t′/z,得到轉(zhuǎn)換密鑰tk和接收方的私鑰sk:
sk=(q1,z)。
步驟(4):發(fā)送方通過公開信道向云端發(fā)送密文數(shù)據(jù)ct。
云端接收到發(fā)送方發(fā)送的密文數(shù)據(jù)ct之后;可對密文進行同態(tài)計算操作步驟,同態(tài)計算操作步驟為至少一次加法同態(tài)操作和最多一次乘法同態(tài)操作。在本實施例中,進行一次乘法同態(tài)操作:
令k1=e(k,k),h1=e(k,h),則k1的階為n,h1的階為q1,并且一定有β∈z,使得
c=gs,
經(jīng)過乘法同態(tài)得到的密文中c′∈g1,由于不存在有效算法使得e:g1×g1→g成立,所以本方案只能進行一次乘法。
步驟(5):接收方向云端發(fā)送轉(zhuǎn)換密鑰tk。
步驟(6):云端利用轉(zhuǎn)換密鑰tk對密文進行轉(zhuǎn)換計算,得到部分密文ct’,并將所述部分密文ct’發(fā)送給接收方,步驟(6)具體過程如下:
步驟(6-1):云端利用接收方發(fā)送的轉(zhuǎn)換密鑰tk對密文ct進行轉(zhuǎn)換計算,當接收方的屬性s不滿足訪問結(jié)構(gòu)(m,ρ),則云端輸出⊥,系統(tǒng)停止運行;
當接收方的屬性s滿足訪問結(jié)構(gòu)(m,ρ),定義
所述轉(zhuǎn)換算法計算具體為:
步驟(6-2):云端向接收方返回部分密文ct′=(c,q)。
步驟(7):接收方利用私鑰sk對部分密文ct’進行解密,獲取消息,步驟(7)具體過程如下:
步驟(7-1):接收方輸入私鑰sk=(q1,z)和部分密文ct′,利用(z,q)進行一次指數(shù)運算,即計算e′(g,g)sα=qz,得到e′(g,g)sα,從而得到h(e′(g,g)sα)2的值。
步驟(7-2):接收方再利用部分私鑰q1計算:
步驟(7-3):接收方通過pollard’slambda算法解密以
根據(jù)實施例3,云端接收到的按照本實施例方案進行加密得到的密文ct包括三個部分,其中第一部分密文c嵌入到bgn型密文中,可允許服務(wù)器對該部分密文進行一次乘法同態(tài)操作,這種處理結(jié)果與直接對明文進行同樣的運算再將結(jié)果加密一樣;因此,對密文進行類同態(tài)操作后,可以大大提升數(shù)據(jù)安全性,同時并不增加用戶解密過程的難度。
在移動云存儲環(huán)境下,用戶將屬性控制經(jīng)過哈希處理之后嵌入到bgn型密文中,上傳到云端存儲,再通過密文轉(zhuǎn)換步驟,將密文的部分解密外包到云端進行,保證了數(shù)據(jù)在云端的安全性,在不泄露明文數(shù)據(jù)的前提下,借外包解密代理強大的運算能力,加快解密速度,降低了接收者的存儲、解密開銷,提高了系統(tǒng)的解密效率。
實施例4:對本發(fā)明的bgn型密文解密外包方案的安全性進行說明
本發(fā)明方案的安全性是建立在敵手算法α不能攻破子群判定問題的假設(shè)基礎(chǔ)上。假設(shè)存在某一算法β能夠以優(yōu)勢ε攻破本方案的語義安全性,那么就一定存在敵手算法α能夠以優(yōu)勢ε解決子群判定問題假設(shè)。詳細的證明過程如下:
(1)敵手算法α隨機選擇g∈g,將公鑰(n,g,g1,e,g,x)發(fā)送給算法β。
(2)算法β隨機挑選兩個明文消息m0,m1發(fā)送給敵手算法α,算法α返回隨機挑戰(zhàn)密文
(3)算法β輸出關(guān)于b的猜測b′,如果b=b′,算法α輸出“1”,否則輸出“0”。
如果元素x是在群g中均勻分布,那么挑戰(zhàn)密文c在群g中也是均勻分布,與b的選擇無關(guān),即pr|b=b′|=1/2;如果x是群g的q1階子群中的元素,那么根據(jù)假設(shè)就有pr|b=b′|>1/2+ε,所以sd-adva(τ)>ε,這就意味著敵手算法α解決子群判定問題假設(shè)的優(yōu)勢ε是不可忽略的,與困難問題矛盾。
因此,方案在子群判定問題困難假設(shè)下達到了cpa安全。同時,需要注意到,解密者屬性的泄露不會影響密文的安全。因為如果攻擊者拿不到部分密鑰q1,那么他即使知道加密者的屬性和隨機參數(shù)z,即攻擊者能夠算出e′(g,g)sα的值,但是不清楚部分密鑰q1的值,因而無法計算
所以還是不能得到正確的明文。另一方面,攻擊者即使只拿到了部分密鑰q1,但是由于他的屬性不滿足密文訪問策略,即攻擊者不能算出e′(g,g)sα的值,因此也不能解密得到明文。綜上所述,只有屬性滿足密文訪問策略的合法解密者才可以正常解密密文。
根據(jù)上述說明過程可知,本發(fā)明的解密外包方案利用雙線性映射技術(shù),并使用國產(chǎn)哈希函數(shù)sm3算法,將方案的安全性歸約到子群判定問題困難假設(shè),使其達到了cpa安全。
以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當視為屬于本發(fā)明的保護范圍。