上一篇我们已经了解了比特币网络的基本思想,就是为每一个比特币建立完整公开的历史交易记录,来解决重复支付的问题,也叫双花问题,整个比特币网络其实都是围绕这么一个核心问题展开。那么接下来就来看看它到底是怎么实现的,这一讲我们会先重点说说账号密码体系,你也会了解到什么是非对称加密?
比特币肯定也得有账号密码对吧,不然没法明确产权到底是谁的,转账的时候跟银行转账差不多,输入账号密码,转给谁,转多少,就可以了。
说到账号密码,过去我们传统的模式大概都是这样,比如你去某个网站注册个账号,先选个账户名,系统判断只要别人没用过就可以注册,然后设置密码。以后每次登陆的时候,网站就判断你输入的和他们之前存储的用户数据能不能匹配上。这就是传统的中心化方式,有个权威的第三方中心来管理。
但是比特币是去中心化网络,所以它并没有一个类似银行的第三方权威,来去管理和核实这些。但是矿工在记账打包区块的时候,它又必须得确认每一笔交易是不是由一个有效账号的主人所发起的。而且显然你也不能把密码发给矿工,因为他无非就是个最近十分钟解出了数学题的幸运用户而已,你给他的话,回头钱就被他取走了。
所以在一个没有中心权威的情况下,到底怎么注册账号,又怎样让大家在不知道你的密码的情况下,还能知道你输的密码是对的呢?
这就要用到非对称加密机制,可以完美的解决上面说的问题。在理解非对称加密之前,首先我们要了解下什么是对称加密。对称不对称这个说法有点抽象,可以简单理解成一个是单密码,一个是双密码。
平时常用的对称加密,加密和解密用的是同一个密码,它很像暗号,比如黄天盖地虎,下一句是宝塔镇河妖。现在很多聊天的时候也喜欢用叠词,比如嗯,和嗯嗯就是不一样的含义。在这几个例子里面,双方都知道暗号的规则,用的是同一个密码解密,这个就叫对称。这种对称加密最大的风险,在于双方都得知道密码,所以在传输密码的过程中就会有很大的泄漏风险。人类历史上几千年以来基本上都在用的都是这种对称加密方式。
直到1977年,三个美国mit的教授才发明了新的非对称加密方式,叫做RSA,R、S、A分别是这三个人的名字的首字母。
怎么个非对称呢,非对称加密有两个密码,一个是不公开的,叫私钥,只有你自己保管。还有一个公开了也没关系的密码,叫公钥。他的机制是,私钥加密的东西,不能用私钥解密,而只能用公钥解密。反过来也是,公钥加密的东西,不能用公钥解密,而只能用私钥解密。每一个公钥只有唯一的一个私钥跟他对应。基于这种机制,比特币就把那个公开的密码直接当作了账号,通常也叫地址。所以可以理解成,原本密码是密码,账号是账号。现在呢,不但密码是密码,账号也具备密码的功能。
当你发起转账的时候,你只要用私钥加密一段信息,任何人拿到以后,都可以用你公开的公钥,去解密一下,看看解出来的是不是和你说的一样就行了。举个例子,为了证明我是某个公开账户的所有者,我就用私钥加密一段话,比如“比特币就是数字黄金”这么一句话,我把这句话和加密后的那段乱码两个都发布出去,任何收到这个信息的人,不需要知道我的私钥,他们就可以用公开的账户,也就是公钥,解密下那段乱码,发现解出来的真的是“比特币就是数字黄金”这句话,就可以相信我是这个账户的真正所有者。你看,比特币就是基于这么一种巧妙的密码学原理,一次性同时解决了账号的建立和密码的保密问题。
这样一套体系安不安全呢?这个就要说到非对称加密背后的数学原理,那就是大数分解难题。
大数分解难题,指的就是给你一个超级大的数字,找不到捷径把他拆成两个质数相乘。我们知道,计算机把两个很大的数字相乘很容易,但是如果要把一个很大的数字反拆回来是极其困难的。比如把手机通讯录里面随便挑200个手机号码连在一起成一个220位的数字,你想想如果要把它拆成两个质数相乘,除了穷举一个个试没有更好的办法,而这个运算量是及其巨大的。大到哪怕宇宙大爆炸就开始算,到今天也还仍然没有穷举完。
非对称加密,就是把两个很大的几百位的质数相乘,然后把这个乘出来的结果当作公钥,公开给大家,然后把那相乘的数字做一些加工变成私钥。谁也没有办法通过公钥猜出私钥,但是要验证是否匹配却很容易。
你可能会问,量子计算出来了会怎样,量子可以同时存在不同的空间,可以支持并行计算,所以它可以秒解这种数学难题。
那怎么办?首先这东西还早着呢,其次就算实现了,也有比比特币更值得攻击的东西。因为其实非对称加密并不是只有比特币在用,目前全世界几乎所有的金融和通信等重要的系统都在用非对称加密。比如我们都知道苹果是封闭系统,只有苹果审核通过的应用才能安装在苹果手机上,那就是通过非对称加密,每个手机上已经就有公钥,苹果保管那个私钥,一个app只有被苹果那个私钥加密过,才能被手机上的公钥识别出来。包括网银用的那个u盾,用的时候不是要安装证书吗,其实就是给你装一个公钥,这样才能保证你发送的账户信息在发送过程中,即使被截获也没关系,因为只有银行服务器的私钥才能解的出来。
所以如果量子计算出来的话,显然攻击其他金融和通信系统回避攻击比特币更有利可图。而且,等他快出来的时候,大家也会重新升级新的标准来适应量子时代。
总结一下,这一篇我们介绍了比特币网络的账号密码机制,以及背后的非对称加密技术原理。
要解决的事,在一个没有中心权威机构的情况下,怎样建立账号,同时又要在不给任何人透露密码的情况下,能够证明某个账号的归属权。因此采取了非对称加密机制,对称加密只有一个密码,双方都必须知道,所以传输的时候容易泄漏。而非对称加密有两个密码,一个是自己保管的叫私钥,一个是公开的叫公钥,私钥加密的信息只能用公钥解密,公钥加密的信息只能用唯一的私钥解密。比特币网络将公钥当成账号来使用,向所有人公开,矿工只要能够用公钥,正确解密私钥加密的信息,就证明发起交易的人就是账号的主人。
非对称加密是基于大数分解困难这个难题建立的,其实比特币用的并不是标准的rsa算法,而是升级后的椭圆曲线加密算法,这个讲起来太复杂了,有兴趣的可以自己去了解。本质上跟rsa的原理一样,他的基础就是一道非常难解的数学难题。这个是比特币网络唯一用到的两个数学原理之一。这种机制已经广泛应用在各种重要的银行、通信等等系统当中,所以即使量子计算出现,要攻击也轮不到比特币。所以不管从数学的角度还是从市场博弈的角度来讲,比特币的账号密码体系都是非常安全的。
你看他又是沿着一个特定问题找解决办法的自然推到过程,是不是有所启发呢。
网友评论