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

在學(xué)習(xí)區(qū)塊鏈的過程中經(jīng)常會(huì)遇到密碼學(xué)的概念奠旺,有時(shí)候會(huì)混淆本文將對(duì)以下概念進(jìn)行簡單解釋:hash(哈希购裙、散列)算法聚磺,數(shù)字摘要,對(duì)稱加密秆剪,非對(duì)稱加密,數(shù)字簽名爵政,Merkle樹仅讽,同態(tài)加密(Homomorphic Encryption),零知識(shí)證明钾挟。

hash算法

簡單來說就是把任意數(shù)據(jù)(二進(jìn)制)變?yōu)楣潭ㄩL度的二進(jìn)制洁灵,小到一個(gè)數(shù)字“1”,大到一個(gè)視頻文件掺出,只要是最終以二進(jìn)制形式存儲(chǔ)的數(shù)據(jù)徽千,就能通過hash算法變?yōu)楣潭ㄩL度的一串?dāng)?shù)據(jù)苫费。

一個(gè)優(yōu)秀的hash算法有一下四個(gè)特點(diǎn):

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

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

輸入敏感:明文只要發(fā)生哪怕一點(diǎn)點(diǎn)改變牍汹,進(jìn)行hash運(yùn)算后的值都會(huì)產(chǎn)生很大的改變铐维。

沖突避免:不同的明文,他們進(jìn)行hash運(yùn)算后的hash值基本不可能一樣柑贞。

沖突避免又叫做“抗碰撞性”方椎,如果給你一個(gè)明文,得到hash值后钧嘶,你無法找到另外一個(gè)明文的hash值與他一樣棠众,那么就叫做“抗弱碰撞性”。要是你自己隨便找兩個(gè)明文有决,讓他們的hash值一樣闸拿,如果做不到,那么叫做“抗強(qiáng)碰撞性”书幕,也就是說具有更強(qiáng)的“抗碰撞性”新荤。

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

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

小張對(duì)“1”和“2”進(jìn)行的hash算法,下面有很多種:md5榕堰,sha1竖慧,sha256等。

數(shù)字摘要

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

一個(gè)簡單的實(shí)例就是比如小張要給你傳一個(gè)文件勇蝙,為了避免別人在文件中加入木馬,小張就對(duì)文件進(jìn)行數(shù)字摘要的獲取挨约,然后再單獨(dú)把摘要(hash值)給你味混,當(dāng)你拿到文件后,你也對(duì)文件進(jìn)行跟小張一樣算法的hash運(yùn)算诫惭,如果得到的hash值跟小張傳給你的一樣翁锡,那么就證明文件沒問題,可以打開夕土,否則就證明被篡改了馆衔。

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

在比特幣交易中赢笨,當(dāng)你要轉(zhuǎn)賬時(shí)候未蝌,需要把交易信息和一串?dāng)?shù)字簽名一起傳給礦工,礦工根據(jù)數(shù)字簽名對(duì)你的交易信息進(jìn)行校驗(yàn)茧妒,就如同上面說的一樣萧吠,防止交易信息被篡改。

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

接下來要說說加密算法中的對(duì)稱和非對(duì)稱加密怎憋。

加密算法

我們在加密過程中又碌,要用加密算法和一個(gè)key來進(jìn)行加密九昧,舉個(gè)最簡單的例子,你要傳送一個(gè)信息數(shù)字“1”給小伙伴毕匀,但是不想被別人知道铸鹰,你就跟小伙伴約定:“我先把信息加上一個(gè)值,你拿到后再減去一個(gè)值就能得到原文(加密算法)皂岔,這個(gè)值我每次跟你偷偷約定(key)”蹋笼。比如這次約定的key是8,于是我就傳一個(gè)“9”給小伙伴,同時(shí)告訴他剖毯,“key的值是8”圾笨,他拿到“9”后,再減去8就得到了原文“1”逊谋。

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

對(duì)稱密鑰加密 (Symmetric Key Encryption)

特點(diǎn):公鑰(加密使用)胶滋、私鑰(解密使用)相同板鬓。

優(yōu)點(diǎn):加密速度快,空間占用小究恤,保密強(qiáng)度高俭令。

缺點(diǎn):key需要多方持有且高度保密,如果有一人泄露部宿,信息就全部泄露了抄腔。

代表算法:DES、3DEA理张、AES妓柜、IDEA等。

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

非對(duì)稱加密(asymmetric encryption)

