你知道什么是攻擊塊嗎
掃描二維碼
隨時(shí)隨地手機(jī)看文章
比特幣網(wǎng)絡(luò)決策必須遵循最長鏈規(guī)則,即必須選擇投入在一個(gè)鏈上最工作努力的作為有效鏈。這意味著最終必須達(dá)成共識(shí),由節(jié)點(diǎn)決定最長的鏈?zhǔn)俏ㄒ挥行У逆湣?/p>
當(dāng)?shù)V商將一個(gè)區(qū)塊傳輸?shù)奖忍貛啪W(wǎng)絡(luò)時(shí),該區(qū)塊的深度為1個(gè)區(qū)塊。因此,對(duì)于每個(gè)后續(xù)塊,深度塊的數(shù)量將增加1。這構(gòu)成了我們現(xiàn)在區(qū)塊鏈的認(rèn)知。
在最優(yōu)環(huán)境下,比特幣在區(qū)塊鏈上的交易層被認(rèn)為是不可逆的、最終的。話雖如此,但區(qū)塊鏈的整個(gè)結(jié)構(gòu)實(shí)際上是為了生成一個(gè)交易歷史,而修改在計(jì)算上是不切實(shí)際的。交易也可以是最終的,因此,商家不需要從用戶那里收集個(gè)人信息,因?yàn)槿绻髽I(yè)在接受付款前執(zhí)行嚴(yán)格的付款規(guī)則,那么在計(jì)算上幾乎不可能逆轉(zhuǎn)(或雙倍支出)交易。然而,在實(shí)踐中,礦工可以根據(jù)他們所控制的計(jì)算能力重新組織塊結(jié)構(gòu)。
因此,商家和貿(mào)易商在接受用戶支付前等待確認(rèn)是非常重要的。然而,商家選擇的確認(rèn)數(shù)量在很大程度上取決于業(yè)務(wù)的風(fēng)險(xiǎn)管理、區(qū)塊鏈體系結(jié)構(gòu)和可用性與一致性的關(guān)系。
雙重攻擊
定義
惡意用戶不止一次地成功消費(fèi)一定金額的能力。
在比特幣網(wǎng)絡(luò)中,我們傾向于在驗(yàn)證交易(或支付)之前等待一定數(shù)量的確認(rèn)。這就確保了在計(jì)算上不可能還原或重復(fù)支出一定數(shù)量的錢。
那么有多少份確認(rèn)呢?
在比特幣社區(qū),我們通常接受6個(gè)確認(rèn)(或6個(gè)區(qū)塊深度),在確認(rèn)交易前大約需要花費(fèi)60分鐘。
等一下,60分鐘?什么!那我怎么去買咖啡呢?也許我們應(yīng)該把比特幣看作是一種價(jià)值儲(chǔ)存手段,而不是貨幣(但這是另一個(gè)時(shí)間的討論)?
RACE攻擊
此攻擊發(fā)生在交易員或商戶在沒有考慮確認(rèn)的情況下立即接受付款。換句話說,也就是接受帶有0個(gè)確認(rèn)的付款。
攻擊者可以創(chuàng)建兩個(gè)相同的交易,并將一個(gè)交易廣播給商家,另一個(gè)廣播給網(wǎng)絡(luò)。
交易1:向商戶A發(fā)送1個(gè)BTC
交易2:發(fā)送1個(gè)BTC給自己
很可能在第一個(gè)交易之前挖掘第二個(gè)交易Tx2,并將其作為最終交易接受。另一方面,商戶A已接受未經(jīng)確認(rèn)的交易作為支付。
如果攻擊者與商家A的節(jié)點(diǎn)有直接連接,那么這種攻擊很容易執(zhí)行。
芬尼攻擊
此攻擊也發(fā)生在商人接受0個(gè)確認(rèn)付款時(shí)。
攻擊者必須能夠生成自己的塊并控制比特幣網(wǎng)絡(luò)中的兩個(gè)地址,地址A和地址B。
攻擊者挖掘一個(gè)新的塊,并包含一個(gè)交易Tx1,從地址a到地址b。但是,攻擊者不會(huì)廣播這個(gè)塊。
相反,他創(chuàng)建一個(gè)新的交易Tx2。由于商家不等待任何確認(rèn),所以他會(huì)直接接受攻擊者的交易。
現(xiàn)在,攻擊者將使用Tx1將該塊廣播到網(wǎng)絡(luò)。
然而,這種攻擊在實(shí)踐中很難使用,因?yàn)樗蠊粽呔哂懈吖B剩ㄒ驗(yàn)樗麆?chuàng)建了自己的塊),而且大多數(shù)商家現(xiàn)在傾向于需要一些確認(rèn)。
VECTOR76攻擊
它是種族攻擊和芬尼攻擊的組合,也發(fā)生在商人接受付款1個(gè)確認(rèn)時(shí)。
先決條件:2個(gè)完整節(jié)點(diǎn)。
節(jié)點(diǎn)A:連接到商戶A的節(jié)點(diǎn)
節(jié)點(diǎn)B:連接到網(wǎng)絡(luò)的其余部分
它開始時(shí)非常類似于Race攻擊,攻擊者可以創(chuàng)建兩個(gè)花費(fèi)相同的代幣的交易。
Tx1:發(fā)送50個(gè)BTC給商戶A
Tx2:發(fā)送0.1個(gè) BTC給他自己
然而,這兩個(gè)交易都還沒有廣播。
攻擊者開始將交易哈希到一個(gè)新塊中,直到能夠挖掘出該塊為止。一旦發(fā)生這種情況,他就同時(shí)運(yùn)行這兩個(gè)操作。
在節(jié)點(diǎn)A上:將50個(gè)BTC發(fā)送到商戶A的節(jié)點(diǎn)
在節(jié)點(diǎn)B上:0.1 BTC被發(fā)送到網(wǎng)絡(luò)的其余部分
很可能網(wǎng)絡(luò)的其他部分首先解決了這個(gè)難題,并創(chuàng)建了一個(gè)新的塊,因此,接受帶有0.1 BTC的塊作為有效交易?;旧?,拒絕50 BTC交易。
在那一刻,攻擊礦商將之前被阻止的塊從節(jié)點(diǎn)A廣播給商人。
商家B會(huì)將50比特幣存入攻擊者的錢包。攻擊者立即收回50比特幣(注意,商家B將從另一枚未使用的代幣地址中發(fā)出比特幣)。
最終,比特幣挖掘網(wǎng)絡(luò)將解決另一個(gè)區(qū)塊,而區(qū)塊鏈(很可能)知道0.1 BTC,因此拒絕了50BTC的交易。
選擇歷史攻擊
這是在區(qū)塊鏈最可能發(fā)生的攻擊,然而,它需要非常高的計(jì)算能力,因此變得非常昂貴。
攻擊者基本上是為商家創(chuàng)建一個(gè)交易,然后在該塊上創(chuàng)建一個(gè)新的分叉。然后,攻擊者將秘密地挖掘這些信息,直到獲得對(duì)網(wǎng)絡(luò)的最長鏈的控制。
當(dāng)超過51%的采礦力被攻擊者控制時(shí),這種攻擊是非常具有破壞性的。