BTC密码学原理

比特币(bitcion):基于去中心化,以区块链作为底层技术的加密货币。

hash(哈希)

hash,可以简单理解为对某一事物的投影操作,即A-->Hash(A)
哈希函数(cryptographic hash function)主要有三个特性:

  • collision resistance(碰撞反抗)
  • hiding(隐秘性)
  • puzzle friendly(谜题友好)

哈希碰撞:
给定一个哈希函数,不同的输入,得到相同的输出,则称为 hash 碰撞。
如:给定 x 和 y,且 x!=y,可以得到 Hash(x)=Hash(y)。

collision resistance

collision resistance(碰撞反抗):表示对哈希碰撞具有抗碰撞性
在实际应用中,哈希碰撞基本上难以避免,我们只要保证给定 x,很难找到一个 y,能够在 x!=y 的前提下,使得 Hash(x)=Hash(y),就认为其是 collision resistance 的。

用处:如果我们自己有一条信息 x,我们希望别人知道我有 x 但不想让别人知道 x 具体是什么,就可以通过告诉其 Hash(x),由于该性质,保证了 x!=y 时,Hash(x)和 Hash(y)是不相等的。我们只需要告诉别人 Hash(x)即可,对方可以通过 Hash(x)知道你确实知道 x 这个信息,但他无法(很难)通过 Hash(x)反推出 x。

hiding

我们认为,给定 x 和 Hash(),可以很容易得到 Hash(x),但没有办法在已知 Hash(x)和 Hash()的情况下,反推出 x 的具体取值,当然这也是一个理想的情况。

digital commitment(数据保证):collision resistance + hiding
在视频中,肖老师提到关于股市预 测的案例,某个人对某个股票进行涨停预测,我们如何保证能够知晓其预测是否准确?最简单的是提前公布, 等待实际结果出现后验证。但实际中,当提前发布预测后,可能会由于预测者本身对股市实际结果造成影响。 所以,应该将提前将其写于纸上并密封,交给第三方机构保管,等到实际结果出现后开启密封与实际对比,这 就是 digital commitment。而第三方机构需要能够使人信服,在实际生活中,有很多场景并不存在一个这样的 第三方机构,而区块链技术正为此提供了一个很好的解决方法。 我们把预测结果看作 x,提前公布 Hash(x),等 到预测结果发生时间来临后,公布 x,如果根据 x 可以得到公布的 Hash(x),则说明公布的 x 确实为所预先预测的 内容。从而,我们可以实际进行判断预测是否准确。实际使用中,为了 x 足够大,会对 x 进行“加盐”,对 x 拼接一 个 nonce,对其整体取 Hash## puzzle friendly
在比特币系统中,还需要第三个性质 Puzzle friendly。该性质要求哈希值计算事先不可预测, 仅仅根据输入很难预测出输出。例如:我们需要一个哈希值,存在于某一个范围内,只能通过不停运算查找出来。
该性质保证了比特币系统中,只能通过“挖矿”获得比特币。
:::info
挖矿:试图通过暴力手段不断尝试,直到得到一个符合约定规则的 hash 值。这也是为什么挖矿是一个非常消耗算力的过程。
:::
也就是说,该性质保证了工作量证明(POW)机制 可以运行下去【“挖矿难,但验证易”】。

SHA-256:
在比特币系统中采用 SHA-256 哈希函数。该函数具备以上三个特性。
sha256 具有极强的抗碰撞性。目前为止,世界上最强的超级计算机也不具备人为制作碰撞的能力。

签名

比特币中账户管理 在第三方中心化系统中,账户开通依赖于第三方。但去中心化的比特币系统中,很明显不能 进行“申请账户”。
在比特币系统中,申请账户是用户自己来处理的,即自己创建一个公钥-私钥对(来自于非对称加密体系 asymmetric encryption algorithm)。公钥和私钥的应用保证了“签名”的应用。

1
2
对称加密体系:提前商量好一个秘钥,加密和解密采用同一个秘钥。
存在问题:秘钥显然不能以明文的方式在网络上传输,容易被盗取。

非对称加密体系:
用接收方的公钥加密,接收方的私钥解密。这就解决了对称加密体系中秘钥分发的问题
pic.1708405707415

当在比特币网络中进行转账时,通过 “签名”可以明确是由哪个账户转出的,从而防止不良分子对其他账户比特币的盗取

1
加密,解决的是秘钥分发的问题;签名,解决的是明确由哪个账户转出的问题

在发布交易时,通过发起方私钥签名,其他人可以根据发起方公钥进行验证,从而保证该交易由发起方发起

也就是说,只有拥有私钥,才能将该账户中的比特币转走。 【注意:比特币系统中,很难通过生成大量公私钥对来获取他人私钥】

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×