當前位置:首頁 » 比特幣問答 » 比特幣節點攻擊

比特幣節點攻擊

發布時間: 2023-06-03 18:06:08

『壹』 比特幣出現漏洞,手把手帶你發起攻擊,萬一暴富了呢

針對所有的支付系統,有一種攻擊方式叫作 雙花攻擊 。所謂雙花攻擊就是指一筆資金被花費多次,攻擊者先將資金轉出,獲得收益後通過攻擊的手段撤銷該筆轉賬,讓資金重新回到攻擊者的賬戶上。那麼我們能否對比特幣發起雙花攻擊並從中獲利呢?答案是肯定的!下面讓我帶你一起對比特幣系統發起攻擊。

在帶領大家發起攻擊之前,我們需要先了解一下比特幣的轉賬原理,這是我們發起攻擊的預備知識。

在比特幣系統中,用戶想要發起一筆轉賬,首先要把轉賬信息組裝好,就像填寫銀行支票一樣,寫好付款方賬戶,收款方賬戶,轉賬金額,然後使用加密技術對轉賬信息簽名,我們把這種簽名好的轉賬請求叫作交易。交易被比特幣系統處理以後,付款方的賬戶就會被扣除指定金額,收款方的賬戶就會增加指定金額。

用戶的交易會被發送給比特幣系統中的節點,節點收到交易後將其放在一個新的區塊中,然後對這個區塊進行哈希計算,也就是之前文章所說的計算數學題。哪一個節點優先計算出了這個區塊的數學題答案,就獲得了這個區塊的打包權,被這個節點打包進區塊的交易就相當於成交了,然後所有的節點會在新區塊的基礎上開始計算下一個區塊的數學題。

知道了比特幣的轉賬原理,下面我們就來看一下比特幣的漏洞到底在哪裡!

剛才我們說誰先算出答案誰負責打包區塊,那如果有兩個節點同時做出了同一個區塊的答案該怎麼辦呢?為了解決這個問題,比特幣系統設計了一個特殊的機制,叫作最長鏈原則。

通過上面的描述我們可以看出,比特幣的這條鏈是有可能分叉的,分叉以後會以最長的鏈為准,那麼在較短的分叉上的區塊就被廢棄了。 這不正為我們攻擊比特幣系統帶來了可能性嗎!

你可能已經想到了,既然比特幣系統只認最長的那條鏈,我們是不是可以通過這樣的方式對比特幣進行雙花攻擊:

至此,你之前轉出的比特幣還在你的賬戶上,並且得到了你想要的東西,所以你的攻擊成功了。

對比特幣的攻擊真的這么簡單嗎?答案當然是否定的!雖然我們說可以通過上述方法對比特幣發起攻擊,但是攻擊是要付出代價的。

所以,如果你想要創建一個新的分叉,並且超過主鏈的區塊長度,那麼你需要比主鏈上所有節點的計算速度加在一起都要快。要想實現這樣的結果,唯一的做法就是你要收買比特幣系統中超過51%的節點算力,這就是比特幣的51%攻擊原理。

想要攻擊比特幣系統並不是不可能,但是需要付出的代價可能遠遠超過作惡所獲得的收益。在比特幣系統中,節點越多,算力越強,攻擊比特幣系統的成本就越高,比特幣系統就越安全。比特幣越安全,它的價值就越高,就會吸引更多的節點加入來競爭比特幣獎勵。更多的節點進一步促進了系統的安全性,這是一個正向循環。

51%攻擊不只是針對比特幣的,所有採用 工作量證明共識演算法 區塊鏈都面臨著這個問題。對於已經日趨成熟的比特幣系統來說,攻擊比特幣確實是不劃算的,而且隨著系統節點的越來越多,攻擊比特幣幾乎成為了不可能的事情。但是一些新的鏈,在其剛起步的時候節點和算力還不多,這種攻擊確實是真實有效的,並且這種攻擊事件時有發生。

『貳』 比特幣如何防止篡改

