區塊鏈共識級別的攻擊
Double spending attacks
推翻已經確認的交易。
persistence
Grinding attacks
惡意節點試圖影響 slot leader selection 的過程,加大自己被選中為 slot leader 的概率。
這種攻擊主要是由於隨機性來源於鏈本身的原始資料,比如塊頭和交易,惡意節點可以嘗試多個可能成為 slot leader 的 block header。
Transaction denial attacks
阻止一筆交易被確認。惡意節點監控某個特殊的賬戶,不讓它發交易。
liveness
Desynchronization attacks
誠實節點無法與網路同步。
Eclipse attacks
51% attacks
Bribery attacks
Short Range attack
Long-Range attack + checkpoint = short range attack
Long-range attacks
所謂長程攻擊,指的是惡意節點試圖從創世塊開始對鏈進行分叉,分叉鏈可能或包含於主鏈不同的交易和塊,因此也叫 Alternative History 或者 History Revision 攻擊。Long Range, Alternative History, Alternate History, History Revision 在很多情況下是通用的概念。
長程攻擊之所以存在的主要原因是 Weak Subjectivity。
Weak Subjectivity
這個問題主要會影響剛剛加入到網路的新節點和長時間離線後重新加入的節點。
當一個新節點剛剛加入網路時,創世塊肯定是有的,也是毫無爭議的。但是除了創世塊,節點還會看到目前有好幾條鏈 – 主鏈與分叉鏈,即使並非惡意分叉,PoW 在末端自身也極易分叉。然後,節點並不能從這些鏈中判斷出哪個是主鏈。
長時間離線後重新加入的節點也是如此。PoS 也是最長鏈原則,擁有最多塊數的叉將成為主鏈。在 PoW 中,要投入大量算力才能獲取出塊權,對於 PoW 來說,最長鏈十分有效。
在 PoW 中,除非遭受 51% 攻擊,否則不可能從創世塊開始分叉。要偽造跟主鏈同樣長度的分叉,需要投入大量的算力。因此,最長鏈原則已經可以解決 Weak Subjectivity 問題。
Costless Simulation
對於 PoS 來說,最長鏈就不夠用了,因為這裡又出現了一個叫 Costless Simulation 的問題。PoS 的驗證人不需要像礦工一樣必須要進行大量計算,驗證人只需要從交易池中取出交易,打包入塊,最後廣播出去。因此偽造跟主鏈一樣長的鏈,毫無成本可言。
Weak Subjectivity 加上 Costless Simulation 導致最長鏈原則對 PoS 不再適用,長程攻擊由此產生。
Long Range Attacks
simple
posterior corruption ==> Key Evolving Signature Scheme
stake bleeding
https://blog.positive.com/rewriting-history-a-brief-introduction-to-long-range-attacks-54e473acdba9
Stake-Bleeding Attacks on Proof-of-Stake Blockchains
Nothing at stake attacks
當發生分叉時,驗證人的最優策略是承認每一條分叉,並在所有分叉上繼續挖。這樣無論哪一條叉最終勝出,驗證人都能獲得獎勵。
https://en.wikipedia.org/wiki/Proof-of-stake
https://blog.goldmint.io/nothing-at-stake-and-longrange-attack-in-pos-4ec486f1fc89
https://github.com/ethereum/wiki/wiki/Problems
https://pivx.org/nothing-considered-a-look-at-nothing-at-stake-vulnerability-for-cryptocurrencies/
https://medium.com/@abhisharm/understanding-proof-of-stake-through-its-flaws-part-2-nothing-s-at-stake-8d12d826956c
https://medium.com/coinmonks/understanding-proof-of-stake-the-nothing-at-stake-theory-1f0d71bc027
Past majority attacks
nothing at stake 的一種特殊情況。
Selfish-mining
自私挖礦,惡意挖到塊以後,並不廣播出去,而是偷偷藏在手裡,然後繼續挖。當監聽到有節點挖出同樣高度的塊時,迅速將手裡的塊廣播出去,如果惡意節點的網路更好, 那麼惡意節點手中同高度的塊就會被接受,如此一來,惡意節點就會更有優勢挖到下面的塊。