非对称加密通俗易懂的解释什么是非对称加密
Posted 全链社
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非对称加密通俗易懂的解释什么是非对称加密相关的知识,希望对你有一定的参考价值。
全链社将尝试一种新做法,将链行业的既有资讯以专题的形式展示,为读者提供不一样的思考角度。
本期专题:非对称加密
本文原标题:如何用通俗易懂的话来解释非对称加密?
怎么给一个完全不懂密码学的人讲解什么是非对称(Asymmetric)/公钥(Public Key)加密体制?
本文中,作者试着用生活中的例子来讲一讲公钥加密体制。文中,尽量不使用任何公式,而是尽量用通俗易懂的方式回答。
引言:以门锁为例
(对称/私钥加密体制,Symmetric / Private Key Encryption)
愚蠢的人类啊,为了保护自己的财产,天天都跟门锁和钥匙打交道。最开始的门锁是这样的:
以及看起来高端点,但其实还是很脆弱的这样的:
看着挺结实,稍微来个钳子什么的马上就断了啊!直到人们明确了什么叫做安全的锁,并且按照规定制造了这样的锁,门锁才变得比较安全。
门锁大概有什么样的要求呢?简单地说有这么几条:
锁芯前面的金属头必须非常坚固,非特殊工具无法打开。
钥匙必须足够复杂,非常难复制(所以现在防盗门钥匙基本都很难配的)。
当然了,门本身也必须足够结实…
按照这样的要求,人们制作了一些很安全的门锁,比如这样的:
但是这些门锁都有一个共同的问题:就是锁门的时候必须用钥匙锁!在实际生活中这其实是个好事情。
如果不用钥匙锁,那我把门撞上了结果没带钥匙岂不是瞎了(这种情况时常发生嘛)…不过,如果门锁只是锁自己家的还好,毕竟进自己家门的话当然需要自己的许可了。
可是,如果锁门需要几个人的参与,事情可就比较麻烦了,考虑这样的情况:
我亲戚(或者其他我比较信任的人)来我家做客,但我临时有事要出去,不知道几点回来。难道让我亲戚看家,等我回来再离开么?最好的方法就是他歇够了,出门把门一撞,完事~
我新买的房子,需要装修队装修。装修过程中当然可以开着门谁都能进。装修完了呢?施工队等我回来验收后我主动来锁门他们才能走?
人类的智慧是无穷的。前面也提到了,我们可以找那种能把门撞上打不开的门锁嘛,比如球形锁这样的:
这个非常方便啊有木有。别人想锁门的时候,从里面把按钮按下去,一撞门,外面就打不开了,只有有钥匙的人才能打开。如果不把按钮按下去,外面还是可以打开的。
能“撞”上的保险箱
(非对称/公钥加密体制,Asymmetric / Public Key Encryption)
数据加密解密和门锁很像。
最开始的时候,人们只想到了那种只能用钥匙“锁”数据的锁。如果在自己的电脑上自己加密数据,当然可以用最开始这种门锁的形式啦,方便快捷,简单易用有木有。
但是我们现在是通信时代啊,双方都想做安全的通信怎么办呢?
如果也用这种方法,通信就好像互相发送密码保险箱一样… 而且双方必须都有钥匙才能进行加密和解密。
也就是说,两个人都拿着保险箱的钥匙,你把数据放进去,用钥匙锁上发给我。我用同样的钥匙把保险箱打开,再把我的数据锁进保险箱,发送给你。大概就这么个样子:
这样看起来好像没什么问题。但是,这里面最大的问题是:我们两个怎么弄到同一个保险箱的同一个钥匙呢?
好像仅有的办法就是我们两个一起去买个保险箱,然后一人拿一把钥匙,以后就用这个保险箱了。
可是,现代通信社会,绝大多数情况下别说一起去买保险箱了,连见个面都难,这怎么办啊?
于是,人们想到了“撞门”的方法。我这有个可以“撞上”的保险箱,你那里自己也买一个这样的保险箱。
通信最开始,我把保险箱打开,就这么开着把保险箱发给你。你把数据放进去以后,把保险箱“撞”上发给我。
撞上以后,除了我以外,谁都打不开保险箱了。这样听起来好像很合理的样子,大概是这么个情况:
权威机构造保险箱
(可信第三方,Trusted Third Party)
这种锁看起来好像很不错,但是锁在运输的过程中有这么一个严重的问题:你怎么确定你收到的开着的保险箱就是我发来的呢?
对于一个聪明人,他完全可以这么干:
装作运输工人。我现在把我开着的保险箱运给对方。运输工人自己也弄这么一个保险箱,运输的时候把保险箱换成他做的。
对方收到保险箱后,没法知道这个保险箱是我最初发过去的,还是运输工人替换的。对方把数据放进去,把保险箱撞上。
运输工人往回运的时候,用自己的钥匙打开自己的保险箱,把数据拿走。然后复印也好,伪造也好,弄出一份数据,把这份数据放进我的保险箱,撞上,然后发给我。
从我的角度,从对方的角度,都会觉得这数据传输过程没问题。但是,运输工人成功拿到了数据,整个过程还是不安全的,大概的过程是这样:
这怎么办啊?这个问题的本质原因是,人们没办法获知,保险箱到底是“我”做的,还是运输工人做的。
那干脆,我们都别做保险箱了,让权威机构做保险箱,然后在每个保险箱上用特殊的工具刻上一个编号。
对方收到保险箱的时候,在权威机构的“公告栏”上查一下编号,要是和保险箱上的编号一样,我就知道这个保险箱是“我”的,就安心把数据放进去。大概过程是这样的:
如何做出刻上编号,而且编号没法修改的保险箱呢?这涉及到了公钥体制中的另一个问题:数字签名(点击查看专题)
你可能会感兴趣的其他热文
回复下方关键字,迅速查看往期专题
以上是关于非对称加密通俗易懂的解释什么是非对称加密的主要内容,如果未能解决你的问题,请参考以下文章