巴赫马太受难曲54:公共密钥加密系统的原理

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 04:30:07
公共密钥加密系统的原理

公共密钥加密系统是建立在密钥对的概念之上的。密钥对中的每一半(一个密钥)都可以对信息进行加密,这时只有密钥对中的另一半(另一个密钥)才能够解密。密钥对中的一部分,私有密钥只有指定的密钥所有者才知道;而密钥对的另一部分,公开密钥则可以公开。密钥对有一个独特的特性--用一个密钥进行加密的数据只能够被密钥对中的另一个密钥进行解密(如下图所示)。换句话说,在对信息进行加密时,你用公开密钥还是私有密钥是没有区别的,接收者可以用另一个密钥来进行解密。在下文中你将看到这种方式的好处。

公共密钥加密系统使用一对密钥:一个公开密钥和一个私有密钥,用一个密钥进行加密的信息可以用另一个密钥进行解密

可以用两种不同的方式使用密钥:保证信息的机密性以及确认发信人身份的真实性。在第一种情况下,发送者使用接收者的公开密钥来加密信息,这时只有接收方使用自己的私有密钥才能够解密信息。在第二种情况下,发送者使用私有密钥对信息进行加密。这个密钥只有发送者才有。

接收方的公开密钥保证了机密性,而发送方的私有密钥证明了发送方的身份

例如,为了产生一个机密的信息,Tim首先要得到Ann的公开密钥。然后他使用她的公开密钥对信息进行加密并发送给她。因为信息是用Ann的公开密钥进行加密的,只有拥有Ann的私有密钥的人(假设只有Ann才有这个密钥)才能够对信息进行解密。见图4-3
虽然使用一个公开密钥对信息进行加密和使用秘密密钥进行加密没有什么不同,公共密钥系统提供了一些优点。例如,密钥对中的公开密钥可以公开地分发(比如放在服务器上)而不用担心它会危及你私有密钥的安全。你不需要把你的公开密钥发送给你所有的接收方,他们可以从你公司的密钥服务器上或者一个服务供应商处得到你的公开密钥。

在网络上放置一个公开密钥使它易于得到,并且不会危及相应的私有密钥

公共密钥加密系统的另一个优势是你可以验证一个信息的发送者的身份。基本原理是:因为只有你才能够使用你的私有密钥对信息进行加密,任何能够使用你的公开密钥对信息解密的人都可以确定信息是从你这里发送出来的。这样,你在你的电子文档中使用你的私有密钥就相当于你在份书面文档上签名。但是别忘了,虽然接收者可以确定信息是从你这里发送出来的,但是不能保证别的人不能读出这份信息。

使用一个私有密钥进行加密就像在文档上签名

使用公共密钥加密算法对信息进行加密是非常耗时的,因此加密人员想出了一种办法来快速地生成一个代表你的消息的简短的、独特的消息摘要,这个摘要可以被加密并作为你的数字签名。

通常,产生消息摘要的快速加密算法被称为单向杂凑函数。一种单向杂凑函数不使用密钥,它只是一个简单的公式,把任何长度的一个消息转化为一个叫做消息摘要的简单的字符串。当使用一个16位的杂凑函数时,杂凑函数处理的文本将产生一个16位的输出--例如,一个消息可能产生一个像 CBBV235ndsAG3D67 的字符串。每一个消息产生一个随机的消息摘要,用你的私有密钥对摘要进行加密就生成了一个数字签名。

一个单向的杂凑函数把任何消息转化为一个单一的字符串叫做一个消息摘要

使用私有密钥对一个摘要进行加密产生一个数字签名

作为一个例子,假设发送者Tim对他的消息计算一个消息摘要,然后用他的私有密钥对消息摘要进行加密,并把数字签名和原文一起发送给Ann

当Ann使用Tim的公开密钥解密数字签名,她就得到了Tim计算的消息摘要的一个备份。因为她能够用Tim的公开密钥对数字签名进行解密,她知道是Tim产生的,这样就验证了发送者的身份。Ann然后使用相同的杂凑函数(在先前就协商好的)来计算Tim发送来的明文的消息摘要。如果她计算出来的摘要和Tim发送给她的摘要是相同的,这样她就可以确认数字签名是正确的,这不仅意味着是Tim发送的消息,而且消息在发送的过程中没有发生改变。

一个相同的消息摘要意味着消息没有被改变

这种方法的一个问题是消息本身是作为明文的形式发送的,因此没有达到保密的要求。虽然更加复杂,但你可以采用一种使用秘密密钥的对称加密算法来加密消息的明文部分。