区块链:对称加密和非对称加密
Posted 码农视角
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链:对称加密和非对称加密相关的知识,希望对你有一定的参考价值。
今天我们聊一下加密的一些概念。加密是区块链的基础知识之一,不过,在了解加密前,先忽略你所了解的区块链的所有概念。
加密分为对称加密和非对称加密,生活中我们都会遇见。
一
对称加密
对称加密是最常见的一个方法,对称加密指的是解密是加密的逆过程,只要知道加密算法和加密因子,就可以破解密码了。
比如,英文就可以认为是中文的密码,当我说 我爱你 时,我可以说 “I Love you "。所有懂得这个对应关系的,都会快速解密。
中英文之间的对应关系是公开的,大家都可以换算,如果我不想让别人知道呢?
那么我就可以用每一个字母的下一个字母来代替,这样大家是看不懂“J MPWF ZPV”了,当我们把每个字母后退一个后,又变成了“I LOVE YOU”。
所以,对于对称加密来说,解密就是加密逆过程。
我只要知道了你的加密方法,我就可以根据密文推算出你的原文来。
这个方法人类很久前就用了,最有名的肯定是凯撒密码。
这个方法最大的问题是,如果你用同样的方法加密,这样我只要猜出了你的加密算法,我就破解了你所有的密文。
所以,对称加密需要经常换加密算法(或者加密因子),同时又要把加密算法(加密因子)通知需要解密的人。
这样问题来了,因为这个通知过程非常不安全。
对于安全人员来说,我只要去截获你的加密算法就好了。反正如果你的加密算法不传播出去,你传播再多密文也没有意义。
那么有没有什么方法,我可以大胆的,公开的传播密文(加密后的文字)以及加密算法呢?
有的,聪明的人类发明了非对称加密。
二
非对称加密
非对称加密,也就是解密并不是加密的逆过程。
如果加密是A的话,那么解密就(必须)是B。同时,如果加密是B的话,解密就必须是A。这其中,我们选A作为我的私钥,私密保持,不告诉任何人,而B作为公钥,大肆宣传,让全世界都知道。
而A永远不等于B。
在这种情况下,你要如何传递一个信息呢?
比如,你是美国的情报员甲,你要传递一个信息给远在德国的间谍乙。如何做呢?
很简单,你只需要用乙的公钥加密你的信息,然后大肆发送就可以了。任何人都可以看到这个信息,不过,只有拥有的乙的私钥的人,才可以看懂这个信息:希特勒是个魂淡。
是不是很简单?如果乙要回复甲的信息也很简单,乙只要用甲的公钥加密,然后大肆发送就可以了,反正除了你谁都看不懂:美国也是魂淡。
三
助记词和助记码
公钥你不需要记忆,这个是会大肆宣传的,肯定会有机构来登记所有人的公钥,就像YAHOO曾经做过的那样。
那么私钥应该如何处理呢?私钥太重要了,只要获得了私钥,就获得了所有你的信息。
目前保护私钥还是用的很传统的方法,也就是对称加密。
方法1:助记词,用一串容易记忆的字符串(Man Always Remember Love Because Of Romance Only),用对称加密方法对私钥进行加密,这样你只要记住助记词,就记住了打开私钥的方法。
什么?你记不住?那么这个助记词就很无奈了,毕竟人家叫助记词呀。
那就方法2:密码,用你的生日,你女朋友的生日做为密码,用对称加密的方法对私钥进行加密。只要你记住你的生日或者你女朋友的生日就好了。
所以,助记词或者密码,是用来管理你的私钥的,并不是私钥的一部分。
那有没有其他的方法呢?有。
比如用笔,记下你的私钥,然后保存到保险箱里。
又比如把它刻在石头上,然后把石头放在保险箱里。
四
区块链
区块链就是一些区块, 那么区块为什么属于你?
而所谓的钱包就是帮你管理私钥的工具。
五
小贴士
破解这个私钥(AES256)有多难呢?用数字来说话吧,这个复杂的是2^256。
3×10^23等于宇宙中恒星的数量,大于地球中沙子的数量。2^256>2^(10*25)>10^(3*25)=10^75>>>3×10^23
现在问题来了,假设你能够把每一粒沙子做出一个存储设备,存一个值。你只能存储3*10^23个不同的答案,而你没法全部试一遍,(只考虑存储)。如果是1秒钟尝试20亿亿次不同的组合。10^75/(20*10^8*10^8*86400*365)=10^58/86400/365/2>10^50年。
这么长时间远远大于太阳的寿命,6*10^9亿年。
六
如何破解私钥
那么,是不是私钥就不可破解呢?当然可以,这就要从私钥的保存上去下手了。
不管是助记词还是密码还是保险柜都是可以破解的。
还有诱惑,比如美女什么的,还是威胁,比如使劲打一顿。
以上是关于区块链:对称加密和非对称加密的主要内容,如果未能解决你的问题,请参考以下文章