比特幣網路主要會通過以下兩種技術保證用戶簽發的交易和歷史上發生的交易不會被攻擊者篡改:

  • 非對稱加密可以保證攻擊者無法偽造賬戶所有者的簽名;

  • 共識演算法可以保證網路中的歷史交易不會被攻擊者替換;

  • 非對稱加密


  • 非對稱加密演算法3是目前廣泛應用的加密技術,TLS 證書和電子簽名等場景都使用了非對稱的加密演算法保證安全。非對稱加密演算法同時包含一個公鑰(Public Key)和一個私鑰(Secret Key),使用私鑰加密的數據只能用公鑰解密,而使用公鑰解密的數據也只能用私鑰解密。

  • 圖 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% 防止交易和數據的篡改,文中提到的兩種技術都只能從一定概率上保證安全,而降低攻擊者成功的可能性也是安全領域需要面對的永恆問題。我們可以換一個更嚴謹的方式闡述今天的問題 — 比特幣使用了哪些技術來增加攻擊者的成本、降低交易被篡改的概率:

  • 比特幣使用了非對稱加密演算法,保證攻擊者在有限時間內無法偽造賬戶所有者的簽名;

  • 比特幣使用了工作量證明的共識演算法並引入了記賬的激勵,保證網路中的歷史交易不會被攻擊者快速替換;


  • 通過上述的兩種方式,比特幣才能保證歷史的交易不會被篡改和所有賬戶中資金的安全。

『叄』 詳解比特幣的「51%攻擊」

剛接觸比特幣的時候,都聽過「51%攻擊」這個概念。簡單來說,就是如果某個節點擁有超過全網51%的算力,將能夠實現雙重支付、撤銷交易等操作,讓比特幣網路崩潰。

那麼,這個51%攻擊是什麼實現的?

假設一個場景,A用10比特幣向B購買一樣商品,步驟如下:

(1)A支付給B 10BTC;

(2)B收到10BTC確認收款後發貨(一般認為6次確認後交易就不可逆轉);

(3)A隨即創建另一筆交易,將同樣的10BTC支付給自己。

顯然,A想要撤銷第一筆交易,不用花錢就得到B的商品。為了達到這個目的,A進行了雙重支付,將同樣的10BTC支付給B和自己。在正常的比特幣網路中,一旦第一筆交易經過6次確認後就幾乎不可更改,後續的交易數據將繼續打包成新的區塊依次鏈接下去。可是,如果A用戶擁有51%的算力,情況將會發生有趣的變化,A可以實現雙重支付的目的。

具體過程如下:

假設第一筆交易被打包到100號區塊,當後面再增加5個區塊後,6次即可確認該交易,區塊如下圖所示:

這時,A又發起了一次給自己10BTC的交易。如果A向全網廣播,這筆交易不會被處理(因為找不到要花費的UTXO,10BTC支付給B的事實已經被全網確認了),所以A選擇不廣播,而是對主鏈進行「分叉」,生成另外一個100號區塊,並在其中打包第二筆交易,如下圖:

由此,產生了兩條子鏈。簡單描述起見,第一筆交易所在的叫C1,第二筆交易所在的叫C2。其他礦工繼續在C1上打包數據,而A則在C2上挖礦,兩條鏈開始賽跑。由於A具有超51%的算力資源,很快,C2的長度就會超過C1,如下圖:

這時,按照比特幣的最長鏈優先原則,其他礦工也會自動轉到C2上,使C2變成了主鏈。C1則會被拋棄,之前打包在C1上的所有交易(包括第一筆A支付給B 10BTC的交易),都會變為無效。結果是A不花一分錢就擁有了屬於B的商品,這就是「51%攻擊」。

當然,要真正實現51%攻擊是非常困難的,在比特幣網路中幾乎是不可能的,因為這需要消耗巨大的成本,跟攻擊成功後獲取到的收益相比,完全是得不償失。

51%攻擊能帶來的收益是非常有限的,只能做到:

1、修改自己的交易記錄,如雙重支付;

2、阻止確認部分或全部交易。

而下面這些即使是51%攻擊也沒法做到的:

1、憑空生成比特幣;

2、修改每個區塊產生的比特幣數量。

因此,51%攻擊成本巨大,收益卻很小,僅能實現「雙重支付」而已,所以51%攻擊很多時候又被稱為「雙花攻擊」。「雙花」是數字貨幣要解決的第一個核心問題,比特幣通過共享賬本和工作量證明共識機制比較完美地解決了這個問題。

『肆』 什麼是51%算力攻擊

關注比特幣的朋友,想必聽過51%算力攻擊這個詞,它到底是什麼意思呢,發起這種攻擊之後能做哪些「壞事」呢?

 01 

什麼是51%算力攻擊?

在比特幣網路中,採用PoW共識機制來解決如何獲得記賬權的問題,採用「最長鏈共識」解決如何記賬的問題。

所謂51%的攻擊,就是利用比特幣網路採用PoW競爭記賬權和「最長鏈共識」的特點,使用算力優勢生成一條更長的鏈「回滾」已經發生的「交易行為」。

