我们在上一节提出了对称加密机制的几个缺陷,到目前为止,我们已经解决了其中的两个问题:利用非对称加密机制,我们不再需要一条秘密渠道传递密钥,而只需要把公共密钥发布出去就可以了;我们也不再需要保存数目庞大的密钥。但还有一个问题,就是如何辨别谁是信息的发送者以及信息的完整性?为了解决这一问题,人们研制出了数字签名技术。
1.数字签名技术的原理
数字签名的基础是加密技术,但与上面介绍的加密方法不同的是,它不是使用密钥而是使用一种函数进行加密,这个函数被称为哈西函数(Hashing Function), 也有人称其为散列函数或HF函数,该函数对于发送数据的双方都是公开的。数字签名的过程即是把需要签名的文件输入哈西函数,通过函数的作用输出一组定长的代码作为数字签名。数字签名代表着文件的特征,它的值将随着文件的变化而变化,不同文件的数字签名一定是不同的(即使只改变文件一个字符也会得到不同的数字签名),因而我们可以利用数字签名来鉴别文件在传输的过程中是否遭到破坏或篡改,也可以把数字签名和加密技术相结合,判断谁是文件的发送者。
2.利用数字签名发送信息的流程
利用数字签名发送信息具体的流程如图3-6所示:
从以上流程中我们可以观察到数字签名的作用是:(1)鉴别传送的信息是否遭到过更改因为不同的文件产生的数字签名是不同的,所以可以通过重新计算数字签名来判断数据传送的完整性;
(2)利用数字签名和加密技术可以识别信息发送者的身份上面流程的第4步利用发送者的公开密钥对数字签名进行解密,若能获得数字签名的明文,则说明收到的信息由该公开密钥的所有者发出。