公钥密码与数字签名

数字签名的基本流程:将文件经过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)

相关文章
相关标签/搜索