51%是指算力佔全網算力的51%,比特幣網路需要通過哈希碰撞來匹配隨機數從而獲得記賬權,算力衡量的是一台計算機每秒鍾能進行哈希碰撞的次數。

算力越高,意味著每秒鍾能進行越多次的哈希碰撞,即獲得記賬權的幾率越高。

在理論上,如果掌握了50%以上的算力,就擁有了獲得記賬權的絕對優勢,可以更快地生成區塊,也擁有了篡改區塊鏈數據的權利。

 02 

這種攻擊能做哪些壞事?

在了解了51%算力攻擊之後,你肯定好奇,這種攻擊能做哪些壞事。

實際上,當惡意攻擊者持有比特幣全網佔比比較高的算力時,即使尚未達到51%的比例,也可以製造相應的攻擊,比較典型的就是雙花問題。

假設A擁有51%的算力,在區塊高度1127時,A轉給B一個比特幣的記錄被礦工打包。

待交易確認後,A依靠51%的算力優勢在區塊高度1126後重新生成了一條「更長的鏈」,並在區塊高度1127處又將該BTC轉給C且該交易記錄被打包,即該鏈包含了A將一個比特幣轉給C的記錄。

根據「最長鏈共識」,包含給C轉賬記錄的鏈成為主鏈,則A轉給B的一個比特幣則為「無效支付「。

若掌握了51%的算力,除了可以修改自己的交易記錄外,還可以阻止區塊確認部分交易,以及阻止部分礦工獲得有效的記賬權。

但是,擁有51%的算力也不是萬能的,無法修改其他人的交易記錄,也不能阻止交易的發出,更不能憑空產生BTC。

 03 

實例分析

我們可以用一筆虛擬交易來說明51%算力攻擊問題:

1.攻擊者擁有私鑰privKey0001,私鑰擁有對應可花費比特幣10000個

2.當前區塊的高度是88888

3.攻擊者與商戶交易了10000個比特幣,在商戶看到88889區塊中包含了此次交易後,坐上飛機駕駛員位置,開走了商戶一架飛機。

4.攻擊者因為擁有較高算例,從88888區塊再次計算區塊(此時,排除自己的10000個比特幣買飛機的交易),迅速的計算出了88889/88890/88891/88892......區塊,其它節點拉取最長鏈節點的區塊,同步了攻擊者的含有惡意攻擊的區塊信息。

5.因為攻擊者買飛機的交易沒有被區塊包含,因此,可以再次到商戶那裡買上一架飛機開走。

上面這個例子就是典型的51%算力攻擊成功後,所產生的雙花問題。

 04 

51%算力攻擊真的有人做嗎?

理論上來說,要執行51%算力攻擊,首先需要擁有比網路其他礦工更強的算力。

這意味著要有非常多的挖礦設備,大量挖礦設備本身就會消耗大量的資金。

而且除了設備,還需要大量的電力能源消耗。

由於電價上漲以及能源需求的增加,在過去幾年裡獲得足夠的電力來運營礦場變得愈發地困難。

當比特幣網路還很小的時候,或許有可能獲得足夠的電力來運行提供51%算力的設備,但隨著時間的推移,比特幣網路消耗的電力持續增長,攻擊者需要獲得大量電力才能成功執行攻擊,這種可能性也就越來越小。

發動算力攻擊也是為了有利可圖,但從經濟角度來看,51%算力攻擊的成本太高,利潤太少,無法產生大量資金,並且會有受到重大損失的風險。

由於所涉及的成本和風險,進行51%攻擊確實沒有任何意義,而誠實挖礦則有利可圖的多。

 05 

在攻擊面前的風險規避

雖然51%算力攻擊可以撤銷交易,但不可以在沒有私鑰的情況下,控制私鑰對應的比特幣地址,因此不能無(私鑰)中生有交易。

所以對於51%算力攻擊,交易支付者不僅不需要過度擔心,而且在別人進行51%算力攻擊時,你也有可能做一次雙花商家。

但是交易接收者可就沒有那麼好的運氣了,因此為了避免被別人51%算力攻擊,可以多等幾個區塊生成後再進行交易。

但是反過來想一下,51%算力攻擊是很不值得的一件事情。

攻擊是為了利益,既然攻擊者持有了這么高的算力,誠實的挖礦帶來利益是不是更好?

而且攻擊必然打擊投資者對比特幣系統信心,這對攻擊者來說未必是一件好事。

『伍』 比特幣遭遇51%以上的攻擊會發生什麼

