區(qū)塊鏈中的密碼學

在學習區(qū)塊鏈的過程中經(jīng)常會遇到密碼學的概念,有時候會混淆本文將對以下概念進行簡單解釋:hash(哈希、散列)算法,數(shù)字摘要,對稱加密,非對稱加密,數(shù)字簽名,Merkle樹,同態(tài)加密(Homomorphic Encryption),零知識證明。

hash算法

簡單來說就是把任意數(shù)據(jù)(二進制)變?yōu)楣潭ㄩL度的二進制,小到一個數(shù)字“1”,大到一個視頻文件,只要是最終以二進制形式存儲的數(shù)據(jù),就能通過hash算法變?yōu)楣潭ㄩL度的一串數(shù)據(jù)。

一個優(yōu)秀的hash算法有一下四個特點:

正面快速:就是說加密的速度要在有限時間和有限資源內(nèi)完成,且越快越好。

逆向困難:就是說給你一個加密后的hash值數(shù)據(jù),要想逆向破解獲得加密前的明文是極其困難的。

輸入敏感:明文只要發(fā)生哪怕一點點改變,進行hash運算后的值都會產(chǎn)生很大的改變。

沖突避免:不同的明文,他們進行hash運算后的hash值基本不可能一樣。

沖突避免又叫做“抗碰撞性”,如果給你一個明文,得到hash值后,你無法找到另外一個明文的hash值與他一樣,那么就叫做“抗弱碰撞性”。要是你自己隨便找兩個明文,讓他們的hash值一樣,如果做不到,那么叫做“抗強碰撞性”,也就是說具有更強的“抗碰撞性”。

現(xiàn)在比較流行的就是MD5和SHA-1算法。但是由于這兩種算法不夠安全,也就是在“抗碰撞性”上做得不夠好,于是又有了SHA-224、SHA-256,SHA-512等算法。

比特幣采用的SHA-256 hash算法,共有256位,也就是2的256次方個結(jié)果(這個數(shù)字十分巨大),產(chǎn)生新區(qū)快時候,由于hash逆向困難,曠工就要用哪一個值去跟新區(qū)塊的hash的值碰撞,誰先猜對,就讓誰在新的區(qū)塊中寫入信息,并且獲得新區(qū)快中的獎勵btc。

小張對“1”和“2”進行的hash算法,下面有很多種:md5,sha1,sha256等。

數(shù)字摘要

其實就是運用hash算法來對內(nèi)容進行hash運算,由于前面說過了,一旦更改了原數(shù)據(jù)哪怕是一點點,hash值都會產(chǎn)生巨大的改變,所以這個數(shù)字摘要可以避免數(shù)據(jù)被篡改。

一個簡單的實例就是比如小張要給你傳一個文件,為了避免別人在文件中加入木馬,小張就對文件進行數(shù)字摘要的獲取,然后再單獨把摘要(hash值)給你,當你拿到文件后,你也對文件進行跟小張一樣算法的hash運算,如果得到的hash值跟小張傳給你的一樣,那么就證明文件沒問題,可以打開,否則就證明被篡改了。

不光是比特幣,數(shù)字簽名還有更多更廣泛的運用,比如之前介紹過的ULORD,就是把具有版權(quán)的數(shù)字化作品進行數(shù)字簽名,然后把簽名存儲在公有鏈上,既能防止被串改,還能對版權(quán)進行控制。

在比特幣交易中,當你要轉(zhuǎn)賬時候,需要把交易信息和一串數(shù)字簽名一起傳給礦工,礦工根據(jù)數(shù)字簽名對你的交易信息進行校驗,就如同上面說的一樣,防止交易信息被篡改。

數(shù)字簽名就是對信息的數(shù)字摘要進行了非對稱加密而來。

接下來要說說加密算法中的對稱和非對稱加密。

加密算法

我們在加密過程中,要用加密算法和一個key來進行加密,舉個最簡單的例子,你要傳送一個信息數(shù)字“1”給小伙伴,但是不想被別人知道,你就跟小伙伴約定:“我先把信息加上一個值,你拿到后再減去一個值就能得到原文(加密算法),這個值我每次跟你偷偷約定(key)”。比如這次約定的key是8,于是我就傳一個“9”給小伙伴,同時告訴他,“key的值是8”,他拿到“9”后,再減去8就得到了原文“1”。

根據(jù)加密和解密時候的key相同或者不同,加密算法分為了對稱加密和非對稱加密。

對稱密鑰加密 (Symmetric Key Encryption)

特點:公鑰(加密使用)、私鑰(解密使用)相同。

優(yōu)點:加密速度快,空間占用小,保密強度高。

缺點:key需要多方持有且高度保密,如果有一人泄露,信息就全部泄露了。

代表算法:DES、3DEA、AES、IDEA等。

適用場景:大量數(shù)據(jù)的加解密。

非對稱加密(asymmetric encryption)

特點:公鑰(加密使用)、私鑰(解密使用)不同。

優(yōu)點:公私鑰分開,便于管理。

缺點:加密速度慢。

