WEBVTT

00:00.550 --> 00:07.810
在这一节和下一节课中, 我将向你们展示如何使用Pjp来加密和解密文本文件,

00:07.840 --> 00:18.250
电子邮件, 我们还将使用它来签名和验证文件, 电子邮件等的完整性｡

00:18.730 --> 00:25.060
通过这种方式, 我们将能够安全地进行通信, 因为发送和接收的所有内容都将被加密,

00:25.060 --> 00:29.890
并且我们将能够验证发送数据的完整性｡

00:29.890 --> 00:36.730
因此, 我们将能够签署我们发送的任何数据, 接收者将能够验证这些数据实际上是从我们这里发送的,

00:36.730 --> 00:40.690
没有被篡改｡

00:41.640 --> 00:48.270
现在, 我们要使用BGP进行加密和验证完整性的原因是, 这是一种非常强大的加密,

00:48.270 --> 00:54.240
经受住了时间的考验, 至今尚未被破解｡

00:54.330 --> 01:01.530
即使根据泄露的报告, 似乎连政府机构也无法打破它｡ 

01:01.530 --> 01:07.360
所以这是一种非常非常强的加密, 尽管PJP代表相当好的加密｡ 

01:07.380 --> 01:13.500
这句话实际上是讽刺, 因为这是一个非常强大和强大的加密｡ 

01:14.070 --> 01:19.110
在这节课中, 我想向你们解释Pjp的一般工作原理.

01:19.110 --> 01:27.420
在接下来的课程中, 我们会看到如何用它来加密各种数据, 以及如何用它来签名和验证完整性｡

01:28.490 --> 01:33.800
现在Pjp是一个公钥或非对称加密｡ 

01:33.800 --> 01:41.720
为了了解它的工作原理, 我们先来看看另一种传统的加密类型, 即对称加密｡

01:42.620 --> 01:47.850
让我们举一个例子, 有两个人, 大卫和约翰｡ 

01:47.870 --> 01:50.630
我们将忘记他们如何交流｡ 

01:50.630 --> 01:55.580
我们假设大卫想给约翰传递一个信息.

01:55.580 --> 01:59.090
而这条信息的内容是秘密信息｡ 

01:59.720 --> 02:05.780
现在,

02:05.810 --> 02:14.300
如果大卫想保护他的消息不被任何人截取或阅读, 他可以使用一个加密密钥来加密这个消息, 这将把这个消息转换成乱码｡

02:15.080 --> 02:24.620
然后, 他可以继续并使用任何方法将此消息发送给John, 方法是将其作为电子邮件或通过邮寄或作为文本消息发送｡

02:24.620 --> 02:26.060
这并不重要

02:26.150 --> 02:31.850
如果这条信息被截获, 信息的内容就会变得乱码｡ 

02:31.850 --> 02:35.390
所以它对拦截它的人没有用｡ 

02:35.780 --> 02:37.610
约翰会收到消息｡ 

02:37.610 --> 02:39.020
他将消息打开｡ 

02:39.020 --> 02:41.090
消息仍将是乱码｡ 

02:41.090 --> 02:51.050
然后John将使用相同的加密密钥来解密此消息, 并显示其内容, 这是一条秘密消息｡

02:51.530 --> 02:53.450
所以非常非常简单｡ 

02:53.450 --> 02:56.740
基本上, 大卫使用密钥对消息进行加密｡ 

02:56.750 --> 03:02.300
约翰用同样的密钥解密, 这样他们都能读到信息.

03:02.300 --> 03:07.340
但是任何没有钥匙的人都无法阅读这条信息｡ 

03:07.880 --> 03:12.020
所以大卫和约翰用的是同一把钥匙｡ 

03:12.020 --> 03:15.740
因此, 这称为对称加密｡ 

03:16.130 --> 03:18.350
现在, 你可能已经猜到了｡ 

03:18.350 --> 03:20.530
此密钥必须是私有的｡ 

03:20.540 --> 03:28.520
这就是为什么它被称为秘密密钥, 因为任何人只要设法得到了这个密钥, 他们就能解密大卫发给约翰的任何信息,

03:28.520 --> 03:34.010
反之亦然｡

03:35.220 --> 03:43.290
根据我们到目前为止所说的, 我们可以看到, 密钥可以用来解密消息｡

03:43.590 --> 03:46.360
正因为如此, 它应该被保密｡ 

03:46.380 --> 03:53.580
但大卫不知何故必须与约翰和其他任何大卫想要交流的人分享它｡ 

03:54.030 --> 04:00.930
因此, 这是对称加密的一个主要缺陷, 因为密钥必须是秘密的,

04:00.930 --> 04:06.720
但同时又必须是共享的, 与更多的人共享它会增加攻击面,

04:06.720 --> 04:10.020
更不用说共享实际密钥的问题了｡

04:10.050 --> 04:11.300
我们要怎么分享呢？

04:11.310 --> 04:13.410
我们要用单独的消息发送吗？

04:13.410 --> 04:15.720
如果信息被截获怎么办？

04:15.750 --> 04:21.810
如果我们通过互联网发送数据, 并且我们知道我们的数据可以经过多少跳呢？

04:21.840 --> 04:27.600
这可能被截获, 读取, 然后我们的其他通信将被解密｡ 

04:28.080 --> 04:37.470
这是提出更安全的加密的主要动机, 这就是非对称或公钥加密的来源｡

04:38.190 --> 04:42.540
让我们回到大卫想给约翰传递一个信息｡ 

