在这一节和下一节课中, 我将向你们展示如何使用Pjp来加密和解密文本文件,
电子邮件, 我们还将使用它来签名和验证文件, 电子邮件等的完整性｡
通过这种方式, 我们将能够安全地进行通信, 因为发送和接收的所有内容都将被加密,
并且我们将能够验证发送数据的完整性｡
因此, 我们将能够签署我们发送的任何数据, 接收者将能够验证这些数据实际上是从我们这里发送的,
没有被篡改｡
现在, 我们要使用BGP进行加密和验证完整性的原因是, 这是一种非常强大的加密,
经受住了时间的考验, 至今尚未被破解｡
即使根据泄露的报告, 似乎连政府机构也无法打破它｡
所以这是一种非常非常强的加密, 尽管PJP代表相当好的加密｡
这句话实际上是讽刺, 因为这是一个非常强大和强大的加密｡
在这节课中, 我想向你们解释Pjp的一般工作原理.
在接下来的课程中, 我们会看到如何用它来加密各种数据, 以及如何用它来签名和验证完整性｡
现在Pjp是一个公钥或非对称加密｡
为了了解它的工作原理, 我们先来看看另一种传统的加密类型, 即对称加密｡
让我们举一个例子, 有两个人, 大卫和约翰｡
我们将忘记他们如何交流｡
我们假设大卫想给约翰传递一个信息.
而这条信息的内容是秘密信息｡
现在,
如果大卫想保护他的消息不被任何人截取或阅读, 他可以使用一个加密密钥来加密这个消息, 这将把这个消息转换成乱码｡
然后, 他可以继续并使用任何方法将此消息发送给John, 方法是将其作为电子邮件或通过邮寄或作为文本消息发送｡
这并不重要
如果这条信息被截获, 信息的内容就会变得乱码｡
所以它对拦截它的人没有用｡
约翰会收到消息｡
他将消息打开｡
消息仍将是乱码｡
然后John将使用相同的加密密钥来解密此消息, 并显示其内容, 这是一条秘密消息｡
所以非常非常简单｡
基本上, 大卫使用密钥对消息进行加密｡
约翰用同样的密钥解密, 这样他们都能读到信息.
但是任何没有钥匙的人都无法阅读这条信息｡
所以大卫和约翰用的是同一把钥匙｡
因此, 这称为对称加密｡
现在, 你可能已经猜到了｡
此密钥必须是私有的｡
这就是为什么它被称为秘密密钥, 因为任何人只要设法得到了这个密钥, 他们就能解密大卫发给约翰的任何信息,
反之亦然｡
根据我们到目前为止所说的, 我们可以看到, 密钥可以用来解密消息｡
正因为如此, 它应该被保密｡
但大卫不知何故必须与约翰和其他任何大卫想要交流的人分享它｡
因此, 这是对称加密的一个主要缺陷, 因为密钥必须是秘密的,
但同时又必须是共享的, 与更多的人共享它会增加攻击面,
更不用说共享实际密钥的问题了｡
我们要怎么分享呢？
我们要用单独的消息发送吗？
如果信息被截获怎么办？
如果我们通过互联网发送数据, 并且我们知道我们的数据可以经过多少跳呢？
这可能被截获, 读取, 然后我们的其他通信将被解密｡
这是提出更安全的加密的主要动机, 这就是非对称或公钥加密的来源｡
让我们回到大卫想给约翰传递一个信息｡
而消息的内容是秘密消息和非对称加密｡
一个密钥用于加密消息｡
消息在空中发送, 然后使用另一个密钥来解密消息｡
正如你在这个加密中看到的, 使用了两个不同的密钥, 因此命名为非对称加密｡
现在, 这两个密钥称为密钥对｡
它们在数学上是相关的｡
一个用于加密消息, 另一个用于解密｡
因此, 解密密钥永远不会共享, 这就是为什么它更安全｡
现在你在想, 如果解密密钥从未被共享, 这将如何工作？
好吧, 让我们回过头来, 仔细看看这是如何工作的｡
大卫又想给约翰传递一个信息｡
消息的内容是秘密消息｡
但在发送这条消息和加密它之前, 约翰要创建一个密钥对, 一个公钥和一个私钥｡
就像我说的, 这些密钥是数学上联系在一起的, 约翰要把公钥发给大卫,
发给那个要发送消息的人｡
所以公钥可以和任何人共享｡
你可以把它公开在互联网上, 在关键目录上｡
这其实并不重要, 因为它不能用于确定私钥｡
因此, 共享公钥是完全安全的｡
因此, 大卫收到公钥｡
他使用公钥对消息进行加密｡
可以使用任何方法发送消息｡
这并不重要
即使被拦截, 也会是乱码｡
约翰会收到消息｡
他将消息打开｡
消息仍将是乱码, 但他将使用私钥解密此消息｡
这样他就会得到密信的内容｡
如你所见, 私钥从未被共享过｡
John创建了私钥, John保留了私钥｡
唯一共享的是公钥, 它不能用于确定私钥, 也不能用于解密消息｡
它只能用于加密消息｡
在通信结束时, 大卫将拥有John的公钥, 而John将保留他们的私钥｡
因此, 现在大卫可以随时向John发送消息, John也可以随时使用自己的私钥解密这些消息｡
不仅如此, 当大卫用约翰的公钥加密某个东西时, 他可以放心,
除了约翰, 没有人能解密这个消息, 因为约翰是唯一拥有私钥的人,
他的私钥永远不应该被共享｡
如果约翰知道他在做什么, 因为没有共享它的意义,
即使他想让100个人给他发消息, 他所要做的就是共享他的公钥, 而不是他的私钥｡
现在, 如果约翰想给大卫发送一些东西, 同样可以在相反的方向上完成｡
所以大卫会创建一个密钥对｡
他将把自己的公钥发送给约翰, 然后约翰将使用大卫的公钥对消息进行加密｡
当大卫收到它们时, 他将使用自己的私钥来解密它们｡
所以这个想法非常非常简单｡
您共享您的公钥, 因此名称public是完全安全的, 因为它不能用于确定私钥,
也不能用于解密消息｡
所以你共享公钥, 任何想给你发消息的人, 都会用你自己的公钥加密,
这样你就成了唯一一个能解密这条消息的人｡
当你想发送另一条信息时也是如此｡
例如, 如果你想给我发一条消息, 你所要做的就是用我的公钥加密这条消息｡
这样, 因为我不与任何人共享我的私钥, 所以我将是唯一一个可以阅读该消息的人｡
所以你可以把这条信息放在任何地方｡
你可以公开分享它, 它仍然是安全的, 因为除了我, 没有人能够阅读这条消息｡