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

    Ultrain隨機數服務獲美國權威認證!

    白話區塊鏈 2019-04-09 17:44:28
    微信分享

    掃碼分享

    Ultrain針對業內已有的問題,結合自身公鏈功能特點,設計了全新的隨機數服務架構

    作者:Frank / 來源:白話區塊鏈


    隨機數的

      在區塊鏈應用中,隨機數服務具有重要的地位,應用領域非常廣泛,所以隨機數服務是否安全可靠,是需要仔細考量的。之前業內有部分公鏈提供了隨機數的服務,但實際效果都差強人意,往往都具有很大的漏洞,頻頻出現被黑客攻破的情況。

      Ultrain針對業內已有的問題,結合自身公鏈功能特點,設計了全新的隨機數服務架構。那么Ultrain如何保證鏈上隨機數的安全可靠呢?我們主要通過如下兩種機制:

      隨機數的生成過程是對所有人公開透明的,并且是人人可以參與,結果是可以驗證的,同時極大概率沒有人能夠左右隨機數的結果。

      隨機數的結果通過最高級別的密碼學隨機性校驗,即美國國家標準局測試NIST SP800-22,意味著沒有任何人能夠預測未來的隨機數中的任何一位,隨機性完全可以直接使用,不需要經過任何額外的處理比如熵增加。

      關于第一點,我們通過參與者利用可驗證隨機函數貢獻隨機數的一部分,系統匯集最終結果生成公開的隨機數。通過設置高額的懲罰和合理的博弈過程,我們將作惡行為限制為最低。

      第二點,我們通過NIST SP800-22的隨機數測試保證,這也是目前業內最高級別的測試,保障當今世界上金融和信息領域的諸多服務的安全性和隨機性。

    NIST SP800-22

      該測試一共有15項。我們這里解釋幾種比較重要的測試項目

      Frequency Test(頻率測試)和 Block Frequency Test(塊頻率測試)

      這兩項測試會對一串隨機的0 1進行統計,假如其中一個數目明顯多余另外一個的話,那么測試就不通過。區別在于,Block測試會對整個序列的任一特定長度為M的字符串進行測試,只要有一些出現0 1一個過多,測試也會不通過。

      Runs Test和longest Runs Test(連續0/1測試)

      這兩項測試會對連續出現的0或者1序列進行統計。出現過多或者過少,甚至分布不符合統計特性的連續字符串,都被認為測試不通過。longest測試會對整個序列的任一特定長度為M的字符串中的最長0或者1進行統計,分布不合理的會被視為不通過。

      Binary Matrix Rank Test

      將整個序列分為若干個不相鄰的子矩陣,然后對矩陣的階進行測試。該測試的目的是為了發現序列中是否存在相關性,即是不是通過某些序列能推測出其他序列,這會嚴重影響隨機數的不可預測性。

      Discrete FFT Test(離散FFT測試)

      有時候序列的相關性表現在某一頻率的字符串出現過多,比如01011。假如出現過多,將會讓攻擊者可以猜到未來的可能性,比如0101出現后,下一比特更有可能是1。這種測試會將序列進行離散FFT變換到頻域,然后觀測是不是有一種字符串出現了異常的峰值。

      Non-overlapping/ overlapping Template Matching Test(重疊或者非重疊模板測試)

      該測試通過一個比特一個比特地移動窗口,找到周期或者非周期性出現的字符串。一般可以遍歷所有可能出現的某種長度的字符串,比如對于寬度為4的,可以查找0000, 0001, 0010, ..., 1111共16種。假如任何一個出現頻率異常了,都會認為不通過。

      Universal Statistical Test

      該測試是通過對字符串的可壓縮性進行測試。假如一個字符串能壓縮更短的話,那么說明該字符串本身就是冗余和自相關的,也就是可以預測的,所以也是不能被認為隨機的。

      Cumulative Sums/ Random Excursion(Variant)測試

      隨機游走測試,即將0看作-1,然后從0點開始,左右游走,比如010相當于走到了-1。該系列測試會研究任何一個序列游走的最大長度和游走經過的點的停留頻率,任何一種不符合統計的情況,都會被認為未通過測試。

    Ultrain隨機數的測試結果

      我們對Ultrain隨機數采集了121萬條數據,然后二進制化,形成了類似如下序列的二進制數據,

      1000011010001010001100000010001101011000100010101110101110001000

      0101000001000010111101100111111110101011001011011111010101101000

      0010111010001100100111000001010111110101110110110111111101001011

      0111101001001001111100110010110100011101111001100010001100100000

      1111011110101110010110110000111001011110101111101001000010000100

      0110110111000111111100100101010111011011110101011110010000011100

      然后對所有SP800-22的測試項目進行了測試,測試結果如下(不完全列舉):

      RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES

      ------------------------------------------------------------------------------

      generator is

      ------------------------------------------------------------------------------

      C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST

      ------------------------------------------------------------------------------

      3 7 6 9 8 5 6 10 4 6 0.602458 64/64 Frequency

      8 7 7 6 3 4 7 5 6 11 0.568055 63/64 BlockFrequency

      3 7 6 6 7 11 9 4 5 6 0.500934 64/64 CumulativeSums

      4 8 10 9 4 7 5 7 7 3 0.500934 64/64 CumulativeSums

      6 4 8 8 6 5 5 7 5 10 0.804337 63/64 Runs

      10 4 6 10 8 1 5 6 9 5 0.178278 63/64 LongestRun

      3 7 7 8 2 6 10 6 7 8 0.468595 64/64 Rank

      4 9 13 4 7 5 4 11 6 1 0.015963 64/64 FFT

      10 8 7 6 8 5 5 7 4 4 0.739918 63/64 NonOverlappingTemplate

      9 4 5 7 9 9 6 5 7 3 0.602458 64/64 NonOverlappingTemplate

      6 8 3 16 7 5 6 5 4 4 0.014216 62/64 OverlappingTemplate

      8 2 5 8 9 4 9 6 6 7 0.534146 64/64 Universal

      4 5 6 7 9 7 6 7 5 8 0.931952 63/64 ApproximateEntropy

      6 4 5 3 8 5 3 4 3 3 0.689019 43/44 RandomExcursions

      6 2 4 5 4 4 3 6 6 4 0.875539 43/44 RandomExcursions

      10 4 4 5 8 7 12 5 5 4 0.213309 62/64 Serial

      10 8 7 6 7 3 5 7 5 6 0.772760 63/64 LinearComplexity

      對于每個測試樣例,滿足了60/64和41/44的通過率測試。相當于通過了所有測試。

      測試用的數據集已經上傳到Ultrain的Github庫中(https://github.com/wanghs09/randgen),任何人都可以重復該測試。同時我們近期將對外開放該隨機數的調用網頁,任何人都可以通過該網頁收集Ultrain生成的隨機數數據集并重復該測試。

    通過測試后的意義

      Ultrain的隨機數服務通過SP800-22的測試,首先表明Ultrain該服務生成的隨機數是安全可靠,并且是足夠隨機的。同時意味著該服務生成的所有隨機數可以不經過額外的處理就可以使用,可以保證足夠的隨機性。而且經過安全的派生,比如與特定的序列號一起hash,即可以生成同樣安全級別的隨機數。

      Ultrain會持續穩定地提供Ultrain鏈上隨機數服務,我們會同合作伙伴一起,將隨機數在區塊鏈中應用開來,為區塊鏈行業的公平性和安全性做出貢獻。

    下載白話區塊鏈APP

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

    毛片免费看