數字簽名

數字簽名的機制很是簡單,下面兩圖分別描述了數字簽名的通常模型和簽名過程的簡單描述git

 

ElGamal數字簽名方案算法

  和ElGamal加密方案同樣,ElGamal數字簽名方案的基本元素是素數q和α,其中α是q的本原根。加密

  用戶A首先生成公鑰/私鑰對:spa

    一、生成隨機整數XA,使得1 < XA < q - 13d

    二、計算YA = αXA mod qblog

    三、A的私鑰是XA;A的公鑰是{q , α , YA}it

  用戶A對消息M進行簽名:密碼

    一、用Hash算法計算消息M的Hash值 m = H(M)  ,1 ≤ m ≤ q-1im

    二、隨機選擇整數K,K知足1 ≤ K ≤ q-1,因爲q是素數所以K與q必然互素img

    三、計算 S1 = αK mod q 和 S2 = K-1(m - XAS1) mod (q - 1)         ,K-1是 K 模q - 1的逆

    四、簽名包括(S1 , S2)對

  

  任何一個用戶B均可以經過如下步驟驗證簽名:

    一、計算V1 = αm mod q

    二、計算V2 = (YA)s1 (S1)S2 mod q

    三、若是V1 = V2,則簽名合法

 

  證實:

    αm mod q =  (YA)s1 (S1)S2 mod q

    αm mod q = αXAS1 αKS2 mod q

    αm-XAS1 mod q = αKS2 mod q

      m - XAS1 ≡ KK-1(m - XAS1) mod (q - 1)  //本原根的性質

 

Schnorr數字簽名方案

  Schnorr方案的改進在於將生成簽名所需的消息計算量最小化,它將生成簽名的主要工做不依賴於消息,以便在處理器空閒時執行。

  

  用戶A首先生成公鑰/私鑰對:

    一、選擇素數p和q,使得q是p-1的素因子

    二、選擇整數α,使得αq = 1 mod p。p , q , α 是公開參數。

    三、選擇隨機整數s,0 < s < q,計算 v =  α-s mod p

    四、A的私鑰是s;A的公鑰是v 

  用戶A對消息M進行簽名:  

    一、隨機選擇整數r,1 ≤ r ≤ q-1,並計算 x = αr mod p。該過程與待簽名消息M無關,能夠預處理。

    二、將x附在消息後面一塊兒計算Hash值e:e = H(M || x)

    三、計算 y = (r + se) mod q。

    四、簽名包括(e , y)對

  

  任何一個用戶B均可以經過如下步驟驗證簽名:

    一、計算x'= αyve mod p

    二、計算e = H(M || x')

  

  證實:

    x' ≡ αyve ≡ αyα-se ≡ αy-se ≡ αr ≡ x  (mod p)

 

DSS算法      Digital Signature Services

  DSS與RSA不一樣,它是一種只提供數字簽名功能的公鑰密碼算法,不能用於加密或密鑰交換。

  

  

相關文章
相關標籤/搜索