如何保護(hù)和防止51%區(qū)塊鏈攻擊
什么是51%的攻擊?
51%的區(qū)塊鏈攻擊是指礦商(通常借助nicehash等哈希值租用服務(wù))獲得超過51%的網(wǎng)絡(luò)哈希值。根據(jù)當(dāng)前挖掘塊的難易程度來計(jì)算網(wǎng)絡(luò)哈希值。雖然有些區(qū)塊鏈的平均哈希率= 2016年區(qū)塊的難度,但真正的哈希率是未知的,因此從未報(bào)告過。
它是從在一定難度下找到解決方案的時(shí)間開始計(jì)算的。一旦達(dá)到了總哈希值的51%或更多,他們就會(huì)比實(shí)際的區(qū)塊鏈挖掘更多的塊,同時(shí)傳輸一些硬幣的交易,這將是雙倍的開銷。澄清一下:雙重支付是在攻擊后反轉(zhuǎn)的交易,是攻擊的盈利向量。
區(qū)塊鏈將跟隨最長的鏈。攻擊者挖掘比實(shí)際鏈更多的塊,連接到所有可能導(dǎo)致網(wǎng)絡(luò)重組的節(jié)點(diǎn)。這種重組包含了雙重支付的代幣,通常被送到交易所從攻擊中獲取利潤。
一個(gè)交易所需要3個(gè)確認(rèn),以比特幣為例。惡意行動(dòng)者需要連接到所有節(jié)點(diǎn)進(jìn)行重組,然后挖掘3個(gè)以上的塊來實(shí)現(xiàn)所需的確認(rèn),然后在交易所出售資產(chǎn)獲利。這實(shí)際上是通過將所有塊標(biāo)記為孤立塊,將代幣返回給惡意參與者。孤立塊是被挖掘但被區(qū)塊鏈拒絕并標(biāo)記為無效的塊。通常,當(dāng)某人比另一個(gè)挖掘器早挖掘一個(gè)塊時(shí),就會(huì)出現(xiàn)孤立塊。
這就是為什么現(xiàn)在的交換器將確認(rèn)時(shí)間調(diào)整為總哈希率,因?yàn)閷?duì)于惡意參與者來說,使用較低的網(wǎng)絡(luò)哈希率和較低的確認(rèn)時(shí)間啟動(dòng)51%的攻擊更容易,也更劃算。
如何執(zhí)行51%的攻擊
要求1 - Hashpower
惡意參與者必須獲得并通常持有成功攻擊所需的網(wǎng)絡(luò)哈希率的51%以上。如要攻擊商業(yè)網(wǎng)絡(luò)(2.9 Msol/s),操作者只需要超過1.5 Msol/s的
哈希值/計(jì)算/采礦能力。
要求2 -全節(jié)點(diǎn)服務(wù)器和私有礦池
參與者編輯區(qū)塊鏈代碼以允許在不同步任何對(duì)等點(diǎn)的情況下挖掘(默認(rèn)情況下,如果允許挖掘,我們必須有一個(gè)同步的對(duì)等點(diǎn))。他將整個(gè)節(jié)點(diǎn)服務(wù)器同步到當(dāng)前塊高度,斷開與主區(qū)塊鏈網(wǎng)絡(luò)的連接,并在關(guān)閉對(duì)等節(jié)點(diǎn)的情況下開始挖掘。
一旦獲得,他執(zhí)行他的雙重支付,繼續(xù)挖掘所需確認(rèn)高度和重新連接他的節(jié)點(diǎn)到區(qū)塊鏈。他現(xiàn)在開始重組區(qū)塊鏈,方法是通知一個(gè)塊高度高于′合法鏈的鏈,將對(duì)等點(diǎn)傳遞給點(diǎn)。
保護(hù)免受51%的攻擊
主節(jié)點(diǎn)的實(shí)現(xiàn)有多種用途,從數(shù)據(jù)存儲(chǔ)到即時(shí)swift-tx事務(wù)。商業(yè)廣告公司的目標(biāo)是實(shí)行信息召回制度。
所有計(jì)算機(jī)都連接到DNS(域名系統(tǒng))服務(wù)器,該服務(wù)器執(zhí)行信息的查找或收回,將域名轉(zhuǎn)換為IP地址。
商業(yè)化將有一個(gè)基于協(xié)議的塊查詢系統(tǒng),就像DNS:
!ActivateBestChainStep(state,pindexMostWork,pblock &&
pindexMasterNodeCheckPoint-》 GetBlockVerifyHash() && pblock-》 GetHash()== pindexMostWork-》 GetBlockHash()?pblock
上面的代碼分為兩部分,草書部分是當(dāng)前的區(qū)塊鏈代碼,而粗體部分是它在“激活”最佳鏈之前調(diào)用一個(gè)函數(shù)來驗(yàn)證哈希的地方。
pindexMasterNodeCheckPoint - 》 GetBlockVerifyHash()
上面是一個(gè)檢查點(diǎn)函數(shù),其中每個(gè)塊都變成一個(gè)檢查點(diǎn),他是不可變的,任何歷史記錄都不能逆轉(zhuǎn)。如果不存在來自這些檢查點(diǎn)的塊哈希值,則區(qū)塊鏈將不起作用。重組的第一線能夠決定是否放棄或者接受重組,可以阻止重組的發(fā)生和擴(kuò)散到其他同行。如果節(jié)點(diǎn)能夠知道整個(gè)網(wǎng)絡(luò)的高度,它就會(huì)知道重組是否是惡意的。
請(qǐng)記住,節(jié)點(diǎn)必須同步到區(qū)塊鏈的當(dāng)前高度。我們只是不希望它同步到惡意的高度。
節(jié)點(diǎn)將同步到惡意鏈的當(dāng)前高度,并通過詢問所有主節(jié)點(diǎn)鏈中是否有當(dāng)前塊哈希值來驗(yàn)證當(dāng)前塊的高度。
000000406 bf82cd29da2f9174ddf04ebc56abae7870fe2192511ecb82ecc15c3
以上內(nèi)容將通過區(qū)塊查詢系統(tǒng)提交。如果大多數(shù)一致意見是YES或1,則節(jié)點(diǎn)將接受重組或同步,并將塊高度廣播給其他節(jié)點(diǎn)。如果大多數(shù)一致意見是NO或0,則節(jié)點(diǎn)將放棄重組,返回到重組前的最后一個(gè)已知塊,并從其對(duì)等節(jié)點(diǎn)進(jìn)行同步。
換句話說,如果當(dāng)前合法鏈塊編號(hào)12880和重組是12999塊, 則會(huì)說: OK該節(jié)點(diǎn)廣播的塊高度為12999,但是通過大多數(shù)masternodes的驗(yàn)證,這是個(gè)騙局,那么它將被禁止使用正在廣播較長鏈的對(duì)等點(diǎn)。
塊查詢系統(tǒng)可視化集成
結(jié)論
通過哈希率和塊查詢系統(tǒng)通過主節(jié)點(diǎn)控制網(wǎng)絡(luò)將需要預(yù)付成本和相當(dāng)數(shù)量的CMM,這將導(dǎo)致攻擊向量無利可圖。
此外,隨著主節(jié)點(diǎn)網(wǎng)絡(luò)的增長,51%攻擊的可能性會(huì)減少。