DSS簽名算法

1、簡介

數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。
數字簽名目前採用較多的是非對稱加密技術,其實現原理簡單的說,就是由發送方利用哈希算法對要傳送的信息計算得到一個固定位數的消息摘要值,用發送者的私有密鑰加密此消息的哈希值所產生的密文即數字簽名。然後數字簽名和消息一同發給接收方。接收方收到消息和數字簽名後,用同樣的哈希算法對消息進行計算得出新的哈希值,然後用發送者的公開密鑰對數字簽名解密,將解密後的結果與新的哈希值相比較,如相等則說明報文確實來自發送方。

2、DSS簽名算法與RSA簽名算法的區別

(1)安全性

DSS的安全性是建立在求離散對數問題上,至今雖未證明破解DS與求解q階乘法羣的離散對數等價,但也未找到其他可繞開求離散對數的解法。整數分解與求離散對數的計算複雜度是近似的,因而兩種簽名算法的安全性大體相當。

(2)參數選擇

DSS算法參數的選擇比RSA算法要容易。RSA算法出於安全性考慮,對參數p、q的選擇有一些較嚴格的要求,如 (k爲較小自然數)應足夠大、gcd(p-1,q-1)應比較小、p 1和q 1都應至少含有一個充分大的素數因子等;DSS算法安全性的關鍵參數是q,可比前兩種算法中的n值略小,但應遠大於單獨的p和q。

(3)參數共享性

RSA 算法無法共享參數;DSS算法可以共享參數,因爲它可以對k有不同選擇,所以p、q、g,參數共享時至今尚未發現用戶之間可以互相傷害的途徑。

(4)簽名速度

DSS算法簽名速度較慢。RSA算法簽名時耗費時間的主要部分都是mod p、mod q的指數運算,DSS 算法簽名時mod p(p>q)的指數運算所耗費的時間要比RSA算法長。

(5)驗證速度

DSS算法驗證速度較慢。RSA算法驗證時需進行一次mod n的e次指數運算,DSS算法驗證時需要進行2次mod p的指數運算,因此DSS算法驗證速度較慢。

(6)印記長度

DSS算法簽名印記較長。RSA算法簽名印記是一個mod n 數,DSS算法的簽名印記是兩個mod q數r 、s,比RSA算法的印記要長。

(7)印記的重複性

DSS算法簽名印記具有不重複特性。文件m和h(m)完全相同,用DSS算法簽名時因每次可以選擇不同的k產生簽名印記,故DSS算法的簽名印記每次可以不同;RSA算法無此特性,但可以對算法作適當改進,以增加1個隨機數加長傳送的數據爲代價,使算法具有簽名印記不重複的特性。

3、DSS算法的實現

(1)DSS算法的主要參數:

1)全局公開密鑰分量
素數p, 2 ^ 511 < p < 2 ^ 512;
q是(p-1)的一個素因子, 2^159 < q < 2^160;
g=h ^ [(p-1)/q] mod p, 其中h是一整數,1<h<(p-1)
2)私鑰
 私鑰x是隨機或僞隨機整數, 其中0<x<q;
3)公鑰
  y=g ^ x mod p,(p,q,g,y)爲公鑰;
4)用戶的隨機選擇數
  k爲隨機或僞隨機整數, 其中0<k<q

(2)DSS的簽名過程:

r=(g ^ k mod p) mod q
s=[k ^ (-1) (H(M)+xr)] mod q
 形成了對信息M的數字簽名(r,s),數字簽名和信息M一同發送給接收方。接收方接收到信息M’和數字簽名(r’,s’)後,對數字簽名的驗證過程如下:
 w=(s’) ^ (-1) mod q
u1=[H(M’)w] mod q, u2=( r’) w mod q
 v=[(g ^ u1 y ^ u2) mod p] mod q
如果 v= r’,則說明信息確實來自發送方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章