摘要:請勿在密碼學(xué)強(qiáng)度系統(tǒng)中使用編程語言提供的通用偽隨機(jī)數(shù)生成器實(shí)現(xiàn)。該偽隨機(jī)數(shù)發(fā)生器是密碼學(xué)意義上最強(qiáng)的偽隨機(jī)數(shù)發(fā)生器之一,應(yīng)用在金融安全和上。
一、隨機(jī)數(shù)分類
1、真隨機(jī)數(shù)
其定義為隨機(jī)樣本不可重現(xiàn)。實(shí)際上只要給定邊界條件,真隨機(jī)數(shù)實(shí)際上并不存在,可是如果產(chǎn)生一個(gè)真隨機(jī)數(shù)樣本的邊界條件十分復(fù)雜且難以捕捉,可以認(rèn)為用這個(gè)方法演算出來了真隨機(jī)數(shù)。例如骰子、轉(zhuǎn)輪、噪音等。
2、偽隨機(jī)數(shù),通過一定算法和種子得出,例如計(jì)算機(jī)軟件中實(shí)現(xiàn)的就是偽隨機(jī)數(shù)。
強(qiáng)偽隨機(jī)數(shù):難以預(yù)測的隨機(jī)數(shù),常用于密碼學(xué)
弱偽隨機(jī)數(shù):易于預(yù)測的隨機(jī)數(shù)
二、隨機(jī)數(shù)特性隨機(jī)數(shù)有3個(gè)特性,具體如下:
隨機(jī)性:不存在統(tǒng)計(jì)學(xué)偏差,是完全雜亂的數(shù)列,即分布均勻性和獨(dú)立性
不可預(yù)測性:不能從過去的數(shù)列推測出下一個(gè)出現(xiàn)的數(shù)
不可重現(xiàn)性:除非將數(shù)列本身保存下來,否則不能重現(xiàn)相同的數(shù)列
隨機(jī)數(shù)的特性和隨機(jī)數(shù)的分類有一定的關(guān)系,比如,弱偽隨機(jī)數(shù)只需要滿足隨機(jī)性即可,而強(qiáng)位隨機(jī)數(shù)需要滿足隨機(jī)性和不可預(yù)測性,真隨機(jī)數(shù)則需要同時(shí)滿足3個(gè)特性。
三、隨機(jī)數(shù)生成器??由于真隨機(jī)數(shù)是不存在的,在程序中使用的都是偽隨機(jī)數(shù)。那么生成偽隨機(jī)數(shù)的生成器又稱為密碼學(xué)偽隨機(jī)數(shù)生成器(英文:Cryptographically secure pseudorandom number generator,通稱CSPRNG),是一種能夠通過運(yùn)算得出密碼學(xué)安全偽隨機(jī)數(shù)的偽隨機(jī)數(shù)生成器。相較于統(tǒng)計(jì)學(xué)偽隨機(jī)數(shù)生成器和更弱的偽隨機(jī)數(shù)生成器,CSPRNG所生成的密碼學(xué)安全偽隨機(jī)數(shù)具有額外的偽隨機(jī)屬性。
介紹兩種不同場景下常用的偽隨機(jī)數(shù)生成器:
1. 線性同余法因?yàn)橥ㄟ^線性同余方法構(gòu)建的偽隨機(jī)數(shù)生成器的內(nèi)部狀態(tài)可以輕易地由其輸出演算得知,所以此種偽隨機(jī)數(shù)生成器屬于統(tǒng)計(jì)學(xué)偽隨機(jī)數(shù)生成器。設(shè)計(jì)密碼學(xué)的應(yīng)用必須至少使用密碼學(xué)安全偽隨機(jī)數(shù)生成器,故需要避免由線性同余方法獲得的隨機(jī)數(shù)在密碼學(xué)中的應(yīng)用。
參數(shù)取值需要滿足三個(gè)標(biāo)準(zhǔn):函數(shù)在重復(fù)前應(yīng)該產(chǎn)生0-M之間的所有數(shù);產(chǎn)生的序列應(yīng)該顯得隨機(jī);生成函數(shù)可以用計(jì)算機(jī)方便地實(shí)現(xiàn),滿足條件的參數(shù)選擇如下:
M一般取素?cái)?shù),且要求很大,對于32位機(jī)一般取值為$2^{31} - 1$
A的可取值不多,當(dāng)$A= 7^5 =16807$時(shí)滿足以上標(biāo)準(zhǔn)。
這個(gè)算法的缺點(diǎn)是,在參數(shù)確定后,偽隨機(jī)序列只與N0相關(guān),容易被破解。有一種改進(jìn)的辦法就是每隔n個(gè)數(shù)就以時(shí)鐘值對M取模作為新的種子來產(chǎn)生新的序列。還有一種方法是直接將隨機(jī)數(shù)加上時(shí)鐘值再對M取模。
比較常用的一般是線性同余法,比如我們熟知的C語言的rand庫和Java的java.util.Random類,都采用了線性同余法生成隨機(jī)數(shù)。
一般來說,各大編程語言提供的偽隨機(jī)數(shù)通用實(shí)現(xiàn)出于效率方面的考量,都達(dá)不到密碼學(xué)強(qiáng)度的要求。
請勿在密碼學(xué)強(qiáng)度系統(tǒng)中使用編程語言提供的通用偽隨機(jī)數(shù)生成器實(shí)現(xiàn)。
該偽隨機(jī)數(shù)發(fā)生器是密碼學(xué)意義上最強(qiáng)的偽隨機(jī)數(shù)發(fā)生器之一,應(yīng)用在金融安全和PGP上。它使用了3DES來加密,算法流程如下圖
DTi:算法第i輪開始時(shí)的日期/時(shí)間值,64位,每一輪都被更新。
Vi:算法第i輪開始時(shí)的種子值,64位,每一輪都被更新。
Ri: 算法第i輪所產(chǎn)生的偽隨機(jī)數(shù)。
K1,K2:各階段算法所用的DES密鑰,各56位。
可用以下表達(dá)式描述該算法:
??Ri = EDE([K1,K2],[Vi⊕EDE([K1,K2],DTi)])
??Vi+1 = EDE([K1,K2],[Ri⊕EDE([K1,K2],DTi)])
該方法的密碼強(qiáng)度來自幾個(gè)方面,包括112位密鑰和3個(gè)EDE共計(jì)9次DES加密。
??隨機(jī)數(shù)有很多的應(yīng)用場景,例如抽獎(jiǎng)活動(dòng)、驗(yàn)證碼、Token、密碼應(yīng)用場景(生成秘鑰、生成鹽)等。
??而隨機(jī)數(shù)的生成是一個(gè)由來已久的問題。一個(gè)廣泛的原則是:隨機(jī)性的生成最好不被任何個(gè)體所控制。因此譬如從比特幣的未來某區(qū)塊的數(shù)據(jù)來獲取隨機(jī)性的方式是不能使人信服的,因?yàn)檫@些隨機(jī)性最終實(shí)際上是由某個(gè)個(gè)體決定的,無法證明這個(gè)相關(guān)人沒有作惡。
??區(qū)塊鏈中常用的是一種分布式的隨機(jī)數(shù)生成算法,使用了DPOS結(jié)構(gòu)中的受托人來提供隨機(jī)性。受托人事先成私密的種子數(shù)據(jù),然后生成區(qū)塊時(shí)公布該種子數(shù)據(jù)的哈希值,在下一次生成區(qū)塊時(shí)再公布該種子數(shù)據(jù) 。最終外部過程所使用的隨機(jī)數(shù)由連續(xù)的多個(gè)(至少應(yīng)大于等于 101)種子數(shù)據(jù)來確定。這樣只要有一位受托人是誠實(shí)的并將他們的信息保密,那么其他人就無法預(yù)測結(jié)果。那么我們可以很放心地假設(shè)受托人中至少其中有一個(gè)是誠實(shí)的。這樣產(chǎn)生的隨機(jī)數(shù)可信程度是非常高的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/24269.html
摘要:公鑰哈希和錢包地址可以通過互逆運(yùn)算進(jìn)行轉(zhuǎn)換,所以它們是等價(jià)的。使用私鑰對交易進(jìn)行簽名比特幣錢包間的轉(zhuǎn)賬是通過交易實(shí)現(xiàn)的。使用公鑰對簽名進(jìn)行驗(yàn)證交易數(shù)據(jù)被廣播到比特幣網(wǎng)絡(luò)后,節(jié)點(diǎn)會(huì)對這個(gè)交易數(shù)據(jù)進(jìn)行檢驗(yàn),其中就包括對簽名的校驗(yàn)。 一句話解釋公鑰、私鑰、地址私鑰:實(shí)際上是一組隨機(jī)數(shù),關(guān)于區(qū)塊鏈中的隨機(jī)數(shù)我們已經(jīng)介紹過了公鑰:對私鑰進(jìn)行橢圓曲線加密算法生成,但是無法通過公鑰倒推得到私鑰。公...
摘要:二如何理解公鑰和私鑰非對稱加密算法需要兩個(gè)密鑰公開密鑰和私有密鑰。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對稱加密算法。三非對稱加密解密原理非對稱加密算法中,常用的就是算法了,以下就以算法為例來講解非對稱加密算法的實(shí)現(xiàn)原理。 非對稱加密,在現(xiàn)在網(wǎng)絡(luò)應(yīng)用中,有這非常廣泛的場景,更是加密貨幣的基礎(chǔ)。本文主要介紹非對稱加密、解密的原理和過程,以及在區(qū)塊鏈中的使用。 一、非對稱...
摘要:萬云專注于將區(qū)塊鏈技術(shù)應(yīng)用于各個(gè)行業(yè),促進(jìn)區(qū)塊鏈在業(yè)務(wù)中的真正落地。共識算法是區(qū)塊鏈比較核心的技術(shù)之一,保證區(qū)塊一致性是其主要作用。 作者:萬云首席架構(gòu)師兼產(chǎn)品總監(jiān)李晨原文鏈接:http://mp.weixin.qq.com/s/snl...如需轉(zhuǎn)載請聯(lián)系萬云官方微信:萬云Wancloud 2018年開始,好像所有的人都在談?wù)搮^(qū)塊鏈,資本、精英、草根不斷進(jìn)場投身到區(qū)塊鏈的浪潮之中。在外...
摘要:區(qū)塊鏈技術(shù)基礎(chǔ)什么是區(qū)塊鏈技術(shù)運(yùn)行區(qū)塊鏈客戶端的計(jì)算節(jié)點(diǎn)彼此可以相互通信。區(qū)塊鏈的組成模塊區(qū)塊鏈賬本。區(qū)塊鏈技術(shù)的意義數(shù)據(jù)不可篡改。區(qū)塊鏈中會(huì)對區(qū)塊頭進(jìn)行哈希計(jì)算,得出該區(qū)塊的哈希值。這保證了每個(gè)區(qū)塊被加入鏈后不可被修改。 區(qū)塊鏈技術(shù)基礎(chǔ) 什么是區(qū)塊鏈技術(shù)? 運(yùn)行區(qū)塊鏈客戶端的計(jì)算節(jié)點(diǎn)彼此可以相互通信。 每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)賬本。 每個(gè)節(jié)點(diǎn)的收支記錄都會(huì)廣播給其他節(jié)點(diǎn)。 篩選出一個(gè)節(jié)點(diǎn)作...
摘要:兩年前,我們成為逐夢者,開始往中本聰向往的世界奔跑。從開始,開創(chuàng)無限可能年月,我們發(fā)布項(xiàng)目技術(shù)白皮書。今年月,登陸交易所。從開始,開創(chuàng)無限可能中本聰精神,扎根于團(tuán)隊(duì)最初的夢想里,也融進(jìn)了的使命與愿景里。 showImg(https://segmentfault.com/img/bVbv5lK?w=900&h=383); 兩年前,我們成為逐夢者,開始往中本聰向往的世界奔跑。初創(chuàng)之時(shí),無羽...
閱讀 5335·2021-09-07 09:58
閱讀 848·2019-08-30 15:55
閱讀 3043·2019-08-30 15:55
閱讀 985·2019-08-30 15:53
閱讀 1622·2019-08-29 12:57
閱讀 1950·2019-08-26 13:46
閱讀 621·2019-08-26 11:00
閱讀 3718·2019-08-23 15:42