女巫攻击及其防范
女巫攻擊及其防范
- 什么是女巫攻擊
- 女巫攻擊的防范
- 身份驗證
- 特征向量
- 讓偽造變得困難
- Model 0
什么是女巫攻擊
之前的文章在講拜贊庭容錯的時候,我們提到了女巫攻擊Sybil Attack。那什么是女巫攻擊呢?
女巫攻擊這個詞來源于Flora Rheta Schreiber 在1973年的小說《女巫》,這本小說寫的是對兼具多種人格的Sybil Dorsett進行心理治療的故事。一人化身為多人,這個就是女巫攻擊的本質。
在一個單純的分布式P2P網絡中,任何節點可以隨意的加入和退出P2P網絡,沒有任何限制。它只需要對外暴露其在P2P網絡中的唯一標志即可,除此之外,其他的信息都是私有的。
鑒于P2P網絡分布式的特性,這就意味著沒有任何中心節點,或者說沒有特權節點。這樣即使大家發現了惡意的節點,也沒有權利去回滾整個網絡的操作。在P2P網絡中,我們必須假設所有的節點都是不可靠的,跟所有其他節點的交互都是有風險的。
女巫攻擊正是利用了P2P網絡的分布式特性,將一個節點偽裝成多個節點,并將這多個偽裝節點(也叫做Sybil 節點)廣播到整個P2P網絡中,從而做一些莫可名狀的事情,比如獲得網絡控制權,拒絕響應,干擾查詢等事情。
考慮到之前我們提到的拜贊庭容錯,如果發生了女巫攻擊,一個節點可以偽裝成多個有效節點,這樣只要偽裝的節點突破n/3的限制,就能控制整個網絡。而實際上,惡意節點可能只有一個。
女巫攻擊的防范
事實上,在某些P2P網絡中,女巫攻擊并不需要花費太多功夫即可完成。那么我們我們怎么去防范女巫攻擊呢?
身份驗證
既然女巫攻擊的方法就是偽造網絡ID,那么最簡單的辦法就是讓每個加入的節點來做身份認證。這樣偽造的節點無法通過認證,那么女巫攻擊就完美的解決了。
身份驗證也有兩種方式:
2014年上映了一部德國的片子《我是誰:沒有絕對安全的系統》,這個片子是講的黑客的故事,同樣的,這個世界上也沒有絕對匿名的系統。世界上比較有名的像比特幣,洋蔥路由等都可以通過某些辦法獲得用戶信息,這些我會在后面的文章中具體講述。
可以假如網絡初始有N的可信任節點,這些信任節點可以對其他節點進行擔保,擔保其他的節點也是可信任的。當然這里面涉及到一些有效的擔保算法,這里就不詳細講述了。
特征向量
我們在做大數據的時候,往往需要通過很多特征向量來區分出是不是同一個用戶,同樣的在P2P網絡中,我們也可以通過這種特征向量來區分這個節點是不是偽造的節點。當然這種方式不能完全避免女巫攻擊,但是可以有效的減少女巫攻擊。這種是有成熟產品的,像SybilGuard 和 the Advogato Trust Metric。
讓偽造變得困難
如果能夠加大偽造的難度,那么女巫攻擊也就不那么有效了。這種最常見的就是POW了,工作量證明,讓節點通過運算去解決問題,解決了才認可你是一個有效的節點,這樣就有效的杜絕了女巫節點的存在。
Model 0
在golem網絡中,他們發明了一種算法來杜絕女巫攻擊,叫做Model 0。 golem是一個算力付費的區塊鏈項目,用戶付費然后在區塊鏈網絡上面完成計算。
在Model 0中,有兩種節點:Known 和 unknown, 并且會保存所有請求者的請求歷史。如果一個請求者他歷史記錄里面有3-5個成功交易,那么這個請求者就是Known節點,其他的沒有發生過交易的就是unknown節點。
系統如果一直和Known節點進行交互當然不會出現任何問題,但是Known節點畢竟是有限的,那么系統還是要接收一定的Unknown節點。怎么保證接收Unknown節點的過程中,不會受到女巫攻擊呢?
辦法就是構造一個量化的機制,當節點跟Unknown節點進行交互的過程中,如果出現錯誤或者失敗,那么節點可以暫時拒絕和Unknown節點的請求,只接收Known節點的請求。在未來的某個時間再去接收Unknown節點的請求,這樣就保證了系統在整體上是可用的,不會出現大面積服務拒絕的情況。
更多精彩內容且看:
- 區塊鏈從入門到放棄系列教程-涵蓋密碼學,超級賬本,以太坊,Libra,比特幣等持續更新
- Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續更新
- Spring 5.X系列教程:滿足你對Spring5的一切想象-持續更新
- java程序員從小工到專家成神之路(2020版)-持續更新中,附詳細文章教程
更多教程請參考flydean的博客
總結
- 上一篇: 理解分布式一致性:拜占庭容错与PBFT
- 下一篇: HMAC算法及其应用