終端及其不可抵賴的加密籤名方法和裝置與流程
2023-04-25 03:46:41 2

本發明涉及到數字籤名領域,特別是涉及到一種終端及其不可抵賴的加密籤名方法和裝置。
背景技術:
在一些安全應用中需要對數據進行加密保護,同時要保證數據發送方身份的真實性。一般的方法是對數據籤名後,再對數據加密,或者先對數據加密後,再對數據進行籤名。但是這種分別執行完整的加密方法和籤名方法的保護方法會導致輸出結果為加密方法輸出和籤名方法輸出的總長度。
一種輸出長度短、驗證方法簡單的加密籤名方法是有需求的。
技術實現要素:
本發明的主要目的為提供一種輸出長度短、驗證方法簡單的終端及其不可抵賴的加密籤名方法和裝置。
為了實現上述發明目的,本發明提出一種不可抵賴的加密籤名方法,包括:
加密籤名端獲取密鑰生成中心的標識密碼系統參數,生成籤名公鑰和籤名私鑰的密鑰對;
對消息m使用解密驗籤端的標識id_b加密,以及對加密結果數據和消息m使用所述籤名私鑰進行短籤名,生成加密籤名結果數據;
通過所述解密驗籤端利用標識密碼系統參數、標識id_b對應的標識解密私鑰d_b以及所述籤名公鑰,對所述加密籤名結果數據進行解密驗籤,如果驗證不成功,則解密輸出空值。
進一步地,所述標識密碼系統參數為;其中,
e為密鑰生成中心選擇的一條橢圓曲線;
e為雙線性對;
p1和p2為點群g1和g2中的兩個點;g1和g2為橢圓曲線e上的兩個階為素數q的點群;
s為主私鑰,其為隨機選擇的0到q之間的整數;
[s]p1為s個p1相加;
[s]p2為s個p2相加;
h為映射函數,其將一個比特串o映射到[1,q-1]上;
kdf為標準的密鑰派生函數。
進一步地,所述解密驗籤端的標識解密私鑰d_b為:
d_b=[s/(h(1||id_b)+s)]p2。
進一步地,所述加密籤名端獲取密鑰生成中心的標識密碼系統參數,生成籤名公鑰和籤名私鑰的密鑰對的步驟,包括:
所述加密籤名端獲取密鑰生成中心的所述標識密碼系統參數;
隨機選擇0到q之間的整數x,將所述x作為所述籤名私鑰;
選擇g1和g2中的兩個點f1和f2,將、、中的一種作為所述籤名公鑰。
進一步地,所述f1=p1,所述f2=p2。
進一步地,所述對消息m使用解密驗籤端的標識id_b加密,以及對加密結果數據和消息m使用所述籤名私鑰進行短籤名,生成加密籤名結果數據的步驟,包括:
計算整數h1=h(1||id_b);
計算解密驗籤端的公鑰q_b=[h1]p1+[s]p1;
產生隨機數r∈[1,q-1];
計算x=[r]q_b,將x數據類型轉換為比特串c1;
計算w=gr,將w的數據類型轉換為比特串u,其中,g=e(p1,[s]p2);
準備密鑰派生輸入xi,其中,所述xi包含c1和u的拼接;
計算和m一樣長度的k=kdf(xi);
計算c2=m⊕k;
準備哈希輸入hi,其中,所述hi包含一個哈希操作索引、m和u的拼接;
計算整數h=h(hi);
計算s=[x/(h+x)]f1,將s數據類型轉換為比特串c3;
將作為輸出,給所述消息m進行加密籤名。
進一步地,所述通過所述解密驗籤端利用標識密碼系統參數、標識id_b對應的標識解密私鑰d_b以及所述籤名公鑰,對所述加密籤名結果數據進行解密驗籤,如果驗證不成功,則解密輸出空值的步驟,包括:
通過所述解密驗籤端將c1的數據類型轉換為橢圓曲線e上的點x,檢驗x∈g1是否成立;
若否,則通過所述解密驗籤端直接判定則驗證失敗;
通過所述解密驗籤端將所述c3的數據類型轉換為橢圓曲線e上的點s,檢驗s∈g1是否成立;
若否,則通過所述解密驗籤端直接判定則驗證失敗;
若所述x∈g1以及s∈g1均成立,則通過所述解密驗籤端計算w=e(x,d_b);將w的數據類型轉換為比特串u;
通過所述解密驗籤端準備密鑰派生輸入xi,其中,所述xi包含c1和u的拼接;
通過所述解密驗籤端計算和c2一樣長度的k=kdf(xi);
通過所述解密驗籤端計算m=c2⊕k;
通過所述解密驗籤端準備密鑰派生輸入hi,其中,所述hi包含一個哈希操作索引、m和u的拼接;
通過所述解密驗籤端計算整數h=h(hi);
通過所述解密驗籤端計算加密籤名端的公鑰q_a=[h1]f2+[s]f2;
通過所述解密驗籤端計算u=e(s,q_a);
通過所述解密驗籤端計算f=e(f1,[x]f2);
通過所述解密驗籤端檢驗f=u是否成立,若是,則驗證通過,否則驗證失敗,解密輸出空值。
本發明還提供一種不可抵賴的加密籤名裝置,包括:
籤名密鑰對生成單元,用於加密籤名端獲取密鑰生成中心的標識密碼系統參數,生成籤名公鑰和籤名私鑰的密鑰對;
加密籤名單元,用於對消息m使用解密驗籤端的標識id_b加密,以及對加密結果數據和消息m使用所述籤名私鑰進行短籤名,生成加密籤名結果數據;
解密驗籤單元,用於通過所述解密驗籤端利用標識密碼系統參數、標識id_b對應的標識解密私鑰d_b以及所述籤名公鑰,對所述加密籤名結果數據進行解密驗籤,如果驗證不成功,則解密輸出空值。
進一步地,所述標識密碼系統參數為;其中,
e為密鑰生成中心選擇的一條橢圓曲線;
e為雙線性對;
p1和p2為點群g1和g2中的兩個點;g1和g2為橢圓曲線e上的兩個階為素數q的點群;
s為主私鑰,其為隨機選擇的0到q之間的整數;
[s]p1為s個p1相加;
[s]p2為s個p2相加;
h為映射函數,其將一個比特串o映射到[1,q-1]上;
kdf為標準的密鑰派生函數。
進一步地,所述解密驗籤端的標識解密私鑰d_b為:
d_b=[s/(h(1||id_b)+s)]p2。
進一步地,所述籤名密鑰對生成單元,包括:
獲取模塊,用於所述加密籤名端獲取所述標識密碼系統參數;
第一選擇模塊,用於隨機選擇0到q之間的整數x,將所述x作為所述籤名私鑰;
第二選擇模塊,用於選擇g1和g2中的兩個點f1和f2,將、、中的一種作為所述籤名公鑰。
進一步地,所述f1=p1,所述f2=p2。
進一步地,,所述加密籤名單元,包括:
加密第一計算模塊,用於計算整數h1=h(1||id_b);
加密第二計算模塊,用於計算解密驗籤端的公鑰q_b=[h1]p1+[s]p1;
選擇模塊,用於產生隨機數r∈[1,q-1];
加密第三計算模塊,用於計算x=[r]q_b,將x數據類型轉換為比特串c1;
加密第四計算模塊,用於計算w=gr,將w的數據類型轉換為比特串u,其中,g=e(p1,[s]p2);
加密第五計算模塊,準備密鑰派生輸入xi,xi包含c1和u的拼接,可選地,還可拼接id_b;
加密第六計算模塊,用於計算和m一樣長度的k=kdf(xi);
加密第七計算模塊,用於計算c2=m⊕k;
加密第八計算模塊,用於準備哈希輸入hi,其中,所述hi包含哈希操作索引、m和u的拼接;
加密第九計算模塊,用於計算整數h=h(hi);
加密第十計算模塊,用於計算s=[x/(h+x)]f1,將s數據類型轉換為比特串c3;
輸出模塊,用於通過所述加密籤名端將作為輸出,給所述消息m進行加密籤名。
進一步地,所述解密驗籤單元,包括:
第一選擇判斷模塊,用於通過所述解密驗籤端將c1的數據類型轉換為橢圓曲線e上的點x,檢驗x∈g1是否成立;
第一驗證模塊,用於若x∈g1不成立,則通過所述解密驗籤端直接判定則驗證失敗;
第二選擇判斷模塊,用於通過所述解密驗籤端將c3的數據類型轉換為橢圓曲線e上的點s,檢驗s∈g1是否成立;
第二驗證模塊,用於若s∈g1不成立,則通過所述解密驗籤端直接判定則驗證失敗;
解密第一計算模塊,用於若x∈g1以及s∈g1均成立,則通過所述解密驗籤端計算w=e(x,d_b);將w的數據類型轉換為比特串u;
解密第二計算模塊,用於通過所述解密驗籤端準備密鑰派生輸入xi,其中,所述xi包含c1和u的拼接;
解密第三計算模塊,用於通過所述解密驗籤端計算和c2一樣長度的k=kdf(xi);
解密第四計算模塊,用於通過所述解密驗籤端計算m=c2⊕k;
解密第五計算模塊,用於通過所述解密驗籤端準備哈希輸入hi,其中,所述hi包含一個哈希操作索引、m和u的拼接;
解密第六計算模塊,用於通過所述解密驗籤端計算整數h=h(hi);
解密第七計算模塊,用於通過所述解密驗籤端計算加密籤名端的公鑰q_a=[h1]f2+[s]f2;
解密第八計算模塊,用於通過所述解密驗籤端計算u=e(s,q_a);
解密第九計算模塊,用於通過所述解密驗籤端計算f=e(f1,[x]f2);
第三驗證模塊,用於通過所述解密驗籤端檢驗f=u是否成立,若是,則驗證通過,否則驗證失敗。
本發明還提供一種終端,包括存儲器和處理器;
所述存儲器用於存儲支持不可抵賴的加密籤名裝置執行上述任一項所述的不可抵賴的加密籤名方法的程序;
所述處理器被配置為用於執行所述存儲器中存儲的程序。
本發明的終端及其不可抵賴的籤名方法和裝置,加密籤名結果數據是通過短籤形成的,所以加密籤名端輸出結果長度短,驗證簡單,既保證了數據的私密性,又保證了數據的真實性。
附圖說明
圖1為本發明一實施例的不可抵賴的籤名方法的流程示意圖;
圖2為本發明一實施例的生成籤名公鑰和籤名私鑰的密鑰對的方法流程示意圖;
圖3為本發明一實施例的生成加密籤名結果數據的方法流程示意圖;
圖4為本發明一實施例的對加密籤名結果數據進行解密驗籤的方法流程示意圖;
圖5為本發明一時實施例的不可抵賴的籤名裝置的結構示意框圖;
圖6為本發明一實施例的獲取單元的結構示意框圖;
圖7為本發明一實施例的獲取單元的結構示意框圖;
圖8為本發明一實施例的解密驗籤單元的結構示意框圖;
圖9為本發明一實施例的終端的結構示意框圖。
本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
參照圖1,本發明實施例提供一種不可抵賴的加密籤名方法,包括:
s1、加密籤名端獲取密鑰生成中心的標識密碼系統參數,生成籤名公鑰和籤名私鑰的密鑰對;
s2、對消息m使用解密驗籤端的標識id_b加密,以及對加密結果數據和消息m使用所述籤名私鑰進行短籤名,生成加密籤名結果數據;
s3、通過所述解密驗籤端利用標識密碼系統參數、標識id_b對應的標識解密私鑰d_b以及所述籤名公鑰,對所述加密籤名結果數據進行解密驗籤,如果驗證不成功,則解密輸出空值。
如上述步驟s1所述,上述解密驗籤端和加密籤名端為智能電子設備,如電腦、筆記本電腦、智慧型手機、平板電腦等;智能電子設備在加密籤名時,即為加密籤名端,在解密驗籤時,即為解密驗籤端。上述密鑰生成中心即為密鑰管理中心,是公鑰基礎設施中的一個重要組成部分,提供密鑰的生成、保存、備份、更新、恢復、查詢等密鑰服務,可以解決分布式企業應用環境中大規模密碼技術應用所帶來的密鑰管理問題。上述密鑰生成中心生成的標識密碼系統參數為;其中,
e為密鑰生成中心選擇的一條橢圓曲線;
e為雙線性對;
p1和p2為點群g1和g2中的兩個點;g1和g2為橢圓曲線e上的兩個階為素數q的點群;
s為主私鑰,其為隨機選擇的0到q之間的整數;
[s]p1為s個p1相加;
[s]p2為s個p2相加;
h為映射函數,其將一個比特串o映射到[1,q-1]上;
kdf為標準的密鑰派生函數。
在上述標識密碼系統參數中還可以加入g=e(p1,[s]p2),即標識密碼系統參數為,因為g=e(p1,[s]p2)可以通過已知的參數計算得出,所以,可以根據需要加入或不加入上述標識密碼系統參數中。
上述加密籤名端的籤名公鑰和籤名私鑰,均使用標識密碼系統參數中的參數計算而成,但是無需在密鑰生成中心生成,而是在加密籤名端完成,無需將消息m發送至密鑰生成中心進行加密處理等。
如上述步驟s2所述,上述加密籤名結果數據是通過短籤形成的,所以加密籤名端輸出結果長度短。
如上述步驟s3所述,通過解密驗籤端利用預設的規則,獲取指定的參數對加密籤名結果數據進行解密驗籤。在驗籤過程中,上述標識解密私鑰d_b即為利用解密驗籤端的標識id_b和預設的計算規則而獲得,本實施例中,d_b=[s/(h(1||id_b)+s)]p2。
參照圖2,本實施例中,上述加密籤名端獲取密鑰生成中心的標識密碼系統參數,生成籤名公鑰和籤名私鑰的密鑰對的步驟s1,包括:
s101、所述加密籤名端獲取密鑰生成中心的上述標識密碼系統參數;
s102、隨機選擇0到q之間的整數x,將所述x作為所述籤名私鑰;
s103、選擇g1和g2中的兩個點f1和f2,將、、中的一種作為所述籤名公鑰。
如上述步驟s101、s102和s103所述,即為加密籤名端生成籤名私鑰和籤名公鑰的過程。本實施例中,可以選擇將f1=p1,f2=p2,方便後期計算和驗證等。
參照圖3,本實施例中,上述對消息m使用解密驗籤端的標識id_b加密,以及對加密結果數據和消息m使用所述籤名私鑰進行短籤名,生成加密籤名結果數據的步驟s2,包括:
s201、計算整數h1=h(1||id_b);
s202、計算解密驗籤端的公鑰q_b=[h1]p1+[s]p1;
s203、產生隨機數r∈[1,q-1];
s204、計算x=[r]q_b,將x數據類型轉換為比特串c1;
s205、計算w=gr,將w的數據類型轉換為比特串u,其中,g=e(p1,[s]p2);
s206、準備密鑰派生輸入xi,其中,所述xi包含c1和u的拼接,可選地,還可以拼接id_b;
s207、計算和m一樣長度的k=kdf(xi);
s208、計算c2=m⊕k;
s209、準備哈希輸入hi,其中,所述hi包含一個哈希操作索引、m和u的拼接,可選地,還可以拼接c1、id_a、id_b;
s210、計算整數h=h(hi);
s211、計算s=[x/(h+x)]f1,將s數據類型轉換為比特串c3;
s212、將作為輸出,給所述消息m進行加密籤名。
如上述步驟s201至s212所述,即為利用上述籤名公鑰和籤名私鑰等參數給消息m進行加密籤名的具體過程,其籤名過程為短籤名的過程,消息m加密籤名後的長度較小。上述操作索引用於區分計算過程中的各次哈希操作。其取值無特定要求,只需保證不同的哈希操作使用的哈希操作索引不同,比如h=h(2||m||u||c1||id_a||id_b)中,操作索引即為2。
參照圖4,本實施例中,上述通過所述解密驗籤端利用標識密碼系統參數、標識id_b對應的標識解密私鑰d_b以及所述籤名公鑰,對所述加密籤名結果數據進行解密驗籤,如果驗證不成功,則解密輸出空值的步驟s3,包括:
s301、通過解密驗籤端將c1的數據類型轉換為橢圓曲線e上的點x,檢驗x∈g1是否成立;
s302、若否,則通過解密驗籤端直接判定則驗證失敗,解密輸出空值;
s303、通過所述解密驗籤端將所述c3的數據類型轉換為橢圓曲線e上的點s,檢驗s∈g1是否成立;
s304、若否,則通過所述解密驗籤端直接判定則驗證失敗;
s305、若所述x∈g1以及s∈g1均成立,則通過解密驗籤端計算w=e(x,d_b);將w的數據類型轉換為比特串u;
s306、通過所述解密驗籤端準備密鑰派生輸入xi,其中,所述xi包含c1和u的拼接,可選地,還可以拼接id_b;
s307、通過解密驗籤端計算和c2一樣長度的k=kdf(xi);s308、通過解密驗籤端計算m=c2⊕k;
s309、通過所述解密驗籤端準備密鑰派生輸入hi,其中,所述hi包含一個哈希操作索引、m和u的拼接,可選地,還可以拼接c1、id_a、id_b;
s310、通過解密驗籤端計算整數h=h(hi);
s311、通過解密驗籤端計算加密籤名端的公鑰q_a=[h1]f2+[s]f2;
s312、通過解密驗籤端計算u=e(s,q_a);
s313、通過解密驗籤端計算f=e(f1,[x]f2);
s314、通過解密驗籤端檢驗f=u是否成立,若是,則驗證通過,否則驗證失敗,解密輸出空值。
如上述步驟s301至s314所述,即為解密驗籤的過程,解密驗籤過程簡單而安全。
在一具體實施例中,整個解密驗籤過程中,需要三方協作,即密鑰生成中心、加密籤名端和解密驗籤端,其過程具體為:
雙線性對是一種具有以下三個特性的二元映射e:g1xg2→gt
1.二元線性:e([s]p,[t]q)=e(p,q)st.s,t∈z/zq.p∈g1,q∈g2,g1是一個階為q的循環群,g2是一個冪為q群,其子群階為q.[s]p表示s個p相加。
2.非退化性:存在非0元p和q,e(p,q)≠1.
3.可計算性:有多項式時間方法計算e(p,q).
現在已知的雙線性對有橢圓曲線上的weil、tate、ate、r-ate、優化ate對等。
步驟a:密鑰生成中心選擇一條橢圓曲線e,其特徵是有可高效計算的雙線性對e。確定曲線e上的兩個階為素數q的點群g1和g2。分別選擇g1和g2中的兩個點p1和p2。隨機選擇0<s<q的整數s作為主私鑰,計算[s]p1,[s]p2以及g=e(p1,[s]p2)。其中[s]p表示標準的s個p相加。密鑰生成中心公開標識密碼系統參數。其中g=e(p1,[s]p2)可以預計算,所以可以不作為系統參數的一部分;消息映射函數h將一個比特串o映射到[1,q-1]上;kdf是標準的密鑰派生函數。
步驟b、密鑰生成中心生成標識id_b對應的標識解密私鑰:
d_b=[s/(h(1||id_ba)+s)]p2,其中,標識id_b為解密驗籤端的標識id_b。
步驟c、加密籤名端擁有標識id_a,其獲得密鑰生成中心公開的標識密碼系統參數後,隨機選擇0<x<q的整數x,選擇g1和g2中的兩個點f1和f2,計算[x]f2,將作為其公鑰數據,其中f=e(f1,[x]f2)可以由雙線對計算得出,所以可以不用作為公鑰的部分,x作為其籤名私鑰。可選的方法是設置f1=p1,f2=p2。
步驟d、加密籤名人獲得系統公開參數以及籤名公鑰,籤名私鑰x後,對消息m進行加密籤名給解密驗籤端。加密籤名方法為:
d1:計算整數h1=h(1||id_b);
d2:計算q_b=[h1]p1+[s]p1;
d3:產生隨機數r[1,q-1];
d4:計算x=[r]q_b,將x數據類型轉換為比特串c1;
d5:計算w=gr,將w的數據類型轉換為比特串u;
d6:計算和m一樣長度的k=kdf(c1||u||id_b);
d7:計算c2=m⊕k;
d8:計算整數h=h(2||m||u||c1||id_a||id_b);
d9:計算s=[x/(h+x)]f1,將s數據類型轉換為比特串c3;
d11:將作為輸出。
步驟e、解密驗籤端使用系統公開參數以及標識解密私鑰d_b=[s/(h(1||id_b)+s)]p2,籤名公鑰,對密文解密驗籤,其過程如下:
e1:將c1的數據類型轉換為橢圓曲線e上的點x,檢驗x∈g1是否成立,若不成立則驗證不通過;
e2:將所述c3的數據類型轉換為橢圓曲線e上的點s,檢驗s∈g1是否成立;若否,則直接判定則驗證失敗;
e3:計算w=e(x,d_b);將w的數據類型轉換為比特串u;
e4:計算和c2一樣長度的k=kdf(c1||u||id_b);
e5:計算m=c2⊕k;
e6:計算整數h=h(2||m||u||c1||id_a||id_b);
e7:計算q_a=[h1]f2+[s]f2;
e8:計算u=e(s,q_a);
e9:計算f=e(f1,[x]f2),該步驟可以針對id_a進行預計算f後存儲。
e10:檢驗f=u是否成立,若成立則驗證通過,輸出m;否則驗證不通過,解密輸出空值。
本發明實施例的不可抵賴的籤名方法,加密籤名結果數據是通過短籤形成的,所以加密籤名端輸出結果長度短,驗證簡單,既保證了數據的私密性,又保證了數據的真實性。
參照圖5,本發明實施例還提供一種不可抵賴的加密籤名裝置,包括:
籤名密鑰對生成單元10,用於加密籤名端獲取密鑰生成中心的標識密碼系統參數,生成籤名公鑰和籤名私鑰的密鑰對;
加密籤名單元20,用於對消息m使用解密驗籤端的標識id_b加密,以及對加密結果數據和消息m使用所述籤名私鑰進行短籤名,生成加密籤名結果數據;
解密驗籤單元30,用於通過所述解密驗籤端利用標識密碼系統參數、標識id_b對應的標識解密私鑰d_b以及所述籤名公鑰,對所述加密籤名結果數據進行解密驗籤,如果驗證不成功,則解密輸出空值。
如上述籤名密鑰對生成單元10,上述解密驗籤端和加密籤名端為智能電子設備,如電腦、筆記本電腦、智慧型手機、平板電腦等;智能電子設備在加密籤名時,即為加密籤名端,在解密驗籤時,即為解密驗籤端。上述密鑰生成中心即為密鑰管理中心,是公鑰基礎設施中的一個重要組成部分,提供密鑰的生成、保存、備份、更新、恢復、查詢等密鑰服務,可以解決分布式企業應用環境中大規模密碼技術應用所帶來的密鑰管理問題。上述密鑰生成中心生成的標識密碼系統參數為;其中,
e為密鑰生成中心選擇的一條橢圓曲線;
e為雙線性對;
p1和p2為點群g1和g2中的兩個點;g1和g2為曲線e上的兩個階為素數q的點群;
s為主私鑰,其為隨機選擇的0到q之間的整數;
[s]p1為s個p1相加;
[s]p2為s個p2相加;
h為映射函數,其將一個比特串o映射到[1,q-1]上;
kdf為標準的密鑰派生函數。
在上述標識密碼系統參數中還可以加入g=e(p1,[s]p2),即標識密碼系統參數為,因為g=e(p1,[s]p2)可以通過已知的參數計算得出,所以,可以根據需要加入或不加入上述標識密碼系統參數中。
上述加密籤名端的籤名公鑰和籤名私鑰,均使用標識密碼系統參數中的參數計算而成,但是無需在密鑰生成中心生成,而是在加密籤名端完成,無需將消息m發送至密鑰生成中心進行加密處理等。
如上述加密籤名單元20,上述加密籤名結果數據是通過短籤形成的,所以加密籤名端輸出結果長度短。
如上述解密驗籤單元30,解密驗籤端利用預設的規則,獲取指定的參數對加密籤名結果數據進行解密驗籤。在驗籤過程中,上述標識解密私鑰d_b即為利用解密驗籤端的標識id_b和預設的計算規則而獲得,本實施例中,d_b=[s/(h(1||id_b)+s)]p2。
參照圖6,本實施例中,上述籤名密鑰對生成單元10,包括:
獲取模塊101,用於所述加密籤名端獲取密鑰生成中心的上述標識密碼系統參數;
第一選擇模塊102,用於隨機選擇0到q之間的整數x,將所述x作為所述籤名私鑰;
第二選擇模塊103,用於選擇g1和g2中的兩個點f1和f2,將、、中的一種作為所述籤名公鑰。
如上述獲取模塊101、第一選擇模塊102和第二選擇模塊103,即為加密籤名端生成籤名私鑰和籤名公鑰的模塊。本實施例中,上述f1=p1,f2=p2,方便後期計算和驗證等。
參照圖7,本實施例中,上述加密籤名單元20,包括:
加密第一計算模塊201,用於計算整數h1=h(1||id_b);
加密第二計算模塊202,用於計算解密驗籤端的公鑰q_b=[h1]p1+[s]p1;
選擇模塊203,用於產生隨機數r∈[1,q-1];
加密第三計算模塊204,用於計算x=[r]q_b,將x數據類型轉換為比特串c1;
加密第四計算模塊205,用於計算w=gr,將w的數據類型轉換為比特串u,其中,g=e(p1,[s]p2);
加密第五計算模塊206,準備密鑰派生輸入xi,xi包含c1和u的拼接,可選地,還可拼接id_b;
加密第六計算模塊207,用於計算和m一樣長度的k=kdf(xi);
加密第七計算模塊208,用於計算c2=m⊕k;
加密第八計算模塊209,用於準備哈希輸入hi,其中,所述hi包含哈希操作索引、m和u的拼接,可選地,還可以拼接c1、id_a、id_b;
加密第九計算模塊210,用於計算整數h=h(hi);
加密第十計算模塊211,用於計算s=[x/(h+x)]f1,將s數據類型轉換為比特串c3;
輸出模塊212,用於將作為輸出,給所述消息m進行加密籤名。
上述即為利用上述籤名公鑰和籤名私鑰等參數給消息m進行加密和短籤名的模塊,消息m加密籤名後的長度較小。上述操作索引用於區分計算過程中的各次哈希操作。其取值無特定要求,只需保證不同的哈希操作使用的哈希操作索引不同,比如h=h(2||m||u||c1||id_a||id_b)中,操作索引即為2。
參照圖8,本實施例中,上述解密驗籤單元30,包括:
第一選擇判斷模塊301,用於通過解密驗籤端將c1的數據類型轉換為橢圓曲線e上的點x,檢驗x∈g1是否成立;
第一驗證模塊302,用於若x∈g1不成立,則通過解密驗籤端直接判定則驗證失敗,解密輸出空值;
第二選擇判斷模塊303,用於通過所述解密驗籤端將c3的數據類型轉換為橢圓曲線e上的點s,檢驗s∈g1是否成立;
第二驗證模塊304,用於若s∈g1不成立,則通過所述解密驗籤端直接判定則驗證失敗;
解密第一計算模塊305,用於若x∈g1以及s∈g1均成立,則通過解密驗籤端計算w=e(x,d_b);將w的數據類型轉換為比特串u;
解密第二計算模塊306,用於通過所述解密驗籤端準備密鑰派生輸入xi,其中,所述xi包含c1和u的拼接,可選地,還可拼接id_b;
解密第三計算模塊307,用於通過解密驗籤端計算和c2一樣長度的k=kdf(xi);
解密第四計算模塊308,用於通過解密驗籤端計算m=c2⊕k;
解密第五計算模塊309,用於通過所述解密驗籤端準備哈希輸入hi,其中,所述hi包含一個哈希操作索引、m和u的拼接,可選地,還可以拼接c1、id_a、id_b
解密第六計算模塊310,用於通過解密驗籤端計算整數h=h(hi);
解密第七計算模塊311,用於通過解密驗籤端計算加密籤名端的公鑰q_a=[h1]f2+[s]f2;
解密第八計算模塊312,用於通過解密驗籤端計算u=e(s,q_a);
解密第九計算模塊313,用於通過解密驗籤端計算f=e(f1,[x]f2);
第二驗證模塊314,用於通過解密驗籤端檢驗f=u是否成立,若是,則驗證通過,否則驗證失敗,解密輸出空值。
上述各模塊即為解密驗籤的過程中使用的裝置,解密驗籤過程簡單而安全。
本發明實施例的不可抵賴的籤名裝置,加密籤名結果數據是通過短籤形成的,所以加密籤名端輸出結果長度短,驗證簡單,既保證了數據的私密性,又保證了數據的真實性。
本發明實施例還提供一種終端300,包括存儲器301和處理器302;上述存儲器301用於存儲支持不可抵賴的加密籤名裝置執行上述任一項中的不可抵賴的加密籤名方法的程序;處理器302被配置為用於執行所述存儲器中存儲的程序。
上述終端300可以為智能電子設備,如電腦、筆記本電腦、智慧型手機、平板電腦等。
上述終端300,在加密籤名時,即為加密籤名端,在解密驗籤時,即為解密驗籤端。
本發明實施例的終端300,加密籤名結果數據是通過短籤形成的,所以加密籤名端輸出結果長度短,驗證簡單,既保證了數據的私密性,又保證了數據的真實性。
以上所述僅為本發明的優選實施例,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。