1 )签名:手写签名是被签文件的物理组成部分,而数字签名不是被签消息的物理部分,因而需要将签名连接到被签消息上。
2 )验证:手写签名是通过将它与其它真实的签名进行比较来验证而数字签名是利用已经公开的验证算法来验证。
数字签名与传统的手写签名有如下不同:
数字消息的复制品与其本身是一样的,而手写签名纸质文件的复制品与原品是不同的。
数字签名原理
公开密钥体制可以用来设计数字签名方案。设用户Alice发送一个签了名的明文M给用户Bob的数字签名一般过程如下:
1) Alice用信息摘要函数Hash从M抽取信息摘要M’;
2) Alice用自己的私人密钥对M’加密,得到签名文本S,即Alice在M上签了名;
3) Alice用Bob的公开密钥对S加密得到S’;
4) Alice将S’和M发送给Bob;
5) Bob收到S’和M后,用自己的私人密钥对S’解密,还原出S;
6) Bob用Alice的公开密钥对S解密,还原出信息摘要M’;
7) Bob用相同信息摘要函数从M抽取信息摘要M” ;
8) Bob比较M’与M”,当M’与M”相同时,可以断定Alice在M上签名。
由于Bob使用Alice的公开密钥才能解密M’,可以肯定Alice使用了自己的私人密钥对M进行了加密,所以Bob确信收到的M是Alice发送的,并且M是发送给Bob的。
私钥也可以认为是个人身份的证明
分类:直接数字签名和需仲裁的数字签名
a) 直接数字签名
直接数字签名仅涉及通信方,它假定收方知道发方的公开密钥数字签名,通过使用发方的私有密钥对整个消息进行加密或使用发方的私有密钥对消息的散列码进行加密来产生。
至今所有的直接数字签名体制都有一个共同的弱点,方案的有效性依赖于发方私有密钥的安全性。如果发方随后想否认发送过某个签名消息,发方可以声称签名的私钥丢失或被盗用并伪造了他的签名。
b) 需仲裁的数字签名
发方A对发给收方B 的消息签名后将附有签名的消息发给仲裁者C;
C对其验证后连同一个通过验证的证明发送给收方B。
DSS数字签名机制
签名过程:
1)对待签消息M,输入( g,p,q,x,M),先生成随机数k,0<k<q;
2)计算r: r=(gk mod p) mod q ;
3)再计算s: s=(k-1(H(M)+xr)) mod q,到此,消息M的签名结果就是(r,s)。
4)发送消息和签名结果(M,r,s)。
注: H(M)使用SHA-1生成的M的散列码, r不依赖消息,是k和全局公开参数的函数。故对一个消息存在许多签名离散对数的困难:从r恢复k是很困难的,从s恢复x是不可行的
认证过程:
接收者在收到(M,r,s)之后,利用全局参数和发送者公钥y,进行如下步骤:
1)计算w: w=s-1 mod q;
2)计算u1: u1=(H(M) w) mod q;
3)计算u2: u2=(rw) mod q;
4)计算v: v=((gu1yu2)mod p) mod q;
5)比较r、 v,如果r=v,表示签名有效,否则签名非法
特点:
( 1) DSS的签名比验证快得多
( 2) DSS不能用于加密或者密钥分配
( 3) s-1 mod q要存在s ≠ 0 mod q,如果发生,接收者可拒绝该签名。要求重新构造该签名,实际上, s ≡ 0 mod q的概率非常小