區(qū)塊鏈核心技術(shù)-密碼學

      網(wǎng)友投稿 832 2022-05-29

      今天我們聊一聊區(qū)塊鏈的核心技術(shù)密碼學,區(qū)塊鏈技術(shù)離不開密碼學,可以說密碼學是區(qū)塊鏈系統(tǒng)的基石之一,我們先來了解一下。

      這是以太坊黃皮書關(guān)于錢包(私鑰、公鑰、地址)的描述,僅僅 2 行文字。主要講解私鑰通過 ECDSA(橢圓曲線簽名算法)推導出公鑰,繼而經(jīng)過 Keccak 單向散列函數(shù)推導出地址。分解為 3 個步驟:

      1. 創(chuàng)建隨機私鑰 (64 位 16 進制字符 / 256 比特 / 32 字節(jié))

      2. 從私鑰推導出公鑰 (128 位 16 進制字符 / 512 比特 / 64 字節(jié))

      3. 從公鑰推導出地址 (40 位 16 進制字符 / 160 比特 / 20 字節(jié))

      這是從ethereumjs/keythereum中剝離出來的 JavaScript 代碼,關(guān)于黃皮書上的公式的具體實現(xiàn),僅僅 6 行代碼。

      這是一件很奇妙的事情,2 行文字,6 行代碼承載著億萬級別的資產(chǎn),但往往越簡單,越奧妙。以上的 6 行代碼,就已經(jīng)囊括密碼學中大多數(shù)技術(shù),比如隨機數(shù)生成器、非對稱加密,單向散列函數(shù)等。

      什么是隨機數(shù)生成器?

      隨機數(shù)用于生成私鑰,若隨機數(shù)可以被預測或重現(xiàn),則私鑰就會立刻形同虛設。所以保證隨機數(shù)擁有下列三項特征,至關(guān)重要:

      1.隨機性:不存在統(tǒng)計學偏差,完全雜亂的數(shù)列

      2.不可預測性:不能從過去的數(shù)列推測下一個出現(xiàn)的數(shù)

      3.不可重現(xiàn)性:除非將數(shù)列保存下來,否則不能重現(xiàn)相同的數(shù)列

      軟件本身是無法生成具有不可重現(xiàn)性的隨機數(shù),因為運行軟件的計算機本身僅具備有限的內(nèi)部狀態(tài)。所以通過確定性的代碼,在周期足夠長的情況下,必然會出現(xiàn)相同的隨機數(shù)。因此要生成具備不可重現(xiàn)性的隨機數(shù),需要從不確定的物理現(xiàn)象中獲取信息,比如周圍溫度、環(huán)境噪音、鼠標移動,鍵盤輸入間隔等。

      在 Linux 內(nèi)核中維護了一個熵(shāng)池用來收集來自設備驅(qū)動程序和其它來源的環(huán)境噪音。熵(entropy)是描述系統(tǒng)混亂無序程度的物理量,一個系統(tǒng)的熵越大則說明該系統(tǒng)的有序性越差,即不確定性越大。

      區(qū)塊鏈核心技術(shù)-密碼學

      所以在選擇生成私鑰的隨機數(shù)方法時,需要選擇滿足密碼學強度的隨機數(shù)方法,比如 Node 中的 crypto.randomBytes。當你調(diào)用 crypto.randomBytes(32) 方法時,它會等待熵池搜集足夠的信息后,返回 64 位的隨機數(shù),即私鑰。

      const?privateKey?=?crypto.randomBytes(32)privateKey.toString('hex'):?ea4692a11d962b249f8f0439d642a9013a1a08807649311d3672886d72d1fe51

      什么是非對稱加密?

      在非對稱加密中,將密鑰分為加密密鑰和解密密鑰,也就是我們常說的公鑰和私鑰。公鑰和私鑰一一對應,由公鑰加密的密文,必須使用公鑰配對的私鑰才可以解密。

      當我們調(diào)用 secp256k1.publicKeyCreate?獲得公鑰時,實際使用的是非對稱加密中的橢圓曲線算法。通過該算法可以從私鑰推導出公鑰,這是一個不可逆的過程:K = k * G。給出常數(shù)點 G 時,使用已知私鑰 k 求公鑰 K 的問題并不困難,但反過來,已知公鑰 K 求私鑰 k,則非常困難。這就是橢圓曲線算法上的離散對數(shù)問題,也是為什么你可以分享地址(或公鑰)給別人,但不能暴露自己的私鑰。

      const?publicKey?=?secp256k1.publicKeyCreate(privateKey,?false).slice(1)?publicKey.toString('hex'):??1e3f1532e3285b02...45d91a36a8d78cb6bef8

      為了形象的表現(xiàn)橢圓曲線算法如何將私鑰推導出公鑰,我們將使用簡單的整數(shù)作為私鑰 k,找到公鑰 K = k * G,也就是 G 相加 k 次(數(shù)學原理一致)。在橢圓曲線中, 點的相加等同于從該點畫切線找到與曲線相交的另?點, 然后映射到 x 軸。下圖展示了從曲線上獲得 G、2G、4G、8G 的幾何操作。

      什么是哈希算法?

      密碼學技術(shù),也稱散列函數(shù),原理是把任意長度的輸入通過哈希算法,變換成固定長度的由字母和數(shù)字組成的輸出,如:錢包的地址、交易地址都是通過哈希算法運算出來的。

      作為加密算法的一種,散列函數(shù)是一種單向密碼體制,對于給定的哈希值,無法推倒輸入的原始數(shù)據(jù),具有不可逆性,這也是哈希算法安全性的重要基礎。

      目前,哈希算法主要有兩類:MD系列和SHA系列。MD(Message Digest,消息摘要)系列包含MD4、MD5、HAVAL等,SHA(Secure Hash Algorithm,安全散列算法)系列包含SHA1、SHA256等。其中MD5是密碼學專家R.L.Rivest設計,SHA是美國算法制定機構(gòu)設計。

      當我們調(diào)用 createKeccakHash("keccak256")?方法時,Keccak 使用海綿函數(shù),對公鑰與初始的內(nèi)部狀態(tài)做 XOR 運算得到 32 字節(jié)散列值,取其后 20 字節(jié),轉(zhuǎn)成 40 位的 16 進制字符,即為地址。

      const?address?=?createKeccakHash("keccak256").update(publicKey).digest().slice(-20)?address.toString("hex"):?7a48ac1bf3943b2ca7a4ca4999cbcbb0e999950c

      什么是區(qū)塊鏈哈希?

      在區(qū)塊鏈系統(tǒng)中,構(gòu)建交易數(shù)據(jù)對應的Merkle樹,計算得到Merkle樹根節(jié)點的區(qū)塊鏈哈希值,區(qū)塊鏈的哈希值能夠唯一而精準地標識一個區(qū)塊,區(qū)塊鏈中任意節(jié)點通過簡單的哈希計算都接獲得這個區(qū)塊的哈希值,計算出的哈希值沒有變化也就意味著區(qū)塊鏈中的信息沒有被篡改。

      Merkle樹在數(shù)字貨幣、零知識證明、文件完整性校驗等領(lǐng)域有廣泛的應用,如:比特幣以太坊系統(tǒng)利用Merkle proofs來存儲每個區(qū)塊的交易,Git也是通過Merkle樹來進行完整性校驗。比特幣簡化支付驗證SPV(Simplified Payment Verification)也是使用此方式進行驗證支付。

      Merkle樹是Ralph Merkle于1979提出,是一種哈希二叉樹,在計算機科學中,二叉樹是每個節(jié)點最多有兩個子樹的樹結(jié)構(gòu),每個節(jié)點代表一條結(jié)構(gòu)化數(shù)據(jù)。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用于實現(xiàn)數(shù)據(jù)快速查詢,是散列列表和散列鏈的泛化。

      在線體驗哈希算法:http://www.kjson.com/encrypt/hash/?fm=map

      數(shù)據(jù)加密服務 區(qū)塊鏈

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:《實戰(zhàn) Istio入門與實戰(zhàn)》—3.2 Vagrant常用命令
      下一篇:技術(shù)開發(fā)課程的教學設計思考【基于Python編程創(chuàng)造營第一期和第二期的學習比較視角】
      相關(guān)文章
      久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲精品无码av片| 亚洲成av人片在线观看天堂无码| 国产精品亚洲片在线va| 亚洲大尺码专区影院| 老色鬼久久亚洲AV综合| 亚洲一级二级三级不卡| 亚洲高清在线视频| 久久久久亚洲精品影视| 亚洲AV日韩AV高潮无码专区| 亚洲四虎永久在线播放| 亚洲五月六月丁香激情| 亚洲高清在线mv| 亚洲女人影院想要爱| 亚洲国产成人在线视频| 亚洲va成无码人在线观看| 亚洲国产精品久久网午夜| 亚洲av午夜精品无码专区| 欧洲 亚洲 国产图片综合| 亚洲精品理论电影在线观看 | 麻豆亚洲AV成人无码久久精品 | 久久久亚洲欧洲日产国码农村| 亚洲国产美国国产综合一区二区| 亚洲精品国产成人专区| 亚洲精品美女在线观看| 亚洲成人激情小说| 男人的天堂av亚洲一区2区| 亚洲国产小视频精品久久久三级| 久久青青草原亚洲av无码| 久久精品国产亚洲网站| 亚洲一区精品中文字幕| 亚洲一区二区三区91| 亚洲人成未满十八禁网站| 精品久久久久亚洲| 久久久久亚洲精品男人的天堂| 亚洲AV无码精品色午夜果冻不卡 | 婷婷亚洲天堂影院| 亚洲熟妇丰满多毛XXXX| 久久亚洲精品人成综合网| 亚洲综合伊人制服丝袜美腿| 亚洲av日韩av永久在线观看 |