特點(diǎn):公鑰(加密使用)棍掐、私鑰(解密使用)不同。

優(yōu)點(diǎn):公私鑰分開拷况,便于管理作煌。

缺點(diǎn):加密速度慢。

代表算法:RSA赚瘦、EIGamal粟誓、橢圓曲線系列算法。

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

實(shí)例:小張可以把公鑰廣播出去,需要跟小張通訊的人都可以用公鑰對(duì)信息進(jìn)行加密揽咕,小張拿到加密信息后悲酷,用自己獨(dú)有的私鑰進(jìn)行解密,就能得到傳給小張的信息了亲善。

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

數(shù)字簽名

之前說了在比特幣中,要用到數(shù)字簽名校驗(yàn)交易信息是否是你發(fā)出屠尊。你使用比特幣的時(shí)候都有一個(gè)私鑰旷祸,你先把自己的交易信息進(jìn)行hash運(yùn)算取得數(shù)字摘要,然后用私鑰對(duì)摘要進(jìn)行非對(duì)稱加密讼昆,接著把交易信息和加密后的數(shù)字簽名一起發(fā)給曠工肋僧,礦工收到你的申請(qǐng)后,就用交易信息中的你的公鑰進(jìn)行解密得到數(shù)字摘要控淡,然后再對(duì)加以信息進(jìn)行hash嫌吠,保證兩個(gè)數(shù)字摘要一致,防止交易信息被篡改掺炭。這樣既能保證交易信息沒有被篡改辫诅,也能保證這筆交易確實(shí)是你發(fā)起的了。所以大家看出來了涧狮,保存好自己的私鑰是多么重要的一件事炕矮。

Merkle樹

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

簡單說就是D0涉枫,D1邢滑,D2,D3愿汰。困后。。都是數(shù)據(jù)衬廷,他們兩兩內(nèi)容進(jìn)行hash后得到上面的節(jié)點(diǎn)N(i)摇予,最后得到總的節(jié)點(diǎn)Root。

特點(diǎn)就是:低層無論哪一個(gè)節(jié)點(diǎn)發(fā)生變動(dòng)吗跋,都會(huì)向上傳導(dǎo)侧戴,最終導(dǎo)致根節(jié)點(diǎn)發(fā)生變化。

應(yīng)用場景:

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

2.能夠快讀定位到變動(dòng)的數(shù)據(jù):比如D1有變化,就會(huì)影響N1秩冈,N4和Root本缠,沿著Root - N4 - N1斥扛,可以快速定位到D1.

3.零知識(shí)證明:比如要證明數(shù)據(jù)中包含D0入问,但是又不想D0知道D1丹锹。。芬失。D3的內(nèi)容楣黍,這時(shí)就可以公布N0 - N4 節(jié)點(diǎn),D0通過比對(duì)hash就能得到自己也在數(shù)據(jù)中棱烂,但是不知道其他內(nèi)容租漂。

同態(tài)加密

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

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

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

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

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

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

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岳瞭,隨后出現(xiàn)的幾起案子拥娄,更是在濱河造成了極大的恐慌,老刑警劉巖瞳筏,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚瘾,死亡現(xiàn)場離奇詭異,居然都是意外死亡姚炕,警方通過查閱死者的電腦和手機(jī)摊欠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門丢烘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人些椒,你說我怎么就攤上這事播瞳。” “怎么了免糕?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵赢乓,是天一觀的道長。 經(jīng)常有香客問我石窑,道長牌芋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任松逊,我火速辦了婚禮姜贡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棺棵。我一直安慰自己楼咳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布烛恤。 她就那樣靜靜地躺著母怜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缚柏。 梳的紋絲不亂的頭發(fā)上苹熏,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音币喧,去河邊找鬼轨域。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杀餐,可吹牛的內(nèi)容都是我干的干发。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼史翘,長吁一口氣:“原來是場噩夢啊……” “哼枉长!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琼讽,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤必峰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后钻蹬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吼蚁,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年问欠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肝匆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粒蜈。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖术唬,靈堂內(nèi)的尸體忽然破棺而出薪伏,到底是詐尸還是另有隱情滚澜,我是刑警寧澤粗仓,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站设捐,受9級(jí)特大地震影響借浊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萝招,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一蚂斤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧槐沼,春花似錦曙蒸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至兼吓,卻和暖如春臂港,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背视搏。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國打工审孽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浑娜。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓佑力,卻偏偏與公主長得像,于是被迫代替她去往敵國和親筋遭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搓萧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

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