白皮書提到的攻擊 === ### 白皮書攻擊成功機率說明 直觀的想 , 權重越高的交易 , 要超過這交易的難度越大 , 篡改成功的機率越低 所以白皮書是以指數分佈去分析 分析以實做來講 , 不用理解也沒差 ### 帳本交易的篡改 這邊一定是考慮確認的衝突交易 #### 白皮書對攻擊者的假設 白皮書內容: :::info * 攻擊者付款給商家,在商家認為交易已經獲得了足夠大的累積權重之後,攻擊者拿到了商品; * 接下來攻擊者發佈了一筆雙重支付的交易; * 攻擊者同時發送大量較小的交易(非常多,使用它所有的計算能力),這些交易不直接或者間接驗證原始的付款交易,而是去驗證那筆雙重支付的交易; * 可以看到攻擊者也許就擁有大量的女巫攻擊身份,並且不對 tips 進行驗證; * 在第 3 步中,也可以採用另外的一種方案,攻擊者使用所有它的計算能力去發送一筆「大」的雙重支付交易(具有非常大的自身權重),並驗證在原始付款交易之前的交易; * 攻擊者期望他的 sub-DAG 超越主體 DAG,從而使得 DAG 持續從攻擊者的雙重支付交易進行增長,以便使得之前合法的支付交易被拋棄掉。 ::: 這有提到一個重點: * 攻擊者可以發大量的tip , tip所選的交易可以任意選定 , 且數量可以比其他正常nodes多 另外 , 這邊假設選交易的算法 , 是均勻分佈隨機在tips內選 個人以為 , 白皮書少講一個假設 :::info 惡意node製造的權重增加是比正常node少 ::: #### 攻擊成功的帳本 由於每個node都是看衝突交易內最大權重的 所以攻擊者要成功 , 就是讓每個node衝突交易內最大的交易跟之前不一樣 就是原本node內 , 最大是 $a$ , 過了一段時間後 , 變成 $b$ 以一個例子說明 #### 正常node要做的行為 #### 惡意node可以做的行為 #### 白皮書攻擊手段的目的 :::info 1. 攻擊者付款給商家,在商家認為交易已經獲得了足夠大的累積權重之後,攻擊者拿到了商品; ::: 這邊就跟一般的消費一樣 :::info 2. 接下來攻擊者發佈了一筆雙重支付的交易; ::: 這邊少講了許多東西 , 因為是衝突的交易 而且還是第二大權重的 , 權重會很難過確認的門檻 但是 , 白皮書所提的MCMC tip選取算法 是有[弱點](https://hackmd.io/s/HyQrzrV0Z#MCMC很難找到衝突交易的DAG)的 所以 , 是要利用node沒有發現到衝突交易的時間 , 讓第二大權重的交易超過第一大的 :::info 3. * 攻擊者同時發送大量較小的交易(非常多,使用它所有的計算能力),這些交易不直接或者間接驗證原始的付款交易,而是去驗證那筆雙重支付的交易; * 可以看到攻擊者也許就擁有大量的女巫攻擊 身份,並且不對 tips 進行驗證; * 在第 3 步中,也可以採用另外的一種方案,攻擊者使用所有它的計算能力去發送一筆「大」的雙重支付交易(具有非常大的自身權重),並驗證在原始付款交易之前的交易; ::: 這邊攻擊的手段 , 是要讓正常node發現自己做錯了 (注意之前的假設 , 第二筆衝突交易的確認度不夠 , 所以需要去騙正常 $node$ 發的 $tip$ 來增加確認度) 這樣就可以讓攻擊者的交易確認度超過過門檻 , 進而拿到商品 :::info 4. 攻擊者期望他的 sub-DAG 超越主體 DAG,從而使得 DAG 持續從攻擊者的雙重支付交易進行增長,以便使得之前合法的支付交易被拋棄掉。 ::: 到第四步 , 原本一開始的買賣 , 賣家的交易已經無效(因為確認度低於門檻) 所以賣家賠錢了 #### 必然攻擊成功的情況 #### 大權重攻擊 ![](https://i.imgur.com/kjIZ8Mi.png) 流程: :::info 1. 送出大權重的衝突交易 ::: 這邊大權重的意思是: :::success 就算是最後一個node收到 , 也是比node原本DAG內衝突那筆交易累積權重還大 ::: 一樣也是偷天換日型的換掉node最大權重的交易 :::info 2. 把全部可以控制的交易 , 都選大權重的衝突交易 , 選大權重衝突交易的tip數量比正常亂選的多 ::: 這一步就是要讓正常node發現確認度增加到錯誤的交易 , 進而改成增加大權重攻擊交易的確認度 需要這步是因為攻擊者的node數少 , 製造交易的數量無法比正常node還多 解法: :::success node接收交易時 , 拒絕很大權重的交易 ::: 解法只是讓攻擊難成功 跟大權重攻擊一樣的想法 , 就是寄生鏈攻擊 #### 寄生鏈攻擊 ![](https://i.imgur.com/hytkh0z.png) 流程: :::info 1. 攻擊者的node先養一條長長的鏈 讓其中一筆衝突交易有著很大的累積權重(跟大權重攻擊的大權重交易一樣) ::: 這條攻擊者養的鏈 , 在正常node的DAG上 , 會是不完整的 :::info 2. 把這條鏈的全部交易都送給正常的node , 如同大權重攻擊一樣 , 發大量的tip , 讓正常的node發現 ::: 這邊自然是第一筆衝突交易確認後 , 拿到賣家商品後開始的攻擊 發許多tip的目的跟大權重攻擊一樣 , 讓正常node發現自己不應該增加第一筆衝突交易的權重 :::info 3. 最終攻擊者所養的鏈成為主流 , 第一筆的衝突交易遭正常node拋棄 ::: 最終攻擊成功的結果 解法: :::success 類似MCMC的算法 ::: 這邊MCMC需要從 $tip$ 走足夠遠的距離 , 才能避免選到攻擊者發的 $tip$ #### 分裂攻擊 這直接跟網路拓樸有關 :::info 1. 讓某些node的DAG分裂成兩邊 , 且兩邊權重增加的速率差距很小 ::: 攻擊者管的是 : 讓某些交易可以透過惡意node廣播出去 , 某些交易不能 能不能被惡意node廣播的差別在於 : 該交易增加的衝突交易權重 , 是增加那一筆的 :::info 2. 發兩筆衝突的交易 , 先讓其中一筆確認 , 另一筆衝突的交易 , 累積權重跟最大累積權重的交易 , 累積權重差距很小 ::: 開始發衝突交易後 , 就要進行1所提到的交易管制了 :::info 3. 最終讓第二大累積權重的衝突交易 , 累積權重大於第一大的 , 這樣就停止攻擊 , 讓正常node拋棄掉第一筆衝突交易 ::: 解法: :::success 類似MCMC算法 , 選衝突內能增加最大權重交易的 $tip$ ::: ###### tags: `IOTA`