--------51% Attack--------
講到呢度,大家應該會問,如果契弟既運算能力真係好高好高
高到超過一半,咁會發生咩事?
Alternative History Attack會100%成功
即係話契弟可以呃曬全世界,同一個bitcoin佢可以用無限次
而大家都吹佢唔脹
但係 呢個時大家又要由契弟既角度諗下
佢要佔據到網絡上51%既運算能力
淨係買挖礦機既錢都講緊唔知幾多錢
都未計買地開廠擺機開冷氣電氣既錢
當真係有人願意拎成億港紙出黎發動51% attack
佢會得到乜野?
佢會徹底催毀左所有人對bitcoin既信心
世界上唔會再有人信/用bitcoin
bitcoin既價值直跌到落0
不過呢,有樣野可以放心
就係51% attacker都唔會偷到你以前已經有既bitcoin
佢最多可以狂用同一個bitcoin
或者見到你樣衰,就filter走曬所有你發起既交易
咁你既交易可能永遠入唔到條chain
等等
雖然到時你keep 住幾多個bitcoin都無用
攻擊完之後佢用成億買番黎既挖礦機就可以擺起度曬太陽
會唔會有人做D咁戇居既野
你可能會話:chur 美國佬整支核彈出黎都億億聲啦
如果美國佬覺得太多人用bitcoin黎逃稅
有心想收你bitcoin皮,幾十億佢都肯拎出黎做低你啦
理論上係arm既
實際上仲有人計左條數(用美金計)
https://gobitcoin.io/tools/cost-51-attack/
$2,313,650,728 Hardware cost only, at cheapest rate
That would consume 82,701,731 kWh per day ($4,135,086 per day)
用廿幾億美金黎買機,每日交四百萬美金電費
我就唔係好知道中國/美國/俄羅斯有無咁既能力
如果有咁多錢淨,我估Donald Trump會索性mine多幾個bitcoin比自己好過啦
實際上如果有人起網絡上壟斷到運算能力
其他miner一定知道,到時大家會用咩對策應付呢個攻擊無人估到
51% attack都係純粹理論,實行時會有咩困難,會遇到咩反抗,god knows
作為普通人既我地只有一樣野可以做,就係幫手掘礦
越多人做礦工,51% attacker既成本就越高
如果有咁強既hasing power 夠唔夠反推返人地條private key 出黎
等自己可以偽造埋交易?
要再次提提大家
hashing power係同其他miner比較
如果呢個世界初初只有一個CPU挖緊bitcoin
你只需要兩個CPU就可以發動攻擊
但係要brute force 搵條private key出黎係independent of 其他miner
就算脫離bitcoin既世界
要搵番條key出黎 所需既energy同computing power係遠遠超出而家人類能力範圍
就算你用曬全世界每一個processing unit都要計幾到太陽熄滅先計得完
所需要既energy更加係超出成個世界既GDP
source: https://crypto.stackexchange.com/questions/1145/how-much-would-it-cost-in-u-s-dollars-to-brute-force-a-256-bit-key-in-a-year
隨非你有quantum computing processor啦
但係而家仲研究緊
係喎 犯左低級邏輯錯誤添
Btw 因為真係未用過bitcoin 想問多個白痴問題
係咪啲wallet software 會自己收miner 既信息再show 比user 睇宜家唔同account 有幾多bitcoin 係入邊
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?
Public key 本身會包含左係條transaction 度?
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?
Public key 本身會包含左係條transaction 度?
差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者
講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」
我諗緊下個chapter 就講transaction既detail
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?
Public key 本身會包含左係條transaction 度?
差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者
講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」
我諗緊下個chapter 就講transaction既detail
咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat
(雖然以咁大個base 機率應該好細)
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?
Public key 本身會包含左係條transaction 度?
差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者
講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」
我諗緊下個chapter 就講transaction既detail
咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat
(雖然以咁大個base 機率應該好細)
我意思即係兩個人開左同一個account number
想問miner 每次收到人地send 過黎既block 係咪都mandatory 要用每條交易既public key 去verify 個block 入邊既所有transaction 嫁?
Public key 本身會包含左係條transaction 度?
差唔多正確
唯一我會挑剔既係唔應該用"mandatory"
因為bitcoin既世界無人會mandate你去做任何一件事
你鍾意唔verify D transaction都無人會鬧你
其他礦工承唔承認呢個miner既result係另一回事
礦工可以唔verify, 而且咁arm呢個block既交易都係合法既
咁咪無所謂
如果礦工唔verify得黎個block係錯既,照樣propagate比其他礦工
都無所謂既,其他正直既礦工會ignore呢個block者
講多少少
bitcoin address = public key hash
你比bitcoin另一個人, 即係意思係
「比1BTC呢個address, 可以動用呢1BTC既人必須証明用cryptographic signature同public key黎証明佢係呢個address既owner」
我諗緊下個chapter 就講transaction既detail
咁既話 既然private key 應該係randomly generate 而又唔會有一個centralise organisation 去assign
咁咪有機會咁岩得咁橋repeat
(雖然以咁大個base 機率應該好細)
我意思即係兩個人開左同一個account number
random sample 2^128 個 256bit hash value先有1/2機率有collision
所以重複既機率好細
樓主有冇關於密碼學嘅書推介?
Hashing algorithm 好重要係collusion resistance
其中一個例子係你download software 通常會比個 hash value你 md5|sha1|sha256
你 download 完個file, 對下個 hashvalue 就知個file, 有無比人改過,可以安心使用
但如果嗰hashing algorithms 好易搵到 f(X1)=f(x2) 就好大問題
Hacker 好易將software加入Virus 或者trogan 再用方法可以整到一樣hash value
咁你download 完之後,都唔知個software 係咪真係可信
Hashing algorithm 好重要係collusion resistance
其中一個例子係你download software 通常會比個 hash value你 md5|sha1|sha256
你 download 完個file, 對下個 hashvalue 就知個file, 有無比人改過,可以安心使用
但如果嗰hashing algorithms 好易搵到 f(X1)=f(x2) 就好大問題
Hacker 好易將software加入Virus 或者trogan 再用方法可以整到一樣hash value
咁你download 完之後,都唔知個software 係咪真係可信
有興趣知多d,點樣check
Hashing algorithm 好重要係collusion resistance
其中一個例子係你download software 通常會比個 hash value你 md5|sha1|sha256
你 download 完個file, 對下個 hashvalue 就知個file, 有無比人改過,可以安心使用
但如果嗰hashing algorithms 好易搵到 f(X1)=f(x2) 就好大問題
Hacker 好易將software加入Virus 或者trogan 再用方法可以整到一樣hash value
咁你download 完之後,都唔知個software 係咪真係可信
有興趣知多d,點樣check
照咁睇, 好多陰謀論既人話中本聰”收埋“好多bitcoin, 發左達, 呢個講法即係唔成立。 盤古初開既時候每個人有幾多bitcoin寫到清清楚楚, 中本聰亦無可能算到以後既交易計定個hash, 係唔係咁?
------------Vector76 Attack-------------------------
技術夠高超既話,可以combine race attack同finney attack
下面繼續用咖啡店做例子
高智能既契弟發動攻擊之前 會先分析咖啡店既網絡流量
睇下咖啡店通常去bitcoin network邊個node
例如咖啡店同node 1/2/3係熟D既,收到咩transaction都會同node 1/2/3講先
於是你有樣學樣,同node 1/2/3打好關係
12:00:00
有個正常新block發佈左(叫佢做block 0),契弟開始掘下一個block
而且呢個block包含住一個正常交易(留意同finney attack唔同)
12:05:00
唔知點解咁好彩呢條契弟真係掘到下一個block, 但係佢唔發佈呢個block住
所以呢個時候其他miner仍然唔知有呢個block, 仍然based on block 0 mine緊
12:06:00
契弟去到咖啡店買咖啡
契弟比錢果一刻同時send:
1條正常交易比咖啡店個node
1條左手交右手既交易比node 1/2/3
咖啡店個node跟住會傳播呢個正常交易比node 1/2/3
但係好可惜契弟搶先一步同node 1/2/3講左野先
所以node 1/2/3 ignore左正常交易, 反而淨係會同其他node講左手交右手既交易
呢個時會mine 正常交易既礦工會比左手交右手既交易少
所以正常交易輸既機會好大
但係咖啡店心諗
「唔緊要!反正今次我會等到起碼1次confirmation先會沖咖啡比你!」
於是契弟同咖啡店都一齊起度等
12:10:00
其他miner終於掘到個block出黎,而且呢個block係包住左手交右手既交易
契弟立即將之前自己mine到而未發布而且包含正常交易既block send比咖啡店node
咖啡店咁就中伏喇,因為今次真係有一次confirmation, 局住比左杯咖啡契弟
但係咖啡店唔知道 呢個世界上 收到左手交右手block既node 係多過 收到正常交易既node
所以正常交易block好可能將來會變成孤兒block
---------Alternative History Attack-------------------
要抵擋上述attack, 等一次confirmation唔夠
咁我等夠兩次confirmation lor, 實得啦掛?
上面兩種攻擊方法都要求契弟事先掘定1個block
如果契弟既hashing power再強D
以佢一人之力同所有礦工鬥快
佢可以正正常常咁去買咖啡
同時起後面靜靜雞自己都掘礦
但係自己掘既block就隱含一條左手交右手既交易
就算咖啡店真係等夠兩次確認先沖咖啡比契弟飲
如果契弟真係掘得好快,起出面既礦工掘到兩個block既同時
已經掘到三個block
收到咖啡之後就即刻send果三個block出去
就會瞬間變成longest blockchain, 令到原本包含正常交易既block變成孤兒仔
咁你可能會問,有乜可能契弟會mine得咁快?
情況就好似:點解小明會跑得快過火車?因為小明真係跑得好快lor
但係呢種攻擊方法要求更加強大既hasing power
攻擊成功既機會depends on兩個factor:
契弟佔整個網絡既hashing power幾多%
同埋
咖啡店需要既確認次數
例如,契弟既運算能力係整個網絡既10%,而且咖啡店需要兩次確認先會沖咖啡比契弟
咁契弟攻擊成功既機會有5%
如果咖啡店增加確認次數到6次,而契弟運算能力不變,咁攻擊成功既會率只有0.02%
但係如果契弟真係好犀利
運算能力佔全世界40%,就算咖啡店等夠6次確認,都有50%既機會攻擊成功