国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng)及方法與流程

      文檔序號:12134658閱讀:683來源:國知局

      本發(fā)明涉及信息安全的技術(shù)領(lǐng)域,特別涉及一種基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng)及方法。



      背景技術(shù):

      密碼技術(shù),是信息安全的核心和基礎(chǔ),廣泛用于網(wǎng)絡(luò)通信、電子商務(wù)、銀行、國防軍事等領(lǐng)域。密碼技術(shù)包括對稱密碼和非對稱密碼,非對稱密碼也稱為公鑰密碼。

      在目前的云服務(wù)模型中,用戶將加密后的數(shù)據(jù)存放在不可靠的云服務(wù)器當(dāng)中。由于安全策略或信息分享等原因,數(shù)據(jù)的加密密鑰有可能需要經(jīng)常改變。傳統(tǒng)的方案是將數(shù)據(jù)從云服務(wù)器當(dāng)中取回后用原來的密鑰解密,之后再用新的密鑰進(jìn)行加密并傳回云服務(wù)器。但這種方案顯然效率低下,不具有可擴(kuò)展性。在這種背景之下,代理重加密方案應(yīng)運(yùn)而生。

      代理重加密是一種能夠?qū)⒚芪脑诓煌拿荑€之間相互轉(zhuǎn)換的密碼學(xué)技術(shù)。在代理重加密系統(tǒng)中,用戶首先根據(jù)自己的新舊密鑰生成重加密密鑰,并將其發(fā)送給代理服務(wù)器。代理服務(wù)器在獲得重加密密鑰后,能夠在不解密的情況下,將原密鑰下的密文轉(zhuǎn)換成為新密鑰下的密文。用戶使用新密鑰即可對其進(jìn)行解密。

      傳統(tǒng)的代理重加密方案采用的是公鑰密碼體制,其顯著弊端在于計算量大,加密速度相當(dāng)慢,無法適應(yīng)如今大數(shù)據(jù)時代的需求,實用性大打折扣。而且目前的代理重加密方案無法驗證消息的可靠性,無法保證消息不被惡意篡改,對安全性同樣造成了很大威脅。

      因此,在保證實現(xiàn)代理重加密的情況下,目前亟待提出一種基于對稱密碼技術(shù)的、可驗證消息正確性、完整性的代理重加密系統(tǒng)。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供一種基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng)及方法,該系統(tǒng)大大提高了代理重加密的速度,而且能夠確認(rèn)消息是否被惡意篡改。

      本發(fā)明的第一個目的通過下述技術(shù)方案實現(xiàn):

      一種基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng),所述系統(tǒng)包括:

      用戶端,用于向代理端發(fā)起重加密請求,包括隨機(jī)數(shù)生成器、密鑰生成模塊、加密模塊、解密模塊和密鑰更新模塊,當(dāng)需要對數(shù)據(jù)進(jìn)行重加密時,所述隨機(jī)數(shù)生成器首先生成一個隨機(jī)數(shù),用所述密鑰生成模塊生成新的加密密鑰和新的認(rèn)證密鑰,然后通過所述密鑰更新模塊生成重加密密鑰和認(rèn)證變換密鑰,然后將該隨機(jī)數(shù)、重加密密鑰與認(rèn)證變換密鑰一起發(fā)送給所述代理端的重加密模塊,同時,所述加密模塊和所述解密模塊還能夠?qū)?shù)據(jù)進(jìn)行加解密操作;

      代理端,用于保存用戶的密文,同時對用戶端發(fā)送過來的重加密請求進(jìn)行處理,并對數(shù)據(jù)進(jìn)行重加密并生成新的消息認(rèn)證碼。

      進(jìn)一步地,所述隨機(jī)數(shù)生成器,用于生成隨機(jī)數(shù);

      所述密鑰生成模塊,用于生成加密密鑰與認(rèn)證密鑰;

      所述密鑰更新模塊,用于根據(jù)新的加密密鑰和認(rèn)證密鑰,生成重加密密鑰和認(rèn)證變換密鑰,其包含一個逆元生成器,用于生成某個元素的逆元。

      進(jìn)一步地,所述加密模塊,用于對消息明文進(jìn)行加密,該模塊包括多項式運(yùn)算部件和消息認(rèn)證碼生成部件,其中,所述多項式運(yùn)算部件首先將輸入的兩個字符串參數(shù)分別轉(zhuǎn)換成兩個多項式的系數(shù),即轉(zhuǎn)換成為兩個多項式,接著對該兩個多項式進(jìn)行多項式環(huán)上的乘法運(yùn)算;所述消息認(rèn)證碼生成部件用于生成與消息對應(yīng)的認(rèn)證碼,以備后續(xù)檢測之用。

      進(jìn)一步地,所述解密模塊,用于對密文進(jìn)行解密,該模塊包括多項式運(yùn)算部件與校驗部件,其中,所述多項式運(yùn)算部件首先將輸入的兩個字符串參數(shù)分別轉(zhuǎn)換成兩個多項式的系數(shù),即轉(zhuǎn)換成為兩個多項式,接著對該兩個多項式進(jìn)行多項式環(huán)上的乘法運(yùn)算;所述校驗部件用于檢測消息認(rèn)證碼是否正確,若正確則返回解密之后的消息,否則返回解密失敗;

      其中,所述校驗部件包含一個DDH群映射器,用于將一個哈希值映射到DDH群上。

      進(jìn)一步地,所述代理端包括重加密模塊,用于響應(yīng)用戶請求,根據(jù)用戶端傳遞過來的重加密密鑰和認(rèn)證變換密鑰對數(shù)據(jù)進(jìn)行重加密,并更新消息認(rèn)證碼;該重加密模塊包括多項式運(yùn)算部件與消息認(rèn)證碼更新部件,其中,所述多項式運(yùn)算部件首先將輸入的兩個字符串參數(shù)分別轉(zhuǎn)換成兩個多項式的系數(shù),即轉(zhuǎn)換成為兩個多項式,接著對該兩個多項式進(jìn)行多項式環(huán)上的乘法運(yùn)算;所述消息認(rèn)證碼更新部件根據(jù)用戶端傳遞過來的認(rèn)證變換密鑰,對原來的消息認(rèn)證碼進(jìn)行處理,生成新認(rèn)證密鑰下的消息認(rèn)證碼;

      其中,所述消息認(rèn)證碼生成部件包括一個DDH群映射器,用于將一個哈希值映射到DDH群上。

      本發(fā)明的第二個目的通過下述技術(shù)方案實現(xiàn):

      一種基于對稱密碼的可認(rèn)證的代理重加密方法,所述方法包括下列步驟:

      用戶端生成參數(shù)步驟,該步驟具體為:

      S101、選擇并生成公共參數(shù);

      S102、根據(jù)公共參數(shù),通過密鑰生成模塊生成新的加密密鑰、新的認(rèn)證密鑰以及DDH群;

      S103、若需要發(fā)起重加密請求,則將新的加密密鑰和新的認(rèn)證密鑰傳遞給密鑰更新模塊,生成重加密密鑰和認(rèn)證變換密鑰,然后將這兩個密鑰發(fā)送給代理端的重加密模塊;

      S104、若需要對數(shù)據(jù)進(jìn)行加密,則將消息明文、加密密鑰和認(rèn)證密鑰傳遞給加密模塊;

      重加密過程步驟,該步驟具體為:

      S201、重加密模塊接收用戶端傳遞過來的重加密密鑰和認(rèn)證變換密鑰;

      S202、調(diào)用多項式運(yùn)算部件,對重加密密鑰與一個隨機(jī)數(shù)進(jìn)行處理,輸出處理結(jié)果;

      S203、將上一步的處理結(jié)果與原來的密文進(jìn)行運(yùn)算;

      S204、調(diào)用消息認(rèn)證碼更新部件,根據(jù)認(rèn)證變換密鑰對原密鑰下的消息認(rèn)證碼進(jìn)行運(yùn)算,將步驟S202中的隨機(jī)數(shù)、步驟S203中的運(yùn)算結(jié)果及新密鑰下的消息認(rèn)證碼一起作為新密鑰下的密文輸出;

      加密過程步驟,該步驟具體為:

      S301、加密模塊接收消息明文、加密密鑰與一個隨機(jī)數(shù)作為輸入;

      S302、調(diào)用多項式運(yùn)算部件,對加密密鑰與該隨機(jī)數(shù)進(jìn)行處理,輸出處理結(jié)果;

      S303、將上一步的處理結(jié)果與消息明文進(jìn)行運(yùn)算;

      S304、調(diào)用消息認(rèn)證碼生成部件,生成該消息的消息認(rèn)證碼,將步驟S301中的隨機(jī)數(shù)、步驟S303的運(yùn)算結(jié)果及消息認(rèn)證碼一起作為密文輸出;

      解密過程步驟,該步驟具體為:

      S401、解密模塊接收消息密文。

      S402、調(diào)用多項式運(yùn)算部件,對加密密鑰與一隨機(jī)數(shù)進(jìn)行處理,輸出處理結(jié)果;

      S403、將上一步的處理結(jié)果與消息密文進(jìn)行運(yùn)算,得到消息明文。

      S404、計算解密出的消息明文的消息認(rèn)證碼,若它與收到的消息認(rèn)證碼相同,則返回該明文,否則返回解密失敗。

      進(jìn)一步地,所述用戶端生成參數(shù)步驟具體如下:

      選擇合適的公共參數(shù)p,q,n,r,p′,q′。其中,p,q是與多項式環(huán)相關(guān)的參數(shù),r為隨機(jī)數(shù),p′,q′是與DDH群相關(guān)的參數(shù);

      根據(jù)上述公共參數(shù),生成新的加密密鑰(ske_2)ske_1、新的認(rèn)證密鑰(skm_1)skm_2和群GDDH

      若需要發(fā)起重加密請求,則將ske_2與skm_2傳遞給密鑰更新模塊,生成重加密密鑰rke=ske_2-ske_1,并計算skm_1模q′的逆元然后計算認(rèn)證變換密鑰然后將rke與rkm發(fā)送給代理端的重加密模塊;

      若需要對數(shù)據(jù)進(jìn)行加密,則將消息明文m、加密密鑰ske_1和認(rèn)證密鑰skm_1傳遞給加密模塊。

      進(jìn)一步地,所述重加密過程步驟具體如下:

      接收用戶端傳遞過來的重加密密鑰rke和認(rèn)證變換密鑰rkm;

      調(diào)用多項式運(yùn)算部件PRFe,該部件以ske(ske可以是ske_1或ske_2)和r作為輸入,計算其中,運(yùn)算表示計算不大于x的最大整數(shù),運(yùn)算表示將x與p/q相乘的結(jié)果近似到不大于它的最大整數(shù),<x,y>運(yùn)算表示將x和y轉(zhuǎn)換成多項式形式之后,進(jìn)行多項式環(huán)上的多項式乘法;

      計算

      調(diào)用認(rèn)證碼更新部件,該部件以認(rèn)證變換密鑰rkm與原密鑰下的消息認(rèn)證碼t1作為輸入,計算即為新密鑰下的消息認(rèn)證碼,將隨機(jī)數(shù)r,c2與t2一起作為新的密文輸出。

      進(jìn)一步地,所述加密過程步驟具體如下:

      接收需要加密的消息m、加密密鑰ske_1與隨機(jī)數(shù)r;

      調(diào)用多項式運(yùn)算部件PRFe,該部件以ske_1和r作為輸入,計算其中,運(yùn)算表示將x與p/q相乘的結(jié)果近似到不大于它的最大整數(shù),<x,y>運(yùn)算表示將x和y轉(zhuǎn)換成多項式形式之后,進(jìn)行多項式環(huán)上的多項式乘法;

      計算c1=(m+PRFe(ske_1,r))mod q;

      調(diào)用認(rèn)證碼生成部件,該部件以消息m、認(rèn)證密鑰skm_1與隨機(jī)數(shù)r作為輸入,首先計算哈希值Hm(r||m),然后使用DDH群映射器將其映射到群GDDH上,映射方法如下所示:

      Hm_DDH=((Hm(r||m)mod p′)2)mod p′,

      然后計算消息認(rèn)證碼:

      將隨機(jī)數(shù)r,c1與t1一起作為密文輸出。

      進(jìn)一步地,所述解密過程步驟具體如下:

      S401、解密模塊接收數(shù)據(jù)密文c和消息認(rèn)證碼t;

      S402、調(diào)用多項式運(yùn)算部件PRFe,該部件以ske(ske可以是ske_1或ske_2)和r作為輸入,計算其中,運(yùn)算表示將x與p/q相乘的結(jié)果近似到不大于它的最大整數(shù),<x,y>運(yùn)算表示將x和y轉(zhuǎn)換成多項式形式之后,進(jìn)行多項式環(huán)上的多項式乘法;

      計算

      調(diào)用校驗部件,該部件以消息m、認(rèn)證密鑰skm(skm可以是skm_1或skm_2)與隨機(jī)數(shù)r作為輸入,首先計算哈希值Hm(r||m),然后使用DDH群映射器將其映射到群GDDH上,映射方法如下所示:

      Hm_DDH=((Hm(r||m)mod p′)2)mod p′,

      然后計算消息認(rèn)證碼

      如果t′=t,則返回m,否則認(rèn)證失敗,認(rèn)為消息被篡改,返回解密失敗。

      本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點及效果:

      1、本發(fā)明使用了對稱密碼技術(shù),目前的代理重加密方案采用的是公鑰密碼體制,即其加密體系中采用了一對公私鑰。公鑰代理重加密的顯著弊端在于計算量大,加密速度相當(dāng)慢,完全無法適應(yīng)如今大數(shù)據(jù)時代的需求。而本系統(tǒng)采用對稱密碼技術(shù),大大提高了重加密的效率。

      2、本發(fā)明在實現(xiàn)代理重加密的同時,還實現(xiàn)了消息的認(rèn)證機(jī)制,能夠認(rèn)證消息是否在重加密的過程中被惡意篡改,從而保護(hù)消息的完整性、正確性。而目前的代理重加密方案,只能做到在重加密的過程中保證數(shù)據(jù)不會泄露,但無法保證惡意代理不會篡改消息內(nèi)容,本系統(tǒng)方案很好地解決了惡意篡改消息的問題。

      附圖說明

      圖1為本發(fā)明公開的一種基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng)的結(jié)構(gòu)示意圖。

      具體實施方式

      為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚、明確,以下參照附圖并舉實施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      實施例

      本實施例公開了一種基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng),如附圖1所示,該系統(tǒng)包括:

      1)用戶端

      用戶端用于向代理端發(fā)起重加密請求。它包括隨機(jī)數(shù)生成器、密鑰生成模塊、加密模塊、解密模塊和密鑰更新模塊。當(dāng)需要對數(shù)據(jù)進(jìn)行重加密時,隨機(jī)數(shù)生成器首先生成一個隨機(jī)數(shù),用密鑰生成模塊生成新的加密密鑰和新的認(rèn)證密鑰,然后通過密鑰更新模塊生成重加密密鑰和認(rèn)證變換密鑰,然后將該隨機(jī)數(shù)、重加密密鑰與認(rèn)證變換密鑰一起發(fā)送給代理端的重加密模塊。除了能夠向代理端發(fā)起重加密請求,用戶端還能夠?qū)?shù)據(jù)進(jìn)行加解密操作。

      隨機(jī)數(shù)生成器,用于生成系統(tǒng)當(dāng)中用到的隨機(jī)數(shù)。同時,在使用前,隨機(jī)數(shù)生成器還需初始化一些系統(tǒng)參數(shù)。

      密鑰生成模塊,用于生成加密密鑰與認(rèn)證密鑰。

      加密模塊,用于對消息明文進(jìn)行加密。它包含多項式運(yùn)算部件(一個同態(tài)的PRF(pseudorandom function,偽隨機(jī)函數(shù)))和消息認(rèn)證碼生成部件。其中,多項式運(yùn)算部件首先將輸入的兩個字符串參數(shù)分別轉(zhuǎn)換成兩個多項式的系數(shù),即將它們轉(zhuǎn)換成為兩個多項式,接著對這兩個多項式進(jìn)行多項式環(huán)上的乘法運(yùn)算;消息認(rèn)證碼生成部件用于生成與消息對應(yīng)的認(rèn)證碼,以備后續(xù)檢測之用。

      解密模塊,用于對密文進(jìn)行解密。它包含多項式運(yùn)算部件(一個同態(tài)的PRF(pseudorandom function,偽隨機(jī)函數(shù)))與校驗部件。其中,多項式運(yùn)算部件首先將輸入的兩個字符串參數(shù)分別轉(zhuǎn)換成兩個多項式的系數(shù),即將它們轉(zhuǎn)換成為兩個多項式,接著對這兩個多項式進(jìn)行多項式環(huán)上的乘法運(yùn)算;校驗部件用于檢測消息認(rèn)證碼是否正確,若正確則返回解密之后的消息,否則返回解密失敗。

      其中,校驗部件包含一個DDH群映射器,用于將一個哈希值映射到DDH群上。

      密鑰更新模塊,用于根據(jù)新的加密密鑰和認(rèn)證密鑰,生成重加密密鑰和認(rèn)證變換密鑰。其包含一個逆元生成器,用于生成某個元素的逆元。

      2)代理端

      代理端保存了用戶的密文,同時對用戶端發(fā)送過來的重加密請求進(jìn)行處理,并對數(shù)據(jù)進(jìn)行重加密并生成新的消息認(rèn)證碼。

      代理端包括重加密模塊,用于響應(yīng)用戶請求,根據(jù)用戶端傳遞過來的重加密密鑰和認(rèn)證變換密鑰對數(shù)據(jù)進(jìn)行重加密,并更新消息認(rèn)證碼。該模塊由多項式運(yùn)算部件(一個同態(tài)的PRF(pseudorandom function,偽隨機(jī)函數(shù)))與消息認(rèn)證碼更新部件組成。其中,多項式運(yùn)算部件首先將輸入的兩個字符串參數(shù)分別轉(zhuǎn)換成兩個多項式的系數(shù),即將它們轉(zhuǎn)換成為兩個多項式,接著對這兩個多項式進(jìn)行多項式環(huán)上的乘法運(yùn)算;認(rèn)證碼更新部件根據(jù)用戶端傳遞過來的認(rèn)證變換密鑰,對原來的消息認(rèn)證碼進(jìn)行處理,生成新認(rèn)證密鑰下的消息認(rèn)證碼。

      消息認(rèn)證碼生成部件包括一個DDH群映射器,用于將一個哈希值映射到DDH群上。

      本實施例還公開了一種基于對稱密碼的可認(rèn)證的代理重加密方法,該方法運(yùn)行在上述公開的基于對稱密碼的可認(rèn)證的代理重加密系統(tǒng)上,包含以下步驟:

      S1、用戶端生成參數(shù):

      S101、選擇并生成公共參數(shù);

      S102、根據(jù)公共參數(shù),通過密鑰生成模塊生成新的加密密鑰、新的認(rèn)證密鑰以及DDH群;

      S103、若需要發(fā)起重加密請求,則將新的加密密鑰和新的認(rèn)證密鑰傳遞給密鑰更新模塊,生成重加密密鑰和認(rèn)證變換密鑰。然后將這兩個密鑰發(fā)送給代理端的重加密模塊。

      S104、若需要對數(shù)據(jù)進(jìn)行加密,則將消息明文、加密密鑰和認(rèn)證密鑰傳遞給加密模塊。

      S2、重加密過程:

      S201、重加密模塊接收用戶端傳遞過來的重加密密鑰和認(rèn)證變換密鑰。

      S202、調(diào)用多項式運(yùn)算部件,對重加密密鑰與一個隨機(jī)數(shù)(系統(tǒng)的一個公共參數(shù))進(jìn)行處理,輸出處理結(jié)果;

      S203、將上一步的處理結(jié)果與原來的密文進(jìn)行運(yùn)算;

      S204、調(diào)用消息認(rèn)證碼更新部件,根據(jù)認(rèn)證變換密鑰對原密鑰下的消息認(rèn)證碼進(jìn)行運(yùn)算,將步驟S202中的隨機(jī)數(shù)、步驟S203中的運(yùn)算結(jié)果及新密鑰下的消息認(rèn)證碼一起作為新密鑰下的密文輸出。

      S3、加密過程:

      S301、加密模塊接收消息明文、加密密鑰與一個隨機(jī)數(shù)(同上,為系統(tǒng)公共參數(shù))作為輸入;

      S302、調(diào)用多項式運(yùn)算部件,對加密密鑰與該隨機(jī)數(shù)進(jìn)行處理,輸出處理結(jié)果;

      S303、將上一步的處理結(jié)果與消息明文進(jìn)行運(yùn)算;

      S304、調(diào)用消息認(rèn)證碼生成部件,生成該消息的消息認(rèn)證碼,將步驟S301中的隨機(jī)數(shù)、步驟S303的運(yùn)算結(jié)果及消息認(rèn)證碼一起作為密文輸出。

      S4、解密過程:

      S401、解密模塊接收消息密文。

      S402、調(diào)用多項式運(yùn)算部件,對加密密鑰與一隨機(jī)數(shù)(同上,為系統(tǒng)公共參數(shù))進(jìn)行處理,輸出處理結(jié)果。

      S403、將上一步的處理結(jié)果與消息密文進(jìn)行運(yùn)算,得到消息明文。

      S404、計算解密出的消息明文的消息認(rèn)證碼,若它與收到的消息認(rèn)證碼相同,則返回該明文,否則返回解密失敗。

      具體應(yīng)用中,所述步驟S1、用戶端生成參數(shù)具體步驟如下:

      S101、選擇合適的公共參數(shù)p,q,n,r,p′,q′。其中,p,q是與多項式環(huán)相關(guān)的參數(shù),r為隨機(jī)數(shù),p′,q′是與DDH群相關(guān)的參數(shù);

      S102、根據(jù)這些公共參數(shù),生成新的加密密鑰(ske_2)ske_1、新的認(rèn)證密鑰(skm_1)skm_2和群GDDH;

      S103、若需要發(fā)起重加密請求,則將ske_2與skm_2傳遞給密鑰更新模塊,生成重加密密鑰rke=ske_2-ske_1,并計算skm_1模q′的逆元然后計算認(rèn)證變換密鑰然后將rke與rkm發(fā)送給代理端的重加密模塊;

      S104、若需要對數(shù)據(jù)進(jìn)行加密,則將消息明文m、加密密鑰ske_1和認(rèn)證密鑰skm_1傳遞給加密模塊。

      所述步驟S2、重加密過程具體步驟如下:

      S201、接收用戶端傳遞過來的重加密密鑰rke和認(rèn)證變換密鑰rkm;

      S202、調(diào)用多項式運(yùn)算部件PRFe,該部件以ske(ske可以是ske_1或ske_2)和r作為輸入,計算其中,運(yùn)算表示計算不大于x的最大整數(shù)。運(yùn)算表示將x與p/q相乘的結(jié)果近似到不大于它的最大整數(shù)。<x,y>運(yùn)算表示將x和y轉(zhuǎn)換成多項式形式之后,進(jìn)行多項式環(huán)上的多項式乘法(即將多項式相乘之后的結(jié)果模xn+1);

      S203、計算

      S204、調(diào)用認(rèn)證碼更新部件,該部件以認(rèn)證變換密鑰rkm與原密鑰下的消息認(rèn)證碼t1作為輸入,計算即為新密鑰下的消息認(rèn)證碼。將隨機(jī)數(shù)r,c2與t2一起作為新的密文輸出。

      所述步驟S3、加密過程具體步驟如下:

      S301、接收需要加密的消息m、加密密鑰ske_1與隨機(jī)數(shù)r;

      S302、調(diào)用多項式運(yùn)算部件PRFe,該部件以ske_1和r作為輸入,計算其中,運(yùn)算表示將x與p/q相乘的結(jié)果近似到不大于它的最大整數(shù)。<x,y>運(yùn)算表示將x和y轉(zhuǎn)換成多項式形式之后,進(jìn)行多項式環(huán)上的多項式乘法(即將多項式相乘之后的結(jié)果模xn+1);

      S303、計算c1=(m+PRFe(ske_1,r))mod q;

      S304、調(diào)用認(rèn)證碼生成部件,該部件以消息m、認(rèn)證密鑰skm_1與隨機(jī)數(shù)r作為輸入,首先計算哈希值Hm(r||m),然后使用DDH群映射器將其映射到群GDDH上,映射方法如下所示:

      Hm_DDH=((Hm(r||m)mod p′)2)mod p′,

      然后計算消息認(rèn)證碼:

      將隨機(jī)數(shù)r,c1與t1一起作為密文輸出。

      所述步驟S4、解密過程具體步驟如下:

      S401、解密模塊接收數(shù)據(jù)密文c和消息認(rèn)證碼t;

      S402、調(diào)用多項式運(yùn)算部件PRFe。該部件以ske(ske可以是ske_1或ske_2)和r作為輸入,計算其中,運(yùn)算表示將x與p/q相乘的結(jié)果近似到不大于它的最大整數(shù)。<x,y>運(yùn)算表示將x和y轉(zhuǎn)換成多項式形式之后,進(jìn)行多項式環(huán)上的多項式乘法(即將多項式相乘之后的結(jié)果模xn+1);

      S403、計算

      S404、調(diào)用校驗部件,該部件以消息m、認(rèn)證密鑰skm(skm可以是skm_1或skm_2)與隨機(jī)數(shù)r作為輸入,首先計算哈希值Hm(r||m),然后使用DDH群映射器將其映射到群GDDH上,映射方法如下所示:

      Hm_DDH=((Hm(r||m)mod p′)2)mod p′,

      然后計算消息認(rèn)證碼

      如果t′=t,則返回m,否則認(rèn)證失敗,認(rèn)為消息被篡改,返回解密失敗。

      下面以一個具體的例子來詳細(xì)介紹系統(tǒng)運(yùn)行過程:

      一、系統(tǒng)參數(shù)設(shè)置與哈希函數(shù)選擇:

      (1)在本例中,系統(tǒng)運(yùn)行的參數(shù)為

      p=10,q=213+1=12289,n=10,r=1,q′=11,p′=2q′+1=23。

      (2)選取He(x)=SHA1(x),Hm(x)=SHA256(x);

      二、加密過程:

      (1)因為n=10,所以消息的長度為10,假設(shè)待加密消息為m=[6,3,9,6,6,9,3,6,3,9](因為采用多項式環(huán)上的多項式乘法的方式進(jìn)行重加密后,解密時會引入{-1,0,1}的誤差,為了使本系統(tǒng)具有容錯性,、將消息選擇為3的倍數(shù))。

      (2)計算r的SHA1值:

      He(r)=He(1)=SHA(1)=356a192b7913b04c54574d18c28d46e6395428ab

      將這十六進(jìn)制的字符串按每16位的長度拆分開:

      356a|192b|7913|b04c|5457|4d18|c28d|46e6|3954|28ab,

      轉(zhuǎn)換為十進(jìn)制為:

      13674|6438|30995|45132|21591|19736|49805|18150|14676|10471

      對每一項進(jìn)行模q運(yùn)算,得到多項式系數(shù):

      [1358,6438,6417,8265,9302,7447,649,5861,2387,10471]

      (3)生成加密密鑰ske

      這里選取加密密鑰ske

      [10471,2387,5861,649,7447,9302,8265,6417,6438,1358],

      同樣將其看成是一個多項式的系數(shù)。

      (4)計算即首先計算兩個多項式He(r)和ske的乘積:

      He(r)=1358+6438*x1+6417*x2+8265*x3+9302*x4

      +7447*x5+649*x6+5861*x7+2387*x8+10471*x9

      ske=10471+2387*x1+5861*x2+649*x3+7447*x4

      +9302*x5+8265*x6+6417*x7+6438*x8+1358*x9,

      <He(r),ske>mod(x10+1)=263+7731*x1+4529*x2

      +9891*x3+2398*x5+7760*x6+4558*x7

      +12026*x8+3178*x9

      將每個系數(shù)乘以p/q,并將結(jié)果近似到不大于它的最大整數(shù)(如8.6近似為8、6.1近似為6),可得PRFe(ske,r)的最終結(jié)果為

      [0,6,3,8,0,1,6,3,9,2]。

      (5)加密:

      將m與步驟(4)中的最終結(jié)果相加之后模p:

      (m+PRFe(ske,r))mod p=

      ([6,3,9,6,6,9,3,6,3,9]+[0,6,3,8,0,1,6,3,9,2])mod p=

      [6,9,2,4,6,0,9,9,2,1],

      即c1=[6,9,2,4,6,0,9,9,2,1]。

      三、生成消息認(rèn)證碼:

      (1)計算r||m=16396693639,選擇認(rèn)證密鑰skm。

      (2)計算這里將Hm選定為SHA256,為了描述方便,將skm選定為3。

      計算Hm_DDH=((Hm(r||m)mod q′)2)mod q′=4,

      所以,此即為消息認(rèn)證碼。

      即密文為

      (r,c1,t1)=(1,[6,9,2,4,6,0,9,9,2,1],18)。

      四、解密過程:

      (1)和加密過程類似,由于用戶自己是知道加密密鑰ske的,所以可以計算PRFe(ske,r)=[0,6,3,8,0,1,6,3,9,2]。

      (2)計算

      m=(c-PRFe(ske,r))modp=

      ([6,9,2,4,6,0,9,9,2,1]-[0,6,3,8,0,1,6,3,9,2])mod10=

      [6,3,9,6,6,9,3,6,3,9]。

      可以看到,正確解密出了原始的消息。

      五、重加密過程:

      (1)設(shè)原始的加密密鑰為ske_1,新的加密密鑰為ske_2,

      ske_1=[10471,2387,5861,649,7447,9302,8265,6417,6438,1358],

      ske_2=[10476,2382,5864,679,8447,9342,8295,6517,7438,558]。

      計算重加密密鑰:

      rke=ske_1-ske_2=[5,12284,3,30,1000,40,30,100,1000,11489]。

      rke寫成多項式的形式為:

      rke=5+12284*x1+3*x2+30*x3+1000*x4

      +40*x5+30*x6+100*x7+1000*x8+11489*x9

      計算

      計算c2

      c2=c1+PRFe(rke,r)=([6,9,2,4,6,0,9,9,2,1]+[8,9,3,7,5,5,2,1,9,4])p

      =[4,8,5,1,1,5,1,0,1,5]。

      六、更新認(rèn)證碼:

      (1)選擇一個新的認(rèn)證密鑰skm_2,為描述方便起見,將skm_2設(shè)為9。

      (2)計算認(rèn)證碼更新密鑰

      rkm=(skm_2·skm_1-1)mod q′=9·4mod 11=3。

      (3)計算新認(rèn)證密鑰下的消息認(rèn)證碼:

      此即為新的消息認(rèn)證碼。重加密后的密文為

      (r,c2,t2)=(1,[4,8,5,1,1,5,1,0,1,5],13)。

      七、重加密后的解密以及驗證消息認(rèn)證碼:

      為了驗證經(jīng)過重加密后的消息是否被更改,必須要對消息認(rèn)證碼進(jìn)行驗證。

      (1)首先,要對重加密后的密文進(jìn)行解密:

      和解密過程類似,但是這里用來解密的密鑰是

      ske_2=[10476,2382,5864,679,8447,9342,8295,6517,7438,558]。

      由于會有{-1,0,1}的誤差,因此需要采用容錯機(jī)制,在這個實例中,將消息都設(shè)置為3的倍數(shù),因此在產(chǎn)生誤差之時能夠進(jìn)行糾錯:

      a.解密結(jié)果中已經(jīng)是3的倍數(shù)的不需要改變;

      b.將不是3的倍數(shù)的解密結(jié)果近似到距它最近的3的倍數(shù),即進(jìn)行如下變換:8→9;5→6;2→3;

      經(jīng)過糾錯之后,得到的解密結(jié)果為:

      m=[6,3,9,6,6,9,3,6,3,9]。

      (2)解密之后,用新的認(rèn)證密鑰skm_2計算消息認(rèn)證碼:

      新的消息認(rèn)證碼

      對比t′和t2,它們相等,說明消息沒有被惡意篡改。

      (3)若t′和t2相等,返回解密后的m,否則說明消息被惡意篡改,返回解密失敗。

      上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1