主页 > 苹果imtoken怎么下载 > 为什么比特币是防篡改的?

为什么比特币是防篡改的?

苹果imtoken怎么下载 2023-01-17 05:15:09

比特币(Bitcoin)是一种加密货币,是一种分布式数字资产。自中本聪发布 Bitcoin1 至今已有 10 多年。一些读者可能接触过区块链技术,甚至投资过数字资产。货币资产。今天的区块链总市值已经达到了2700亿美元比特币非对称加密算法,比特币的市值也达到了1700亿2。但是,比特币使用的底层技术其实很简单,只是巧妙地结合了这些技术。

为什么比特币可以防篡改?

图 1 - 比特币

如果我们对比特币等区块链技术稍加了解,就会发现它是一个设计巧妙的分布式数据库。作为运行在公共网络上的分布式数据库,比特币等区块链网络面临来自网络中恶意节点的攻击。因为比特币需要面对复杂的网络环境和不可靠的节点,所以在设计和实现上也有所响应。我们可以看到它是如何结合现有技术来防止恶意节点进行交易和账户数据的。篡改。

比特币网络主要使用以下两种技术来保证用户签名的交易和历史上发生的交易不会被攻击者篡改:

非对称加密

非对称加密算法 3 是一种广泛使用的加密技术。TLS证书和电子签名等场景使用非对称加密算法来保证安全。非对称加密算法包含公钥(Public Key)和私钥(Secret Key)。用私钥加密的数据只能用公钥解密,用公钥解密的数据也只能用私钥解密。

比特币非对称加密算法

为什么比特币可以防篡改?

图 2 - 非对称加密功能

比特币使用非对称加密算法来保证每笔交易的安全。网络中的每个帐户(地址)都是一对密钥中的一个公钥。帐户的所有者将持有私钥。下面是一对刚生成的比特币地址和私钥4:

Address:     13RTT8MsbAj7o4zL7w4DNNuuwhgGgHqLnK
Private Key: 469d998dd4db3dfdd411fa56574e52b6be318f993ca696cc5c683c45e8e147eb

需要注意的是,利用网站生成比特币地址和私钥是极其危险的。我们不知道网站是否会存储私钥,所以建议使用比特币客户端生成公私钥对。

任何人都可以通过上述地址 13RTT8MsbAj7o4zL7w4DNuuwhgGgHqLnK 向该账户转账;账户持有人还可以使用私钥签署交易以将资金转移到其他地址。当我们要向比特币网络提交新的交易时,我们首先需要构建一个如下所示的交易结构:

{
   "txid":"5be7a9e47f56c98e5297a44df52da0475f448ece98bb51489103cdf70653092f",
   "hash":"5be7a9e47f56c98e5297a44df52da0475f448ece98bb51489103cdf70653092f",
   "version":1,
   "size":224,
   "vsize":224,
   "locktime":0,
   "vin": [...],
   "vout": [...],
   "hex":"0100000001a90b4101e6cbb75e1ff885b6358264627581e9f96db9ae609acec98d72422067000000006b483045022100c42c89eb2b10aeefe27caea63f562837b20290f0a095bda39bec37f2651af56b02204ee4260e81e31947d9297e7e9e027a231f5a7ae5e21015aabfdbdb9c6bbcc76e0121025e6e9ba5111117d49cfca477b9a0a5fba1dfcd18ef91724bc963f709c52128c4ffffffff02a037a0000000000017a91477df4f8c95e3d35a414d7946362460d3844c2c3187e6f6030b000000001976a914aba7915d5964406e8a02c3202f1f8a4a63e95c1388ac00000000",
   "blockhash":"0000000000000000000c23ca00756364067ce5e815deb5982969df476bfc0b5c",
   "confirmations":5,
   "time":1521981077,
   "blocktime":1521981077
}

比特币非对称加密算法

接下来,我们可以使用我们持有的私钥对整个交易中的所有字段进行签名,然后将签名与交易打包并发送给网络,由比特币网络进行确认。

在所有比特币地址中,35hK24tcLEWcgNA4JxpvbkNkoAcDGqQPsP地址目前持有超过25万个比特币5,目前市值约为20亿美元。在只知道地址的情况下,我们计算一下获取地址对应的私钥需要多长时间。比特币的私钥共有 256 位,或 2256 种可能性:

115792089237316195423570985008687907853269984665640564039457584007913129639936115792089237316195423570985008687907853269984665640564039457584007913129639936

目前我们还没有更快的破解方法,只能通过暴力破解来计算私钥。假设我们使用的是 IBM 2018 年推出的超级计算机 Summit6,每秒可以进行 1.4∗1017 次浮点计算,假设计算机每秒可以计算相同数量的公私钥对(计算公私钥对远比浮点计算复杂),需要以下时间才能找到20亿美元资产所在地址对应的私钥:

1.15∗1077/365∗86400∗1.4∗1017=2.9∗1052

我们整个宇宙的存在时间只有破解私钥时间的十亿分之一。因此,在当前算力没有革命性突破的前提下,只能通过暴力破解获得公钥对应的私钥。理论上可以,实际上完全不可能7。

