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