.jpg)
一、比特币如何防止篡改
比特币网络主要会通过以下两种技术保证用户签发的交易和历史上发生的交易不会被攻击者篡改:
非对称加密可以保证攻击者无法伪造账户所有者的签名;
共识算法可以保证网络中的历史交易不会被攻击者替换;
非对称加密
非对称加密算法3是目前广泛应用的加密技术,TLS证书和电子签名等场景都使用了非对称的加密算法保证安全。非对称加密算法同时包含一个公钥(Public Key)和一个私钥(Secret Key),使用私钥加密的数据只能用公钥解密,而使用公钥解密的数据也只能用私钥解密。
请点击输入图片描述
图 2-非对称加密特性
比特币使用了非对称加密算法保证每一笔交易的安全,网络中的每一个账户(地址)都是一对秘钥中的公钥,账户的所有者会持有私钥,下面就是一对刚刚生成的比特币地址和私钥4:
Address: 13RTT8MsbAj7o4zL7w4DNNuuwhgGgHqLnK
Private Key: 469d998dd4db3dfdd411fa56574e52b6be318f993ca696cc5c683c45e8e147eb
需要注意的是,使用网站生成比特币地址和私钥是极其危险的做法,我们并不清楚网站是否会存储私钥,所以建议使用比特币的客户端生成公私钥对。
任何人通过上面的地址 13RTT8MsbAj7o4zL7w4DNNuuwhgGgHqLnK都可以向该账号转账;账号的持有者也可以使用私钥签名交易向其他地址转账,当我们想要向比特币网络中提交一笔新的交易时,需要先构建一个如下所示的交易结构:
{
"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地址中目前持有 250,000多个 Bitcoin5,目前的市值大概为 20亿美元。在只知道地址的情况下,我们来算一下获取该地址对应的私钥需要多长时间。比特币的私钥总共有 256位,即 22562256中可能性:
115792089237316195423570985008687907853269984665640564039457584007913129639936115792089237316195423570985008687907853269984665640564039457584007913129639936
目前我们没有较为快捷的破解手段,只能使用暴力破解计算私钥。假设我们使用 IBM在 2018年推出的超级计算机 Summit6,它能每秒能做 1.4∗10171.4∗1017次浮点数计算,假设该计算机可以每秒计算相同次数的公私钥对(计算公私钥对远比一次浮点数计算复杂),想要找到存放 20亿美元资产的地址对应的私钥需要如下所示的时间:
1.15∗1077365∗86400∗1.4∗1017=2.9∗1052年1.15∗1077365∗86400∗1.4∗1017=2.9∗1052年
我们整个宇宙的存在时间也只是破解该私钥时间的几十亿分之一,所以在目前的计算能力没有革命性突破的前提下,想要通过暴力破解的方式获取公钥对应的私钥只有理论上的可能性,在实践中是完全不可能的7。
共识算法
MySQL等数据库以行为单位存储数据,而比特币这个分布式数据库中存储的基本单位是区块,区块通过哈希指针连接就会构成一棵树,如下图所示,图中绿色的最长链就是网络的主链。
请点击输入图片描述
图 3-区块链和主链
如何让网络中的所有节点对下一个区块中的内容达成共识是比特币需要解决的关键问题,只有让节点对数据达成一致才会保证过去的交易不会被篡改,但是作为在公网运行的分布式数据库,它面对的场景非常复杂,需要解决拜占庭将军问题下的分布式一致性问题。
拜占庭将军问题是 Leslie Lamport在 The Byzantine Generals Problem论文中提出的分布式领域的容错问题,它是分布式领域中最复杂、最严格的容错模型8。在该模型下,系统不会对集群中的节点做任何的限制,它们可以向其他节点发送随机数据、错误数据,也可以选择不响应其他节点的请求,这些无法预测的行为使得容错这一问题变得更加复杂。
拜占庭将军问题描述了一个如下的场景,有一组将军分别指挥一部分军队,每一个将军都不知道其它将军是否是可靠的,也不知道其他将军传递的信息是否可靠,但是它们需要通过投票选择是否要进攻或者撤退:
请点击输入图片描述
图 4-拜占庭将军问题
区块链技术使用共识算法和激励让多个节点在拜占庭将军场景下实现分布式一致性。比特币使用如下的规则让多个节点实现分布式一致性:
引入工作量证明—让节点在提交新的区块之前计算满足特定条件的哈希,取代传统分布式一致性算法中,一人一票(或者一节点一票)的设定;
引入最长链是主链的设定—只有主链上的交易才被认为是合法交易;
引入激励—提交区块的节点可以获得比特币奖励;
通过以上的规则,各个节点会在最长的链上计算哈希,努力提交合法的区块。然而一旦节点中有人掌握了 51%以上的计算能力,它能通过强大的算力改变区块链的历史。因为区块具有连续性,所以前一个区块的改变会使后一个区块计算的哈希失效,如图 4所示,如果攻击者需要改变主链中的倒数第三个黄色区块,它需要连续构建四个区块才能完成对历史的篡改,其他的节点才会在这条更长的链上继续计算:
请点击输入图片描述
图 4- 51%攻击
1使用如下所示的代码可以计算在无限长的时间中,攻击者持有 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%防止交易和数据的篡改,文中提到的两种技术都只能从一定概率上保证安全,而降低攻击者成功的可能性也是安全领域需要面对的永恒问题。我们可以换一个更严谨的方式阐述今天的问题—比特币使用了哪些技术来增加攻击者的成本、降低交易被篡改的概率:
比特币使用了非对称加密算法,保证攻击者在有限时间内无法伪造账户所有者的签名;
比特币使用了工作量证明的共识算法并引入了记账的激励,保证网络中的历史交易不会被攻击者快速替换;
通过上述的两种方式,比特币才能保证历史的交易不会被篡改和所有账户中资金的安全。
二、比特币成洗钱犯罪新手段,如何学会避坑
比特币作为一种网络数字货币可以说是很多人喜欢的,因为对于很多人来说比特币都会给自己带来很高的收益,但时候对于这样的事情我们是严厉打击的,这样的产品在很大程度上都会涉嫌非法集资或者说是洗钱犯罪。
对于比特币的监管是十分难得,因为比特币是一种虚拟网路数字货币,那么对于很多人炒比特币这样的行为自然就会十分不好管理的,虽然说我们很多时候都会对这样的行为进行制止,但是人的利益心都是十分大的,在很多时候可以说就是因为自己的利益心会让自己受到损失。
二、如何避免比特币洗钱犯罪
1、不要轻易去相信任何的高回报投资,在很多时候我们在网上都会遇到一些推广投资的人,那么我们去相信这样的行为自然就会让自己的经济受到损失。
2、对于一些虚假的平台自己一定要去分辨,千万不要随意向任何平台充值自己的资金,因为一旦进行充值那么可能就会面临无法提现。
3、不要轻易去想象去相信一些炒比特币可以赚钱的说法,因为这些行为在很大程度上就是在帮助一些违法犯罪分子犯罪。
三、为什么比特币会成为洗钱犯罪手段
1、在网上进行的违法犯罪手段十分难追查,对于一些犯罪分子来说就是一个漏洞。
2、更加容易利用人心,因为在网络上的交易对于很多人来说是十分方便的,那么自然就十分容易落入骗子的套路。
3、自己的利益心是十分强的,在很多事时候认为这样的行为可以让自己赚到钱那么就会去相信这些犯罪分子的言论,那么自然就会让我们受到损失。
在平时进行网络交易的时候一定要注意自己的安全,千万不要随意去相信任何网上投资和网上炒股的事情。
三、如何防范比特币勒索病毒wannacry
目前wana系列勒索病毒已经被一定程度上控制,但病毒扔在持续对抗升级,有效预防此次Wanna勒索病毒可通过以下行为进行规避。
一是,临时关闭端口。Windows用户可以使用防火墙过滤个人电脑,并且临时关闭135、137、445端口3389远程登录(如果不想关闭3389远程登录,至少也是关闭智能卡登录功能),并注意更新安全产品进行防御,尽量降低电脑受攻击的风险。
二是,及时更新 Windows已发布的安全补丁。在3月MS17-010漏洞刚被爆出的时候,微软已经针对Win7、Win10等系统在内提供了安全更新;此次事件爆发后,微软也迅速对此前尚未提供官方支持的Windows XP等系统发布了特别补丁。
三是,利用“勒索病毒免疫工具”进行修复。用户通过其他电脑下载腾讯电脑管家“勒索病毒免疫工具”离线版,并将文件拷贝至安全、无毒的U盘;再将指定电脑在关闭WiFi,拔掉网线,断网状态下开机,并尽快备份重要文件;然后通过U盘使用“勒索病毒免疫工具”离线版,进行一键修复漏洞;联网即可正常使用电脑。
四是,利用“文件恢复工具”进行恢复。已经中了病毒的用户,可以使用电脑管家-文件恢复工具进行文件恢复,有一定概率恢复您的文档。
另外,企业网络管理员可使用“管理员助手”检测电脑设备安防情况。腾讯反病毒实验室安全团队经过技术攻关,于14日晚推出了针对易感的企业客户推出了一个电脑管家“管理员助手”诊断工具。企业网络管理员只要下载这一诊断工具,输入目标电脑的IP或者设备名称,即可诊断目标电脑是否存在被感染勒索病毒的漏洞;并可在诊断报告的指导下,对尚未打补丁的健康设备及时打补丁、布置防御。
注意:Windows用户近期尽量避免访问高危网页,同时若不幸中毒切勿支付赎金,联系安全厂商协助恢复有价数据,或者可以通过格式化硬盘彻底消灭病毒。
本文来自用户投稿,不代表币大大立场,如若转载,请注明出处:https://czxurui.com/jys/154242.html


发表回复
评论列表(0条)