Try   HackMD

白皮書提到的攻擊

白皮書攻擊成功機率說明

直觀的想 , 權重越高的交易 , 要超過這交易的難度越大 , 篡改成功的機率越低

所以白皮書是以指數分佈去分析
分析以實做來講 , 不用理解也沒差

帳本交易的篡改

這邊一定是考慮確認的衝突交易

白皮書對攻擊者的假設

白皮書內容:

  • 攻擊者付款給商家,在商家認為交易已經獲得了足夠大的累積權重之後,攻擊者拿到了商品;
  • 接下來攻擊者發佈了一筆雙重支付的交易;
  • 攻擊者同時發送大量較小的交易(非常多,使用它所有的計算能力),這些交易不直接或者間接驗證原始的付款交易,而是去驗證那筆雙重支付的交易;
  • 可以看到攻擊者也許就擁有大量的女巫攻擊身份,並且不對 tips 進行驗證;
  • 在第 3 步中,也可以採用另外的一種方案,攻擊者使用所有它的計算能力去發送一筆「大」的雙重支付交易(具有非常大的自身權重),並驗證在原始付款交易之前的交易;
  • 攻擊者期望他的 sub-DAG 超越主體 DAG,從而使得 DAG 持續從攻擊者的雙重支付交易進行增長,以便使得之前合法的支付交易被拋棄掉。

這有提到一個重點:

  • 攻擊者可以發大量的tip , tip所選的交易可以任意選定 , 且數量可以比其他正常nodes多

另外 , 這邊假設選交易的算法 , 是均勻分佈隨機在tips內選

個人以為 , 白皮書少講一個假設

惡意node製造的權重增加是比正常node少

攻擊成功的帳本

由於每個node都是看衝突交易內最大權重的

所以攻擊者要成功 , 就是讓每個node衝突交易內最大的交易跟之前不一樣

就是原本node內 , 最大是

a , 過了一段時間後 , 變成
b

以一個例子說明

正常node要做的行為

惡意node可以做的行為

白皮書攻擊手段的目的

  1. 攻擊者付款給商家,在商家認為交易已經獲得了足夠大的累積權重之後,攻擊者拿到了商品;

這邊就跟一般的消費一樣

  1. 接下來攻擊者發佈了一筆雙重支付的交易;

這邊少講了許多東西 , 因為是衝突的交易

而且還是第二大權重的 , 權重會很難過確認的門檻

但是 , 白皮書所提的MCMC tip選取算法
是有弱點

所以 , 是要利用node沒有發現到衝突交易的時間 , 讓第二大權重的交易超過第一大的

    • 攻擊者同時發送大量較小的交易(非常多,使用它所有的計算能力),這些交易不直接或者間接驗證原始的付款交易,而是去驗證那筆雙重支付的交易;

    • 可以看到攻擊者也許就擁有大量的女巫攻擊 身份,並且不對 tips 進行驗證;

    • 在第 3 步中,也可以採用另外的一種方案,攻擊者使用所有它的計算能力去發送一筆「大」的雙重支付交易(具有非常大的自身權重),並驗證在原始付款交易之前的交易;

這邊攻擊的手段 , 是要讓正常node發現自己做錯了

(注意之前的假設 , 第二筆衝突交易的確認度不夠 , 所以需要去騙正常

node 發的
tip
來增加確認度)

這樣就可以讓攻擊者的交易確認度超過過門檻 , 進而拿到商品

  1. 攻擊者期望他的 sub-DAG 超越主體 DAG,從而使得 DAG 持續從攻擊者的雙重支付交易進行增長,以便使得之前合法的支付交易被拋棄掉。

到第四步 , 原本一開始的買賣 , 賣家的交易已經無效(因為確認度低於門檻)

所以賣家賠錢了

必然攻擊成功的情況

大權重攻擊

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

流程:

  1. 送出大權重的衝突交易

這邊大權重的意思是:

就算是最後一個node收到 , 也是比node原本DAG內衝突那筆交易累積權重還大

一樣也是偷天換日型的換掉node最大權重的交易

  1. 把全部可以控制的交易 , 都選大權重的衝突交易 , 選大權重衝突交易的tip數量比正常亂選的多

這一步就是要讓正常node發現確認度增加到錯誤的交易 , 進而改成增加大權重攻擊交易的確認度

需要這步是因為攻擊者的node數少 , 製造交易的數量無法比正常node還多

解法:

node接收交易時 , 拒絕很大權重的交易

解法只是讓攻擊難成功

跟大權重攻擊一樣的想法 , 就是寄生鏈攻擊

寄生鏈攻擊

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

流程:

  1. 攻擊者的node先養一條長長的鏈
    讓其中一筆衝突交易有著很大的累積權重(跟大權重攻擊的大權重交易一樣)

這條攻擊者養的鏈 , 在正常node的DAG上 , 會是不完整的

  1. 把這條鏈的全部交易都送給正常的node , 如同大權重攻擊一樣 , 發大量的tip , 讓正常的node發現

這邊自然是第一筆衝突交易確認後 , 拿到賣家商品後開始的攻擊

發許多tip的目的跟大權重攻擊一樣 , 讓正常node發現自己不應該增加第一筆衝突交易的權重

  1. 最終攻擊者所養的鏈成為主流 , 第一筆的衝突交易遭正常node拋棄

最終攻擊成功的結果

解法:

類似MCMC的算法

這邊MCMC需要從

tip 走足夠遠的距離 , 才能避免選到攻擊者發的
tip

分裂攻擊

這直接跟網路拓樸有關

  1. 讓某些node的DAG分裂成兩邊 , 且兩邊權重增加的速率差距很小

攻擊者管的是 : 讓某些交易可以透過惡意node廣播出去 , 某些交易不能

能不能被惡意node廣播的差別在於 : 該交易增加的衝突交易權重 , 是增加那一筆的

  1. 發兩筆衝突的交易 , 先讓其中一筆確認 , 另一筆衝突的交易 , 累積權重跟最大累積權重的交易 , 累積權重差距很小

開始發衝突交易後 , 就要進行1所提到的交易管制了

  1. 最終讓第二大累積權重的衝突交易 , 累積權重大於第一大的 , 這樣就停止攻擊 , 讓正常node拋棄掉第一筆衝突交易

解法:

類似MCMC算法 , 選衝突內能增加最大權重交易的

tip

tags: IOTA