主页 > imtoken官方版 > 比特币防篡改技术详解

比特币防篡改技术详解

imtoken官方版 2023-01-17 11:12:21

毋庸置疑,目前区块链技术的火爆,而比特币作为中本聪的“儿子”,自然是区块链技术研究中不可回避的话题。比特币是一个完全开放和去中心化的金融系统。它曾遭受全球黑客攻击,至今仍能安全稳定运行(除了2010年的一次大整数溢出漏洞攻击),这本身就证明了比特币货币体系的安全性和稳定性。这套完整的防篡改和防损坏安全系统是其最大的安全屏障。让我们逐步揭开比特币防篡改功能的面纱,体验比特币设计的奥秘。

1.非对称加密算法

首先我们来回顾一下非对称加密的概念:非对称加密有一对密钥,分为公钥和私钥,两者是一一对应的关系。顾名思义,公钥是可以公开的密钥;私钥必须自己严格保管。一旦暴露,就相当于知道银行卡密码的可怕后果。

有两种使用公钥和私钥的方法:

一种是用公钥加密数据,用私钥解密数据:Tom想给Jerry发消息,Jerry先把自己的公钥分发给Tom,Tom通过Jerry的公钥把明文数据加密成密文,并且只有与 Jerry's 匹配的私钥。将密文解密为明文的密钥。即使有人截获了 Jerry 的公钥,它也只能用于向 Jerry 发送加密数据。没有得到杰瑞的私钥,就无法破解汤姆和杰瑞通信的密文。

刘冉:比特币防篡改技术详解

图 01

另一种用法是私钥签名和公钥验证:现在 Jerry 想依次向 Tom 发送消息。为了确保没有人篡改发送的消息,Jerry 使用私钥在明文数据上生成签名(一串字符)。),将签名和明文数据发送给 Tom。Tom 收到明文消息后,首先使用 Jerry 的公钥验证签名是否正确。如果有人篡改信息,签名验证将失败,Tom 知道消息已被篡改。. 当然,我们可以让 Tom 和 Jerry 相互交换他们的公钥比特币算力计算,这样双方在通信时都可以加密和签名,以确保双重安全。

刘冉:比特币防篡改技术详解

图 02

目前常用的非对称加密算法有RSA、ECC和国密SM2算法。比特币使用ECC椭圆曲线加密算法。用户发起的每一笔交易都需要用自己的私钥进行签名。每个参与记账的节点都可以验证交易是否正确,以及签名信息是否经过用户公钥的验证。篡改。这就完成了比特币防篡改的第一步:单笔交易的防篡改。

那么为什么交易信息没有加密呢?那是因为每个参与记账的节点都需要验证交易的正确性和完整性。目前,参与比特币记账的节点超过 40 万个,即 40 万笔交易需要用 40 万个公钥加密。这样的计算量和耗时,不仅系统难以承受,而且影响记账节点的可扩展性。所以当前比特币系统中的所有交易都是明文,但匿名性弥补了安全性的不足。当然,这方面的缺点也有解决办法。具体可参考“零知识证明”、“同态加密”等相关知识,此处不再赘述。

此外,由于比特币交易的匿名性,私钥签名成为唯一的标识。如果私钥丢失,就无法证明比特币是你的,你的比特币就不再是你的了。

2.默克尔树结构

如果说比特币的第一道防线是通过密钥签名防止单笔交易被篡改;那么它的第二道防线就是通过 Merkle 算法进一步实现区块抗篡改。

比特币交易信息的存储单元称为区块,一个区块包含多笔交易(具体数量与交易的频率和交易数据的大小有关)。

刘冉:比特币防篡改技术详解

图 03

如图所示,一棵默克尔树包含一个根节点(Merkle Root)、多级中间节点和叶节点。交易信息位于叶节点中。一个区块中的 N 个交易成对聚合,进行哈希运算。运算结果作为 Merkle 树的中间节点。中间节点成对聚合进行Hash,最终生成唯一的根节点Merkle Root。. Merkle 树的特点是当任何一个叶子节点发生变化时,其变化都会影响上层的 Hash 运算结果。最后,根节点的Hash值也会通过层层传输发生变化。基于这个特点,比特币系统就牢牢地建立起来了。区块中的所有交易都聚合成一个整体,

3.区块链的链结构

