• APP內打開
    風險提示:防范以虛擬貨幣/區塊鏈名義進行的非法集資風險。 ——銀保監會等五部門

    為什么 DApp 經常會遭遇隨機數攻擊?

    白話區塊鏈 2019-10-17 12:17:05
    微信分享

    掃碼分享

    9 月 14 日,一款名為“EOSPlay”的 DApp 游戲遭遇了新型隨機數攻擊,一共損失了數萬個 EOS。

    作者:李火華 / 來源:白話區塊鏈

    9 月 14 日,一款名為“EOSPlay”的 DApp 游戲遭遇了新型隨機數攻擊,一共損失了數萬個 EOS。

    或許很多人對「隨機數攻擊」這個詞已經司空見慣了,因為在 DApp 遭遇黑客攻擊的事件中,隨機數攻擊占了很大一部分,很多 DApp 的隨機數被黑客破解了。

    你或許會問,隨機數不是隨機的嗎?隨機意味著不可預測,為什么還會被黑客破解呢?

    這還得從隨機數說起。

    隨機數可以分為真隨機數和偽隨機數。真隨機數需要同時滿足隨機性、不可預測性、不可重現性,而偽隨機數只需要滿足隨機性,或者是隨機性和不可預測性即可。

    真隨機數只存在于物理世界中,一般需要通過物理手段(包括量子過程)獲得,比如我們日常見到的拋硬幣、擲骰子,生成的隨機數就是真隨機數。但是,拋硬幣、擲骰子這種隨機數生成方法的缺點非常明顯,那就是耗時、耗力,而且也無法滿足現代的計算機世界對隨機數的需求。

    因為效率的緣故,現代的計算機軟件主要依賴偽隨機數。最早的偽隨機數生成器由 20 世紀最重要的數學家之一馮·諾依曼創造,通過一個確定的隨機數種子,由確定的算法生成偽隨機數序列。現在的主流計算機編程語言,默認的是將 1997 年發明的梅森旋轉算法作為生成偽隨機數的方法。

    偽隨機數最大的缺陷是,只要種子不變,生成的偽隨機數序列也不會變。換句話說,只要你能拿到種子,你就可以破解隨機數。

    計算機生成偽隨機數的過程,或多或少與這臺計算機的物理狀態或運算狀態有關。也就是說,同一套隨機數算法,不同的計算機,或是同一臺計算機在不同的時刻,生成的隨機數是不一樣的。

    然而,這種傳統的計算機偽隨機數生成方法雖然足夠安全,卻并不適用于區塊鏈。區塊鏈是一個分布式的系統,同一個 DApp 在不同的節點上運行,采用的隨機數必須要一致,這樣才能讓各個節點進行驗證。所以,DApp 的隨機數來源,不能是運行這個 DApp 的計算機自動生成的,因為這樣的話,不同的節點計算機運行的結果就不一樣了。

    image.png

    下載白話區塊鏈APP

    區塊鏈世界入口第一站,人人都能看懂的區塊鏈;24 小時熱點實時追蹤。

    毛片免费看