RSA签名的具体过程 RSA签名的过程:设计密钥,设计签名,验证签名 (1)设计密钥:先选取两个互素的大素数P和Q,令N=P×Q, z=(P-1)×(Q-1),接着寻求加密密钥e,使e满足(e,φ(N))=1, 另外,再寻找解密密钥d,使其满足gcd(d,z)=1,e×d=1(modz) 。这里的(N,e)就是公开的加密密钥。(N,d)就是私钥。 (2)设计签名:对消息M进行签名,其签名过程是: S=Sig(M)=Md(mod N) (3)验证签名:对S按下式进行验证: M′=Se(modN),如果MM,则签名为真
RSA签名的具体过程 RSA签名的过程:设计密钥,设计签名,验证签名 (1)设计密钥:先选取两个互素的大素数P和Q,令N=P×Q, z=(P-1) ×(Q-1),接着寻求加密密钥e,使e满足(e, (N))=1, 另外,再寻找解密密钥d,使其满足gcd (d, z)=1,e×d=1(mod z) 。这里的(N,e)就是公开的加密密钥。(N,d)就是私钥。 (2)设计签名:对消息M进行签名,其签名过程是: S=Sig(M)=Md (mod N) (3)验证签名:对S按下式进行验证: M’=Se (mod N),如果M=M’ ,则签名为真
RSA签名举例 (1)若Bob选择了p=11和q=13 (2)那么,n=11×13=143,φ(n)=10×12=120 (3)再选取一个与z120互质的数,例如e=7 (4)找到一个值d=103满足e×d=1modz(7×103=721除 以120余1) (5)(143,7)为公钥,(143,103)为私钥。 (6)Bob在一个目录中公开公钥:n=143和e=7 (7)现假设Bob想发送消息85给 Alice,他用自己的密钥 (d=103)进行签名:8510(mod143)=6,于是发送消息85 和签名6给 Alice (8)当 Alice接收到消息85和签名6时,用Bob公开的公钥 (e=7)进行验证:67(mod143)=85,跟Bob发送的消息 致,于是确定该消息是由Bob所发送,且没有被修改
RSA签名举例 (1)若Bob选择了p=11和q=13 (2)那么,n=11 × 13=143, (n)=10×12=120 (3)再选取一个与z=120互质的数,例如e=7 (4)找到一个值d=103满足e×d=1 mod z (7×103=721除 以120余1) (5)(143,7)为公钥,(143,103)为私钥。 (6)Bob在一个目录中公开公钥:n=143和e=7 (7)现假设Bob想发送消息85给Alice,他用自己的密钥 (d=103)进行签名:85103(mod 143)=6,于是发送消息85 和签名6给Alice (8)当Alice接收到消息85和签名6时,用Bob公开的公钥 (e=7)进行验证:6 7(mod 143)=85,跟Bob发送的消息 一致,于是确定该消息是由Bob所发送,且没有被修改
RSA签名和RSA加密的异同点 >相同点 都使用一对密钥:公钥和私钥 不同点 RSA加密:用公钥加密,用私钥解密 RSA签名:用私钥签名,用公钥验证
➢ 相同点 RSA签名和RSA加密的异同点 都使用一对密钥:公钥和私钥 ➢ 不同点 RSA加密:用公钥加密,用私钥解密 RSA签名:用私钥签名,用公钥验证
(2) EIGamal签名 EIGamal算法由 T.EIGama在1985年提出,其修正形式 已被美国NST作为数字签名标准(DSS)。 EIGama算法既可用于信息加密,也可用于数字签名。 EIGama算法的理论基础 >求解离散对数的困难性: 求解离散对数是模指数运算的逆过程,例如求x,使 得x满足3(mod17)=15 对于素数域上寻求离散对数的复杂性等同于对大整数 n进行因子分解的复杂性
(2)ElGamal签名 ElGamal算法由T.ElGamal在1985年提出,其修正形式 已被美国NIST作为数字签名标准(DSS)。 ElGamal算法既可用于信息加密,也可用于数字签名。 ElGamal算法的理论基础: ➢求解离散对数的困难性: 求解离散对数是模指数运算的逆过程,例如求x,使 得x满足 3 x (mod 17)=15 对于素数域上寻求离散对数的复杂性等同于对大整数 n进行因子分解的复杂性
EIGamal签名的过程 EIGamal签名的过程:设计密钥,设计签名,验证签名 1)设计密钥:首先选择一个素数p,两个随机数:g和x,g,x p,计算y=gx(modp),则其公钥为y,g和p。私钥是x (2)设计签名:对消息M进行签名,其签名过程是: 先选择一个随机数k,k与p-1互质,计算r=gk(modp S=(H(M)-xr)k1(modp-1),则签名S=Sig(M4k)=(M4,r,s) (3)验证签名:对S按下式进行验证: s=gHo(modp),如果相等,则签名为真 对同一消息M,由于随机数k不同而有不同的签名值 (M
ElGamal签名的过程 ElGamal签名的过程:设计密钥,设计签名,验证签名 (1)设计密钥:首先选择一个素数p,两个随机数:g和x,g, x < p, 计算 y = g^x ( mod p ),则其公钥为 y, g 和p。私钥是x。 (2)设计签名:对消息M进行签名,其签名过程是: 先选择一个随机数k, k与p-1互质,计算r=g^k ( mod p ) S=(H(M)-xr) k -1(mod p-1),则签名S=Sig(M,k)=(M,r,s) (3)验证签名:对S按下式进行验证: y k r s= g H(M) (mod p),如果相等,则签名为真 对同一消息M,由于随机数k不同而有不同的签名值 (M,r,s)