代表算法:RSA、EIGamal、橢圓曲線系列算法。

適用場景:簽名、密鑰協(xié)商場景。

實例:小張可以把公鑰廣播出去,需要跟小張通訊的人都可以用公鑰對信息進行加密,小張拿到加密信息后,用自己獨有的私鑰進行解密,就能得到傳給小張的信息了。

其實對稱和非對稱還可以組合適用,比如小張先用非對稱加密把公鑰給你,你把一個對稱加密的臨時秘鑰加密了給小張,小張拿到這個對稱加密的key后再對大量數(shù)據(jù)進行加解密處理。這樣安全性和加解密速度都可以得到保障了。

數(shù)字簽名

之前說了在比特幣中,要用到數(shù)字簽名校驗交易信息是否是你發(fā)出。你使用比特幣的時候都有一個私鑰,你先把自己的交易信息進行hash運算取得數(shù)字摘要,然后用私鑰對摘要進行非對稱加密,接著把交易信息和加密后的數(shù)字簽名一起發(fā)給曠工,礦工收到你的申請后,就用交易信息中的你的公鑰進行解密得到數(shù)字摘要,然后再對加以信息進行hash,保證兩個數(shù)字摘要一致,防止交易信息被篡改。這樣既能保證交易信息沒有被篡改,也能保證這筆交易確實是你發(fā)起的了。所以大家看出來了,保存好自己的私鑰是多么重要的一件事。

Merkle樹

默克爾樹,又叫做哈希樹。是一種二叉樹。見下圖。

簡單說就是D0,D1,D2,D3。。。都是數(shù)據(jù),他們兩兩內(nèi)容進行hash后得到上面的節(jié)點N(i),最后得到總的節(jié)點Root。

特點就是:低層無論哪一個節(jié)點發(fā)生變動,都會向上傳導,最終導致根節(jié)點發(fā)生變化。

應用場景:

1.快速比較大量的數(shù)據(jù):如果兩個默克爾樹的根相同,就證明兩個數(shù)據(jù)必然相同。

2.能夠快讀定位到變動的數(shù)據(jù):比如D1有變化,就會影響N1,N4和Root,沿著Root - N4 - N1,可以快速定位到D1.

3.零知識證明:比如要證明數(shù)據(jù)中包含D0,但是又不想D0知道D1。。。D3的內(nèi)容,這時就可以公布N0 - N4 節(jié)點,D0通過比對hash就能得到自己也在數(shù)據(jù)中,但是不知道其他內(nèi)容。

同態(tài)加密

如果我們有明文A和明文B,我們分別對A、B進行加密得到密文C和D。我們把C和D進行相加,然后再用解密算法進行解密,一般情況下我們得到的解密結(jié)果都是無意義的信息。

但是同態(tài)加密就是說:我們對C+D進行解密后,得到的結(jié)果就是A+B的結(jié)果。

如果滿足加減法就叫做加加法同態(tài)。

如果滿足乘除法就叫做加乘法同態(tài)。

如果滿足加減法又滿足乘除法就叫做加全同態(tài)。

目前的算法例如:RSA滿足乘法同態(tài),Paillier滿足加法同態(tài),第一個全同態(tài)是09年才出現(xiàn)的Gentry算法。

這樣的好處是:比如企業(yè)要用到云計算,但是又不想把數(shù)據(jù)公開出去。就可以把同態(tài)加密算法加密的密文發(fā)送到第三方云平臺,等第三方計算完成后,取回本地進行解密操作。

大家可以看到不光是區(qū)塊鏈,各行各業(yè)中密碼學都是應用廣泛,區(qū)塊鏈更是把密碼學運用到了的一個巔峰,要想好好了解區(qū)塊鏈技術(shù),了解密碼學的一些基礎(chǔ)知識還真是必不可少!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 時間:2018年10月18日 講師:Ulord技術(shù)團隊/優(yōu)得學院 楊博士 主題:區(qū)塊鏈與密碼學 一、區(qū)塊鏈和密碼學...
    秋海糖閱讀 990評論 0 1
  • 密碼學在信息技術(shù)領(lǐng)域的重要地位無需多言,如果沒有現(xiàn)代密碼學的研究成果,人類社會根本無法進入信息時代。 密碼學領(lǐng)域十...
    yuyangray閱讀 558評論 0 3
  • 1. 之前看到一個綜藝節(jié)目《這就是生活》,介紹了明星們體驗最簡單的辛苦生活。突然聯(lián)想到明道以前主持的節(jié)目《冒險王》...
    劉某人閱讀 624評論 0 0
  • 上周收到了小龍的幾個提問,自己之前只進行了簡短回答,但看看彭彭專門寫了篇文章回顧經(jīng)歷,心里也不免再次感到羞...
    X逆生長閱讀 305評論 2 1
  • 剛開始做運營的時候,完全是工具控。 每天都在搜羅各種軟件,以滿足自己裝X的欲望。 初入運營,領(lǐng)導交待一個任務(wù),讓大...
    我是一顆小小的雨花石閱讀 222評論 0 1

友情鏈接更多精彩內(nèi)容