返回介绍

10.5 数字签名可以证明数据的发送者是谁

发布于 2023-05-19 17:35:11 字数 1662 浏览 0 评论 0 收藏 0

本章最后,先介绍一种公开密钥加密技术的实际应用 – 数字签名。在日本商界有盖章的习惯,在欧美则是签名。印章和签名都可以证明一个事实:那就是某个人承认 了文件的内容是完整有效的。而在通过网络传输的文件中,数字签名可发挥出与印章和签名同样的证明效果。通常可以按下面的步骤生成数字签名。步骤中所提及的“消息摘要”(Message Digest)可以理解为一个数值,通过对构成明文的所有字符的编码进行某种运算得到的数值。

[文本数据的发送者]

(1)选取一段明文

例:NIKKEI

(2)计算出明文内容的消息摘要

例:(78+73+75+75+69+73)/100,结果的余数=43

(3)用私钥对计算出的消息摘要进行加密

例:43→66(字母B的编码)

(4)把步骤(3)得出的值附加到明文后面再发送给接收者

例:NIKKEIB

[文本数据的接收者]

(1)用发送者的公钥对消息摘要进行解密

例:B=66→43

(2)计算出明文部分的信息摘要

例:(78+73+75+75+69+73)/100,结果的余数=43

(3)比较在步骤(1)和(2)中求得的值,二者相同证明接收到的消息有效

例:因为43=43,所以消息有效

请注意,这里是使用私钥进行加密,使用公钥进行解密,这与之前的用法刚好相反(如图10.10所示)

图10.10 创建数字签名的步骤

而且这里所使用的消息发送者(图10.10中的A小姐)的密钥对,而之前所使用的则是消息接收者(B先生)的密钥对

本例中消息摘要的算法是把明文中所有字母的编码加起来,然后取总和的最后两位。而在实际中计算数字签名时,使用的是通过更加复杂的公式计算得出的,被称为MD5(Message Digest5)的消息摘要。由于MD5经过精心设计,所以使得两段明文即便只有略微的差异,计算后也能得出不同的消息摘要。

也许会认为把文件发送者的名字,比如“矢泽久雄”这个字符串用私钥加密,然后让对方用公钥解密也能代替印章或签名,但如果这样做就不算是数字签名了,因为印章或签名有两层约束:(1)是发送者承认文件的内容是完整有效的;(2)文件确实是由发送者本人发送的。发送者用构成文件的所有字符的编码生成了消息摘要,就证明发送者从头到尾检查了文件并承认其内容完整有效。如果接收者重新算出的消息摘要和经过发送者加密的消息摘要匹配,就证明文件在传输过程中没有被篡改,并且的确是发送者本人发送的。正因为数据是用发送者的私钥加密的,接收者才能用发送者的公钥进行解密。

其实,绝对无法破解的加密技术也是存在的。首先密钥的位数要与文件数据的字符个数相同,其次每次发送文件时都需要先更换密钥,最后为了防止密钥被盗,发送者要亲手把密钥交给接收者。为什么说这样就绝对无法破解了呢?原因在于这样做等同于发送完全随机并且没有任何意义的数据。可是这种加密技术是不切实际的,合理的密钥应该满足下列条件:长短适中,可以反复使用,可以通过某种通信手段交给接收者,并且通信双方以外的其他人难以用它来解密。公开密钥加密技术就完全满足以上条件。

在第11章,介绍作为通用数据格式的XML

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文