非对称加密的诞生
Posted 企业管理杂志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非对称加密的诞生相关的知识,希望对你有一定的参考价值。
树哥:密码学可简单划分为古典加密学和现代加密学。我们已经介绍了古典加密学中的替换加密法和恩格玛加密机,现在开始介绍现代加密学中的对称加密法和非对称加密法。
相信你听到非对称加密法一定很熟悉,因为我在“密码学之战”的故事中就提到过DES对称加密法和RSA非对称加密法,现在我们从技术方面探讨这两种加密法,区块链中会大规模使用这些加密学技术。不过我们要先了解一个重要的概念——密钥。
任潇潇:
我之前一直以为密码和密钥是一回事情。不过听完上一个故事,知道它们并不相同:一个加密法有多套加密方案,假如有10套方案,那么密钥“528”就是轮流采用第5套、第2套、第8套方案对信息进行加密。
这时候,接收信息的一方也采用密钥“528”(第5套、第2套、第8套方案)解密信息。密钥长度越长就越安全,但长度越长就代表加密的时间也越长,所以在恩格玛加密机中采用了适当的长度。但我还是不太理解密钥存在的意义。
树哥:其实有密钥的最大好处就是算法可以公开。这是什么意思呢?例如玛丽一世女王用三角替代字母A,用圆形替代字母B,这个故事中最核心的其实就是这套加密方案,如果这套加密方案泄露了,那信息也就泄露了。
这就是没有密钥的隐患。而有密钥的时候,假如这个加密法有10套加密方案,这10套加密方案可以公开,由于大家不知道采用的密钥是什么,所以也没有办法对加密过的信息进行解密。而信息接收方因为知道使用的密钥,所以很容易解密信息。
任潇潇:我终于明白了。密码学发展到现在相当于连加密方法都可以不用保密了,只要收信方、发信方都保护好共同的密钥就好了。
树哥:密码学发展的规律就是,需要隐藏的信息越来越少,可以公开的信息越来越多。例如在隐藏加密法中,我们需要把整个加密方案都隐藏,写一首藏头诗,当别人知道加密方案是“藏头”时,那么信息就被破解了。
到了对称加密时代,所有的加密方案是公开的,要保密的只有密钥。而到了非对称加密时代,不光加密方案可以公开,密钥中的公钥部分也可以公开,需要保密的只有私钥。
任潇潇:你在“密码学之战”的故事中介绍的DES数据加密标准就是一套对称加密标准,它也是公开加密方案,保留自己密钥的一种方案。不过这套方案提出后却受到了很大的质疑,因为大家怀疑这套方案中有安全隐患,所以才出现了非对称加密法RSA。
树哥:传统加密只有一个密钥,非对称加密有两个密钥,一个是公钥,一个是私钥。公钥公开,由别人加密,私钥自己保留。
任潇潇:这就和您一开始总结的一样。RSA是非对称加密技术,要把密钥也分成两个,自己只保留私钥。密码学越进步,需要保密的东西越少。在对称加密中,加密、解密的密钥是同一个,必须要保存好;而非对称加密则可以把加密的公钥公布出去,私钥自己保存。
我突然想到两个案例来类比这两种加密方案。
一是对称加密:我给朋友发一个加密文档,然后电话告诉她密钥是什么,我们用同一把密钥。
二是非对称加密:朋友们给我汇款,我用我的身份证就可以取钱。我的账号就是公钥,身份证就是私钥。
树哥:这么理解也没问题。RSA非对称加密法的诞生过程正如下图所示。
树哥:加密技术越发展,可以公开的信息越多。非对称加密有非常重要的特点:公钥和私钥生来就是一对儿,公钥加密后,私钥可以进行解密;私钥加密后,公钥可以解密。私钥和公钥可以由软件一同产生,它们之间的相互解密由数学运算保证。
任潇潇:这句话我不太明白。能不能理解为它们是具备相同DNA的涂色剂,检测到相同的DNA就可以褪去颜色。
假如把加密过程当作涂色过程,用公钥对信息进行加密后,就相当于对信息进行了涂色,我们就看不到信息的内容;而用私钥进行解密时,就相当于染色剂检测到相同的DNA就会自动消失,信息就都显露出来了。当然,私钥进行加密也是对信息染色,公钥进行解密可以让染色剂消失。
总结起来有两点:公钥加密过的信息,私钥可以进行解密;私钥加密过的信息,公钥可以进行解密。
树哥:“公钥加密、私钥解密,私钥加密、公钥解密”这16字看似简单,但在现实世界中有非常广泛的应用。
这是一种比较常见的应用。一个人需要接收很多信息的时候,只要他把负责加密的钥匙发给那些发信息的人,把负责解密的钥匙自己留着,就不用担心信息传递的安全性了。而公布给别人的那把钥匙就叫“公钥”,自己保留着的那把钥匙就叫“私钥”。
合作方们互相保留对方的公钥,自己保留私钥,就不需要每个文件都有不同的密钥了。另外,由于私钥都保留在自己手中,所以它的安全性会大大提升。
那么,假设一个网络中有3个用户A、B、C,如果大家把自己的公钥都公开,且都保存着自己的私钥,那么任何两个人之间都可以直接发送信息,只要用对方的公钥加密,对方自己用私钥就可以解密。
不过,这时候有可能会出现一个新的问题:A可能会假冒B的名义给C发一条消息。例如在商业环境中,B和C在谈一笔生意,A不想让B和C谈成,就假冒B的名义给C发一条加密的消息:B决定与C终止合作。因为信息是以公钥C来加密的,C可以用自己的私钥来进行解密,所以C就可能信以为真。
这种问题该如何解决呢?这就要用到非对称加密的第二个功能了。
这时候就需要用私钥来加密,用公钥来解密。因为公钥信息全网公开,这意味着当A用私钥加密后,全网所有人员都可以用A的公钥来解密,以验证是否为A发出的消息,这样的过程被称“签名”。
把这套签名机制再套在公钥加密、私钥解密的机制上,签名就像信封一样,确保发信人正确,信中的内容确保收信人正确。这样就可以完美解决假冒别人身份发信息的问题了。
例如正常情况下,B如果想给C发送信息,则需要首先用自己的私钥签名,做一个信封,然后用C的公钥进行加密。C收到信息后,首先用B的公钥解密,确认是B发出的信件,然后用自己的私钥解密信息。A再想假冒B的身份发送信息时,发现没有B的私钥无法签名。所以就用自己的私钥签名,然后用C的公钥加密信息。当C收到信息时,首先会用B的公钥进行解密,发现不对,说明发信方是假的,就不会再相信信息内容。
树哥:菲尔·齐默尔曼开发的PGP软件就采取了第一个用法,即公钥加密、私钥解密。而区块链签名采用的则第二个用法,即私钥加密、公钥解密。
树哥:非对称加密相比与对称加密来讲效率要低得多。RSA非对称加密算法的密钥推荐为1024位,这么长的密钥导致计算量非常大,因此它的加密效率只是同级别对称加密算法的千分之一。如果原文信息再长一些,那计算时长可想而知,这就是信息量比较大时不使用非对称加密算法的原因。
例如加密一段话,花了半分钟你可以接受,但要半小时你就受不了。非对称加密效率低,信息越长加密速度越慢。
但又不能直接用对称加密,因为DES数据加密标准本身受到密码朋克的质疑,不太安全。另外,对称加密还涉及密钥传输及存储的问题,也不安全。例如加密、解密用同一套密钥,万一存储在电脑上的密钥被攻破了,或者传输密钥的时候被人截获了,那么原来所有信息的安全性都无法保障了。
菲尔·齐默尔曼的PGP软件把对称加密法和非对称加密法结合起来使用。对称加密法效率很高,那么就用对称加密法来加密大量的信息文本。对称加密法的密钥传输不安全,就用非对称加密法来加密对称的密钥。
因为密钥的长度一般都很有限,所以对于非对称加密来讲毫不费力。解密的时候就反过来,先用接受方的私钥把对称加密的密钥解出来,然后用密钥解密信息文本。这样就轻松解决了这个问题。
任潇潇:这个过程还是挺复杂,我们发送信息的时候要加密两次,第一次用对称加密法来处理信息,第二次用非对称加密法来处理对称密钥。
对方收到信息后也要解密两次:第一次用非对称法来解密对称密钥,然后用这个密钥来解密信息。
我能不能这样理解,假设我要给你寄一本书,书就是我给你的信息,然后把这本书放在一个带锁的箱子里,这个过程就是对称加密,当然这个箱子就可以直接邮寄给你了。
但还有个问题,这个箱子的钥匙怎么办?如果我直接邮寄给你的话怕丢失。那么我又找了一个带指纹锁的箱子,只有用你的指纹才能打开。我把钥匙放在这个指纹锁箱子中,也寄给了你。你收到这两个箱子之后,先要用自己的指纹把箱子打开,拿到钥匙,然后再用这个钥匙打开装书的箱子。是这样的过程吗?
树哥:这个类比非常形象。简单来讲就是,用非对称加密法来加密对称加密的密钥本身。基于这种加密方法,有人称这种技术叫“数字信封”,即用非对称加密法来加密信封,用对称加密法来加密内容。接下来我再介绍使用私钥加密、公钥解密的方法——私钥签名。
树哥:私钥加密、公钥解密的这种方案叫签名应用,银行和区块链行业大量使用了这项技术。银行的账号就类似于公钥,而你手中的U盾中就包含了私钥。每当你使用U盾发起一笔转账时,U盾内的软件就会使用你的私钥对一些固定文本进行加密。
当银行可以使用你的账号将固定文本的内容解密时,就说明你手上的私钥是和账号是一对儿,于是允许你转账。
在原来使用对称加密法时,大家的密钥都保存在银行的服务器中,如果有黑客入侵,就会把所有人的密钥都盗走。另外,万一哪个银行职员偷看了客户的密钥,也挺危险。所以,采用非对称加密法后,银行信息的安全性就大大提升了。
区块链的地址就是公钥,电子钱包管理的就是私钥。当我们发起一笔转账时,电子钱包软件就会利用我们的私钥对一段大家都知道的文字(简称明文,例如“你好”)进行加密,这个加密过程被称为“签名”。其他计算机收到我们这笔转账申请时,就会用转账的地址(公钥)来对签名的信息进行解密,如果能解密出原来的明文,则认为这个地址(公钥)和这个私钥是一对儿,于是允许对方从这个地址转移区块链资产。
这是个非常巧妙的方法,
在不泄露私钥的前提下,只要证明私钥和公钥是一对儿,就可以确认账户归属。验证的过程也很简单,只需用私钥对明文加密,用公钥进行解密,能解密出明文则证明公钥和私钥是一对儿,解不出则不是。
需要说明的是,地址其实不完全等于公钥,实际上区块链的资产都是存储在这些地址上,通过私钥签名、公钥解密验证的方式才能真正验证区块链资产。
第一个区块链项目是比特币,它是由密码朋克创造的,在比特币之前还有几十个没有成功的区块链项目也和密码朋克相关。区块链的底层就是密码学,所以必须先介绍密码学。你还记得密码朋克是什么时候确立的目标?比特币是什么时间出现的吗?
任潇潇:《密码朋克宣言》是1993年发表的,比特币是2009年1月4日上线的,中间差了16年啊!密码朋克不是有1400多号人嘛,这十几年不可能不干活啊?
树哥:这就像创业,当你发现很好的东西没有出现时,一般有两个原因:
条件还不具备;你发现的是伪需求。
放在密码朋克这里,其实是第一个原因。为什么这么说呢?因为1993—2008年,曾经出现过几十种匿名加密货币,不过都没有成功。也就是说,大家对匿名加密货币体系是有需求,不过由于一些条件最终失败了而已。
任潇潇:有几十种匿名加密货币都没有成功?那匿名加密货币体系的成功到底需要什么条件?
树哥:如果想进一个有锁的门,最重要的就是找到这个门上所有的锁,只有找到所有锁才能谈到钥匙的问题。成功的匿名加密货币需要解决哪些问题?从目前的状态看,可能是匿名系统、“双花”问题、对等网络、账本同步问题、拜占庭将军问题。但哪些是真正的锁、哪些不是关键的因素,也很难确定。另外,这只是从比特币身上总结出来的经验,只代表一条道路的成功,并不能代表没有其他的道路。
任潇潇:能不能再以讲故事的方式给我讲讲那些曾经出现过的匿名加密货币?
有多年计算机网络及通信技术研究经验,曾担任互联网上市公司高管、海外公司技术负责人等职务。
在区块链行业名为“树哥”,在新生大学平台开设“树哥解读以太坊”课程,在千聊开设“区块链从小白到精通”等课程,对区块链行业发展和技术有较深理解,擅长用深入浅出的语言讲解区域链技术知识。
以上是关于非对称加密的诞生的主要内容,如果未能解决你的问题,请参考以下文章
非对称加密与医疗健康
理解区块链的“非对称加密”
非对称加密与区块链钱包
非对称加密和对称加密
密码学中的对称加密和非对称加密
TLS过程(DH 非对称加密)