隨機數對於區塊鏈有多重要?

買賣虛擬貨幣

隨機數是一個非常重要的密碼學概念,近日MYKEY研究部門負責人姚翔老師做客PlatON社羣,參加社羣快閃活動,為社羣講解隨機數定義與區塊鏈中隨機數方案及相關應用。

在參與抽獎或抽樣的過程中,我們經常聽到“隨機數”這個詞。隨機數在密碼學中有著非常基礎且重要的地位,常用於金鑰和安全引數生成。而在日常生活中,隨機數也是保障公平性的重要手段,廣泛應用於抽樣、抽籤、抽獎等場景當中。隨機數在區塊鏈中也應用廣泛,除了金鑰生成等傳統安全場景,在共識機制、零知識證明等熱門場景中也發揮著重要的作用,保護著區塊鏈的安全。

然而,在實際的應用當中,由於對隨機數的理解不到位,實現不嚴謹,引發了大量的安全風險事件。索尼、YubiKey等知名企業都曾出現過隨機數生成器的嚴重缺陷,不得不緊急進行韌體更新,雖然沒有造成毀滅性後果,但造成的損失也難以評估。而在區塊鏈上,由於開獎隨機數可被預測,在近兩年裡直接造成了成百上千萬資產的損失,可以說“歷史總在重演”。

看上去簡單的隨機數如此重要,又引發這麼多問題。研究和開發人員必須理解它的原理和細節,才能避免在應用過程中犯錯。

那麼,什麼是隨機數?怎樣判斷隨機數的質量呢?在區塊鏈中一般生成隨機數的方法又有哪些?

什麼是隨機數?

首先我們來說隨機數是什麼。隨機數並不是一個具體的數,而是在透過隨機數生成器產生的一個或一組數的序列。這個序列所能出現的元素來自確定的集合,每次選出的元素不可預期,但元素出現的概率恆定的(一般是等概率的)。譬如說扔一枚六面均勻的骰子,結果不可預期,但每個面的概率都是相等的,每次擲出的結果就可以作為一個隨機數生成的方法。

真隨機數一般來自物理世界的隨機行為,需要進行噪聲蒐集,而在電腦科學中,一般使用確定性的演算法來模擬隨機數的生成,也稱偽隨機數。對偽隨機數的檢測非常重要,全面、完備的檢測可以避免演算法缺陷或人為後門造成的風險。目前常用的隨機數檢測標準有 NIST SP 800-20和GB/T 32915-2016 等。

需要補充的是,在NIST這份標準提供的參考實現中,就曾被懷疑植入過後門。

Dual_EC_DRBG,目前該推薦實現已經被刪除。而在即將召開的密碼學重要會議Crypto 2020中,也有一篇對NIST CTR-DRBG這個隨機數生成器的安全分析,指出了其缺陷並給出了修復方法。而在會議接受的論文裡,研究隨機性相關問題的論文多達6篇。這都說明隨機數的問題並不簡單,也馬虎不得。

隨機數與區塊鏈

在區塊鏈中,由於較難從物理世界中獲取隨機噪聲,生成隨機數的難度更大。

目前一般的思路是透過幾種不同策略組合使用:一是透過多方協同生成;二是透過雜湊函式等隨機預言機引入隨機性;三是透過承諾-揭示協議降低參與方作弊可能;四是引入門限協議或經濟約束提高產生隨機數的成功率。

多方協同產生指的是隨機數的生成依賴多個參與方的輸入,這樣隨機數就較難被單方操縱。

由於每個輸入方的輸入可能具有很強的規律性,隨機性不足。需要使用隨機化的函式,例如雜湊函式對輸入進行處理。可以將所有參與方的輸入作為函式的輸入引數,輸出的結果作為隨機數。

承諾-揭示協議主要是為了避免參與方作惡,參與方需要先將自己想輸入的結果做一個承諾,一般也是透過雜湊函式完成。承諾釋出之後,參與方的輸入就不能再修改了,但需要注意的是,他仍然可以選擇不把承諾揭示。

引入門限協議,透過秘密共享或門限簽名的方式,可以避免隨機數生成方案因為一個參與方沒有完整執行流程而失敗,具備一定的容錯性,提高隨機數產生的成功率。引入經濟約束,可以避免參與方透過拒絕揭示的方式影響隨機數結果,對惡意的參與方進行懲罰。

安全多方計算技術正是產生高質量的鏈上隨機數的重要基礎技術。運用安全多方計算技術,可以讓多方不可抵賴地協同生成隨機數。PlatON基於安全多方計算技術可以更好地為鏈上隨機數提供解決方案。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;