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