什麼是日食攻擊?
日食攻擊是一種攻擊去中心化網絡的方法,攻擊者通過這種方法試圖隔離和攻擊一個或多個特定用戶,而不是攻擊整個網絡。
在這篇文章中將解釋以太坊的一些特性,包括它的叔塊機制,如何使它更容易受到這種攻擊。
區塊鏈中的數據結構
區塊鍊是一個去中心化的協議,它將數據庫分佈在其網絡中的多個節點上,為過去、當前和未來的交易建立共識機制。區塊鏈中的數據結構表示為區塊。
在一個去中心化的區塊鍊網絡中,參與者同意什麼是正確的,而不是一個中央權威。區塊鏈也是透明和不可變的,所有網絡參與者都可以看到網絡上發生的事情,而且交易日期不能被更改,除非通過一個商定的機制。
比特幣區塊鏈中的區塊類型
創世區塊
創世區塊是任何區塊鏈的第一個區塊,該區塊是系統的基本起點,並與所有未來的交易相連。世界上第一個創世區塊是由中本聰創建的,在此過程中,他創造了比特幣。
創世區塊的存在使區塊鏈能夠通過允許新創建的區塊與以前的區塊相關聯來生成它的交易歷史。此外,創世區塊在同步網絡節點方面有一個重要的功能——它們的數據庫中都必須有相同的創世區塊。這確保了區塊鏈的分佈式交易簿對每個人都是相同的,從而提供了安全性。
主鏈區塊
主鏈區塊是所有經過驗證並包含在區塊鏈中的區塊。為了實現這一點,區塊必須通過節點解決其分配的密碼謎題來獲得網絡的同意。一旦網絡達成共識,該區塊就包含在區塊鏈中,並由所有節點傳播。這樣,網絡的每個節點都有新的區塊,並作為它的一個驗證點。
每個有效區塊內部包含一系列與該區塊一起驗證的交易。例如,在比特幣中,每個有效區塊平均承載2100筆交易。一個有效區塊中的每一筆交易都被確認。
所有有效區塊繼續確認以前的交易,充分保護網絡上的所有區塊和交易。當然,每個有效的區塊包含一個允許驗證的數據結構。該結構包括區塊的哈希值、它的時間戳、它的nunco和它的區塊交易數據。搜索候選解決方案的過程稱為挖掘,參與的節點稱為礦工。為區塊的密碼謎題生成有效解決方案的每個礦工都成為領先者,並被允許確定未確認的交易集。然後將它們追加到區塊鏈中。
孤塊
孤塊或陳舊塊是不屬於區塊鏈的有效區塊。當兩個礦工幾乎同時驗證區塊時,或者當具有足夠哈希能力的攻擊者試圖逆轉交易時,可以創建這些數據。在這些情況下,網絡共識協議將起作用,以決定哪些區塊將被包含在鏈中,哪些將被孤立。
實際上,一個區塊鍊網絡被編程成總是偏愛最長的區塊鏈。也就是說,它將選擇包含更多信息或處理過的交易的區塊。在比特幣區塊鏈中,孤塊被丟棄,礦工執行的工作是無用的。
此外,正是由於這種類型的區塊,大多數交易所和一些錢包將自動等待額外的確認,才使資金可用。它們通過計算用戶正在接收的交易和當前區塊之間挖掘了多少區塊來實現這一點。
>eth.getBlock(blockNumber)
}
>eth.syncing.highestBlock -eth.getTransaction(“ “).blockNumber
區塊是如何驗證的?
區塊鏈系統使用Merkle樹數據結構,這使得它們(在理論上)是不可變的。 Merkle樹是Ralph Merkle在1979年申請專利的,在密碼學中被廣泛使用。 Merkle樹是驗證共享數據是否被更改、損壞或更改的基本方法,非常適合區塊鏈,因為它是輕量級的。例如,由於比特幣的Merkle樹結構,用戶的移動錢包不需要下載所有的比特幣交易來驗證它們。
給定區塊中的每個交易對應於Merkle樹中的一個葉子,通過哈希單個交易遞歸構建Merkle根。
對交易(葉)進行哈希以創建額外的葉節點,這些葉節點可能對應於區塊鍊網絡中的交易。儘管可以從大量的交易中創建Merkle樹,但Merkle根總是對應於一個32字節或256位的字符串(例如,SHA256哈希算法總是輸出32字節的固定長度,而不管輸入的大小)。通過這種方式,我們可以使用小到32字節的數據來驗證多達數千個交易。
根據案例,任何更改,無論多麼小,都會阻止對Merkle根的驗證,並使區塊鏈的部分或全部歷史失效。
以太坊區塊鏈中的區塊類型
以太坊與比特幣的一個不同之處在於,它有一個更快的區塊創建機制,旨在加快交易過程。但是,當區塊生成之間的時間間隔非常短(大約15秒)時,會創建大量孤塊,因為將所有這些區塊都包含在區塊鏈中是低效的。
這導致了礦工在沒有獎勵的情況下浪費時間在區塊上工作的問題。為了解決這個問題,以太坊的開發者推出了GHOST協議。
GHOST代表Greedy Heaviest Observed Subtree,這個概念很簡單。它獎勵那些驗證孤塊的礦工,儘管其獎勵低於標準區塊。為了釋放獎勵,區塊必須被主鏈中的區塊引用——或者叔塊。
該機制的另一個優點是解決了網絡中心化的問題。當快速創建區塊時,大型礦池很容易壟斷區塊驗證,導致較小的競爭對手創建無數無用的孤塊。
以太坊區塊鏈中的區塊類型
以太坊區塊鏈中有兩種類型的區塊:
主鏈區塊是包含在以太坊區塊鏈中的區塊。發現它的礦工將獲得獎勵。
叔塊是經過身份驗證但未包含在主區塊鏈中的區塊。礦工因此得到的報酬比有效區塊低。
想像一下,兩個在世界不同地方的礦工在同一時間開採同一個區塊。然後它們在整個網絡中傳播它們的區塊。這可能會在鏈中產生分歧,所以必須選擇一個,而較大的區塊總是獲勝。未被選中的區塊將成為孤兒(在比特幣中)或叔叔(在以太坊中)。與比特幣不同的是,以太坊礦工將獲得1/8 的完整區塊獎勵以挖掘叔塊。
叔塊獎勵如何運作
主鏈區塊的礦工可以引用叔塊,當他們這樣做時,一個額外的獎勵分配給主鏈區塊的礦工和叔塊的礦工。主鏈中包含的每個區塊可以引用最多兩個叔塊,並為每個引用的叔塊提供1/32的完整區塊獎勵。然而,支付給礦工的報酬隨著時間的推移而減少。
通過保證對浪費的計算工作的補償,並通過使獎勵隨著時間的推移而減少,競爭鏈上的礦工有動力重新加入主鏈。這些叔塊有助於鏈安全,也減少51%的攻擊概率。
在以太坊礦池中,可以以多種方式分佈:
比例支付計劃
在這個簡單的方案中,礦工將根據在池發現的兩個區塊之間的時間間隔內提交的股票數量獲得相應的獎勵。因此,一個區塊獎勵B將在池中的N個礦工之間根據他們各自提交的份額進行分配。
按最後N 股支付(PPLNS)
(PPLNS)計劃按照最近提交的N股份額比例分配獎勵。
基於隊列的支付計劃
Ethpool3是第一個引入基於隊列獎勵機制的以太坊採礦池。在這一機制下,礦工對提交給池運營商的每一份額累積信用。每次由池開採一個完整的區塊時,區塊獎勵被分配給池中累積信用餘額最高的礦工。然後,頂級礦工將其信用餘額重置為他們自己和池中第二高的信用餘額之間的差異。
引用關係創造了一個額外的鑄造獎勵,對於普通區塊所有者是完整區塊獎勵的1/32,對於叔塊的(8 - i)/8。根據引用的區塊高度,變量i的範圍是1到6。
除了優化區塊鏈的結構,以太坊還有另外兩個安全改進。一個是隨機打破平局規則。一個節點不是接受接收到的第一條鏈,而是在所有接收到的相同長度的鏈中隨機選擇一條鏈。 γ的數目不再是固定的,等於競爭鏈數的倒數。另一個目標是免除叔塊的採礦戰略。
叔塊和日食攻擊
日食攻擊是如何工作的?
日食攻擊要求攻擊者控制主機節點的殭屍網絡(每個節點都有自己的IP地址),併計算出受害者的鄰近節點,基本上是通過反複試驗。實現這一目標所需的努力取決於網絡的規模和性質,但如果成功,攻擊者將在受害者註銷並重新加入網絡後控制所有連接節點。
在這個場景中,有三個參與者——攻擊者、受害者和一個誠實節點。如果受害者發現了一個區塊,攻擊者就不會將此區塊傳播到網絡。如果攻擊者發現了一個區塊,他們就和受害者分享。通過這種方式,攻擊者為自己和被遮蔽的節點創建了一個私有區塊鏈。
這樣,攻擊者可以獲得比誠實挖礦多96.4% 的收益。日食攻擊是可能的,因為在去中心化的網絡中,一個節點不能同時連接到網絡上的所有其他節點。相反,為了提高效率,一個給定節點將連接到一組選定的其他節點,這些節點依次連接到自己的選定組。因此,僅使用兩台具有唯一IP地址的計算機就可以發起日食攻擊。
以太坊依賴於基於一種名為Kademlia的協議的結構化網絡,該協議旨在讓節點更有效地連接到其他節點。通過使用密鑰生成算法,攻擊者可以非常迅速地創建無限數量的節點ID(點對點網絡上的標識符)。更糟糕的是,攻擊者甚至可以創建節點ID,使它們比隨機節點ID 對受害者更具吸引力,基本上將受害者吸引到他們身邊。
以太坊有三個特徵可能使其容易受到日食攻擊。首先,快速創建區塊會創造出無盡的鬆散區塊,通過增加以太幣的供應量間接侵犯了誠實礦工的利益。其次,叔塊機制意味著節點可以從這些區塊中獲利。第三,以太坊增強的節點連接性為攻擊者提供了動機。
女巫攻擊
計算機安全方面的女巫攻擊是指一個人試圖通過在同一個網絡上創建多個身份/賬戶/節點來接管網絡,而這些身份/節點對該網絡的其他參與者來說似乎是不同的唯一身份。女巫攻擊背後的動機是破壞聲譽系統中的權威/權力。用更簡單的術語來理解這一點——目標是讓網絡中的大多數人按照引起這種攻擊的個人的需要在網絡中執行過程(與網絡內的規則集不一致)。讓我們通過現實世界的情況更好地理解這一點,該情況引起了很多緊張,但這將有助於使這個概念更容易,與它創造的情況不同。 。
現在,在深入了解區塊鏈與女巫攻擊的關係以及如何阻止它們之前,先簡要介紹一下女巫這個名字是如何被選擇的。 1973年《女巫》一書出版。它講的是一個名叫Sybil Dorsett的女人,她正在接受精神分析學家Cornelia B. Wilbur的治療,她患有分離性身份識別障礙,也被稱為多重人格障礙。由於這個概念的相似性,微軟研究院的Brian Zill建議將其命名為Sybil Attack。
區塊鍊網絡是一個非常容易受到攻擊的系統。區塊鍊網絡由不同的節點組成,這些節點使用工作證明(Proof of Work, PoW)等共識算法得出一個結論,即要添加的區塊是否正確。由於共識要求大多數人對區塊的真實性達成一致,因此要求這些節點不受單個實體的控制,這樣就可以防止出現故障節點的增加。這就是Sybil 攻擊的位置:如果攻擊者創建了足夠多的假身份,攻擊者就可以從網絡中擊敗誠實節點。在這種情況下,甚至可以更改交易順序;但是管理如此大量的計算能力被認為幾乎是不可能的。
為了防止女巫攻擊區塊鍊網絡,使用了不同的共識算法,如工作證明(Proof of Work, PoW)、權益證明(Proof of Stake, PoS)、委託權益證明(Delegated Proof of Stake, DPoS)。雖然它們不能直接阻止女巫攻擊,但它們使攻擊者幾乎不可能進行女巫攻擊。這些共識算法背後的共同概念是附加在網絡中創建身份的成本。例如,在工作證明(PoW)共識算法中,用戶必須執行一系列困難的計算,然後只有他們才能添加區塊。一個試圖用大量假身份淹沒網絡的攻擊者將不得不解決相應次數的計算,在計算週期中花費金錢,使攻擊更加困難和低效。這就是限制攻擊者氾濫並接管網絡的原因。
吸血鬼攻擊
吸血鬼攻擊的第一步是鼓勵另一個平台的流動性提供者將他們的LP代幣(代表所提供的流動性)抵押到一個新平台。
在Sushi的例子中,Uniswap的流動性提供者被激勵將他們的LP代幣放在SushiSwap上,這樣他們就可以獲得以SUSHI代幣支付的額外獎勵。 SushiSwap一開始就為SUSHI代幣制定了一個相當激進的發行計劃——每個以太坊區塊1000個SUSHI,分發給Uniswap的多個不同池的流動性提供者,如SNX-ETH、LEND-ETH 、YFI-ETH、LINK-ETH。讓多個DeFi社群參與進來的想法已經被Yam成功地採用,並被SushiSwap重複利用。
一旦協議吸引了足夠的流動性,吸血鬼攻擊的下一步就是將已抵押的LP代幣遷移到一個新平台。這樣一來,一個新平台就可以將遷移的流動性用於自己的自動做市商,不僅竊取了流動性,還竊取了第一個平台的交易量和用戶。
流動性基本上是從第一個平台被吸走,轉移到第二個平台,因此得名“吸血鬼攻擊”。
說到Sushi,這就是Sushi的MasterChef合同發揮作用的地方。 MasterChef合約一旦被觸發,就能夠將LP代幣從Uniswap遷移到Sushiswap,基本上竊取了Uniswap的流動性。一旦流動性轉移,就可以立即用於SushiSwap上的交易。
為了鼓勵流動性提供者參與遷移,所以計劃了一些額外的激勵措施。首先,SUSHI流動性挖礦計劃將在遷移後繼續進行,但排放量會減少(每個區塊100個SUSHI)。最重要的是,那些決定持有SUSHI代幣而不是出售代幣的人將從SushiSwap獲得一大筆交易費用。
在一個成功的吸血鬼攻擊結束後,一個新的協議理論上應該可以獲取原始項目的大量流動性、用戶和交易量。
這基本上就是吸血鬼攻擊的計劃。