如图 03 所示,Merkle 树结构如图所示,但不只是区块头中 Merkle Root 的值,其他组件是干什么用的?这是为了理解俗称“挖矿”的概念。挖矿实际上是一种哈希操作。当记账节点生成区块时,首先要做的就是计算默克尔树根节点的哈希值。当然,挖矿远非简单。出块节奏(考虑出块速度和p2p节点同步)会迫使记账节点增加计算难度。基于Merkle Hash运算,需要记账节点在根节点Hash值上加上一个随机数,最终得到一个满足特定要求的目标Hash值作为区块的ID(例如,目标Hash值的前4位必须为0000,即难度系数)。这就需要记账节点不断产生随机数来匹配目标Hash值的要求。算力越高,越有可能先计算出目标Hash值。记账节点挖矿的过程是首先尝试找到满足难度系数的目标Hash值的过程。第一个记账节点计算出目标哈希(挖矿的矿工)并得到其他记账节点的验证,会得到系统奖励的比特币来完成整个挖矿过程,这会消耗大量的算力,是也是 Pow 算法被诟病的主要原因。这就需要记账节点不断产生随机数来匹配目标Hash值的要求。算力越高,越有可能先计算出目标Hash值。记账节点挖矿的过程是首先尝试找到满足难度系数的目标Hash值的过程。第一个记账节点计算出目标哈希(挖矿的矿工)并得到其他记账节点的验证,会得到系统奖励的比特币来完成整个挖矿过程,这会消耗大量的算力,是也是 Pow 算法被诟病的主要原因。这就需要记账节点不断产生随机数来匹配目标Hash值的要求。算力越高,越有可能先计算出目标Hash值。记账节点挖矿的过程是首先尝试找到满足难度系数的目标Hash值的过程。第一个记账节点计算出目标哈希(挖矿的矿工)并得到其他记账节点的验证,会得到系统奖励的比特币来完成整个挖矿过程,这会消耗大量的算力,是也是 Pow 算法被诟病的主要原因。越有可能先计算目标Hash值。记账节点挖矿的过程是首先尝试找到满足难度系数的目标Hash值的过程。第一个记账节点计算出目标哈希(挖矿的矿工)并得到其他记账节点的验证,会得到系统奖励的比特币来完成整个挖矿过程,这会消耗大量的算力,是也是 Pow 算法被诟病的主要原因。越有可能先计算目标Hash值。记账节点挖矿的过程是首先尝试找到满足难度系数的目标Hash值的过程。第一个记账节点计算出目标哈希(挖矿的矿工)并得到其他记账节点的验证,会得到系统奖励的比特币来完成整个挖矿过程,这会消耗大量的算力,是也是 Pow 算法被诟病的主要原因。

区块链之所以称为链比特币算力计算,是因为每个区块都保存了前一个区块的目标哈希值(创世区块没有前一个哈希值)。如果某个区块的某笔交易被篡改,由于 Merkle 树算法,该区块的目标 Hash 值会发生变化,从而引发连锁反应。基于这个块,所有后续块的哈希值都会发生变化,任何记账节点都可以很容易地发现账本被篡改(如图0 4)所示。这样可以保证所有块都被篡改。证明。

刘冉:比特币防篡改技术详解

图 04

4.51%算力攻击

上面提到的多重防篡改机制让我们领略了比特币设计的严谨。通过一个循环的算法控制,账本很难被篡改。

那么,基于 POW 算法的比特币系统是否完美无缺?答案是否定的。

事实上,所有基于 Pow 算法的区块链系统,都有一个天然的弱点,那就是著名的 51% 攻击。如果有人控制了全网 50% 以上的算力(越多越容易控制整个系统),他就能比别人更快地找到生成区块的目标哈希值。这意味着他实际上拥有决定哪个区块有效的权力,并且可以对自己的交易发起“双花”攻击(51%攻击,双花攻击概念太复杂,而且还涉及到比特币UTXO的记账)方法单独写就够了,这篇文章主要讲防篡改机制,这里就不一一列举了。网上有很多文章。)简单的描述就是不用花钱也能做交易。这不再是技术问题,而是游戏问题,因为一次攻击会导致像比特币这样的去中心化代币完全失去可信度,没有信用背书的比特币将变得一文不值。当一个人以巨大的成本(通过购买矿机或控制别人的矿机)获得超过 50% 的算力,并购买大量比特币时,他们不会冒险破坏比特币来攻击整个比特币系统。因为这样做不仅伤了别人,也没有任何好处,而且目前比特币的算力还在增长,想要控制一半以上的算力已经越来越难了。当然,一些比特币的分叉系统,或者一些使用 Pow 算法的小型代币系统,

币圈大佬曾经说过:“区块链底层是数理逻辑,中层是哲学思维,上层是神学信仰。” 上面介绍的比特币防篡改机制,成功地将区块链技术从数理逻辑提升到充满博弈论的哲学思维,而我还在区块链技术的底层挣扎。币圈一日,链圈一年,科技之路任重道远,愿与同路人分享。