seegongsik
我的单词本
安全

两把钥匙的魔法,公钥

上一课我们见过用同一把钥匙又锁又开。它又快又干净,但留下一个麻烦:怎么把那把钥匙偷偷交给远方的人?可要是上锁的钥匙和开锁的钥匙不一样呢?要是上锁的钥匙能发给全世界,而开锁的钥匙只攥在自己手里呢?

01

有两把钥匙

上一课的对称密钥只有一把钥匙。
用那一把锁,也用那一把开。
公钥密码在这里不一样。
它用一对两把钥匙。
一把是公钥。
顾名思义,发给谁都行。
另一把是私钥。
这一把只攥在自己手里,绝不交出去。
两把钥匙是作为一对一起造出来的,
像彼此配套的兄弟。

点一下钥匙看看它的角色

点一下每把钥匙看看。公钥发给任何人,私钥只攥在自己手里。

公钥摊开放着也没事。
私钥就得藏得深深的。
同一对,角色却正相反。
一把昭告天下,
一把守密到底。
这里冒出个自然的问题。
既然有两把钥匙,
锁的时候用哪把,
开的时候用哪把呢?
下面先看上锁这一边。

02

用公钥上锁

假设你想给某人发一条秘密消息。
先拿到那个人的公钥。
公钥对谁都开放,所以很容易拿到。
用那把公钥把消息锁上。
用公钥上锁,
就像把收到的挂锁扣到消息上。
谁都能把挂锁扣上。
但一旦扣上,
连锁它的人自己也打不开。
因为公钥只能锁,不能开。

HELLO消息
公钥
谁都能用手里的公钥上锁。

点一下公钥把消息锁上。用谁都有的公钥,挂锁就扣上了。

一点公钥,消息就锁上了。
现在消息成了看不懂的样子。
关键是这一点。
用来上锁的是公钥,不是秘密。
所以上锁这事,谁都真的能做。
可锁上之后再看,
连锁它的人自己也开不了了。
开启公钥所锁挂锁的钥匙是另外一把。
那把钥匙究竟是什么呢?
下面来开开看。

03

只有私钥才能开

公钥锁上的挂锁,
只有配对的私钥才能开。
用同一对的私钥一对,咔哒就开了,
用不相干的别的钥匙,纹丝不动。
连上锁时用的那把公钥也开不了。
上锁的钥匙和开锁的钥匙
根本就不一样。
所以只有握着私钥的那一个人
才能读那条消息。
哪怕全世界都拿着公钥,
阅读的权限只属于私钥的主人。

对一把钥匙开挂锁

依次试每把钥匙。只有配对的私钥能开挂锁,别的钥匙全都失败。

只有对上配对私钥时才开了。
公钥也好,错钥匙也好,全失败了。
这个不对称就是公钥密码的核心。
上锁人人都行,开锁只有一个人。
上锁的权限敞得大大的,
只把开锁的权限牢牢锁住。
正是靠这个性质,
上一课的头疼问题就解开了。
秘密配送钥匙的必要
整个消失了。
下面来看这个解决办法。

04

密钥配送问题解开了

对称密钥里,同一把钥匙
两边得一模一样地各拿一份。
所以偷偷把那把钥匙交出去就是个头疼事。
半路被谁截走就完了。
公钥没有这份担心。
收件人的公钥公开也安全。
谁拿走了,用它也只能上锁。
开锁的私钥从一开始就不离主人的手。
所以根本没有要秘密配送的钥匙。
危险的配送环节本身就消失了。

点一下方式对比步骤
点一下方式对比步骤

点一下对比两种方式。对称密钥要秘密配送,但公钥公开也安全,那一步就没了。

把两种方式并排放着看,
差别就清清楚楚了。
对称密钥那一行里,总是夹着
秘密配送这个危险的环节。
公钥那一行里,那一步整个就没了。
把公钥就那么公开放着就行。
快的对称密钥和安全的密钥分发,
实际中常常两个一起用,
不过那个故事留到下一课。
现在只把公钥怎么解开密钥配送问题
这一点清清楚楚地记住。

05

来理一理

归成一句话,是这样。
公钥密码用一对两把钥匙。
公钥发给任何人,
私钥只攥在自己手里。
公钥锁上的,只有配对私钥才能开。
上锁人人都行,开锁只有一个人。
所以公钥公开也安全,
根本没有要秘密配送的钥匙。
对称密钥的配送问题就这样解开了。
公钥是把锁分发出去,私钥是自己专属的钥匙。

1两把钥匙
2用公钥上锁
3只有私钥能开
4密钥配送解决

依次点要点回顾一下。(两把钥匙 -> 用公钥上锁 -> 只有私钥能开 -> 密钥配送解决)

现在你认识了两把钥匙的魔法。
用一把发出去的钥匙和一把自己专属的钥匙,
安全地收发秘密的办法。
这一对钥匙不只用来又锁又开。
把顺序倒过来,先用私钥上锁,
这回就能做另一件事。
它会成为消息确实出自你的标记,
一个无法伪造的签名。
下回我们一起看,用同一对钥匙做的
数字签名。

一句话总结公钥密码用一对两把钥匙。一把是公钥,发给谁都行;一把是私钥,只攥在自己手里。公钥锁上的东西,只有配对的私钥才能开。别的任何钥匙都开不了,连锁它的那把公钥也开不了。所以收件人的公钥发给全世界也安全。谁都能用那把公钥把消息锁上发出去,而只有握着配对私钥的那个人才能打开。对称密钥里那个头疼的密钥配送问题就消失了,因为根本没有要秘密交付的钥匙。公钥就像把锁分发出去,私钥是自己专属的钥匙。这就是两把钥匙的魔法。
安全
如果有帮助,请支持我们