WEBVTT

00:00.750 --> 00:09.570
到目前为止, 我们了解了如何使用BGP对消息进行加密, 以便只有接收方可以读取消息的内容｡

00:09.960 --> 00:15.480
为此, 在我们的示例中, 发送方大卫使用接收方的公钥｡ 

00:15.480 --> 00:19.020
因此, 接收方将其公钥公开, 正如其名称所示｡ 

00:19.050 --> 00:23.810
这很好, 因为公钥不能用于解密消息｡ 

00:23.820 --> 00:26.630
它只能用于加密消息｡ 

00:26.640 --> 00:31.710
因此, 大卫使用接收者的Johns公钥对消息进行加密｡ 

00:31.740 --> 00:40.860
发送消息, 当John收到消息时, 他使用自己的私钥（从不与任何人共享）解密消息｡

00:41.250 --> 00:46.250
因此, 大卫可以用他想要的任何方式将消息发送给John｡ 

00:46.260 --> 00:53.100
他可以通过文本消息､ 即时消息或甚至使用不安全的服务发送｡ 

00:53.340 --> 00:57.800
这很好, 因为如果有人读到这条消息, 他们会看到胡言乱语｡ 

00:57.810 --> 01:01.620
除非他们有私钥, 否则他们将无法看到内容｡ 

01:01.620 --> 01:06.180
只要John不共享私钥, 他就没有必要共享它｡ 

01:06.180 --> 01:10.110
那么除了约翰, 没有人能读到这条信息｡ 

01:10.860 --> 01:12.720
所以这真的非常非常好｡ 

01:12.810 --> 01:23.100
这里唯一的问题是, John无法验证他们收到的消息实际上是从大卫发送的｡

01:23.880 --> 01:29.010
所以, 就像我说的, 为了让这个工作, 约翰需要把他们的公钥公开｡ 

01:29.010 --> 01:32.540
因此, 获得John的公钥很容易｡ 

01:32.550 --> 01:36.270
因此, 约翰可以在他的签名和他的电子邮件｡ 

01:36.270 --> 01:38.760
他可以在论坛上签名｡ 

01:38.760 --> 01:43.530
他可能会公开分享, 因为他希望人们给他发送加密信息｡ 

01:43.530 --> 01:47.370
所以公开你的公钥并没有什么错｡ 

01:47.820 --> 01:56.430
唯一的问题是有人可以进来, 假装是大卫, 使用约翰的公钥加密一条消息, 并将其发送给约翰｡

01:56.490 --> 02:03.300
这样的话, 约翰就无法知道这条信息是否真的来自大卫｡ 

02:04.320 --> 02:08.580
要解决这个问题, 大卫必须在消息上签名｡ 

02:08.610 --> 02:11.100
这实际上可以通过Pjp来实现｡ 

02:11.130 --> 02:14.640
让我来演示一下这个例子是如何工作的｡ 

02:15.300 --> 02:16.910
我们又有了大卫｡ 

02:16.920 --> 02:20.160
他想给约翰发一个秘密信息｡ 

02:20.370 --> 02:29.180
正如我们之前学到的, 大卫要做的第一件事, 他将使用约翰的公钥来加密消息｡

02:29.190 --> 02:31.650
消息将变成乱码｡ 

02:31.740 --> 02:38.370
在上节课的这个阶段, 我们发送了消息,

02:38.370 --> 02:42.150
但这次大卫要用他自己的私钥签名｡

02:42.300 --> 02:44.340
所以他还没把私钥发过来｡ 

02:44.340 --> 02:46.350
消息还在大卫头｡ 

02:46.350 --> 02:51.140
他要做的是为这封邮件创建一个签名｡ 

02:51.150 --> 02:53.880
此签名对应于此消息｡ 

02:53.880 --> 03:00.570
如果消息中有任何内容被修改, 如果一个字母被修改, 签名就会改变｡

03:00.930 --> 03:10.140
因此, 此签名可用于验证消息在由大卫的私钥签名后未被修改｡

03:10.470 --> 03:13.710
现在, 请记住, 大卫仍然保留着他自己的私钥｡ 

03:13.740 --> 03:17.400
他没有通过任何通讯方式发送｡ 

03:18.030 --> 03:25.260
现在我们有了一条消息, 它包含加密的内容和对应于大卫私钥的签名｡

03:25.830 --> 03:29.340
然后使用任何通信方法发送消息｡ 

03:29.340 --> 03:33.240
就像我们说的, 你甚至可以使用一种不安全的通信方法｡ 

03:33.540 --> 03:41.130
John将接收消息及其签名,

03:41.130 --> 03:50.550
沿着使用自己的私钥解密此消息之前, 他要做的是使用大卫的公钥来验证签名｡

03:51.000 --> 03:54.900
所以就像我说的, 签名是用大卫的私钥创建的｡ 

03:54.900 --> 04:02.100
John没有大卫的私钥, 但他将使用David的公钥来验证签名｡

04:02.730 --> 04:07.650
如果消息未被修改, 则验证将成功｡ 

04:07.650 --> 04:15.390
这样, John就会知道这条消息实际上是大卫发送的, 没有被任何人修改过｡ 

04:15.390 --> 04:23.130
因为, 就像我说的, 如果一个字母被修改了, 公钥, 大卫的公钥将不能验证签名｡

04:24.090 --> 04:29.670
因此, 当签名得到验证时,

04:29.670 --> 04:37.860
我们知道大卫是消息的实际发送者, 并且消息在发送时没有被修改, 无论它是通过Internet作为文本消息发送还是使用任何其他通信方法发送｡

04:37.920 --> 04:41.730
接下来的步骤与上一讲中发生的非常相似｡ 

04:41.730 --> 04:50.640
John将使用他自己的私钥来解密该消息并读取其内容, 这只是一个秘密消息｡

04:51.380 --> 04:57.180
正如你所看到的, 这样做的结果是, 每一方仍然保留着他们自己的私钥｡ 

04:57.200 --> 05:00.560
没有人将自己的私钥发送给对方｡ 

05:00.740 --> 05:08.690
因此, 发送方使用接收方的公钥对消息进行加密, 并使用自己的私钥对消息进行签名｡

05:08.720 --> 05:10.010
消息已发送｡ 

05:10.040 --> 05:17.810
接收方用发送方的公钥验证签名, 并用自己的私钥解密｡

05:18.920 --> 05:23.240
这样他就可以验证该消息是否来自发件人｡ 

05:23.270 --> 05:27.590
他可以验证邮件在发送时没有被修改｡ 

05:27.590 --> 05:29.510
而且消息是加密的｡ 

05:29.510 --> 05:37.700
而唯一能读到它的人是接收者, 因为他把自己的私钥保密, 不与任何人共享｡

05:38.980 --> 05:45.610
在下一节课中, 我将向你们展示如何加密信息, 并以发件人身份进行签名,

05:45.610 --> 05:48.060
这一切将会变得更加清楚｡

05:48.070 --> 05:55.270
我还将向你们展示如何验证签名, 以及作为接收者如何解密消息｡ 
