数字签名类似于物理上的签名,通过一些技术手段保证了数据的不可仿造性与不可否认性
一个数字签名方案至少应满足以下三个条件:
1、签名者时候不能否认自己的签名 即不可否认性
2、接受者能验证签名,其他任何人都不能伪造签名 即不可仿造性
3、当双方关于签名的真伪发生争执时,第三方能够解决双方之间的争执
根据DSS(Digital Signature Standard,数字签名标准),数字签名的步骤一般分为以下几步:
1、发送方用一个Hash函数对消息进行处理,形成一个固定长度的信息摘要(如MD5)
2、发送方将自己的私人密钥sk和信息摘要进行DSA算法计算,产生数字签名
3、将数字签名和消息一起发送出去.
4、接收方用同样的Hash函数对消息进行计算,产生消息摘要
5、接收方用DSA算法对消息摘要和发送方的公开密钥进行计算,产生数字签名1,同时,从接收到的消息中得到数字签名2。
若1=2则数字签名得到验证,否则验证失败
在实际应用中,如在网页中,信息是公开的,但是必须保证信息不被伪造,则可以利用数字签名技术保证信息的完整性及不可伪造性。
但如果信息是像E-mail,电子商务等需要保密的场合,则不仅要保证上述几点,还需要保证保密性。此时需要将数字签名技术与加密技术结合使用
大致步骤如下:
1、发送方A形成信息摘要M,然后用私钥加密成Cm
2、对想要发送的信息P与加密后的摘要M一起用对称密钥加密(对称密钥是随机产生的)
3、用接收方的公开密钥加密对称密钥,形成Ck
4、将2、3步得到的结果发送给接收方B
5、B收到信息后用自己的私钥解密信息,得到对称密钥Ck
6、B用得到的对称密钥Ck解密剩下的信息,得到信息P与Cm
7、B用同样的Hash函数对P进行加密得到M',并用A的公开密钥解密Cm得到M,如果M' = M ,则验证成功