Elgamal數字簽名原理

死亡K筆記發表於2017-12-01

Elgamal數字簽名

         Elgamal數字簽名主要也是利用離散對數的特性來實現簽名,具體方式如下:

1. 選擇一個大素數P、一個本原元G、一個隨機整數d,d屬於[2,p-2];

2. 生成β,β=G^d mod P;

3. 此時P、G、β就是公鑰,記作Kpub;

4. Elgamal數字簽名記作sig(x,k)=(r,s);  x是明文的摘要,k是臨時私鑰的隨機值,記作Kpr,r,s是構成簽名的兩個整數;

5. 簽名生成: r=G^k mod P; s=(x-dr)k^-1 mod (p-1);

6. 生成簽名後,簽名隨明文一起傳送給接收方;

7. 接收者收到訊息後計算 t=β^r · r^s mod P

8. 驗證:當t≡G^x modP 則該簽名有效,資料未被篡改,反之則簽名無效;

 

舉例:B發訊息給A,對訊息使用Elgamal數字簽名

    1. B選擇素數P=29、本原元G=2、隨機整數d=12,臨時私鑰k=5, 明文的摘要x=26;

         2.公鑰β=G^d mod P → β=4096 mod 29 → β=7

         3.B將公鑰(P=29,G=2,β=7)發給A

         4.計算簽名,

     r=G^k mod P → r=2^5 mod 29 → r=3

           s=(x-dr)k^-1 mod (p-1) → s=(26-36)·17 mod 28 → s=26

    5.計算簽名後將r=3、s=26、x=26傳送給A

    6.A收到訊息後,驗證簽名:

      t=β^r · r^smod P → t=343 X 2541865828329 mod 29 → t=22

      t≡G^x mod P  t mod P =22, G^x mod P =67108864mod 29 =22

    7.驗證成功。

相關文章