生成數字簽名的方法和驗證數字簽名的方法
【技術領域】
[0001] 本發明涉及密碼技術領域,具體地說,涉及生成數字簽名的方法和驗證數字簽名 的方法。
【背景技術】
[0002] 數字簽名方法是密碼技術的主要應用之一。目前,主流的數字簽名標準有美國的 DSA簽名、Schor簽名,以及韓國的KC-DSA簽名等。其中,KC-DSA簽名是目前效率最高的數 字簽名方法。
[0003] 然而,KC-DSA簽名方法存在計算效率低、與其它標準算法不兼容等問題。
【發明內容】
[0004] 為解決上述問題,本發明提供了一種生成數字簽名的方法,所述方法包括:
[0005] 對于待簽名信息m,基于第一預設轉換函數h,得到簽名變量e ;
[0006] 根據隨機數r和生成元g,結合第二預設轉換函數f,得到簽名變量d ;
[0007] 根據簽名私鑰w、隨機數r、簽名變量e和簽名變量d,確定簽名變量z,根據簽名變 量z生成待簽名信息m的數字簽名s。
[0008] 根據本發明的一個實施例,在所述方法中,
[0009] 隨機數r是在{0, I}1或Z q中隨機確定的;或,
[0010] 隨機數r是利用從{0, IK到{0, 1} 1或從{0, IK到Zq的偽隨機函數或哈希函數產 生的;
[0011] 其中,1表示小于或等于|q|的正整數,|q|表示有限群G'的循環子群G的階q以 2進制表示時的長度,Z q表示預設數字集合,{0, 1} $表示所有0-1串的集合,{0, 1} 1表示長 度為1的0-1串。
[0012] 根據本發明的一個實施例,根據如下表達式確定所述簽名變量z :
[0013]
[0014] 其中,q表示有限群G'的循環子群G的階。
[0015] 根據本發明的一個實施例,根據如下表達式確定所述簽名變量z :
[0016]
[0017] 其中,q表示有限群G'的循環子群G的階,變量w'等于-w。
[0018] 根據本發明的一個實施例,
[0019] 根據如下表達式確定所述數字簽名s :
[0020] s = {d, z, auxj
[0021] 或,根據如下表達式確定所述數字簽名s :
[0022] s = {a, z, aux2}
[0023] 或,根據如下表達式確定所述數字簽名s :
[0024] s = {a, d, z, aux3}
[0025] 其中,簽名變量a = g%輔助信息auXi、輔助信息aux2和輔助信息aux 3均是集合D 的子集合,集合D包含{e}。
[0026] 根據本發明的一個實施例,所述方法還包括:
[0027] 根據所述簽名私鑰w,生成簽名公鑰PK。
[0028] 根據本發明的一個實施例,所述簽名公鑰PK表示為:
[0029] PK = {G,,g,q,U}
[0030] 根據如下表達式計算公鑰參數U :
[0031] U = gw
[0032] 其中,G表示有限群G'的循環子群,g表示循環子群G的生成元,q表示循環子群 G的階,w表不簽名私鑰。
[0033] 根據本發明的一個實施例,根據如下表達式計算所述簽名變量e :
[0034] e = h (m, auxm)
[0035] 輔助信息auXni表示
1的可為空的子集合或該子集合的哈希 值,其中,u表示簽名公鑰中的公鑰參數,:i表示簽名設備的身份標示,表示簽名設備 的公鑰證書,g表示有限群G'的循環子群G的生成元,q表示循環子群G的階,N表示有限 群G'的的階。
[0036] 根據本發明的一個實施例,BUXni為空集
}或 *其中,公鑰參數U = gw。
[0037] 根據本發明的一個實施例,根據如下表達式計算所述簽名變量d :
[0038] d = f (a, auxd)
[0039] 輔助信息auxd為空集
,其 中
W表示簽名設備的身份標示,U表示簽名公鑰中的公鑰參 數,表示簽名設備的公鑰證書,g表示有限群G'的循環子群G的生成元,q表示循環 子群G的階,N表示有限群G'的的階。
[0040] 根據本發明的一個實施例,所述第一預設轉換函數h和/或第二預設轉換函數f 為哈希函數。
[0041] 本發明還提供了一種驗證數字簽名的方法,所述方法用于驗證利用如上任一項所 述的方法所生成的數字簽名,其包括:
[0042] 對于接收到的信息中所包含的公鑰證書,通過驗證可信第三方的簽名來驗證所述 公鑰證書的有效性,并驗證接收到的信息中所包含的數字簽名中的簽名變量z是否屬于預 設數字集合;
[0043] 如果公鑰證書有效,且簽名變量z屬于預設數字集合,則進一步驗證簽名變量d是 否滿足預設條件;
[0044] 如果簽名變量d滿足條件,則確定所述數字簽名通過驗證,否則確定所述數字簽 名沒有通過驗證。
[0045] 根據本發明的一個實施例,在所述方法中,還驗證所述數字簽名中的簽名變量d 是否屬于預設數字集合,只有當公鑰證書有效且簽名變量z和簽名變量d均屬于預設數字 集合時,才進一步驗證數字簽名中的簽名變量d是否滿足預設條件。
[0046] 根據本發明的一個實施例,在所述方法中,如果接收到的數字簽名中包含簽名變 量d,則:
[0047] 對于待簽名信息m,基于第一預設轉換函數h,得到簽名變量e ;
[0048] 判斷所述簽名變量d是否滿足如下表達式:
[0049]
[0050] 其中,f表示第二預設轉換函數,g表示有限群G'的循環子群G的生成元,U表示 簽名公鑰公鑰中的公鑰參數;
[0051] 如果滿足,則判定所述簽名變量d滿足預設條件,否則所述簽名變量d不滿足預設 條件。
[0052] 根據本發明的一個實施例,如果接收到的數字簽名中不包含簽名變量d而包含簽 名變量a,則:
[0053] 根據所述數字簽名中的簽名變量a和輔助信息auxd,計算得到簽名變量d ;
[0054] 判斷^ = ?或/(,Γ= J是否成立,如果成立,則判定所述簽名變量d滿足 預設條件,否則判斷所述簽名變量d不滿足預設條件。
[0055] 與現有的KC-DSA簽名方法相比,本發明所提供的數字簽名生成方法以及數字簽 名驗證方法具有嚴格的安全可證性,其生成數字簽名是具有更優的計算效率,且應用更靈 活。同時,該方法還克服了 KC-DSA的簽名公鑰與現存大多數基于離散對數的數字簽名不兼 容的缺陷。
[0056] 本實施例所提供的簽名生成方法以及驗簽方法可以在各種需要數字簽名的場景 中應用,其中,該方法特別適用于基于智能卡的數字簽名以及相關電子商務、政務中。
[0057] 本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在說明書、權利 要求書以及附圖中所特別指出的結構來實現和獲得。
【附圖說明】
[0058] 為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要的附圖做簡單的介紹:
[0059] 圖1是根據本發明一個實施例的數字簽名生成方法的流程圖;
[0060] 圖2是根據本發明一個實施例的數字簽名驗證方法的流程圖。
【具體實施方式】
[0061] 以下將結合附圖及實施例來詳細說明本發明的實施方式,借此對本發明如何應用 技術手段來解決技術問題,并達成技術效果的實現過程能充分理解并據以實施。需要說明 的是,只要不構成沖突,本發明中的各個實施例以及各實施例中的各個特征可以相互結合, 所形成的技術方案均在本發明的保護范圍之內。
[0062] 同時,在以下說明中,出于解釋的目的而闡述了許多具體細節,以提供對本發明實 施例的徹底理解。然而,對本領域的技術人員來說顯而易見的是,本發明可以不用這里的具 體細節或者所描述的特定方式來實施。
[0063]另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系 統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處 的順序執行所示出或描述的步驟。
[0064] 在密碼技術中,G表示一個有限群G'的一個循環子群,其中有限群G'和循環子群 G的階分別為N和q,g是循環子群G