当前位置:首页区块链比特币中的密码学原理

比特币中的密码学原理

人们通常把比特币称为加密货币(crypto-currency)。但着实加密货币是不加密的,由于比特币 “账本” 上纪录的所有信息,包罗生意账户的地址、转账的金额等,都是果然的。

既然云云,为什么要称它为加密货币呢?

在回覆这个问题之前,我们先来学习密码学的两个手艺:哈希、署名。

哈希

简朴来说,哈希就是把随便长度的输入值,通过散列算法(哈希函数)盘算出牢固长度的哈希值。假设哈希函数为 H,输入值为 m,哈希值为 Digest.

哈希常被应用于存储和查找,我们对要存储的信息做一次哈希,然后将哈希值作为存储地址。这样以后要查找这条信息的时刻,只要再算一次哈希,就能快速查找到它的存储地址。

两个性子

比特币和哈希有什么关系?

首先我们要领会哈希函数的两个性子:

  • Collision Resistance
  • Hiding

Collision Resistance

即:哈希很难碰撞。

现有哈希函数 H,这就叫哈希碰撞。

比特币中的密码学原理

为什么会发生哈希碰撞?

前面提到,哈希是把随便长度的输入值,通过哈希函数盘算出牢固长度的哈希值。

譬喻说,我们天生的哈希值是 256 位,那么:

  • 输出空间是虽然很大,但照样一个有限的数字
  • 输入空间却是无限大的(随便长度)

以是理论上,由于输入空间大于输出空间,以是一定是存在哈希碰撞的。

发生碰撞的概率有多大?

设 d 是输出空间,n 是碰撞次数,那么不碰撞的概率为:

然而,现在人们寻找哈希碰撞的方式照样 brute force(暴力图解)。但这事情量异常大,在现实中是不能行的。虽然,有一些哈希函数已经被破解了,好比 md5。

在比特币中的作用

区块链的每个区块,都纪录着上一个区块信息的哈希值。

由于哈希碰撞的概率异常小,也就是若是某个区块上的信息发生了转变,那么盘算出的哈希值一定也会变。以是,若是区块被改动,下个区块的信息也会变,下下个区块的信息也会变,环环相扣。

牵一发而动全身,这可不行。这就保证了区块链的 “不能改动”。

其它应用场景

现在有一个需求:

往服务器存文件,良久之后再下载回来,怎么保证服务器上的文件不会被人改动?

很简朴。我们只要把文件内容的哈希值存在内陆,究竟哈希值只是一个字符串,占不了若干空间。然后下载文件的时刻,重新盘算哈希值,并与内陆的哈希值举行对比,若是相同,就代表没有被改动。

Hiding

即:哈希具有隐匿性。

哈希历程不能逆

我们有一个输入值 m,就可以快速通过哈希函数求得哈希值。然则我们若是只知道哈希值,是无法倒推 m 的,这就是哈希历程的不能逆性。

换句话说,哈希值不会泄露输入值,这保证了平安性。上面说过,我们只能通过暴力图解,遍历所有的输入,直到找到相同的哈希值,才气找到这个输入值,成本异常高。

两个应用

基于以上 2 个性子(碰撞难、不能逆),再来先容 2 个应用:

  • Digital Commitment
  • Puzzle Friend

Digital Commitment

即:数字准许。这是什么呢?

有个大神,说自己可以展望股市,怎么证实他的展望是否准确呢?

一种方式是,让他提前一天宣布展望效果,等到第二天看看就能验证了。但这有一个问题:由于他是大神,以是若是提前果然,一定会影响市场情绪。也就是说,展望效果不能提前果然。

若是要他提前展望,却不能提前果然,那怎么才气保证这个展望一直没有被改动呢?于是我们就让大神把展望提前写在一个信封里,放到公证机构,等到第二天再打开看效果。

但着实在密码学中,这就是一次哈希。我们可以把大神的展望算出哈希值(写入信封),然后果然这个哈希值(放到公正机构)。这时刻,人人并不能通过哈希值来倒推大神的展望(不能逆),第二天等股市收盘后大神再果然自己的展望,只要这个展望的哈希值和之前果然的哈希值相等,就能保证没被篡悔改。

加一个随机数

股票的数目一共就几千只,哈希函数的输入空间很小,人们很容易通过暴力图解出大神的展望,这就相当于 “信封” 可能会被人偷看。针对这个问题,常用的方式是在展望内容(输入值)的后面拼接一个随机数(nonce),即

这样一来,第二天大神只要宣布展望效果和随机数,人人就可以举行验证了。

Puzzle Friend

还可以玩猜谜游戏(puzzle)。

游戏规则

我们已经知道,通过哈希值去求解输入值,只能暴力碰撞,这是异常难题的。那我们不妨就降低一点难度,只要哈希值落在某个局限之内就行了,这样难度总小一些了吧?

