.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%防止交易和数据的篡改,文中提到的两种技术都只能从一定概率上保证安全,而降低攻击者成功的可能性也是安全领域需要面对的永恒问题。我们可以换一个更严谨的方式阐述今天的问题—比特币使用了哪些技术来增加攻击者的成本、降低交易被篡改的概率:
比特币使用了非对称加密算法,保证攻击者在有限时间内无法伪造账户所有者的签名;
比特币使用了工作量证明的共识算法并引入了记账的激励,保证网络中的历史交易不会被攻击者快速替换;
通过上述的两种方式,比特币才能保证历史的交易不会被篡改和所有账户中资金的安全。
二、比特币助记词忘记了,还能找回来吗
拥有数字货币的第一条规则就是安全地保存你的私钥,然而数字货币持有者们在这方面做的并不是很好。
数字货币钱包的私钥丢失,还可能找回吗?答案是不可能找!因为在比特币网络中,钱包私钥是证明资产归属谁的唯一证明,并且这个私钥的明文不会储存在网络中,只有钱包的拥有者自己知道。所以一旦私钥被自己忘记或弄丢,丢了就是丢了,任何人都无法帮你找回来,即便是中本聪、比特币核心开发团队都没有办法。不像网银、支付宝那样,可以凭借手机、身份证等个人资料,找回或重置密码。在
数字货币世界里,防止丢失的唯一方法是自己做好私钥的备份。那么如何找回丢失的数字货币
据最近的一份研究报告显示,大约有287-379万枚比特币永久丢失,占目前比特币总流通量的17-23%左右,这一比例十分惊人。按截稿时比特币的价格计算,丢失的比特币价值在1000亿元人民币以上。
时间回到2019年,当你忘记钱包私钥或助记词或者丢失U盘、硬盘等保存秘钥的硬件,BTCrecover有可能帮你找回遗失的数字货币资产。
目前主要通过以下几种方式实现找回:
暴力破解
“暴力解密”使用专业软件生成和测试数百万个潜在密码,实质上是破解客户的数字钱包。
时长:可能需要数月
成功率:约40%,具体取决于客户的信息量。“他们可能还记得密码是一个有七个字符并且带有两位数字后缀的字符串,”利用这类信息通常足以找回他们的安数字资产。
催眠
通过催眠,帮助患者回忆他们的密码或硬盘的位置。每个人都有摄影记忆,通过熟练的催眠回溯技术。
时长:记忆从潜意识中浮现需要几天或几周。
成功率:约10%,最大的障碍:信任,用户并不真的相信催眠
数据恢复
从已删除、损坏或部分覆盖的数据中恢复其他文件的技术。许多人在一些文本文件中记录他们的个人识别号码,这样可以允许黑客或数据恢复服务公司在文件的原始数据中查看密码。
时长:数据恢复可能数天
成功率:高于60%最大的障碍:信任。只有客户在场时工程师才能访问数据。
如何更好的保留私钥
私钥不适合人类记录及记亿,一种新的私钥管理方式助记词,是明文私钥的另一种表现形式,最早是由 BIP39提案提出,其目的是为了帮助用户记忆复杂的私钥(64位的哈希值)。助记词一般由12、15、18、21个单词构成,这些单词都取自一个固定词库,其生成顺序也是按照一定算法而来,所以用户没必要担心随便输入 12个单词就会生成一个私钥。虽然助记词和 Keystore都可以作为私钥的另一种表现形式,但与 Keystore不同的是,助记词是未经加密的私钥,没有任何安全性可言,任何人得到了你的助记词,可以不费吹灰之力的夺走你的资产。
三、知道比特币的秘钥***怎么找回呢
1.比特币密钥丢失怎么办?这位极客开发的工具可以帮你恢复它
据Bitcoinist 3月16日报道,一名程序员发布了一个可以使用部分密钥数据来恢复丢失的比特币的工具。当钱包数据被损坏或破坏时,用户可以使用这个程序让恢复数据这个痛苦的过程变得十分简单。此外,用户还可以使用其他技巧来找回丢失的资金。图片来源:pixabay助记词恢复工具这个名为“FinderOuter...
知识:比特币
2.加密钱包的一些东西,学习提高安全认识
...部分用户的疑惑:为什么这里只能存放四个字母块一个单词空间内,存不下怎么办的问题。那么当你使用助记词密盒存储你的助记词时如果你要倒钱包时候怎么办?别急,在 imKey硬件钱包内当你输前四个字动可以帮你匹配到唯一的一个单词,千万不要觉得己备份的单词不全就觉得丢失了你的比特币。如...
知识:私钥,钱包,公钥,比特币钱包
3.如何使用U2F密钥保护您的加密帐户
...将要使用的2FA。将Yubikey与Binance配对如果您想知道U2F钥匙丢失,损坏或被盗怎么办,许多站点都可以让您配对多个钥匙,从而在丢失钥匙时提供冗余。不幸的是,币安不是其中之一。丢失密钥,您将需要启动Binance的帐户恢复过程,该过程可能需要几天才能完成,并且需要备用验证。每次您登录Binance时,...
知识:加密货币,密钥,的比特,比特币区块浏览器
4.了解下不用助记词的ZenGo钱包及门限签名技术
...,我们分别考虑下设备丢失和ZenGo服务关停的问题。设备丢失(或盗窃)怎么办?当设备丢失(或盗窃)时,获得设备的人由于没有我们的 TouchID/FaceID,可以确保我们的资金不会被转移。那么如何取回自己的资产呢?ZenGo钱包提供了一个对设备部分的秘钥备份的方案:设备秘钥通过加密之后存储在...
知识:钱包,区块链,数字货币
5. 3种比特币钱包选项,如何选择最佳
...进入和离开的许可。真的是谁的房子?如果该第三方丢失或窃取了您的钥匙怎么办?在比特币中,没有锁匠,因此,如果您丢失了私钥,最好与金钱道别。优点缺点恢复访问密码的选项需要对第三方的信任易于使用对私钥的共享控制潜在的资金访问延迟财务缺乏隐私权资金被盗的风险网络或应用钱包我...
知识:私钥,钱包,加密货币,硬件钱包
6. EOS的账号设计:说说steem和EOS的异同
...法,随着技术的不断发展,相信EOS会变得越来越容易使用。steem和EOS的钱包密钥steem和EOS的密钥设计较为类似,首先说说steem的设计。Steemit里面有四种密钥,分别是Owner Key(主密钥);post key(发帖密钥);Active Key(活动密钥);Memo Key(备注密钥)。四种密钥分别有不同的权限和功能,下面来一个个介...
知识:密钥,钱包密钥,区块链性能,钱包
7.万一硬件故障导致比特币丢失该怎么办
...硬件钱包已消除了这种危险。但是,如果您由于硬件钱包故障而丢失比特币怎么办?也有解决方案,但是您不应该尝试它们。在这种紧急情况下,您需要专业的帮助,而不是搜索如何修复Internet上检测到的Windows硬盘问题。这种情况是独特的,需要区别对待。让我们来看看。什么是比特币硬件钱包?...
本文来自用户投稿,不代表币大大立场,如若转载,请注明出处:https://czxurui.com/jys/179259.html


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