If you're seeing this message, it means we're having trouble loading external resources on our website.

如果你被网页过滤器挡住,请确保域名*.kastatic.org*.kasandbox.org 没有被阻止.

主要内容

公钥加密

在因特网上,两台计算机经常要互相交换安全数据。当我在可汗学院的登录屏幕上输入密码时,我希望我的计算机将这些数据安全地发送到可汗学院的服务器。我 想担心网络罪犯可能会监视我的网络流量,并监视密码在网络上传送。
一名网络罪犯盗取密码数据的插画。笔记本电脑显示一个浏览器和一个密码输入字段。一个箭头从笔记本电脑指向服务器。在箭头的上方,有一个袋子,里面有文字“Be3tP@ssw0rd3ver”,一个微笑的网络罪犯看着文字。
对称加密技术依赖于发送方和接收方使用 相同的密钥 对数据进行加密和解密。我的计算机和可汗学院服务器如何安全地交换密钥?如果一个网络罪犯可以看到我的密码通过电线传送,那么他们也可以看到一个加密密钥!
一个网络罪犯盗取加密密钥的插图。笔记本电脑显示一个浏览器和一个密码输入字段。一个箭头从笔记本电脑指向服务器。在箭头的上方,有一个袋子,里面有文字“TOP_SECRET_KEY”和一个微笑的网络罪犯在看文字。
公钥加密 是救星!它是一种非对称加密技术,使用 不同的密钥 进行加密和解密,使得计算机能通过互联网彼此安全地通信。
让我们逐步了解公钥加密的高级过程。

步骤1:密钥生成

每个人(或他们的计算机)必须生成一对标识他们的密钥:私钥公钥
你可以在下方生成一对秘钥,使用和你电脑相同的RSA算法:
你是否注意到生成密钥需要几秒钟?这是因为涉及到数学计算。 密钥是通过将两个令人难以置信的大质数相乘而产生的。 算法反复生成大量随机的数字并检查它们是否为质数,直到它最终找到两个随机的大质数。 检验是不是质数会需要一些时间,这些密钥只有512比特。 当前国家推荐的密钥长度是 2048比特,甚至是 3072 比特。

步骤2:交换密钥

发送和接收计算机通过可靠的通道(如TCP/IP)互相交换 公钥 。私钥 从不 交换。
与笔记本电脑和服务器的密钥交换关系图。笔记本电脑屏幕显示了一个带有密码输入字段的浏览器。箭头从服务器指向笔记本计算机,标记为“SERVER_PUBLIC_KEY”。在此之下,一个箭头从笔记本电脑指向服务器,并标记为“CLIENT_PUBLIC_KEY”。

步骤 3: 加密

发送方的计算机使用接收方的计算机的 钥和数学操作对秘密数据进行加密。
公钥加密的威力就在于这种数学运算。这是一个“单向函数”,这意味着计算机很难逆转操作并发现原始数据。甚至公钥也不能用于解密数据。
你可以用上面生成的公钥在下面试试:

步骤 4: 发送加密数据

发送者现在可以安全地在互联网上传输加密的数据,而无需担心旁观者。
笔记本电脑和服务器的密钥交换关系图。笔记本电脑屏幕显示了一个带有密码输入字段的浏览器。箭头从服务器指向笔记本电脑,并用加密文本字符串标记。一个网络罪犯不高兴地看着文本字符串。

步骤 5: 解密

现在接收者可以使用他们的 私钥 解密消息。这是(世界上)唯一可以用来解密消息的密钥。
请使用下面的加密消息和上面的 钥试试:
成功解密消息之后,尝试使用 钥解密消息。它不会工作;只有私钥才能解密它。

但这怎么可能呢?

这听起来好得令人难以置信;有可能用一个密钥加密一些东西,然后只能用另一个密钥解密。很长一段时间,数学家们不确定这是否可能,但幸运的是,他们在20世纪70年代发现了一种方法。
单向函数的数学依赖于素数、分解大素数的难度以及模运算。如果你想更深入地研究数学,可以看看可汗学院的现代密码学教程.
幸运的是,我们所有人都可以使用并受益于公钥加密,而不需要理解它背后的复杂数学。事实上,我们可能每天都在使用公钥加密,就像我们使用计算机和互联网一样。想象一下,如果没有它,世界会是什么样子?

🙋🏽🙋🏻‍♀️🙋🏿‍♂️您对此主题有任何疑问吗? 我们很乐意回答-只需在下面的问题区域中提问即可!

想加入讨论吗?

尚无帖子。
你会英语吗?单击此处查看更多可汗学院英文版的讨论.