基石:比特币背后好玩的密码学

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

最新评论(评论仅代表用户观点)

更多
暂无评论