第五屆世界互聯(lián)網(wǎng)大會(huì)將在烏鎮(zhèn)舉行,此次互聯(lián)網(wǎng)大會(huì)的主題是“創(chuàng)造互信共治的數(shù)字世界--攜手共建網(wǎng)絡(luò)空間命運(yùn)共同體”。以“ABCDEHI5G”(人工智能、區(qū)塊鏈、云計(jì)算、大數(shù)據(jù)、邊緣計(jì)算、智慧家庭、物聯(lián)網(wǎng)和5G)為代表的新技術(shù)蓬勃興起,正深刻地改變?nèi)祟惖纳a(chǎn)方式、生活方式及思維方式,改變著人類文明的進(jìn)程。
區(qū)塊鏈發(fā)展進(jìn)入寒冬期,專注做事情,一起來深入學(xué)習(xí)區(qū)塊鏈數(shù)字簽名和哈希算法。為了防止發(fā)送節(jié)點(diǎn)信息和數(shù)據(jù)被惡意偽造和篡改,區(qū)塊鏈也引入數(shù)字簽名技術(shù)。
一? 交易過程
區(qū)塊鏈交易過程如下,如下圖1所示:
1 加密者生成公鑰私鑰對(duì)。
2 加密者對(duì)信息進(jìn)行哈希運(yùn)算生成摘要,利用加密者私鑰對(duì)摘要處理生成數(shù)字簽名信息。
3 加密后的數(shù)字簽名信息和信息連同公鑰三者一起發(fā)送給接受者。
4 接受者通過發(fā)送者公鑰對(duì)加密哈希數(shù)值進(jìn)行解密,還原哈希數(shù)值。
5 對(duì)簽名信息進(jìn)行驗(yàn)證。
圖1 區(qū)塊鏈數(shù)據(jù)層交易過程示意圖
區(qū)塊鏈中,數(shù)字簽名技術(shù)包含兩種運(yùn)算算法:簽名和驗(yàn)證。
信息數(shù)據(jù)的哈希,也稱為“摘要”,無論信息有多大,都可生成一個(gè)固定長(zhǎng)度的摘要,該摘要可校驗(yàn)信息是否被篡改,只要消息被修改任任意字節(jié),摘要的校驗(yàn)都會(huì)失敗。
簽名是利用私鑰和信息的哈希數(shù)值產(chǎn)生簽名;
發(fā)送節(jié)點(diǎn)信息數(shù)據(jù)通過Hash加密生成摘要,然后利用發(fā)送節(jié)點(diǎn)的私鑰對(duì)摘要進(jìn)行數(shù)字簽名,發(fā)送節(jié)點(diǎn)把信息數(shù)據(jù)/數(shù)字簽名/發(fā)送節(jié)點(diǎn)公鑰一起全網(wǎng)廣播給接收節(jié)點(diǎn)。
圖2 數(shù)字簽名及Hash加密示意圖
驗(yàn)證是使用公鑰驗(yàn)證簽名的真實(shí)性。
接收節(jié)點(diǎn)把接收到的數(shù)據(jù)信息進(jìn)行哈希加密得到散列數(shù)值,與發(fā)送節(jié)點(diǎn)發(fā)送來的數(shù)字簽名解密得到的散列數(shù)值進(jìn)行校驗(yàn),若相同在簽名有效,則數(shù)據(jù)正確。
圖 3 數(shù)字簽名驗(yàn)證示意圖
數(shù)字簽名技術(shù)作用是保證發(fā)送信息不會(huì)被篡改。
二 哈希算法及優(yōu)缺點(diǎn)
哈希算法解決了將信息簡(jiǎn)潔高效編碼并且可讓參與者安全快速進(jìn)行驗(yàn)證的問題。
以太坊與比特幣都采用了ECDSA算法,唯一區(qū)別是Hash函數(shù)不同;比特幣的哈希算法使用的是SHA2-256,以太坊的哈希算法采用的是全新的SHA3-256;
最早Hash算法標(biāo)準(zhǔn)之一還有MD5哈希算法,輸出固定128位字符串,因?yàn)樽址L(zhǎng)度較短并且操作較為簡(jiǎn)單,容易被破解而受攻擊。
SHA1是在MD5基礎(chǔ)上提高了輸出長(zhǎng)度,輸出160位固定長(zhǎng)度字符串,并未根本上提高其抵御更強(qiáng)大機(jī)器能力。
與SHA1/SHA2不一樣,SHA3并不是單純擴(kuò)展字節(jié)數(shù),而是采用了新的Keccak算法。目前SHA1已經(jīng)被攻破,SHA2被攻破只是時(shí)間問題。同樣字節(jié)寬度的SHA3比SHA2更安全。
SHA3是從根本上替代SHA2的新標(biāo)準(zhǔn),內(nèi)部算法機(jī)制完全不同,SHA3具備海綿結(jié)構(gòu)機(jī)制,可以使用隨機(jī)排列組合來吸收和輸出數(shù)據(jù),同時(shí)還給位未來輸入數(shù)值提供隨機(jī)源。
雖然現(xiàn)在已經(jīng)有SHA3,隨著計(jì)算機(jī)運(yùn)算能力提高,量子計(jì)算發(fā)展,但是Hash算法仍然面臨下面兩個(gè)問題:
1)Hash函數(shù)內(nèi)部復(fù)雜度不夠高
1)Hash函數(shù)生成的數(shù)值長(zhǎng)度不夠長(zhǎng)
三 數(shù)字簽名技術(shù)及優(yōu)缺點(diǎn)
數(shù)字簽名,又名為公鑰數(shù)字簽名,是一種通過公鑰加密鑒別數(shù)字信息的方法。基于該技術(shù)信息發(fā)送者可以通過發(fā)送別人不能偽造的一串?dāng)?shù)字字符,也可以證明發(fā)送信息真實(shí)性。
根據(jù)密鑰不同將現(xiàn)代密碼技術(shù)分為兩類:對(duì)稱加密算法和非對(duì)稱加密算法:?
A 對(duì)稱加密是只要一個(gè)密鑰,加密和解密都是使用同一個(gè)密鑰。
B 非對(duì)稱加密密鑰和解密鑰匙是不同的。
非對(duì)稱加密優(yōu)點(diǎn)是不需要在網(wǎng)絡(luò)上暴露加密的密鑰,從機(jī)制上來說更安全。缺點(diǎn)加密效率比對(duì)稱加密低很多,所以非對(duì)稱加密一般只是使用于數(shù)字簽名這樣數(shù)據(jù)量較小的加密運(yùn)算中。
區(qū)塊鏈公鑰加密系統(tǒng)采用是非對(duì)稱加密算法。采用較多的是公鑰加密算法, 如DSA、RSA、PGP、ECC。
目前區(qū)塊鏈中常用的數(shù)字簽名算法是橢圓曲線簽名算法ECDSA。以太坊與比特幣都采用了ECDSA算法;EOS采用多重簽名算法。網(wǎng)銀行系統(tǒng)采用的是RSA算法。
在ECSDA算法中,使用橢圓曲線密碼(ECC)對(duì)數(shù)字簽名算法(DSA)的模擬。ECC創(chuàng)建基于使用橢圓曲線上的點(diǎn)來定義的公鑰/私鑰對(duì),黑客很難用通常使用的暴力破解的方法來破解,是以較少的計(jì)算能力提供比RSA加密算法更快的加密算法。
ECC的主要缺點(diǎn):
1)比RSA加密顯著地增加了加密消息的大小。
2)ECC算法比RSA更復(fù)雜和難實(shí)現(xiàn),降低了算法的安全性。
四 未來
隨著數(shù)字計(jì)算迅速發(fā)展, 量子計(jì)算會(huì)破解RSA加密算法,也會(huì)暴力破解Hash算法,不論選擇何種算法,都會(huì)駛向一個(gè)計(jì)算更加高效的未來,須盡力挑選經(jīng)得起時(shí)間考驗(yàn)的好算法。
如果一個(gè)人全部信息全部局限于他的工作領(lǐng)域,那么他的工作不會(huì)做的很好。一個(gè)人必須有陽(yáng)光,他可以從書籍上或者人們身上-最好是兩者兼有培養(yǎng)眼光。
—哈維.費(fèi)爾斯通