QUBE交易所為您解答:當一個人控制了51%以上的算力,他就能夠修改自己的交易記錄以及組織部分或全部礦工開採到任何有效的區塊。他可以修改比特幣協議,並寫出相應的代碼,改變比特幣的規則。但是這幾乎是概率為0的事件,同時,當超過51%的算力被控制,控制者依舊不能做的事情是:他無法做到的是:修改其他人的交易記錄;憑空產生比特幣以及把別人的幣轉移到自己手中。因此掌控算力不等於黑客攻擊,兩者是不一樣的,黑客攻擊之後,是可以盜取比特幣,修改錢包地址,對他人的財產造成威脅。希望對你有幫助。

『陸』 比特幣歷史上發生哪些被黑事件

2011年6月,賽門鐵克公司發出警告,僵屍網路正在參與到比特幣"挖礦"中。 這會佔用受害者的計算機運算能力、消耗額外的電力並導致主機溫度升高。當月晚些時候,澳大利亞廣播公司發現一名雇員用公司的伺服器進行挖礦。
一些惡意軟體也大量利用顯卡的並行計算能力。在2011年8月,比特幣挖礦的僵屍網路被發現了, 被木馬感染的Mac OS X也被發現進行比特幣挖礦
2011年6月19日,Mt.Gox(Magic: The Gathering Online Exchange的縮寫)比特幣交易中心的安全漏洞導致1比特幣價格一度跌至1美分(雖然其它交易沒有受到影響)。原因是一個黑客從感染木馬的電腦上盜用了該用戶MtGox的證書,從而把比特幣轉到自己的帳號上並拋售,產生了大量該價格的「ask」請求。幾分鍾後MtGox 關閉並取消了黑客事件中的不正常交易,使比特幣價格反彈回到了15美元。 最終比特幣匯率回到了崩潰前的情況。相當於超過8,750,000美元的帳戶受到影響。
2011年7月,世界第三大比特幣交易中心Bitomat的運營商宣布:記錄著17,000比特幣(約合22萬美元)的wallet.dat文件的訪問許可權丟失。同時宣布決定出售服務以彌補用戶損失。
2011年8月,作為常用比特幣交易的處理中心之一的MyBitcoin宣布遭到黑客攻擊,並導致關機。涉及客戶存款的49%,超過78000比特幣(當時約相當於80萬美元)下落不明。
2012年8月上旬,Bitcoinica在舊金山法院被起訴要求賠償約46萬美元。2012年,Bitcoinica兩度遭到黑客攻擊,被指控忽略客戶資金的安全性以及偽造提款申請。
2012年8月下旬,Bitcoin Savings and Trust被所有者關閉,並留下據稱約560萬美元的債務。同時導致其被指控操作龐氏騙局。2012年9月,美國證券交易委員會開始調查這一案件。
2012年9月,Bitfloor交易中心也被黑客入侵,24,000比特幣(約相當於25萬美元)被盜。Bitfloor因此暫停運營。同月,Bitfloor恢復運營,它的創始人說,他已經就盜竊事件上報FBI,而且他正計劃賠償受害者,但賠償的時間表尚不清楚。
2011年6月,有黑客將25000比特幣轉進自己戶頭,其相當於50萬美金。整個交易無法被追蹤,雖然比特幣的擁有者在網上公布了這起失竊,但卻沒用,這個黑客也成了比特幣的第一個偷竊者。
2012年,由於網站託管供應商Linode的伺服器超級管理密碼泄露,價值228,845美元的46703比特幣失竊。超過4.3萬的失竊比特幣屬於一家比特幣交易平台Bitcoinica,另外3094比特幣為捷克程序員Marek Palatinus所有,比特幣首席程序員GavinAndersen也失去了他的5比特幣。

『柒』 比特幣現金被黑客攻擊過嗎

比特幣作為一種p2p形式的貨幣,它依據特定的演算法,根據大量的計算產生。黑客對比特幣的攻擊自2009年來就沒有停止過。黑客攻擊比特幣一般是攻擊比特幣交易平台,然後盜取大量的比特幣,造成巨大損失。所以一般的平台在網站防護上都要下很大功夫,就像之前國內的火幣網就使用了抗D保來保證網站的安全。一旦被攻擊,損失難以想像。

『捌』 比特幣在過去被黑客攻擊過嗎

