本發(fā)明涉及加解密領(lǐng)域,具體地說是一種多授權(quán)屬性加解密方法。
背景技術(shù):
作為一種新型的密碼體制算法,基于屬性的加密方法在云存儲技術(shù)、社交網(wǎng)絡(luò)、在線點(diǎn)播等領(lǐng)域得到了廣泛關(guān)注與應(yīng)用。相比于傳統(tǒng)的加密算法來說,基于屬性的加密算法不僅實(shí)現(xiàn)了細(xì)粒度的訪問控制,還可以制定更加靈活的訪問控制策略。
基于屬性的加密算法(attributebasedencryption,abe),它將用戶的一系列身份信息看作是數(shù)據(jù)加解密的輸入,只有滿足數(shù)據(jù)擁有者所制定的訪問控制策略的用戶才可以獲得數(shù)據(jù)信息,從而解決了以往加密算法無法實(shí)現(xiàn)一對多通信的難題,同時(shí)數(shù)據(jù)擁有者還可以針對數(shù)據(jù)接受者的一系列身份信息(用戶屬性)制定靈活的授權(quán)策略,因此基于屬性的加密算法得到了廣泛的關(guān)注。
之前所提出的abe方案大多是單一授權(quán)結(jié)構(gòu)的,但由于網(wǎng)絡(luò)通信量的快速增長,單一授權(quán)機(jī)構(gòu)的工作效率漸漸難以滿足用戶的需求;同時(shí),在多屬性授權(quán)機(jī)構(gòu)方案中中央授權(quán)機(jī)構(gòu)(centralauthority,ca)往往掌握全局的主密鑰(masterkey,mk),一旦ca受到攻擊,全局的mk將遭到泄露從而導(dǎo)致系統(tǒng)的不安全。針對以上問題,有學(xué)者提出了一種去中心的多授權(quán)機(jī)構(gòu)abe方案,在該方案中,存在多個(gè)ca和多個(gè)屬性授權(quán)機(jī)構(gòu)(attributeauthorities,aa),在實(shí)現(xiàn)授權(quán)時(shí)由多個(gè)ca合作授權(quán)用戶身份密鑰;但該方案中隱藏了密文中的授權(quán)訪問結(jié)構(gòu),所以必須將所有屬性授權(quán)機(jī)構(gòu)所包含的屬性全部參與計(jì)算,雖然保證了密文的長度恒定,但卻對大規(guī)模屬性系統(tǒng)實(shí)現(xiàn)困難。在大規(guī)模屬性加密系統(tǒng)中,用戶所指定的訪問策略所包含的屬性規(guī)模往往遠(yuǎn)小于系統(tǒng)提供的屬性規(guī)模,這里稱之為“訪問結(jié)構(gòu)稀疏”或是“smallandgates”。
所以針對上述問題,本發(fā)明提出了一種新型的多授權(quán)屬性加解密方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種多授權(quán)屬性加解密方法,解決在大型屬性加密系統(tǒng)中訪問結(jié)構(gòu)稀疏所帶來的加解密運(yùn)算消耗大,存儲空間占用率高的問題。
本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是一種多授權(quán)屬性加解密方法,包括以下步驟:
步驟一、系統(tǒng)初始化:包括層級屬性機(jī)構(gòu)屬性訪問樹γ的構(gòu)建、系統(tǒng)參數(shù)生成、中央授權(quán)機(jī)構(gòu)初始化和屬性授權(quán)機(jī)構(gòu)初始化四個(gè)方面;
(1)系統(tǒng)參數(shù)生成:在系統(tǒng)內(nèi)輸入一個(gè)安全參數(shù)1λ,系統(tǒng)調(diào)用群生成算法生成兩個(gè)階為素?cái)?shù)p的乘法循環(huán)群g和gt,群g的生成元為g,存在雙線性映射e:g×g→gt,同時(shí),選取一個(gè)存在性不可偽造的簽名算法σsign=(kengen,sign,verify),輸出全局公開參數(shù)δ=(e,g,g,gt,p,σsign);
(2)層級屬性訪問樹γ的構(gòu)建:每一個(gè)屬性授權(quán)機(jī)構(gòu)將域內(nèi)屬性進(jìn)行編碼,使每一個(gè)屬性都有自己的索引indexi,然后建立一個(gè)平衡二叉樹,該平衡二叉樹的非葉結(jié)點(diǎn)t[i...j]中,開始的序號為該非葉結(jié)點(diǎn)下對應(yīng)的最左端葉節(jié)點(diǎn)的索引值,結(jié)束的序號為該非葉結(jié)點(diǎn)最右端葉節(jié)點(diǎn)所對應(yīng)的屬性值,在非偶數(shù)個(gè)屬性出現(xiàn)時(shí),二叉樹的最右端將補(bǔ)充一個(gè)表達(dá)值恒為
(3)中央授權(quán)機(jī)構(gòu)初始化:存在若干個(gè)中央授權(quán)機(jī)構(gòu)ca,ca={ca1,ca2,...,cal},l表示ca的個(gè)數(shù),每個(gè)中央授權(quán)機(jī)構(gòu)獨(dú)立運(yùn)行初始化算法,隨機(jī)選擇yd,
(4)屬性授權(quán)機(jī)構(gòu)初始化:存在若干個(gè)屬性授權(quán)機(jī)構(gòu)aa,aa={aa1,aa2,...,aat},t表示aa的個(gè)數(shù),aa負(fù)責(zé)向用戶提供用戶的屬性相關(guān)密鑰,每一個(gè)aaj都負(fù)責(zé)管理一個(gè)屬性域uj,與任意的aai都有
步驟二、數(shù)據(jù)加密:將欲加密的明文數(shù)據(jù)m、全局公開參數(shù)δ和用戶指定的訪問策略w作為輸入,遍歷屬性授權(quán)機(jī)構(gòu)建立的屬性訪問樹γ進(jìn)行加密算法,得到加密數(shù)據(jù)ct;
步驟三、密鑰分發(fā),包括用戶身份密鑰分發(fā)和用戶屬性密鑰分發(fā):
用戶身份密鑰分發(fā):用戶向中央授權(quán)機(jī)構(gòu)cad提供一個(gè)唯一身份標(biāo)識gid,cad將屬性授權(quán)機(jī)構(gòu)aa生成的參數(shù)r和用戶的唯一身份標(biāo)識信息gid作為輸入,輸出身份密鑰skca和屬性密鑰生成參數(shù)ξ;
用戶屬性密鑰分發(fā):用戶向?qū)傩允跈?quán)機(jī)構(gòu)aak申請屬性密鑰,屬性授權(quán)機(jī)構(gòu)aak驗(yàn)證用戶提供的身份信息是否正確,如果正確,屬性授權(quán)機(jī)構(gòu)aak將rk和∪zk,i作為輸入,為用戶輸出一組屬性密鑰skaa,如果不正確將終止屬性密鑰的分發(fā);
步驟四、解密密文:授權(quán)用戶將系統(tǒng)提供的用戶屬性密鑰skaa、用戶身份密鑰skca和加密密文ct作為輸入,系統(tǒng)根據(jù)用戶所提供的信息運(yùn)行解密算法;如果用戶符合訪問策略輸出數(shù)據(jù)m,否則解密失敗終止系統(tǒng)。
本發(fā)明所述步驟二中對明文數(shù)據(jù)m加密的具體方法為:
給定明文數(shù)據(jù)m,為其選定一個(gè)首次加密隨機(jī)參數(shù)
(1)若attk,i和attk,i+1為兩個(gè)葉子節(jié)點(diǎn),對應(yīng)的屬性值為i和i+1,對于每個(gè)
(2)attk,i和attk,i+1為兩個(gè)非葉子節(jié)點(diǎn),規(guī)則如下:
如果兩個(gè)非葉結(jié)點(diǎn)attk,i和attk,i+1都返回1,則返回1;
如果兩個(gè)非葉結(jié)點(diǎn)attk,i和attk,i+1都返回0,則返回0;
如果兩個(gè)非葉結(jié)點(diǎn)attk,i和attk,i+1中,attk,i返回0而另attk,i+1返回1,則定義
最后得出加密密文ct,
本發(fā)明所述步驟三中用戶身份密鑰分發(fā)的方法為:系統(tǒng)為用戶隨機(jī)選取
本發(fā)明所述步驟三中用戶屬性密鑰分發(fā)的方法為:
當(dāng)接收到屬性授權(quán)請求時(shí),aak利用ud對ξ中的簽名驗(yàn)證信息進(jìn)行驗(yàn)證,如果驗(yàn)證失敗則授權(quán)終止;
令
本發(fā)明所述步驟四中解密密文的方法為:將加密密文
如果節(jié)點(diǎn)x為葉子節(jié)點(diǎn):
(1)如果屬性
(2)如果屬性
(3)如果屬性i設(shè)置為don'tcare,則
如果節(jié)點(diǎn)x為非葉子節(jié)點(diǎn),則
將上述結(jié)果帶入下式進(jìn)行計(jì)算:
由此得到:明文m為
本發(fā)明的有益效果是:本發(fā)明解決了大型屬性加密系統(tǒng)中訪問結(jié)構(gòu)稀疏所帶來的加解密運(yùn)算消耗大,存儲空間占用率高的問題,彌補(bǔ)了其他方案在這一方面的不足;同時(shí)在本發(fā)明中不僅解決了計(jì)算效率和數(shù)據(jù)存儲利用率的問題,還具有抗共謀攻擊和選擇明文攻擊的安全性。
附圖說明
圖1為本發(fā)明內(nèi)容流程示意圖。
具體實(shí)施方式
一種多授權(quán)屬性加解密方法,包括以下步驟:
步驟一、系統(tǒng)初始化:包括層級屬性機(jī)構(gòu)屬性訪問樹γ的構(gòu)建、系統(tǒng)參數(shù)生成、中央授權(quán)機(jī)構(gòu)初始化和屬性授權(quán)機(jī)構(gòu)初始化四個(gè)方面;
(1)系統(tǒng)參數(shù)生成:在系統(tǒng)內(nèi)輸入一個(gè)安全參數(shù)1λ,系統(tǒng)調(diào)用群生成算法生成兩個(gè)階為素?cái)?shù)p的乘法循環(huán)群g和gt,群g的生成元為g,存在雙線性映射e:g×g→gt,同時(shí),選取一個(gè)存在性不可偽造的簽名算法σsign=(kengen,sign,verify),輸出全局公開參數(shù)δ=(e,g,g,gt,p,σsign);
(2)層級屬性訪問樹γ的構(gòu)建:每一個(gè)屬性授權(quán)機(jī)構(gòu)將域內(nèi)屬性進(jìn)行編碼,使每一個(gè)屬性都有自己的索引indexi,然后建立一個(gè)平衡二叉樹,該平衡二叉樹的非葉結(jié)點(diǎn)t[i...j]中,開始的序號為該非葉結(jié)點(diǎn)下對應(yīng)的最左端葉節(jié)點(diǎn)的索引值,結(jié)束的序號為該非葉結(jié)點(diǎn)最右端葉節(jié)點(diǎn)所對應(yīng)的屬性值,在非偶數(shù)個(gè)屬性出現(xiàn)時(shí),二叉樹的最右端將補(bǔ)充一個(gè)表達(dá)值恒為i的空屬性,保持屬性樹中所有非葉子結(jié)點(diǎn)的平衡;對于特定屬性授權(quán)機(jī)構(gòu)aak所建立的屬性訪問樹定義為γk,k表示特定屬性授權(quán)機(jī)構(gòu)aak的索引;
(3)中央授權(quán)機(jī)構(gòu)初始化:存在若干個(gè)中央授權(quán)機(jī)構(gòu)ca,ca={ca1,ca2,...,cal},l表示ca的個(gè)數(shù),每個(gè)中央授權(quán)機(jī)構(gòu)獨(dú)立運(yùn)行初始化算法,隨機(jī)選擇yd,
(4)屬性授權(quán)機(jī)構(gòu)初始化:存在若干個(gè)屬性授權(quán)機(jī)構(gòu)aa,aa={aa1,aa2,...,aat},t表示aa的個(gè)數(shù),aa負(fù)責(zé)向用戶提供用戶的屬性相關(guān)密鑰,每一個(gè)aaj都負(fù)責(zé)管理一個(gè)屬性域uj,都與任意的aai都有
步驟二、數(shù)據(jù)加密:將欲加密的明文數(shù)據(jù)m、全局公開參數(shù)δ和用戶指定的訪問策略w作為輸入,遍歷屬性授權(quán)機(jī)構(gòu)建立的屬性訪問樹γ進(jìn)行加密算法,得到加密數(shù)據(jù)ct;
步驟三、密鑰分發(fā),包括用戶身份密鑰分發(fā)和用戶屬性密鑰分發(fā):
用戶身份密鑰分發(fā):用戶向中央授權(quán)機(jī)構(gòu)cad提供一個(gè)唯一身份標(biāo)識gid,cad將屬性授權(quán)機(jī)構(gòu)aa生成的參數(shù)r和用戶的唯一身份標(biāo)識信息gid作為輸入,輸出身份密鑰skca和屬性密鑰生成參數(shù)ξ;
用戶屬性密鑰分發(fā):用戶向?qū)傩允跈?quán)機(jī)構(gòu)aak申請屬性密鑰,屬性授權(quán)機(jī)構(gòu)aak驗(yàn)證用戶提供的身份信息是否正確,如果正確,屬性授權(quán)機(jī)構(gòu)aak將rk和∪zk,i作為輸入,為用戶輸出一組屬性密鑰skaa,如果不正確將終止屬性密鑰的分發(fā);
步驟四、解密密文:授權(quán)用戶將系統(tǒng)提供的用戶屬性密鑰skaa、用戶身份密鑰skca和加密密文ct作為輸入,系統(tǒng)根據(jù)用戶所提供的信息運(yùn)行解密算法;如果用戶符合訪問策略輸出數(shù)據(jù)m,否則解密失敗終止系統(tǒng)。
進(jìn)一步,所述步驟二中對明文數(shù)據(jù)m加密的具體方法為:
給定明文數(shù)據(jù)m,為其選定一個(gè)首次加密隨機(jī)參數(shù)
(1)若attk,i和attk,i+1為兩個(gè)葉子節(jié)點(diǎn),對應(yīng)的屬性值為i和i+1,對于每個(gè)
(2)attk,i和attk,i+1為兩個(gè)非葉子節(jié)點(diǎn),規(guī)則如下:
如果兩個(gè)非葉結(jié)點(diǎn)attk,i和attk,i+1都返回1,則返回1;
如果兩個(gè)非葉結(jié)點(diǎn)attk,i和attk,i+1都返回0,則返回0;
如果兩個(gè)非葉結(jié)點(diǎn)attk,i和attk,i+1中,attk,i返回0而另attk,i+1返回1,則定義
最后得出加密密文ct,
進(jìn)一步,所述步驟三中用戶身份密鑰分發(fā)的方法為:系統(tǒng)為用戶隨機(jī)選取
進(jìn)一步,所述步驟三中用戶屬性密鑰分發(fā)的方法為:
當(dāng)接收到屬性授權(quán)請求時(shí),aak利用ud對ξ中的簽名驗(yàn)證信息進(jìn)行驗(yàn)證,如果驗(yàn)證失敗則授權(quán)終止;
令
進(jìn)一步,所述步驟四中解密密文的方法為:將加密密文
如果節(jié)點(diǎn)x為葉子節(jié)點(diǎn):
(1)如果屬性
(2)如果屬性
(4)如果屬性i設(shè)置為don'tcare,則
如果節(jié)點(diǎn)x為非葉子節(jié)點(diǎn),則
將上述結(jié)果帶入下式進(jìn)行計(jì)算:
由此得到:明文m為