好比说,若是哈希值的前 k 位都是 0,就算知足要求。我们称这个 k 为游戏难度,假设难度是 k=6,那么谁先找到一个输入值 m,使得 H(m) = 000000…(开头至少 6 个零),就胜出。

什么样的输入值可以算出这样的哈希值呢?没有捷径,只能大量地去试。

Proof of Work

现实上,这个游戏在比特币中,就是赫赫**的——挖矿!

比特币区块链的每个区块头(header)除了包罗一些区块信息,还包罗一个随机数(nonce),这个 nonce 就是挖矿的人们通过 “游戏竞赛” 的方式得出的。

谁先找到一个 nonce,然后把这个 nonce 和 header 里的其它信息拼在一起作为输入值做一次哈希,若是哈希值知足条件,就胜出(获得打包区块的权力),并可以把自己辛劳算出来的 nonce 写入区块头。

只要有人找到这个 nonce 并公布出去,其他人验证是很简朴的,只需要盘算哈希值是否知足条件就行了,由于举行一次哈希运算是异常快的,即 difficult to SOLve,but easy to verify。

以是挖矿就是一直地去试随机数,直到找到知足条件的为止。一样平常来说,谁的事情量对照大(试得多),谁就更有可能胜出,以是这个历程又被称为事情量证实(Proof of Work),即 POW。

其中,比特币用的哈希算法是 SHA256(Secure Hash Algorithm),知足以上性子。

环保问题

比特币通过 POW 机制来维持整个区块链系统,这也使介入挖矿的人必须不停提高自己的算力,甚至泛起了全职矿工、大矿场。人人没日没夜地盘算着,耗电量伟大。

从这个角度来看,比特币的区块链系统似乎是不太环保的。

署名

讲完哈希,我们再看看另一个手艺:数字署名。

我们在一样平常生涯中,若是想开户,只要带上证件去银行解决即可,这是中心化。

但比特币中,我们自己就可以完成开户,不需要任何人的批准,这就是去中心化。

历程很简朴,只要确立一对公钥(public key)和私钥(private key)就好了。

有了一对公钥和私钥,能做两件事:

  • 加密解密
  • 署名验证

加密解密

着实最早的时刻,只有对称加密,即加密息争密都用的统一个秘钥。这有一个条件,就是必须有一个平安的渠道来分发秘钥,这异常不利便,也是对称加密**的弱点。

厥后人们发现了非对称加密,即天生一对公钥和私钥,加密用公钥,解密用私钥。公钥是果然的,任何人可以获取公钥,然后把信息加密后再传给服务器。服务器收到信息后,通过私钥来解密。

比特币中的密码学原理1

由于私钥是保密的,只被保管在服务器端,以是其他人无法解密信息。纵然有人在中途截获信息举行改动(加密后的信息),服务器收到后一定也就解不出来了,就会放弃这个信息并报错。

署名验证

开头提到,比特币区块链上的生意内容是不加密的,那我们要公钥和私钥干嘛?

和上面反一下,加密用私钥,解密用公钥,就可以用来做署名验证。

比特币中的密码学原理2

我先把我的公钥发给人人,然后用我的私钥来加密一条信息,并把加密后的信息发出去。人人收到后,只要用我的公钥去解密,若是能解出来,就能验证这条信息是我发的。

在比特币中,我提议的转账会先用自己的私钥做署名,然后再广播出去,这样人人就可以用我的公钥来验证这条操作确实是我本人提议的。

以是,若是你正在投资比特币,一定要珍爱好私钥!

另外,在天生公钥和私钥的时刻,需要一个好的随机源(a good source of randomness),否则前面的分析就不确立了。在比特币系统中,不仅在发生公钥和私钥的时刻需要好的随机源,在署名的时刻也需要一个好的随机源,否则就容易泄露私钥。

比特币的署名,一样平常是先对信息举行哈希(随机源),再对哈希值署名。

若是以为这篇文章对你有辅助,恳请协助点赞、转发,码字不易,异常谢谢!

又有比特幣ETF通關?? 可望加速美國SEC放行!!

天下縱橫談      請鎖定天下衛視 洛杉磯  國語1台,週日晚上 6:30  粵語2台, 週日晚上 7:30   無線3台, 週日晚上 7:30 Bitcoin 比特幣過去一年升勢淩厲,價格由20020年初約7,000美元,攀升至今年突破50,000美元大關。如看好Bitcoin或其背後的區塊鏈技術,除

温馨提示:

文章标题:比特币中的密码学原理

文章链接:https://www.btchangqing.cn/220694.html

更新时间:2021年03月29日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

为什么Filecoin今年上涨云云之快?谜底在这里

2021-3-29 14:05:16

区块链

以太坊2.0 和火币的生态价值

2021-3-29 14:12:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索