白皮書提到的攻擊
===
### 白皮書攻擊成功機率說明
直觀的想 , 權重越高的交易 , 要超過這交易的難度越大 , 篡改成功的機率越低
所以白皮書是以指數分佈去分析
分析以實做來講 , 不用理解也沒差
### 帳本交易的篡改
這邊一定是考慮確認的衝突交易
#### 白皮書對攻擊者的假設
白皮書內容:
:::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 持續從攻擊者的雙重支付交易進行增長,以便使得之前合法的支付交易被拋棄掉。
:::
到第四步 , 原本一開始的買賣 , 賣家的交易已經無效(因為確認度低於門檻)
所以賣家賠錢了
#### 必然攻擊成功的情況
#### 大權重攻擊

流程:
:::info
1. 送出大權重的衝突交易
:::
這邊大權重的意思是:
:::success
就算是最後一個node收到 , 也是比node原本DAG內衝突那筆交易累積權重還大
:::
一樣也是偷天換日型的換掉node最大權重的交易
:::info
2. 把全部可以控制的交易 , 都選大權重的衝突交易 , 選大權重衝突交易的tip數量比正常亂選的多
:::
這一步就是要讓正常node發現確認度增加到錯誤的交易 , 進而改成增加大權重攻擊交易的確認度
需要這步是因為攻擊者的node數少 , 製造交易的數量無法比正常node還多
解法:
:::success
node接收交易時 , 拒絕很大權重的交易
:::
解法只是讓攻擊難成功
跟大權重攻擊一樣的想法 , 就是寄生鏈攻擊
#### 寄生鏈攻擊

流程:
:::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`