04:42.540 --> 04:47.640
而消息的内容是秘密消息和非对称加密｡ 

04:47.640 --> 04:50.460
一个密钥用于加密消息｡ 

04:50.490 --> 04:57.480
消息在空中发送, 然后使用另一个密钥来解密消息｡ 

04:57.960 --> 05:06.090
正如你在这个加密中看到的, 使用了两个不同的密钥, 因此命名为非对称加密｡ 

05:06.810 --> 05:10.700
现在, 这两个密钥称为密钥对｡ 

05:10.710 --> 05:13.020
它们在数学上是相关的｡ 

05:13.020 --> 05:18.180
一个用于加密消息, 另一个用于解密｡ 

05:18.180 --> 05:23.700
因此, 解密密钥永远不会共享, 这就是为什么它更安全｡ 

05:24.120 --> 05:28.680
现在你在想, 如果解密密钥从未被共享, 这将如何工作？

05:29.040 --> 05:33.120
好吧, 让我们回过头来, 仔细看看这是如何工作的｡ 

05:33.210 --> 05:36.690
大卫又想给约翰传递一个信息｡ 

05:36.690 --> 05:39.630
消息的内容是秘密消息｡ 

05:39.630 --> 05:48.930
但在发送这条消息和加密它之前, 约翰要创建一个密钥对, 一个公钥和一个私钥｡

05:49.560 --> 05:56.790
就像我说的, 这些密钥是数学上联系在一起的, 约翰要把公钥发给大卫,

05:56.790 --> 05:59.460
发给那个要发送消息的人｡

05:59.820 --> 06:02.970
所以公钥可以和任何人共享｡ 

06:02.970 --> 06:07.470
你可以把它公开在互联网上, 在关键目录上｡ 

06:07.500 --> 06:13.030
这其实并不重要, 因为它不能用于确定私钥｡ 

06:13.050 --> 06:16.830
因此, 共享公钥是完全安全的｡ 

06:17.310 --> 06:19.920
因此, 大卫收到公钥｡ 

06:19.950 --> 06:23.100
他使用公钥对消息进行加密｡ 

06:23.100 --> 06:25.860
可以使用任何方法发送消息｡ 

06:25.860 --> 06:27.120
这并不重要

06:27.120 --> 06:30.320
即使被拦截, 也会是乱码｡ 

06:30.330 --> 06:32.430
约翰会收到消息｡ 

06:32.430 --> 06:33.840
他将消息打开｡ 

06:33.840 --> 06:40.410
消息仍将是乱码, 但他将使用私钥解密此消息｡ 

06:40.860 --> 06:44.310
这样他就会得到密信的内容｡ 

06:44.310 --> 06:48.200
如你所见, 私钥从未被共享过｡ 

06:48.210 --> 06:52.210
John创建了私钥, John保留了私钥｡ 

06:52.230 --> 07:01.280
唯一共享的是公钥, 它不能用于确定私钥, 也不能用于解密消息｡

07:01.290 --> 07:04.530
它只能用于加密消息｡ 

07:05.420 --> 07:13.330
在通信结束时, 大卫将拥有John的公钥, 而John将保留他们的私钥｡

07:13.340 --> 07:21.800
因此, 现在大卫可以随时向John发送消息, John也可以随时使用自己的私钥解密这些消息｡

07:21.890 --> 07:29.060
不仅如此, 当大卫用约翰的公钥加密某个东西时, 他可以放心,

07:29.060 --> 07:35.420
除了约翰, 没有人能解密这个消息, 因为约翰是唯一拥有私钥的人,

07:35.450 --> 07:38.990
他的私钥永远不应该被共享｡

07:39.020 --> 07:44.660
如果约翰知道他在做什么, 因为没有共享它的意义,

07:44.660 --> 07:50.420
即使他想让100个人给他发消息, 他所要做的就是共享他的公钥, 而不是他的私钥｡

07:51.140 --> 07:56.780
现在, 如果约翰想给大卫发送一些东西, 同样可以在相反的方向上完成｡ 

07:56.780 --> 07:59.100
所以大卫会创建一个密钥对｡ 

07:59.120 --> 08:06.000
他将把自己的公钥发送给约翰, 然后约翰将使用大卫的公钥对消息进行加密｡ 

08:06.020 --> 08:10.760
当大卫收到它们时, 他将使用自己的私钥来解密它们｡ 

08:10.910 --> 08:13.100
所以这个想法非常非常简单｡ 

08:13.100 --> 08:20.030
您共享您的公钥, 因此名称public是完全安全的, 因为它不能用于确定私钥,

08:20.030 --> 08:24.830
也不能用于解密消息｡

08:24.830 --> 08:31.100
所以你共享公钥, 任何想给你发消息的人, 都会用你自己的公钥加密,

08:31.100 --> 08:37.160
这样你就成了唯一一个能解密这条消息的人｡

08:37.340 --> 08:39.740
当你想发送另一条信息时也是如此｡ 

08:39.740 --> 08:47.180
例如, 如果你想给我发一条消息, 你所要做的就是用我的公钥加密这条消息｡

08:47.180 --> 08:53.390
这样, 因为我不与任何人共享我的私钥, 所以我将是唯一一个可以阅读该消息的人｡

08:53.390 --> 08:55.370
所以你可以把这条信息放在任何地方｡ 

08:55.370 --> 09:02.360
你可以公开分享它, 它仍然是安全的, 因为除了我, 没有人能够阅读这条消息｡
