seegongsik
安全

对称加密 怎么工作

想想家里的大门。出门时用钥匙锁上,回家时用同一把钥匙打开。一把钥匙既管上锁,也管开锁。对称加密也是这样,上锁和开锁用同一把钥匙。它简单又快,可里面藏着一个棘手的问题:远方的朋友要打开这封锁着的信,手里也得有同一把钥匙。这把钥匙,怎样才能安全地交给他?

01

一把钥匙,既锁又开

上一课讲过,加密就是用钥匙把内容锁起来,只有正确的钥匙才能再打开。“对称”这个名字,来自上锁的钥匙和开锁的钥匙是同一把。
用这把钥匙锁上信,谁都读不了;用同一把钥匙一开,就恢复原来的内容。上锁的一方和开锁的一方共用同一把钥匙,所以叫对称。

K
钥匙
HELLO
打开
用同一把钥匙开了,读得出

依次点“上锁”和“开锁”。一上锁就读不了,用同一把钥匙开锁,原文就回来了。

一上锁,文字就乱成一团;用同一把钥匙一开,又清清楚楚地读得出来。就像用一把门钥匙既能锁门又能开门。
结构这么简单,就带来一个大优点:非常快。

02

又快又简单

对称加密的计算相对简单、轻便,不管是小纸条还是大文件,转眼就能锁上、打开。手机里的照片、视频,甚至整个存储设备,这样的大块数据也能很快处理。如今的电脑和手机里,甚至有专门负责这种计算的电路。
当今用得最广的对称加密叫 AES。Wi-Fi、聊天软件、设备存储加密,大多都是用这类对称加密来锁住数据的。

选大小再上锁

选小数据或大数据来上锁。块头再大,同一把钥匙也能很快锁上、打开。

数据变大了,上锁也很快就完成了。正因为这么快,对称加密在现实中用得非常广。可这里有件事值得想一想。
如果只是自己给自己的文件上锁、开锁,钥匙自己留着就行。可要把锁着的信寄给远方的人,让他打开,他手里也得有同一把钥匙。

03

这把钥匙怎么交

只寄锁着的信,朋友打不开,所以钥匙也得寄过去。可一想到钥匙要走的路,就让人不安:路上要是有人插了进来,就能把经过的钥匙偷偷复制下来。
钥匙一泄露,上锁就毫无意义了,因为复制钥匙的人也一样能打开。要是连钥匙也加密了再寄,又需要另一把钥匙来解开它,问题就这样没完没了地循环下去。

我朋友
K
路是空的
寄出钥匙看看

点“寄出钥匙”。路上要是有人插进来,经过的钥匙就可能被复制,你会亲眼看到。

路上有人,钥匙就原样被复制了。复制的钥匙一样能打开我们的锁。可要是干脆不寄钥匙,朋友就永远打不开那封信。
寄吧,怕被复制;不寄吧,又没法用。当面交给对方当然可以,可在互联网上初次打交道的无数对象,不可能一个个都这样做。

04

寄也堵,不寄也堵

把两条路并排放来看。第一条是寄钥匙:又快又方便,可半路一被复制,锁就垮了。第二条是不寄钥匙:不用担心被复制,可对方没有办法打开信。
一边因为危险被堵死,一边因为没用被堵死。更麻烦的是,人一多,每两个人之间都需要一把单独的钥匙,要分发的钥匙数量会迅速膨胀。

寄钥匙,还是不寄?

把两个选项一个个点开比一比。寄就有被复制的风险,不寄就打不开,两条路都堵死了。

选哪边都是死胡同。这就是有名的密钥分发问题。对称加密再快再好,秘密一旦要两个人共享,就需要安全地交出钥匙的办法。人们在这里卡了很久。
后来出现了一个完全不同的想法:把上锁的钥匙和开锁的钥匙干脆分成两把,这就是公钥加密。真实的互联网把两者结合起来用:先用公钥加密把对称密钥安全地送过去,再用快速的对称加密来收发数据。

05

小结

归纳起来是这样:对称加密上锁和开锁用同一把钥匙,所以简单,大块数据也处理得非常快。可要和远方的人一起用,就得把同一把钥匙交过去;寄吧,怕被复制,不寄吧,对方打不开。
这个死胡同就是密钥分发问题。既保住速度又解决这个问题的办法,就是下一课的公钥。

1同一把钥匙上锁/开锁
2又快又简单
3钥匙怎么交?
4寄不寄都堵

依次点要点回顾一下。(同一把钥匙上锁和开锁 → 又快又简单 → 钥匙怎么交 → 寄不寄都堵死) 下一课的公钥会解开这个死胡同。

现在你把对称加密的光和影都看到了:用一把钥匙飞快地上锁、开锁,这是明显的优点;而这把钥匙怎么分享,是一道难题。工具越好,越要了解它的弱点,才能用好它。
下一课来看,把上锁的钥匙和开锁的钥匙分成两把的公钥加密,是怎样解开这道难题的。

一句话总结对称加密上锁和开锁用同一把钥匙。只有一把钥匙,结构简单,大块数据也能很快锁上、打开,所以 AES 这类方式在 Wi-Fi、聊天软件、设备存储等地方用得很广。可远方的人要打开,也得有同一把钥匙,而寄钥匙的路本身就很危险:半路被复制,锁就失去意义;不寄,对方就永远打不开。这就是密钥分发问题。所以实际上,会先用下一课要讲的公钥加密把对称密钥安全地送过去,再用快速的对称加密来收发数据。
← 安全
如果有帮助,请支持我们