公鑰密碼與數字簽名

數字簽名的基本流程:將文件經過Hash函數,生成摘要,對摘要簽名,獲得被簽名的摘要+文件。算法

 

RSA簽名方案:函數

初始化過程:配製一對RSA鑰匙,公鑰(n,e),私鑰(n,d)設計

簽名過程:S=Sigk(m)=(h(M))d (mod n)隨機數

(M是文件,h是單向散列函數,S是文件M的簽名)文件

 

傳輸過程:M||S(文件M和簽名一同傳送)數字

驗證過程:當SeΞh(M) (mod n)則驗證成功,不然驗證失敗。生成

 

EIG簽名方案:數字簽名

初始化過程:選擇大素數p和g<p(g是p的素根),選一整數x<p,(g,p,x)是私鑰,

      計算y=gx(mod p),(g,p,y)做爲公鑰

簽名過程:選擇隨機數k,知足0<k<p-1,(k,p-1)=1

     計算h(M),r=gk(mod p)

           s=(h(M)-xr)k-1mod(p-1)

傳輸過程:將(r||s)做爲簽名,將M||r||s 傳送

驗證過程:先計算h(M),yrrsΞgh(M)(mod p)則驗證成功


若是一個文件須要兩我的簽名才能生效,怎麼設計算法?

把RSA改爲兩方參與的算法:

1.獨立選擇大素數p和q,計算n=pXq,計算φ(n)=(p-1)(q-1)

2.選整數Ka,Kb,(1<=Ka,Kb<φ(n),φ(n)分別與Ka,Kb互素,在模φ(n)下,KaKb有惟一逆元e,eKaKb=1 mod (φ(n))

3.取公鑰(n,e),私鑰A(n,Ka),私鑰B(n,Kb),銷燬p,q

簽名C=MKaKb (mod n)   驗證M=Ce (mod n)

相關文章
相關標籤/搜索