隨機數在區塊鏈中的應用
近日,OG無涯社區聯合創始人紅軍大叔受邀在PlatON中文Telegram群參加快閃活動,向社區成員分享了關于隨機數的小知識。
近日,OG無涯社區聯合創始人紅軍大叔受邀在PlatON中文Telegram群參加快閃活動,向社區成員分享了關于隨機數的小知識,我們將其分享內容奉上以餮讀者。
01什么是隨機數?
在參與抽獎或抽樣的過程中,我們經常聽到“隨機數”這個詞。隨機數在密碼學中有著非?;A且重要的地位,常用于密鑰和安全參數生成。而在日常生活中,隨機數也是保障公平性的重要手段,廣泛應用于抽樣、抽簽、抽獎等場景當中。隨機數在區塊鏈中也應用廣泛,除了密鑰生成等傳統安全場景,在共識機制、零知識證明等熱門場景中也發揮著重要的作用,保護著區塊鏈的安全。
首先我們來說隨機數是什么。隨機數并不是一個具體的數,而是在通過隨機數生成器產生的一個或一組數的序列。這個序列所能出現的元素來自確定的集合,每次選出的元素不可預期,但元素出現的概率恒定的(一般是等概率的)。譬如說扔一枚六面均勻的骰子,結果不可預期,但每個面的概率都是相等的,每次擲出的結果就可以作為一個隨機數生成的方法。
真隨機數一般來自物理世界的隨機行為,需要進行噪聲搜集,而在計算機科學中,一般使用確定性的算法來模擬隨機數的生成,也稱偽隨機數。對偽隨機數的檢測非常重要,全面、完備的檢測可以避免算法缺陷或人為后門造成的風險。目前常用的隨機數檢測標準有 NIST SP 800-20和GB/T 32915-2016 等。
需要補充的是,在NIST這份標準提供的參考實現中,就曾被懷疑植入過后門。
Dual_EC_DRBG,目前該推薦實現已經被刪除。而在密碼學重要會議Crypto 2020中,也有一篇對NIST CTR-DRBG這個隨機數生成器的安全分析,指出了其缺陷并給出了修復方法。而在會議接受的論文里,研究隨機性相關問題的論文多達6篇。這都說明隨機數的問題并不簡單,也馬虎不得。
02 隨機數與區塊鏈應用
在區塊鏈中,由于較難從物理世界中獲取隨機噪聲,生成隨機數的難度更大。
目前一般的思路是通過幾種不同策略組合使用:一是通過多方協同生成;二是通過哈希函數等隨機預言機引入隨機性;三是通過承諾-揭示協議降低參與方作弊可能;四是引入門限協議或經濟約束提高產生隨機數的成功率。
其中,安全多方計算技術是產生高質量的鏈上隨機數的重要基礎技術。
引入門限協議,通過秘密共享或門限簽名的方式,可以避免隨機數生成方案因為一個參與方沒有完整執行流程而失敗,具備一定的容錯性,提高隨機數產生的成功率。引入經濟約束,可以避免參與方通過拒絕揭示的方式影響隨機數結果,對惡意的參與方進行懲罰。
PlatON基于安全多方計算技術,可以讓多方不可抵賴地協同生成隨機數,更好地為鏈上隨機數提供解決方案。