到目前为止, 我们了解了如何使用BGP对消息进行加密, 以便只有接收方可以读取消息的内容｡
为此, 在我们的示例中, 发送方大卫使用接收方的公钥｡
因此, 接收方将其公钥公开, 正如其名称所示｡
这很好, 因为公钥不能用于解密消息｡
它只能用于加密消息｡
因此, 大卫使用接收者的Johns公钥对消息进行加密｡
发送消息, 当John收到消息时, 他使用自己的私钥（从不与任何人共享）解密消息｡
因此, 大卫可以用他想要的任何方式将消息发送给John｡
他可以通过文本消息､ 即时消息或甚至使用不安全的服务发送｡
这很好, 因为如果有人读到这条消息, 他们会看到胡言乱语｡
除非他们有私钥, 否则他们将无法看到内容｡
只要John不共享私钥, 他就没有必要共享它｡
那么除了约翰, 没有人能读到这条信息｡
所以这真的非常非常好｡
这里唯一的问题是, John无法验证他们收到的消息实际上是从大卫发送的｡
所以, 就像我说的, 为了让这个工作, 约翰需要把他们的公钥公开｡
因此, 获得John的公钥很容易｡
因此, 约翰可以在他的签名和他的电子邮件｡
他可以在论坛上签名｡
他可能会公开分享, 因为他希望人们给他发送加密信息｡
所以公开你的公钥并没有什么错｡
唯一的问题是有人可以进来, 假装是大卫, 使用约翰的公钥加密一条消息, 并将其发送给约翰｡
这样的话, 约翰就无法知道这条信息是否真的来自大卫｡
要解决这个问题, 大卫必须在消息上签名｡
这实际上可以通过Pjp来实现｡
让我来演示一下这个例子是如何工作的｡
我们又有了大卫｡
他想给约翰发一个秘密信息｡
正如我们之前学到的, 大卫要做的第一件事, 他将使用约翰的公钥来加密消息｡
消息将变成乱码｡
在上节课的这个阶段, 我们发送了消息,
但这次大卫要用他自己的私钥签名｡
所以他还没把私钥发过来｡
消息还在大卫头｡
他要做的是为这封邮件创建一个签名｡
此签名对应于此消息｡
如果消息中有任何内容被修改, 如果一个字母被修改, 签名就会改变｡
因此, 此签名可用于验证消息在由大卫的私钥签名后未被修改｡
现在, 请记住, 大卫仍然保留着他自己的私钥｡
他没有通过任何通讯方式发送｡
现在我们有了一条消息, 它包含加密的内容和对应于大卫私钥的签名｡
然后使用任何通信方法发送消息｡
就像我们说的, 你甚至可以使用一种不安全的通信方法｡
John将接收消息及其签名,
沿着使用自己的私钥解密此消息之前, 他要做的是使用大卫的公钥来验证签名｡
所以就像我说的, 签名是用大卫的私钥创建的｡
John没有大卫的私钥, 但他将使用David的公钥来验证签名｡
如果消息未被修改, 则验证将成功｡
这样, John就会知道这条消息实际上是大卫发送的, 没有被任何人修改过｡
因为, 就像我说的, 如果一个字母被修改了, 公钥, 大卫的公钥将不能验证签名｡
因此, 当签名得到验证时,
我们知道大卫是消息的实际发送者, 并且消息在发送时没有被修改, 无论它是通过Internet作为文本消息发送还是使用任何其他通信方法发送｡
接下来的步骤与上一讲中发生的非常相似｡
John将使用他自己的私钥来解密该消息并读取其内容, 这只是一个秘密消息｡
正如你所看到的, 这样做的结果是, 每一方仍然保留着他们自己的私钥｡
没有人将自己的私钥发送给对方｡
因此, 发送方使用接收方的公钥对消息进行加密, 并使用自己的私钥对消息进行签名｡
消息已发送｡
接收方用发送方的公钥验证签名, 并用自己的私钥解密｡
这样他就可以验证该消息是否来自发件人｡
他可以验证邮件在发送时没有被修改｡
而且消息是加密的｡
而唯一能读到它的人是接收者, 因为他把自己的私钥保密, 不与任何人共享｡
在下一节课中, 我将向你们展示如何加密信息, 并以发件人身份进行签名,
这一切将会变得更加清楚｡
我还将向你们展示如何验证签名, 以及作为接收者如何解密消息｡