seegongsik
安全

为什么要加密

假设一封信不装信封,要经过好几个人的手才能送到。中途接过信、再往下传的人,个个都能原样读到内容。不做任何处理就通过网络发出的消息,正是这样一封信。加密就是把这封信变成没有钥匙就读不懂的乱码。中途就算有人截走,也看不出写的是什么,只有拿着正确钥匙的人,才能把它还原成原文来读。

01

直接发出的文字谁都能读

消息并不是直接送到对方那里,而是先后经过路由器、运营商设备、中继服务器等好几个中间站点才到达。文字不做任何处理就原样发出,一路上经过的每一站都能读到内容。
这种没动过的原始文字叫明文。明文就像没装信封的信。

我->->->->对方
发出的字
PAY 1200
点一下路上的站点

把路上的中间站点一个个点开。因为是明文,每一站都能原样看到内容。

不管点哪一站,看到的都是原样的同一段文字。大多数站点只是把收到的东西转出去,可只要有一处起了心思,就能读到、抄走内容,这才是问题。公共 Wi-Fi 这种不知道是谁在运营的路,就更是如此。
想到密码、卡号就这样一路经过,不禁让人捏一把汗。所以发出之前,要先把内容锁上,让别人读不懂,这个上锁的过程就是加密。

02

一上锁,就成了没意思的字

加密就是按照既定的方法,把明文打乱成读了也看不懂的文字。锁上的文字叫密文。密文里也看得到字,但意思已经没了,只是一团乱码。
打乱的方法要和钥匙配对使用。同样的方法,钥匙不同,得出的密文就完全不同;只有拿着那把钥匙,才能把它解回来。

o明文
MEET AT SIX
可读的明文

点“上锁”,给明文加密。原本读得懂的文字变成了没意思的密文。

一点“上锁”,清楚的文字就变成了认不出来的字符。内容并没有被抹掉,而是锁了起来,没有钥匙就读不了。这里就能看出它和哈希的区别:哈希做出的是无法还原的指纹,而加密只要有钥匙,就能还原成原文。
那么,这团乱码怎样才能变回原文?答案在上锁时用的那把钥匙上。

03

只有正确的钥匙才解得开

想重新读锁上的密文,就得用钥匙解开,这叫解密。插上正确的钥匙,乱码就变回原来的明文,就像用配套的钥匙打开锁一样。
插错钥匙就解不开。所以只有拿着钥匙的人才能看到内容,中途没有钥匙的人,谁也没法把密文还原成明文。

密文
Q8KZ#2VPW4R
选一把钥匙
选好钥匙后点解开

选一把钥匙,再点“解开”。钥匙对,原文就回来了;钥匙不对,就解不开。

用正确的钥匙,原文回来了;用错的钥匙,就被挡住了。正是这一点让加密有用。上锁的方法本身广为人知也没关系,反倒是公开出来、经过许多专家长期检验的方法更可靠。
真正的秘密只有钥匙。方法公开、只藏钥匙,这条原则叫柯克霍夫原则。那么,上锁和解锁在现实中究竟在哪里保护着我们?

04

传输时守,存储时也守

加密守护秘密的地方主要有两处。第一是传输中:消息穿过互联网、经过那些中间站点时,如果加了密,截走它的人手里只有密文。
第二是存储时:文件和数据静静地放在手机或服务器上,一旦设备丢了或者服务器被攻破,也可能被人偷看。加密后再存储,没有钥匙就读不了存下的内容。

穿过互联网途中有人拦截
偷看者握到的
Q8KZ#2VPW4R
只看到密文
*没钥匙,内容就守住了

轮流点“传输中”和“存储时”。不管哪种情况,偷看的人拿到的都只有密文,内容就守住了。

不管是传输中还是存储中,加了密的文字没有钥匙就只是一团乱码。重要的数据,发送时要锁,存储时也要锁,两头的秘密才都守得住。不过,加密只能让人读不懂内容,单靠它并不能证明消息是谁发的,也不能保证途中没被改过。这个问题后面会用数字签名来讲。
还剩一个问题:上锁、解锁都少不了的那把钥匙,收发双方要怎样安全地共享?

05

小结

归纳起来是这样:直接发出的明文,路上谁都能读。加密用钥匙把明文锁成没意思的密文,只有正确的钥匙才能解开,所以只有拿着钥匙的人才看得到内容。
这样一来,传输时和存储时的秘密都守住了。上锁的方法可以公开,秘密全在那一把钥匙上。

依次点要点

依次点要点回顾一下。(明文会被偷看 → 上锁成密文 → 只有正确的钥匙才解得开 → 守住传输和存储)

现在你手里有了守护秘密最基本的工具:上锁,只用钥匙解开,发送时和存储时都要守。可是锁再好,钥匙随手乱丢也没用。
下一课来看用同一把钥匙上锁和解锁的对称加密,同时会碰上一个棘手的问题:怎样把这把钥匙交到远方的对方手里。

一句话总结不做任何处理就发出的消息是明文,传递路上的任何人都能原样读到。加密用钥匙把明文锁成没意思的密文,想再读就得用正确的钥匙解开,钥匙不对就解不开。上锁的方法可以公开,秘密只在钥匙上。加密在两处守护秘密:穿过互联网的传输中,被截走也只看到密文;放在设备或服务器上的存储中,被偷看也读不懂。还要记住:和哈希不同,加密有钥匙就能还原;而怎样安全地共享钥匙,就是下一个问题。
← 安全
如果有帮助,请支持我们