如何防止悄悄话被偷听?83版电影《火烧圆明园》有个桥段:八国联军已经把刺刀戳进了北京城,慈禧带儿子坐轿子跑路,但她并不知道有大臣密谋要对她下手,毕竟趁太后还在实习的时候颠覆她最容易。
小皇帝的亲叔叔奕䜣知道情况,想和慈禧说悄悄话,却不能明讲,但他硬是掰开群臣送行队伍,在他们眼皮下给慈禧递了奏折:
http://o73gmt28q.bkt.clouddn.com/bitcointalk/1.png慈禧打开一看,奏折平淡无奇,无非是凡尘俗事。但套上一张挖了洞的纸再看,意思就完全变了:
http://o73gmt28q.bkt.clouddn.com/bitcointalk/2.png“当心肃顺、端华、戴桓“——这是恭亲王奕䜣真正想告诉慈禧的。
肃顺、端华、戴桓三人是老皇帝驾崩前任命的辅政大臣,后来我们的历史书都记下了这些人的命运:被慈禧一锅端。信息就是这么重要,奕䜣和慈禧用当时最先进的加密解密技术巩固了权力。
一百年后,读着历史书的小学生们也没闲着,他们不甘落后,更新了加密技术——火星文,用来传递上课时的信息,即使被老师抓包,也是一头雾水。
http://o73gmt28q.bkt.clouddn.com/bitcointalk/3.png现在恭喜你,你只用了半分钟的时间就了解了百年对称加密史。
1、什么是“对称加密”?恭亲王奕䜣想告诉慈禧:“当心肃顺、端华、戴桓。“但他不能明写,否则被肃顺等人知道,小命难保。于是只能“加密“——把短信(原文)写成一篇正儿八经的奏折(密文)。
和肃顺他们一样,慈禧拿到奏折第一眼看不出原意,要想知道得过“解密“这关,“解密“就是把那张洞洞纸蒙在奏折上,原文含义瞬间了然。
现在你明白了,奕䜣“写“完奏折之后,加密就是取下洞洞纸,解密就是盖上洞洞纸,两者互为逆操作。
同样的思路,在小学生的火星文里,加密是把中文变成火星文,解密是把火星文变成中文,两者互为逆操作。
简单地说,加密是把原文按一定规则变成面目全非的密文,别人看到密文没关系,因为他get不到意思。而发送方早已与接收方约定了转换规则,接收方能懂。比如奏折或火星文被别人看见没有关系,接收方收到密文,把规则倒着用在密文上就能解密,原文立等可取。
加解密互为逆操作的加密方式,就是对称加密。对称加密功能强大,除了可以完成信息传输,还可以帮你处理人际关系。
比如,你是个学霸,睡你上铺的弟兄求你帮忙,要你考试时把选择题答案写在纸条上传给他。他平时待你不薄,没事还送你一点比特币,所以你惴惴不安,一边担心监考老师扑上来把你人赃俱获,一边又怕伤及兄弟情分,但是还好,你突然想到了对称加密。
于是,考试前你们约定:ABCD四个选项分别对应wxyz四个字母,大家都记住。
考场上,你把答案写成wxwyz的样子,包在纸里,折成飞机的样子,让它降落在你弟兄的桌上,你兄弟一边顿悟到正确答案是ABACD,一边又领悟了你的智勇双全。
而且,即使被抓包,老师打开飞机看了wxwyz也是一头雾水,所以不会留下证据。想继续救你兄弟?再写一张扔给他就是了。
很厉害的加密,但它有什么软肋呢?其实你一定想到了:如果肃顺拿到洞洞纸、如果小学老师学过火星文、如果监考老师联想到ABCD与wxyz之间一一对应的对应关系,那密文就会被破解,信息传输就宣告失败。
一百年来,人们一直在研究解密的方法,而且也有成功解密的高光时刻。比如,英国计算机大神图灵破解了德国军队的加密系统,让德国人的军事机密完全暴露在盟军的眼皮地下,最终赢得了二战,电影《模仿游戏》完整地讲述了这个故事。
http://o73gmt28q.bkt.clouddn.com/bitcointalk/4.png那有没有一种加密方法能够阻止破解呢?答案是“非对称加密“。
2、什么是“非对称加密”?非对称加密比慈禧的对称加密晚出生80年,至于为什么要晚那么久,因为必须要等到有了计算机网络,人们有了安全传输文件的需求,才能点燃研究的火焰。
这一把火直接烧出了“非对称加密“——一种更安全的加密技术。与对称加密不同,非对称加密不支持逆推。即,就算我偷到了你的密文和加密方法,我也无法知道你的原文,这是怎么回事?
假设现在你想通过网络传递“good“这个单词给你朋友彤彤,你有两个目标:
1)让彤彤收到“good“这条信息;
2)不让其他人知道你发给了彤彤“good“这条消息;
为了完成上面两项目标,彤彤和你需要这么做:
彤彤把字符串"publicKey"公开在网上,这是她的公钥(“钥“既可读yào,也可读yuè,都没错),你想对她说什么悄悄话就用这把公钥加密吧,你可能觉得奇怪:用公开的字符串加密,难道不会被别人截取破解么?
答案是不会,因为在非对称加密中,用公钥加密,无法用原公钥解密,解密只能用私钥,私钥是一串和公钥完全不同的字符串,而且只有晓彤自己掌握,她的公钥是通过她的私钥算出来的,所以你放心地用公钥加密吧。
这就好比用一把钥匙锁住的门,居然只能被另一把完全不同的钥匙打开,这的确违反常识,但却是非对称加密和核心:公钥加密的原文,原公钥无法解密,只能用对应的私钥解。
还有一点,通过私钥可以计算出公钥,但通过公钥无法推导出私钥。所以你现在知道了,私钥是爸爸,公钥是儿子,爸爸可以生出很多儿子,但所有的儿子加起来都生不出一个爸爸。
3、非对称加密的过程我们用F表示加密算法,你可以把F想象成一个黑箱,黑箱就像函数F(x)=y一样,把x塞进去,就出来个y。不用管中间的计算步骤,你只要知道F是数学天才们搞出来的就可以了。
F足够的复杂,以至于能为你提供足够的安全。
你把原文(good)送进加密函数F里,用彤彤的公钥(publicKey)加密后,密文(CipherText)就马上从黑箱的另一头钻出来了,即:
F( good, publicKey) = CipherText
也就是说,通过publicKey加密,good变成了CipherText的样子在网络里跑,如果CipherText被鹿晗截获,他能破解出来你想对彤彤说的含义么?
答案是“不能“。虽然公钥和算法都公开,但鹿晗不能逆推出你的原文,因为只有彤彤手里的私钥才能解密,而鹿晗不知道。
彤彤接收到了密文CipherText,用公开的解密函数f和只有自己知道的私钥privateKey就能解开密文的原意good,即:
f( CipherText, privateKey ) = good
good,彤彤现在终于知道你是个好人了。
但,真正的私钥可没有这么简单,这么简单的私钥一秒钟就能被电脑猜到,现实里的它们一般长成这个样子:
http://o73gmt28q.bkt.clouddn.com/bitcointalk/5.png稍微有点长,但是公钥和私钥总是成对出现,公钥由私钥生成。公钥公开发布在网上,供信息发送者加密原文,私钥紧紧抓在信息接收者自己手里,用来解密发送者的密文。
结语非对称加密影响着这个时代的分分秒秒。
如果非对称加密早30年出现,一旦被德军使用,英国人再厉害,也不可能知晓德国人内部在讲些什么,二战不会那么早结束。
而如果今天还没出现非对称加密技术,至少微信、支付宝和手机银行都不会存在,并且网络里将没有任何信任可言,因为任何人都可以随时冒充任何人。
但是,它却不失时机地出现了。于是,这个世界突然变成一个在技术映衬下可以尽情说悄悄话的时代,即使有人偷听,我们也可以放心地交谈,因为别人不懂,但你懂,而且会用。
如需了解数字签名,请参考
https://bitcointalksearch.org/topic/--3009535如需了解去中心化,请参考
https://bitcointalksearch.org/topic/--3009569原文载自微信公众号tangqiang0401