比特幣使用的協議和密碼學規則在問世多年後仍行之有效,這是個好的現象,說明這個概念的設計非常好。但是,在各種軟體的執行過程中,也發現了安全漏洞並予以修正。和其它形式的軟體一樣,比特幣軟體的安全性取決於發現並修正問題的速度。類似的問題發現越多,比特幣就越趨於成熟。
對於在不同的交易平台和業務中發生的竊取和安全漏洞,經常會存在誤解。雖然這些是不幸的事件,但是它們並不代表比特幣被黑客攻擊,也不代表比特幣內部存在缺陷,正如銀行搶劫並不會危害到貨幣本身一樣。但是准確地說確實需要一整套良好的策略和直觀的安全性解決方案來使用戶更好地保護他們的資金,降低盜取和遺失的一般風險。在過去幾年中,這樣的安全功能快速發展,例如錢包加密,離線錢包和多重簽名交易。

門頭溝、郵票等比特幣均被黑客攻擊過,只要是知名一點的比特幣公司基本上都被黑客攻擊過,

『玖』 自學區塊鏈(六)BTC-挖礦難度

我們來看下挖礦的計算公式

H(block header) target,這個target就是 目標閾值

BTC用的哈希演算法是SHA-256,它產生的哈希值是256位,那麼就有2^256種取值,這個就是他的輸出空間,要增大挖礦難度, 就調節目標值在這個輸出空間所佔的比例 。

挖礦難度和目標閾值是成反比的, 當算力強時,調節難度,使目標閾值變小 。

不調節難度,隨著礦工數量增多,隨著算力的上升,那麼挖到區塊的時間就會變短,從10分鍾縮短到1分鍾甚至幾秒鍾,這個會帶來什麼樣的問題呢?可能很多人覺得這不是挺好嗎,交易等六個確認就會縮短時間了,交易就會變快了。其實出塊時間縮到很短,風險是很大的,因為網路延遲,出塊時間變短,不同節點很可能接到不同的區塊信息,導致會有很多分叉節點出現。礦工會根據自己認為正確的區塊接著挖。這種情況下,惡意節點發動分叉攻擊就比較容易成功,因為誠實節點的算力被分散了。

導致不需要51%的算力就能成功,所以縮短出塊時間是不利於BTC系統的穩定的。雖然10分鍾不一定是最優的時間,但是也算是比較合理的。

下面是 算力增長曲線

下面是 挖礦難度曲線

下面是 平均出礦時間

我們來看下難度公式:每2016個區塊調整一次挖礦難度,10分鍾出一個平均算下來是兩星期調整一次。

previous_difficulty是上一次的挖礦難度,分母是最近2016個區塊花費的時間

每個節點挖礦是獨立的,BTC的協議也是開源的,會不會有礦工不修改挖礦難度呢?可能性是存在的,但是不影響結果,因為廣播給其他節點需要獨立驗證block header的哈希值, 這個header裡面有難度的一個壓縮編碼,修改難度產生的結果是不會被誠實的節點認可的。

『拾』 什麼是比特幣延展性攻擊

交易的延展性,也被稱作為是可鍛性,啥叫可鍛,也即同樣一個東西(如一坨金屬),它的本質和質量都沒有改變,但是它的形狀改變了。而這個可鍛性,會造成交易ID——TXID的不一致,從而導致用戶找不到發送的交易。
現在比特幣的交易數據格式中,將交易簽名部分也納入了整體交易中,最後對整體交易做哈希,而交易簽名又可以有多種寫法,攻擊者篡改了它們,它們作用上是一樣的,但是位元組發生了變化,導致這個簽名不一樣了,前段時間甚至有一個礦池挖出了一個包含所有交易都是延展攻擊了的,給一些應用帶來了麻煩。
TXID發生變化可能會導致一些應用在查找TXID時找不到,從而影響一些錢包充值或提現的狀態,給運營者和用戶帶來麻煩,隔離見證是為了解決這個問題而提出的,將交易數據和簽名數據分開,這樣一筆交易的TXID一定唯一。

熱點內容
下一個超越以太坊的幣 發布:2025-07-20 10:07:44 瀏覽:757
trx運動健身房 發布:2025-07-20 09:52:17 瀏覽:294
usdt參數 發布:2025-07-20 09:46:01 瀏覽:763
廈門中山路去會展中心 發布:2025-07-20 09:35:17 瀏覽:881
btc攻擊 發布:2025-07-20 08:51:05 瀏覽:659
eth1沒ip 發布:2025-07-20 08:51:04 瀏覽:689
哪裡有比特幣提款機 發布:2025-07-20 08:45:14 瀏覽:417
asic遠程礦機軟體 發布:2025-07-20 08:27:45 瀏覽:594
以太坊對接上鏈 發布:2025-07-20 08:01:31 瀏覽:794
馬德里機場怎麼去市中心 發布:2025-07-20 08:00:05 瀏覽:681