共识算法

比特币非对称加密算法

MySQL等数据库以行为单位存储数据,而分布式数据库比特币的基本存储单位是块。区块通过哈希指针连接起来,形成一棵树,如下图所示,图中最长的绿色链是网络的主链。

为什么比特币可以防篡改?

图 3 - 区块链和主链

如何让网络中的所有节点对下一个区块的内容达成共识,是比特币需要解决的关键问题。只有让节点对数据达成一致才能保证过去的交易不会被篡改,但作为公网运营的分布式数据库,其面临的分布式数据库非常复杂,需要解决拜占庭将军问题下的分布式一致性问题。

拜占庭将军问题是 Leslie Lamport 在拜占庭将军问题论文中提出的分布式域容错问题,是分布式域中最复杂、最严格的容错模型8。在该模型下,系统不会对集群中的节点施加任何限制。他们可以向其他节点发送随机数据、错误数据,或者选择不响应其他节点的请求。这些不可预测的行为使容错成为问题。变得更加复杂。

拜占庭将军问题描述了一个场景,一群将军指挥一部分军队,每个将军不知道其他将军是否可靠,也不知道其他将军传递的信息是否可靠,但他们需要投票是否他们想要。进攻或撤退:

为什么比特币可以防篡改?

比特币非对称加密算法

图 4 - 拜占庭将军问题

区块链技术使用共识算法和激励机制,允许多个节点在拜占庭将军场景中实现分布式一致性。比特币使用以下规则来实现跨多个节点的分布式一致性:

引入工作量证明——让节点在提交新区块之前计算满足一定条件的哈希值,替代传统分布式共识算法中一人一票(或一节点一票)的设置;最长链的引入是主链的设置——只有主链上的交易才被认为是合法交易;引入激励机制——提交区块的节点可以获得比特币奖励;

通过上述规则,每个节点都会计算最长链上的哈希值,并尝试提交合法区块。但是,一旦节点中有人掌握了超过 51% 的算力,就可以通过强大的算力改变区块链的历史。因为块是连续的,所以对前一个块的更改将使后一个块计算的哈希无效。如图4所示,如果攻击者需要更改主链倒数第三个黄色区块,则需要连续构建四个区块才能完成对历史的篡改,其他节点会继续在这个更长的链上计算:

为什么比特币可以防篡改?

图 4 - 51% 攻击

使用下面显示的代码,我们可以计算当攻击者无限期地持有 51% 的计算能力时,覆盖 0 到 9 个历史区块的概率为 9:

比特币非对称加密算法

#include 
#include 
double attackerSuccessProbability(double q, int z) {
    double p = 1.0 - q;
    double lambda = z * (q / p);
    double sum = 1.0;
    int i, k;
    for (k = 0; k <= z; k++) {
        double poisson = exp(-lambda);
        for (i = 1; i <= k; i++)
            poisson *= lambda / i;
        sum -= poisson * (1 - pow(q / p, z - k));
    }
    return sum;
}
int main() {
    for (int i = 0; i < 10; i++) {
        printf("z=%d, p=%f\n", i, attackerSuccessProbability(0.51, i));
    }
    return 0;
}

通过以上计算,我们会发现,在无限长的时间内,一个占据全网算力的节点发起51%攻击修改历史的概率为100%;但在有限的时间内,由于比特币的算力是比较动态的,比特币网络的节点也在避免单个节点占据51%以上算力的情况,所以还是比特币的历史相对难以篡改,但在某些小众领域比特币非对称加密算法,算力并不能保证。51% 攻击在某些区块链网络中仍然极为常见10。

防止51%攻击的方法也很简单。在大多数区块链网络中,刚刚添加到区块链网络的交易是未经确认的。只要在这些区块上附加了足够数量的区块,该交易只会被确认。比特币的交易确认次数是6,而比特币平均10分钟产生一个区块,所以一笔交易的确认时间大约是60分钟,这也是为了保证安全而不得不做出的牺牲。但是这种增加确认次数的方法并不能保证100%的安全,我们只能在不影响用户体验的情况下尽可能地增加攻击者的成本。

为什么比特币可以防篡改?

总结

研究比特币等区块链技术非常有趣。作为分布式数据库,也会遇到分布式系统经常遇到的问题,比如节点不可靠;同时,作为金融系统和账本,也将面临更加复杂的交易确认和验证场景。比特币网络的设计非常有趣。它是科技与金融交叉的产物。值得我们花时间研究其背后的原理。

比特币不能 100% 防止交易和数据被篡改。文中提到的两种技术只能以一定的概率保证安全,而降低攻击者得逞的可能性也是安全领域需要面对的永恒问题。我们可以用更严谨的方式提出今天的问题——比特币使用哪些技术来增加攻击者的成本并降低交易被篡改的可能性:

通过以上两种方式,比特币可以保证历史交易不被篡改以及所有账户的资金安全。最后,我们还是看一些开放式的相关问题。有兴趣的读者可以仔细思考以下问题: