101和201的pos機

 新聞資訊3  |   2023-08-18 17:08  |  投稿人:pos機之家

網(wǎng)上有很多關(guān)于101和201的pos機,從密碼學(xué)的隨機性探討區(qū)塊鏈與隨機數(shù)的知識,也有很多人為大家解答關(guān)于101和201的pos機的問題,今天pos機之家(www.tjfsxbj.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、101和201的pos機

101和201的pos機

免責(zé)聲明:本文旨在傳遞更多市場信息,不構(gòu)成任何投資建議。文章僅代表作者觀點,不代表火星財經(jīng)官方立場。

小編:記得關(guān)注哦

來源:萬博體育足球分析

隨機數(shù)的核心是數(shù)的隨機性。隨機性是信息安全領(lǐng)域,尤其是密碼學(xué)領(lǐng)域一個很關(guān)鍵的研究問題。在密碼學(xué)中,對一個序列的隨機性是這樣定義的:“看起來是隨機的,即能通過我們所能找到的所有正確的隨機性檢驗。”

1.背景介紹

隨機數(shù)雖然看起來不起眼,但它卻是信息安全的基礎(chǔ)之一。在區(qū)塊鏈中,隨機數(shù)有很多的應(yīng)用場景,例如抽獎活動、驗證碼、Token、密碼應(yīng)用場景等。

隨機數(shù)的核心要義

隨機數(shù)的核心是數(shù)的隨機性。隨機性是信息安全領(lǐng)域,尤其是密碼學(xué)領(lǐng)域一個很關(guān)鍵的研究問題。在密碼學(xué)中,對一個序列的隨機性是這樣定義的:“看起來是隨機的,即能通過我們所能找到的所有正確的隨機性檢驗?!?/p>

這個序列是不可預(yù)測的,即使給出產(chǎn)生序列的算法或者硬件設(shè)計和以前產(chǎn)生序列的所有知識,也不可能通過計算來預(yù)測下一個比特是什么或者計算代價很大幾乎不可實現(xiàn)。

隨機性在密碼學(xué)中占有重要的地位,幾乎所有的密碼算法和協(xié)議都要用到一些對攻擊者來說必須是秘密的數(shù)據(jù)。比如對一個密碼算法來說,如果將秘密寓于密鑰之中,那么密鑰就是秘密,包括對稱密碼算法(DES、AES、IDEA 等)的密鑰和非對稱密碼算法(RSA、DSA、Diffie-Hellman 等)的私鑰等,而這些密鑰必須是隨機數(shù)。對于唯一已經(jīng)證明了絕對安全性的一次一密系統(tǒng)來說,其安全性就依賴于隨機的密鑰。

隨機數(shù)的核心要義是不可預(yù)測性,這也是對隨機數(shù)最基本的底線要求。一旦隨機數(shù)被人預(yù)測到,則基于隨機性的安全體系將立刻崩塌。

隨機數(shù)發(fā)生器

既然隨機數(shù)如此重要,那么隨機數(shù)生成器的地位也就不言而喻了。隨機數(shù)生成器用來產(chǎn)生一個位序列,這個位序列的隨機性就很重要。如何才能生成均勻的隨機位序列呢?

擲骰子被認(rèn)為是產(chǎn)生隨機數(shù)的典型示例。統(tǒng)計學(xué)家 Francis Galton 在 1890 年的《自然》雜志中提出“在所有的產(chǎn)生隨機數(shù)的事物中,我認(rèn)為沒有什么能夠超越骰子了?!?在搖骰子的過程中,骰子在容器中不斷地翻滾、互相撞擊,以各種形式和角度與容器壁發(fā)生碰撞,在容器中的位置和形態(tài)在外界看來都是不可預(yù)知的,各種偶發(fā)因素一起參與搖骰子的過程中,比如容器哪怕只發(fā)生一次晃動,外界都不可能知道里面到底是什么形態(tài)。

迄今為止發(fā)現(xiàn)最早的骰子(4 個面)來自中東的一座公元前 24 世紀(jì)的墳?zāi)估?。公元?1100 年的中國,一些“先知”利用火燒龜殼產(chǎn)生的隨機龜裂對未來做預(yù)測。又過了幾個世紀(jì),在中國誕生了易經(jīng)占卜法,利用 49 蓍草法進(jìn)行占卜,其操作的分裂過程很類似于拋硬幣。

真?zhèn)坞S機生成器

隨機數(shù)生成器有真隨機和偽隨機之分。

只滿足“隨機數(shù)的核心要義”中所講的隨機性要求的其實是偽隨機數(shù)生成器。偽隨機數(shù)生成器是一個確定性算法,用一個長度為 k 的二進(jìn)制序列作為輸入,算法就能產(chǎn)生長度為 m(m>>k)的隨機數(shù)序列,偽隨機生成器的輸入稱為生成器的種子。

實際上,偽隨機數(shù)生成器產(chǎn)生的隨機數(shù)并不是真的隨機。偽隨機數(shù)生成器具有周期性,其產(chǎn)生的隨機數(shù)序列總會產(chǎn)生重復(fù),不過如果生成器的周期足夠長(至少要遠(yuǎn)遠(yuǎn)大于可能采集的隨機數(shù)的長度),那么這個隨機數(shù)生成器產(chǎn)生的局部的隨機序列也就和真隨機序列看起來沒有什么區(qū)別了。

真隨機數(shù)生成器在滿足“數(shù)的隨機性”以及“序列不可預(yù)測”這兩個要求之外,還要滿足第三個要求:

這個序列不能重復(fù)產(chǎn)生,即使在完全相同的操作條件下用完全相同的輸入對序列發(fā)生器操作兩次,也將得到兩個完全不同的、毫不相關(guān)的位序列。

滿足了這三個要求的隨機數(shù)生成器,其產(chǎn)生的隨機數(shù)是不可重現(xiàn)的,即使是你自己也無法再次產(chǎn)生同樣的隨機數(shù)。

偽隨機數(shù)生成器 PRNG(Pseudo Random Number Generator)

偽隨機數(shù)生成器是由馮諾依曼在 1946 年創(chuàng)造的。他的基本思想是從一個隨機數(shù)種子開始,對其平方,然后取中間值。接下來重復(fù)對得到的數(shù)取平方并取中間值的過程,就會得到一個具有統(tǒng)計意義屬性的隨機數(shù)序列了。這也就是廣為人知的平方取中法。

然而,馮諾依曼的方法并沒有經(jīng)得住時間的考驗,因為不論從什么隨機種子開始,序列最終都會落入某個短循環(huán)序列,比如:8100,6100,4100,8100,6100,4100……。序列中的數(shù)字是依賴于前一個數(shù)字的這種生成函數(shù),上面的重復(fù)循環(huán)問題是不可避免的。但是如果說這個循環(huán)間隔非常非常大,對實際應(yīng)用并不會產(chǎn)生影響,那會怎樣呢?

1949 年,數(shù)學(xué)家 D.H.Lehmer 利用線性同余生成器(LCG)實現(xiàn)了這一思路。這種隨機生成器發(fā)明之初非常流行。一個開發(fā)者 Paul Houle 說道:“它在很多情況下已經(jīng)很好用了,但是不能使用它來做保密使用”。

目前看到的大部分庫的默認(rèn)實現(xiàn)都是線性同余。至于線性同余的弱點也是很明顯的,既然是同余那么就在一個周期后,你產(chǎn)生的隨機數(shù)又會重復(fù)出現(xiàn)了。這有什么影響嗎?

如果僅僅是做個測試好玩,沒啥影響,但如果你是根據(jù)數(shù)字生產(chǎn)卡號、密碼,那么影響就大了。當(dāng)年一些電話卡被破解就是這樣來的。這個就涉及偽隨機的算法循環(huán)長度。什么叫循環(huán)長度?就是如果第一次產(chǎn)生數(shù)字 55,第二個產(chǎn)生數(shù)字 107,那么循環(huán)多少次后,會繼續(xù)產(chǎn)生,55,107……這樣的序列。目前大部分簡單算法的循環(huán)長度都是 2^32 左右。

那么有沒有更好的算法。更好的循環(huán)長度讓人無法破解呢?當(dāng)然有,就是上面算法中的其他。數(shù)學(xué)界畢竟人才濟(jì)濟(jì)。推薦一個數(shù)學(xué)家提出的 MT 隨機數(shù)算法,全稱是 Mersenne Twister 梅森旋轉(zhuǎn)算法。

這個算法是日本科學(xué)家 Makoto Matsumoto(松本真)和 Takuji Nishimura(西村拓士)在 1997 年開發(fā)的,而且還是目前可以看到最好隨機數(shù)算法。該算法基于有限二進(jìn)制字段上的矩陣線性遞歸 field F_{2},可以快速產(chǎn)生高質(zhì)量的偽隨機數(shù),修正了古典隨機數(shù)發(fā)生算法的很多缺陷。MT 算法的循環(huán)長度能到多少?一個常用的實現(xiàn)是產(chǎn)生 32 位數(shù)字,循環(huán)長度 2^19937。一般來說只要你不搞天文運算。都可以輕松應(yīng)對了。更主要的是,該算法的實現(xiàn)性能還非常高。MT 算法的普通實現(xiàn)不比我們常用的函數(shù)庫的 rand 慢多少,大約只慢 10%,如果針對特定的處理器進(jìn)行優(yōu)化,還有非常大的進(jìn)步空間。

大部分程序和語言中的隨機數(shù),確實都只是偽隨機。是由可確定的函數(shù),通過一個種子(常用時鐘)產(chǎn)生的。這意味著:如果知道了種子,或者已經(jīng)產(chǎn)生的隨機數(shù),都可能獲得接下來隨機數(shù)序列的信息(可預(yù)測性)。

不正確地使用偽隨機數(shù)生成器會導(dǎo)致驚人的安全性問題。眾所周知,早前 Netscape Navigator 的大量安全漏洞直接就是來自于不適當(dāng)?shù)碾S機數(shù)生成器。另一個比較典型的例子是 Reliable Software Technology 的因特網(wǎng)賭博揭秘事件,這個揭秘允許欺騙性的玩家可以實時計算每人手中確切的牌。它的缺陷存在于用來生成每副牌的洗牌算法中。在這段代碼中,調(diào)用 randomize在每副牌生成前生成一副隨機牌。隨機數(shù)生成器的種子是按照系統(tǒng)時鐘,用午夜后的毫秒數(shù)選取的。這意味著隨機數(shù)生成器的輸出是容易預(yù)測的。

正如所討論的,隨機數(shù)生成器的可預(yù)測性是一個很嚴(yán)重的安全性問題。由此產(chǎn)生了密碼安全偽隨機數(shù)生成器(Cryptographically Secure Pseudo-Random Number Generator,簡稱 CSPRNG)。顧名思義,該隨機數(shù)發(fā)生器可以產(chǎn)生在密碼學(xué)意義上安全的隨機數(shù)。不言而喻,CSPRNG 是一個強需求。梅森旋轉(zhuǎn)隨機數(shù)生成器并不是一種 CSPRNG,因為如果可以給定大量的先前序列樣本,后面的數(shù)字是可以預(yù)測出來的。

硬件隨機數(shù)生成器 HRNG(Hardware Random Number Generator )

通過對偽隨機數(shù)生成器的分析,我們知道偽隨機數(shù)通常會產(chǎn)生很嚴(yán)重的安全后果。原因是確定性的機器很難實現(xiàn)隨機。真隨機數(shù)生成器必須是非確定的,作為旁觀者即使知道設(shè)備使用的算法也永遠(yuǎn)無法以任何一致性猜測到設(shè)備的輸出。例如,如果設(shè)備輸出一系列 0 和 1,0 和 1 在任何特定輸出中出現(xiàn)的機會應(yīng)該相等。即使掌握了設(shè)備內(nèi)部工作的全部知識,任何猜中的可能性也只有 50% 左右。

構(gòu)建真隨機數(shù)生成器的最佳辦法就是使用好的物理度量來生成隨機數(shù)。許多自然現(xiàn)象就具備這種條件。其訣竅就是它們必須有一些可測量的特性,而且行為至少要盡可能隨機。

某硬件隨機數(shù)生成器生成的隨機數(shù)據(jù)

一個典型的例子是 Unix 內(nèi)核中的隨機數(shù)發(fā)生器(/dev/random),理論上它能產(chǎn)生真隨機。即這個隨機數(shù)的生成,獨立于生成函數(shù),這時我們說這個隨機數(shù)發(fā)生器是非確定的。具體來講,Unix 維護(hù)了一個熵池,不斷收集非確定性的設(shè)備事件,即機器運行環(huán)境中產(chǎn)生的硬件噪音,來作為種子。比如說,時鐘,IO 請求的響應(yīng)時間,特定硬件中斷的時間間隔,鍵盤敲擊速度,鼠標(biāo)位置變化,甚至周圍的電磁波等等。直觀地講,你每按一次鍵盤,動一下鼠標(biāo),鄰居家 wifi 信號強度變化,磁盤寫入速度等等信號,都可能被用來生成隨機數(shù)。Windows 中也有相對的隨機數(shù)生成器,基本的思想是一致的。如果要求更高的話,也有專用的設(shè)備,可收集附近的電磁場等環(huán)境噪音來產(chǎn)生隨機數(shù)。20 世紀(jì) 90 年代中期的 CPU 是沒有內(nèi)置隨機數(shù)生成指令的,這使得那時候好的隨機種子特別難得。

到了 1997 年,計算機科學(xué)家們厭倦了生成隨機數(shù)所受限的條件,來自 SGI 的一個團(tuán)隊發(fā)明了 LavaRand,它是用一個網(wǎng)絡(luò)攝像頭來對著熔巖燈拍照。從攝像頭中過來的圖片數(shù)據(jù)是一個真實的熵源,可以以 165kb/s 的速率生成隨機數(shù)。測量放射性衰變也是隨機數(shù)的一個比較好的來源。它根本不易產(chǎn)生偏差,只會帶來相對較小的自然偏差。每當(dāng)電子 Geiger 計數(shù)器檢測到放射性衰變時,它就會生成一個脈沖。衰變之間的時間是一個實足的、純粹的隨機部分。尤其是,沒有人可以預(yù)測到下一次衰變的時間大于還是小于自上次衰變以來的時間,那就產(chǎn)生了一位隨機信息。

在 1999 年, Intel 在其 i810 芯片組上集成了芯片級的隨機數(shù)生成器。這樣使得新的服務(wù)器都自帶熱噪聲的本地源隨機數(shù)生成能力。

我們知道溫度高于絕對零度的原子都存在熱運動,在集成電路里這些原子的熱運動會在電路里產(chǎn)生噪聲,噪聲會使得電路中的電壓存在微小的起伏,Intel 的 TRNG 就是通過放大這些微小的起伏來產(chǎn)生隨機數(shù)。2012 年,Intel 為 TRNG 增加了 RDRAND 和 RDSEED 指令,具有 500MB/s 的生產(chǎn)效率。但是 RDRAND 的完整性一直被質(zhì)疑,里面是不是有某些缺陷?或者是為美國國家安全局內(nèi)置了什么東西?沒人確切地知道這個問題的答案。

硬件隨機數(shù)生成器也有不少缺點。首先就是產(chǎn)生隨機數(shù)的速度很低,其次是電路系統(tǒng)里有很多不同的噪聲,但并不是所有噪聲都是隨機的,比如電源噪聲中很大一部分就是和系統(tǒng)時鐘強相關(guān)的。而硬件隨機數(shù)生成器是一個放大極小信號的電路,它對外界干擾是極其敏感的,為了避免外界非隨機信號的干擾必須要耗費不少功率和面積在屏蔽上。所以加密軟件依舊不得不依賴于偽隨機數(shù)生成器(PRNG)。

量子隨機數(shù)生成器

事實上,任何基于經(jīng)典物理過程所產(chǎn)生的隨機數(shù)本質(zhì)上都不是真隨機的, 包括拋硬幣、上面講到的硬件隨機數(shù)生成器。經(jīng)典系統(tǒng)中的隨機性都是“表面隨機性”,即事件表面上看似具有隨機性,而本質(zhì)上并不是隨機的,只是確定性事件的概率組合。它之所以表現(xiàn)出隨機性,是因為觀察者對系統(tǒng)整體運作機制的不完全了解。由表面隨機性所產(chǎn)生的隨機數(shù)并不是真正隨機的。

現(xiàn)代物理學(xué)的發(fā)展讓人們把目光轉(zhuǎn)向量子領(lǐng)域?!傲孔印笔且粋€不可分割的基本個體,是構(gòu)成現(xiàn)實事物的微小能量和物質(zhì),如光子、原子、電子都是“量子”的組成微粒。量子力學(xué)是研究微觀世界力學(xué)規(guī)律的理論,其正確性已經(jīng)逐步得到證實。研究表明,微觀粒子的狀態(tài)具有“內(nèi)稟隨機性”。也就是說,其隨機性不是因為缺乏對系統(tǒng)的了解而造成的,而是微觀粒子固有的特性。利用這種內(nèi)稟隨機性,可以產(chǎn)生真正的隨機數(shù),即“真隨機數(shù)”(或稱為“內(nèi)稟隨機數(shù)”)。

根據(jù)經(jīng)典力學(xué)制造的硬件隨機數(shù)生成器設(shè)備要確保實現(xiàn)公平的不可預(yù)測性很困難。假設(shè)一個隨機數(shù)生成器的供應(yīng)商在制造設(shè)備時可能采取了某些策略按自己的利益影響著它的輸出結(jié)果,甚至是事先預(yù)設(shè)一些(看起來隨機的)比特串存儲在設(shè)備中,使得輸出的序列對于供應(yīng)商來說是部分已知的甚至是完全已知的,即輸出結(jié)果對供應(yīng)商來說不滿足不可預(yù)測性。

因此,密碼系統(tǒng)中必須要保證所產(chǎn)生的隨機數(shù)與其它外部變量完全無關(guān),即包括設(shè)備供應(yīng)商在內(nèi)的其他任何人都不能獲知該隨機數(shù)的任何信息。這一點在經(jīng)典世界中是難以實現(xiàn)甚至無法想象的。量子密碼的發(fā)展有可能實現(xiàn)設(shè)備無關(guān)量子隨機數(shù)擴(kuò)展方法,可以保證所產(chǎn)生的隨機數(shù)與外部變量無關(guān)。

區(qū)塊鏈與隨機數(shù)

隨機數(shù)對于區(qū)塊鏈技術(shù)來說很關(guān)鍵。本質(zhì)上,分布式賬本的核心問題就是隨機選擇出塊人的問題,這個隨機性要能被全網(wǎng)確認(rèn),并且不能被操控,也不能被預(yù)測,否則惡意節(jié)點通過操控這個隨機數(shù)就可以操控長鏈,從而實現(xiàn)雙花攻擊。

PoW 的方案是讓大家進(jìn)行算力競賽,設(shè)置一個計算哈希的難題,誰先算出來誰贏,算力高的贏的概率高,算力低的贏的概率低,以這樣的方式保證勝出者是隨機的。投入的算力能夠體現(xiàn)在哈希值上,這樣全網(wǎng)能夠驗證,并選擇包含最多算力的那條鏈。惡意節(jié)點只能通過提升自己的算力來增加攻擊成功的概率。

PoS 的方案是選舉,大家不用浪費電力去進(jìn)行算力競賽,而是文明一點,隨機選舉一個節(jié)點來出塊,并且被選中的概率和它擁有的份額相關(guān)。如果“隨機”這一步?jīng)]有問題的話,惡意節(jié)點只能通過增加自己的份額,增加自己被選中的概率,從而增加雙花攻擊的成功概率。這里有一點比 PoW 的方案要好就是,要實現(xiàn)攻擊,先得成為持幣大戶,如果攻擊成功幣價大跌,攻擊者也會承受最大的損失。而 PoW 方案中雖然算力要花錢,但是如果攻擊者沒有持幣,那么他的利益和幣價不一定是正相關(guān)的,不能排除仍然存在攻擊的動力。

那么接下來的核心問題就是,這個不能被操控不能被預(yù)測的隨機數(shù)從哪來。

傳統(tǒng)地 PoS 方案嘗試從鏈上現(xiàn)有的數(shù)據(jù)入手,比如使用上一個區(qū)塊的哈希值,上一個區(qū)塊的時間戳等等來作為隨機數(shù)的來源,但這些會帶來額外的安全風(fēng)險。因為區(qū)塊本身的信息就是節(jié)點寫進(jìn)去的,然后又要根據(jù)里面的信息來選舉后續(xù)的出塊者,存在循環(huán)論證的嫌疑,安全性不會太好。這也是傳統(tǒng)地認(rèn)為 PoS 方案不如 PoW 可靠的部分原因。

從信息論的角度談區(qū)塊鏈中的隨機問題

熵(Entropy)在物理學(xué)中用于度量一個熱力學(xué)系統(tǒng)的無序或混亂程度(參考熱力學(xué)第二定律),當(dāng)它被引入到信息論(計算機科學(xué))時,則被用來衡量信息的不確定性(不可預(yù)測性),簡單的說也就是“隨機性”。

假設(shè)有一枚“理想”的硬幣(拋出正面和反面的幾率相等),每一次拋硬幣都是獨立的、不可預(yù)測的,其結(jié)果不是正面、就是反面(0 和 1),那么這個拋硬幣事件的熵就是 1 個比特/位,拋 256 次的熵就是 256 個比特/位。

暫時拋開那些復(fù)雜的定義、公式,“熵”其實就是那么簡單,從科普的角度,我們只需要了解一個對于密碼學(xué)來說的重要定律:任何算法(包括那些符合密碼學(xué)規(guī)范的偽隨機數(shù)算法)只能是“維持”熵、甚至有可能會“降低”熵,但一定不能“增加”熵!記住這一點至關(guān)重要,歷史上發(fā)生過的無數(shù)次隨機數(shù)問題基本上都源于對這一點的忽視,我們暫且命名為“算法不增熵”定理。

以曾經(jīng)發(fā)生的 http://blockchain.info的隨機數(shù)問題為例,http://blockchain.info使用的 RC4 算法(http://en.wikipedia.org/wiki/RC4,因版權(quán)問題通常也被稱為 ARC4)是一個廣泛使用的密碼學(xué)算法,通常被用來生成偽隨機數(shù)的信息流。ARC4 算法有一個非?!昂谩钡奶匦?,即:只需要一個種子(哪怕這個種子只有兩位,0 和 1),就能生成“無限多”的隨機數(shù),你只需要反復(fù)的對結(jié)果進(jìn)行 ARC4 運算即可。比如說,使用 0 或者 1 初始化 ARC4 數(shù)組,然后反復(fù)的進(jìn)行 ARC4 運算,您都可以得到任意長度的數(shù)列,數(shù)列中的每一個元素都是 0-255(8 位)的數(shù)字,出于篇幅限制,我們在這里只運行了 256 次的 ARC4next 方法。

0:

[222,24,137,65,163,55,93,58,138,6,30,103,87,110,146,109,199,26,127,163,240,204,235,151,69,43,77,50,39,150,95,158,168,204,117,7,109,159,185,197,65,122,165,203,48,252,34,25,139,52,152,45,187,98,158,192,75,79,139,5,160,113,8,80,146,160,195,88,74,72,228,163,10,57,123,138,205,29,0,158,200,125,104,17,242,44,244,156,163,229,147,84,185,69,21,53,162,24,122,134,66,108,202,125,94,130,62,186,0,68,18,103,18,87,184,216,96,174,76,189,76,73,6,187,197,53,239,225,88,127,8,219,51,149,92,219,203,173,155,16,245,63,196,229,44,89,21,101,81,132,135,254,8,77,14,63,3,222,188,201,218,28,233,13,8,92,45,138,25,216,55,48,134,22,54,146,20,43,216,252,93,122,115,73,106,142,89,238,126,207,107,148,6,99,244,166,190,230,91,210,200,92,70,152,108,27,239,52,144,211,123,56,218,133,211,46,151,57,203,35,74,43,231,64,235,8,137,54,33,153,175,204,50,131,85,153,13,79,137,251,99,195,228,81,116,172,100,77,71,2,71,63,151,209,157,98]

1:[6,8,14,14,24,32,41,41,57,51,73,87,102,118,135,131,161,181,202,224,247,102,17,124,76,104,133,163,194,226,163,73,108,38,57,127,166,206,23,65,224,71,165,211,186,87,52,103,128,180,137,239,127,183,151,209,60,44,48,147,210,142,207,149,216,104,173,167,238,239,94,230,67,143,76,236,63,143,154,197,12,17,10,119,104,46,106,197,42,3,171,116,97,215,94,138,225,97,198,118,100,125,26,61,58,230,88,198,0,112,124,71,207,55,97,128,47,75,153,130,158,95,117,7,105,226,176,130,239,90,49,125,20,247,71,95,234,13,154,98,178,210,63,236,243,36,147,202,101,88,53,9,222,9,250,163,15,184,130,181,167,249,231,37,187,125,231,174,239,43,92,255,255,154,201,48,177,206,22,183,105,92,9,8,94,51,211,200,121,189,64,9,97,248,174,13,201,173,209,196,15,129,227,3,127,184,41,69,165,199,122,90,33,63,21,160,164,205,37,93,222,211,137,199,18,135,107,7,83,10,230,113,108,41,195,34,181,63,68,164,52,214,97,63,178,22,55,192,80,153,210,224,91,240,104,165]

這個數(shù)列中的任意一段(32 個元素即 256 位),都可以被用來作為比特幣私鑰或簽名時使用的 k 值,他們看起來都很“隨機”。可惜,無論我們進(jìn)行了怎樣的運算,這個數(shù)列的熵都永遠(yuǎn)小于等于 1 個比特(即 0 和 1)。也就是說,其它人,如果能覆蓋全部的熵,進(jìn)行相同的運算,也能夠計算出您的全部私鑰和全部 k 值。

http://blockchain.info出問題時的熵是 8 個比特(0-255),也就是說,您只需要使用這 256 個數(shù)字作為種子,反復(fù)的進(jìn)行 ARC4 運算,就能覆蓋出問題的時間段里http://blockchain.info用戶所使用的全部隨機數(shù)(考慮到瀏覽器緩存和 CDN 緩存,問題時間段的長度可能是數(shù)周)。當(dāng)然,您還可以基于代碼進(jìn)行一些優(yōu)化,只考慮部分可能出現(xiàn)的情況,比如說每進(jìn)行 33 次 ARC4next 生成一個隨機數(shù),或者是間隔 256 次 ARCnext 后再用 33 次 ARCnext 來生成一個隨機數(shù)。

例如,上述種子 0 所對應(yīng)的數(shù)組中,我們可以進(jìn)行如下簡單的計算:

取開頭的 33 個元素:[222,24,137,65,163,55,93,58,138,6,30,103,87,110,146,109,199,26,127,163,240,204,235,151,69,43,77,50,39,150,95,158,168];

按照 http://blockchain.info的算法(他們自己定義的 BigInteger 類型),將第一個元素替換為 0,最后一個元素加 1,即得到結(jié)果數(shù)組:[0,24,137,65,163,55,93,58,138,6,30,103,87,110,146,109,199,26,127,163,240,204,235,151,69,43,77,50,39,150,95,158,169];

使用這個結(jié)果數(shù)組可以得到一個 k 值 188941a3375d3a8a061e67576e926dc71a7fa3f0cceb97452b4d3227965f9ea9;

再使用 ECDSA 算法計算出該 k 值所對應(yīng)的 r 值:0dcc0b9a668d4b7b8cbde71288bf32bb659bd7fda1b66172ce97fda6f8b0a06e;

這個 r 值在整個區(qū)塊鏈的交易簽名中一共出現(xiàn)過 5 次,這 5 筆交易所對應(yīng)的私鑰均已暴漏;

比如說,地址:19hXXVpwhmu1frqKwF1VZdNfqtGrMvg87n,交易 hash:b2b63f29c379ff830f45a5165b0e374093207ddca3e737562617c1d526ef4c65,該筆交易簽名就是這個 r 值,利用區(qū)塊鏈上的數(shù)據(jù),任何人都能夠很容易的計算出該地址的私鑰:5JHyRh8hwyjWjt3RR3B9X6oJt9mzJZwFe8YnF7W22XcSHdD6rxK;

搞定。看到這里,我們可以知道,根據(jù)前面的“算法不增熵”定理,對于比特幣所需要的隨機數(shù)來說,僅僅使用密碼學(xué)安全的偽隨機數(shù)算法還是不夠的,您需要的是“足夠”的熵(比特幣需要的是 256 個比特/位),無論您使用的是哪種算法,永遠(yuǎn)要保證熵的品質(zhì),永遠(yuǎn)都不要降低熵。

最后說一句,比特幣本身是安全的,不安全的是錯誤的解決方案和有問題的熵。

以上就是關(guān)于101和201的pos機,從密碼學(xué)的隨機性探討區(qū)塊鏈與隨機數(shù)的知識,后面我們會繼續(xù)為大家整理關(guān)于101和201的pos機的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://www.tjfsxbj.com/newstwo/100361.html
上一篇:pos機插卡交易 下一篇:工行小型pos機

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。