非对称加密法入门:私钥、公钥、RSA全解析
时间:2019-10-09 来源:区块链网络 作者:加密二锅头
非对称加密法入门:私钥、公钥、RSA全解析 之前所有的加密方法都是对称加密,说的直白一点就是加密和解密都是同样的密码。 比如你用银行账号对应的密码可以取出现金,别人拿着这张卡你给他说了密码也能取出现金;比如你的email登录密码,比如微信、支付宝登录密码等等,这些都是对称密码的应用。 只要是同一把钥匙在开一个锁,都是对称密码。 可是对称密码有一个问题是很难解决的,就是秘钥的传输。 之前讲的量子通讯也是钥匙传输的目前已知的最先进安全的钥匙分发方式,但是一般情况下,普通用户是很难使用的。想象下面一个场景,你媳妇儿给你电话,说他在网上购物,需要你的信用卡密码,你给她说了,他就购物,如果这个时候,有人也在监听你的电话,他也在购物就等这个密码呢,他也去刷卡,这时候怎么办? 问题都在秘钥的传输方面。 环节越多,出错越容易,能不能砍掉这个秘钥传输的环节? 可以。用公钥加密,也就是用一对儿钥匙。 两把钥匙?用把钥匙开一个锁,这个锁不就是烂锁了吗?并非如此。 现在有两把秘钥:公钥和私钥。 公钥,就是公共的钥匙,这把钥匙谁都可以知道;私钥是本地的,私人的钥匙,只有自己知道,私钥就不发送不传输了,因为不传输也就没有了传输的问题。 比如说,你要发一封email文件给你家人,这个是非常机密的东西,你家人在网上生成了钥匙对儿,也就是公钥和私钥,然后把公钥给你发过来,私钥自己记录好,不要放在网上。 你收到公钥后,用公钥对自己要发出的信息加密,然后发给家人,家人收到后,拿着私钥进行解密,就看到了你的重要信息了。 这里面有几个点,公钥,也是家人发给你的,如果被别人截获了怎么办? 没关系,公钥即使很多人知道没关系的,因为公钥只能加密,而解密的是公钥对应的私钥,也就是说别人知道你的公钥,只是方便他们给你发信息。他们加完密,自己都解不开。 这就是非对称加密的工作原理,因为出现了公钥,这个之前历史上没有的东西,所以,非对称加密也被称为公钥加密。 生成私钥公钥的方法,网上一搜就有了,不必在此赘述。
总结下公钥加密的特点: 1, 公钥和私钥必须成对出现,不能分别单独生成, 2, 公钥任何人都可以知道,私钥只有接收信息的人知道; 3, A发给B信息的过程是:A拿着B的公钥对一段要发出的信息加密,B收到后,拿着自己也就是B的私钥进行解密。 公钥加密有什么用?
比特币的加密方式就是公钥加密。所以你才有什么私钥公钥和地址,公钥可以推出地址,地址推不出公钥,即使推出来也没关系,因为本来公钥就是公共的钥匙,谁想知道都可以。本质上所谓生成比特币的账户,就是生成一个秘钥对儿,有了公钥和私钥,然后公钥再推出个地址,一个比特币的账户就生成了。这个生成账户的方法,比传统金融里去银行开户,方便和安全很多,当然,传统银行也很安全,中心化会对你的账户保护,比特币是人类历史上第一次用技术解决了安全问题。 我们很快会专门去讲比特币的加密原理,今天就简单说一下。 RSA是什么?为什么好多人都会讲到RSA? RSA是非对称加密法里面用的最广泛的一种加密方法,当然,还有别的,比如比特币里还有一个神奇的椭圆曲线加密,就是一种非对称加密法,但不是RSA。曾经,这个椭圆曲线加密的方法选择,受到以太坊发起人vitalik的称赞,他说中本聪可能是蒙的,选的这么好。 RSA加密因为创始人名字的首字母分别是R、S和A所以叫RSA加密,他们发文章的时候用Alice和Bob两人的名字代表A和B,所以密码学里面就形成通用管理,“Alice发一个比特币(或一段信息)给Bob”,这样的句式开始出现。窃听者总被被叫做Eve。 好了,看了上面的内容,其实今天已经明白了非对称加密的主要知识,下面的内容比较困难,各位读者可以选择性阅读。 RSA大概是什么方法?为什么总有专家提到什么“大数的质因数分解”?“大数的质因数分解”和RSA非对称加密有什么关系? 加密过程就是明文的E次方然后mod N。mod代表的是乘法求余数的运算符号。 E和N的组合就是公钥,D和N的组合就是私钥。E取自单词encryption加密,D取自单词Decryption解密,N取自单词number数字。 N=p * q,p和q是质数,很大的质数,所以难以破解,如果是很简单的质数比如2和3,那就太简单了,当然真正运算的时候都是二进制,动辄512bit的质数相乘,这也就是为什么破解私钥很难的原因之一,因为人类暂时没有发现对大整数进行质因数分解的高效方法,所以,RSA比较安全。现在的银行系统的安全也是RSA加密的,N要求大于300位,如果要分解这样一个数,需要的时间单位数量级是亿年,亿万年的时光去破解一个密码,假设科技按照现在的水平没有突破的话。 为什么加上mod N这样的东西?因为没有这个就是个对数问题,很容易求解,如果有了mod N求明文就成了求离散对数的问题,同样的,人类就目前没有找到求离散对数的高效方法。 鉴于之前的文章出现了很多数学公式,今天关于RSA的讲解控制在500字内,这是一个引子,如果你对RSA感兴趣,可以私信沟通也可以去网上搜索更多的资料,但是,对于区块链从业或者是数字货币投资者来说,只需要理解本文的重点部分即可。毕竟,看到离散对数的时候,很多读者已经看不下去了。没关系的,掌握关键,吸收精华即可。 明白非对称加密(公钥加密)对理解比特币的公钥私钥以及钱包和工作原理非常重要,所以今天讲解下非对称加密技术。 试问如果我发出去的是钱,而不是一封信,公钥加密给你,你用私钥打开后可以用,是不是就是比特币?或者反过来问,我发给你一个账本信息,你能打开这个账本信息,于是这个账本信息最后一条写着,我给你转了10个比特币,是不是这条信息就成了你有10个比特币的证明,也就是说这个账本信息本身就证明了你有比特币了?信息就变成了钱,顺着这个思路去思考去理解比特币吧。后面会仔细讲的。 这个世界的大门慢慢在打开,感谢能从隐藏法、移位替换法、维吉尼亚加密法、恩尼格玛机一直同行到现在,比特币和区块链的核心很快就要触碰到了。 |