强化电子签字通常采用公开密钥加密体制的数字签名方法。这种方法实际上是通过一个哈希函数(hashing function)来实现的。哈希函数的输入是需要签名的文件,输出是一组定长的代码,叫做数字签名。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。哈希函数对发送数据的双方都是公开的。
数字签名的过程如下:
发送方首先用哈希函数从原文得到数字签名,然后采用公开密钥体系用发送方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面。
发送方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方。
发送方用接收方的公开密钥对秘密密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方。
接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文。
接收方用秘密密钥对文件进行解密,得到经过加密的数字签名。
接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文。
接收方用得到的明文和哈希函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。这就提供了一个安全的确认发送方身份的方法。
数字签名的加密解密过程和秘密密钥的加密解密过程虽然都使用公开密钥体系,但实
现的过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用
自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性。而秘密密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。这是一个复杂但又很有趣的过程。在实用过程中,通常一个用户拥有两个密钥对,其中,一个密钥对用来对数字签名进行加密解密,一个密钥对用来对秘密密钥进行加密解密。这种方式提供了更高的安全性。
阅读(5834) | 评论(0) | 转发(1) |