區塊鏈加密演算法研究
A. 區塊鏈哈希演算法是什麼
哈希演算法也被稱為「散列」,是區塊鏈的四大核心技術之一。是能計算出一個數字消息所對應的、長度固定的字元串(又稱消息摘要)的演算法。由於一段數據只有一個哈希值,所以哈希演算法可以用於檢驗數據的完整性。在快速查找和加密演算法的應用方面,哈希演算法的使用非常普遍。
在互聯網時代,盡管人與人之間的距離更近了,但是信任問題卻更嚴重了。 現存的第三方中介組織的技術架構都是私密而且中心化的,這種模式永遠都無法從根本上解決互信以及價值轉移的問題。因此,區塊鏈技術將會利用去中心化的資料庫架構完成數據交互信任背書,實現全球互信的一大跨步。在這一過 程中,哈希演算法發揮了重要作用。
散列演算法是區塊鏈中保證交易信息不被篡改的單向密碼機制。區塊鏈通過散列演算法對一個交易區塊中的交易進行加密,並把信息壓縮成由一串數字和字母組成的散列字元串。區塊鏈的散列值能夠唯一而准確地標識一個區塊。在驗證區塊的真實性時,只需要簡單計算出這個區塊的散列值,如果沒有變化就 意味著這個區塊上的信息是沒有被篡改過的。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
B. 區塊鏈的密碼技術有
1、第一,引進區塊鏈加密技能加密演算法一般分為對稱加密和非對稱加密。非對稱加密是指集成到區塊鏈中以滿意安全要求和所有權驗證要求的加密技能。非對稱加密通常在加密和解密進程中使用兩個非對稱暗碼,稱為公鑰和私鑰。
2、區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:Hash演算法哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。
3、區塊鏈中的密碼學包括布隆過濾器,哈希函數、加解密演算法,數字證書與數字簽名,同態加密,PKI體系等。
4、目前的區塊鏈應用中採用了很多現代密碼學的經典演算法,主要包括:哈希演算法、對稱加密、非對稱加密、數字簽名等。第三種是分布式存儲,區塊鏈是一種點對點網路上的分布式賬本,每個參與的節點都將獨立完整地存儲寫入區塊數據信息。
C. 區塊鏈的故事 - 9 - RSA 演算法
RSA
迪菲與赫爾曼完美地解決了密鑰分發的難題,從此,交換密鑰就很簡單了,愛麗絲與鮑勃完全可以可以在村頭大喇叭里喊話,就能夠交換出一個密鑰。但加密的方式,依然是對稱加密的。
DH 協議交換密鑰雖然方便,但依然有一些不盡人意的麻煩處,愛麗絲還是要與鮑勃對著嚷嚷半天,二人才能生成密鑰。當愛麗絲想要交換密鑰的時候,若是鮑勃正在睡覺,那愛麗絲的情書,還是送不出去。
迪菲與赫爾曼在他們的論文中,為未來的加密方法指出了方向。 通過單向函數,設計出非對稱加密,才是終極解決方案。 所謂非對稱加密,就是一把鑰匙用來合上鎖,另一把鑰匙用來開鎖,兩把鑰匙不同。鎖死的鑰匙,不能開鎖。開鎖的鑰匙,不能合鎖。
麻省理工的三位科學家,他們是羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman),他們讀了迪菲與赫爾曼的論文,深感興趣,便開始研究。迪菲與赫爾曼未能搞定的演算法,自他們三人之手,誕生了。
2002 年,這三位大師因為 RSA 的發明,獲得了圖靈獎。 但不要以為 RSA 就是他們的全部,這三位是真正的大師,每一位的學術生涯都是碩果累累。讓我們用仰視的目光探索大師們的高度。
李維斯特還發明了 RC2, RC4, RC 5, RC 6 演算法,以及著名的 MD2, MD3, MD4, MD5 演算法。他還寫了一本書,叫 《演算法導論》,程序員們都曾經在這本書上磨損了無數的腦細胞。
薩莫爾發明了 Feige-Fiat-Shamir 認證協議,還發現了微分密碼分析法。
阿德曼則更加傳奇,他開創了 DNA 計算學說,用 DNA 計算機解決了 「旅行推銷員」 問題。 他的學生 Cohen 發明了計算機病毒,所以他算是計算機病毒的爺爺了。他還是愛滋病免疫學大師級專家,在數學、計算機科學、分子生物學、愛滋病研究等每一個方面都作出的卓越貢獻。
1976 年,這三位都在麻省理工的計算機科學實驗室工作,他們構成的小組堪稱完美。李維斯特和薩莫爾兩位是計算機學家,他們倆不斷提出新的思路來,而阿德曼是極其高明的數學家,總能給李維斯特和薩莫爾挑出毛病來。
一年過後,1977 年,李維斯特在一次聚會後,躺在沙發上醒酒,他輾轉反側,無法入睡。在半睡半醒、將吐未吐之間,突然一道閃電在腦中劈下,他找到了方法。一整夜時間,他就寫出了論文來。次晨,他把論文交給阿德曼,阿德曼這次再也找不到錯誤來了。
在論文的名字上,這三位還著實君子謙讓了一番。 李維斯特將其命名為 Adleman-Rivest-Shamir,而偉大的阿德曼則要求將自己的名字去掉,因為這是李維斯特的發明。 最終爭議的結果是,阿德曼名字列在第三,於是這個演算法成了 RSA。
RSA 演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開,用作加密密鑰。
例如,選擇兩個質數,一個是 17159,另一個是 10247,則兩數乘積為 175828273。 乘積 175828273 就是加密公鑰,而 (17159,10247)則是解密的私鑰。
公鑰 175828273 人人都可獲取,但若要破解密文,則需要將 175828273 分解出 17159 和 10247,這是非常困難的。
1977 年 RSA 公布的時候,數學家、科普作家馬丁加德納在 《科學美國人》 雜志上公布了一個公鑰:
114 381 625 757 888 867 669 235 779 976 146 612 010 218 296 721 242 362 562 842 935 706 935 245 733 897 830 597 123 563 958 705 058 989 075 147 599 290 026 879 543 541
馬丁懸賞讀者對這個公鑰進行破解。漫長的 17 年後,1994 年 4 月 26 日,一個 600 人組成的愛好者小組才宣稱找到了私鑰。私鑰是:
p:3 490 529 510 847 650 949 147 849 619 903 898 133 417 764 638 493 387 843 990 820 577
q:32 769 132 993 266 709 549 961 988 190 834 461 413 177 642 967 992 942 539 798 288 533
這個耗時 17 年的破解,針對的只是 129 位的公鑰,今天 RSA 已經使用 2048 位的公鑰,這幾乎要用上全世界計算機的算力,並耗費上幾十億年才能破解。
RSA 的安全性依賴於大數分解,但其破解難度是否等同於大數分解,則一直未能得到理論上的證明,因為未曾證明過破解 RSA 就一定需要作大數分解。
RSA 依然存在弱點,由於進行的都是大數計算,使得 RSA 最快的情況也比普通的對稱加密慢上多倍,無論是軟體還是硬體實現。速度一直是 RSA 的缺陷。一般來說只用於少量數據加密。
RSA 還有一個弱點,這個在下文中還會提及。
在密碼學上,美國的學者們忙的不亦樂乎,成果一個接一個。但老牌帝國英國在密碼學上,也並不是全無建樹,畢竟那是圖靈的故鄉,是圖靈帶領密碼學者們在布萊切里公園戰勝德國英格瑪加密機的國度。
英國人也發明了 RSA,只是被埋沒了。
60 年代,英國軍方也在為密碼分發問題感到苦惱。1969 年,密碼學家詹姆斯埃利斯正在為軍方工作,他接到了這個密鑰分發的課題。他想到了一個主意,用單向函數實現非對稱加密,但是他找不到這個函數。政府通訊總部的很多天才們,加入進來,一起尋找單向函數。但三年過去了,這些聰明的腦袋,並沒有什麼收獲,大家都有些沮喪,這樣一個單項函數,是否存在?
往往這個時候,就需要初生牛犢來救場了。科克斯就是一頭勇猛的牛犢,他是位年輕的數學家,非常純粹,立志獻身繆斯女神的那種。 雖然年輕,但他有一個巨大優勢,當時他對此單向函數難題一無所知,壓根兒不知道老師們三年來一無所獲。於是懵懵懂懂的闖進了地雷陣。
面對如此凶險的地雷陣,科克斯近乎一躍而過。只用了半個小時,就解決了這個問題,然後他下班回家了,並沒有把這個太當回事,領導交代的一個工作而已,無非端茶倒水掃地解數學題,早點幹完,回家路上還能買到新出爐的麵包。他完全不知道自己創造了歷史。科克斯是如此純粹的數學家,後來他聽聞同事們送上的贊譽,還對此感到有些不好意思。在他眼裡,數學應該如哈代所說,是無用的學問,而他用數學解決了具體的問題,這是令人羞愧的。
可惜的是,科克斯的發明太早了,當時的計算機算力太弱,並不能實現非對稱的加解密。所以,軍方沒有應用非對稱加密演算法。詹姆斯與科克斯把非對稱加密的理論發展到完善,但是他們不能說出去,軍方要求所有的工作內容都必須保密,他們甚至不能申請專利。
軍方雖然對工作成果的保密要求非常嚴格,但對工作成果本身卻不很在意。後來,英國通訊總部發現了美國人的 RSA 演算法,覺得好棒棒哦。他們壓根就忘記了詹姆斯與科克斯的 RSA。通訊總部贊嘆之餘,扒拉了一下自己的知識庫,才發現自己的員工科克斯早已發明了 RSA 類似的演算法。 官僚機構真是人類的好朋友,總能給人們製造各種笑料,雖然其本意是要製造威權的。
科克斯對此並不介懷,他甚至是這樣說的:「埋沒就埋沒吧,我又不想當網紅,要粉絲幹嘛?那些粉絲能吃?」 原話不是這樣的,但表達的意思基本如此。
迪菲在 1982 年專程去英國見詹姆斯,兩人惺惺相惜,真是英雄相見恨晚。可惜詹姆斯依然不能透漏他們對 RSA 的研究,他只告訴了迪菲:「你們做的比我們要好。」 全球各國的科學家們,可以比出誰更好,但全球各國的官僚們,卻很難比出誰更顢頇,他們不分高下。
區塊鏈的故事 - 1
區塊鏈的故事 - 2
區塊鏈的故事 - 3
區塊鏈的故事- 4
區塊鏈的故事 - 5
區塊鏈的故事 - 6
區塊鏈的故事 - 7
區塊鏈的故事 - 8
D. 區塊鏈的密碼是什麼(區塊鏈的密鑰是什麼)
區塊鏈密碼演算法是怎樣的?區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:
Hash演算法
哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。若此函數同時滿足:
(1)對任意輸入的一組數據Hash值的計算都特別簡單;
(2)想要找到2個不同的擁有相同Hash值的數據是計算困難的。
滿足上述兩條性質的Hash函數也被稱為加密Hash函數,不引起矛盾的情況下,Hash函數通常指的是加密Hash函數。對於Hash函數,找到使得被稱為一次碰撞。當前流行的Hash函數有MD5,SHA1,SHA2,SHA3。
比特幣使用的是SHA256,大多區塊鏈系統使用的都是SHA256演算法。所以這里先介紹一下SHA256。
1、SHA256演算法步驟
STEP1:附加填充比特。對報文進行填充使報文長度與448模512同餘(長度=448mod512),填充的比特數范圍是1到512,填充比特串的最高位為1,其餘位為0。
STEP2:附加長度值。將用64-bit表示的初始報文(填充前)的位長度附加在步驟1的結果後(低位位元組優先)。
STEP3:初始化緩存。使用一個256-bit的緩存來存放該散列函數的中間及最終結果。
STEP4:處理512-bit(16個字)報文分組序列。該演算法使用了六種基本邏輯函數,由64步迭代運算組成。每步都以256-bit緩存值為輸入,然後更新緩存內容。每步使用一個32-bit常數值Kt和一個32-bitWt。其中Wt是分組之後的報文,t=1,2,...,16。
STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。
作為加密及簽名體系的核心演算法,哈希函數的安全性事關整個區塊鏈體系的底層安全性。所以關注哈希函數的研究現狀是很有必要的。
2、Hash函的研究現狀
2004年我國密碼學家王小雲在國際密碼討論年會(CRYPTO)上展示了MD5演算法的碰撞並給出了第一個實例(CollisionsforhashfunctionsMD4,MD5,HAVAL-128andRIPEMD,rumpsessionofCRYPTO2004,,EuroCrypt2005)。該攻擊復雜度很低,在普通計算機上只需要幾秒鍾的時間。2005年王小雲教授與其同事又提出了對SHA-1演算法的碰撞演算法,不過計算復雜度為2的63次方,在實際情況下難以實現。
2017年2月23日谷歌安全博客上發布了世界上第一例公開的SHA-1哈希碰撞實例,在經過兩年的聯合研究和花費了巨大的計算機時間之後,研究人員在他們的研究網站SHAttered上給出了兩個內容不同,但是具有相同SHA-1消息摘要的PDF文件,這就意味著在理論研究長期以來警示SHA-1演算法存在風險之後,SHA-1演算法的實際攻擊案例也浮出水面,同時也標志著SHA-1演算法終於走向了生命的末期。
NIST於2007年正式宣布在全球范圍內徵集新的下一代密碼Hash演算法,舉行SHA-3競賽。新的Hash演算法將被稱為SHA-3,並且作為新的安全Hash標准,增強現有的FIPS180-2標准。演算法提交已於2008年10月結束,NIST分別於2009年和2010年舉行2輪會議,通過2輪的篩選選出進入最終輪的演算法,最後將在2012年公布獲勝演算法。公開競賽的整個進程仿照高級加密標准AES的徵集過程。2012年10月2日,Keccak被選為NIST競賽的勝利者,成為SHA-3。
Keccak演算法是SHA-3的候選人在2008年10月提交。Keccak採用了創新的的「海綿引擎」散列消息文本。它設計簡單,方便硬體實現。Keccak已可以抵禦最小的復雜度為2n的攻擊,其中N為散列的大小。它具有廣泛的安全邊際。目前為止,第三方密碼分析已經顯示出Keccak沒有嚴重的弱點。
KangarooTwelve演算法是最近提出的Keccak變種,其計算輪次已經減少到了12,但與原演算法比起來,其功能沒有調整。
零知識證明
在密碼學中零知識證明(zero-knowledgeproof,ZKP)是一種一方用於向另一方證明自己知曉某個消息x,而不透露其他任何和x有關的內容的策略,其中前者稱為證明者(Prover),後者稱為驗證者(Verifier)。設想一種場景,在一個系統中,所有用戶都擁有各自全部文件的備份,並利用各自的私鑰進行加密後在系統內公開。假設在某個時刻,用戶Alice希望提供給用戶Bob她的一部分文件,這時候出現的問題是Alice如何讓Bob相信她確實發送了正確的文件。一個簡單地處理辦法是Alice將自己的私鑰發給Bob,而這正是Alice不希望選擇的策略,因為這樣Bob可以輕易地獲取到Alice的全部文件內容。零知識證明便是可以用於解決上述問題的一種方案。零知識證明主要基於復雜度理論,並且在密碼學中有廣泛的理論延伸。在復雜度理論中,我們主要討論哪些語言可以進行零知識證明應用,而在密碼學中,我們主要討論如何構造各種類型的零知識證明方案,並使得其足夠優秀和高效。
環簽名群簽名
1、群簽名
在一個群簽名方案中,一個群體中的任意一個成員可以以匿名的方式代表整個群體對消息進行簽名。與其他數字簽名一樣,群簽名是可以公開驗證的,且可以只用單個群公鑰來驗證。群簽名一般流程:
(1)初始化,群管理者建立群資源,生成對應的群公鑰(GroupPublicKey)和群私鑰(GroupPrivateKey)群公鑰對整個系統中的所有用戶公開,比如群成員、驗證者等。
(2)成員加入,在用戶加入群的時候,群管理者頒發群證書(GroupCertificate)給群成員。
(3)簽名,群成員利用獲得的群證書簽署文件,生成群簽名。
(4)驗證,同時驗證者利用群公鑰僅可以驗證所得群簽名的正確性,但不能確定群中的正式簽署者。
(5)公開,群管理者利用群私鑰可以對群用戶生成的群簽名進行追蹤,並暴露簽署者身份。
2、環簽名
2001年,Rivest,shamir和Tauman三位密碼學家首次提出了環簽名。是一種簡化的群簽名,只有環成員沒有管理者,不需要環成員間的合作。環簽名方案中簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。
環簽名方案由以下幾部分構成:
(1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。
(2)簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為消息m生成簽名a。
(3)簽名驗證。驗證者根據環簽名和消息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。
環簽名滿足的性質:
(1)無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。
(2)正確性:簽名必需能被所有其他人驗證。
(3)不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為消息m偽造一個簽名。
3、環簽名和群簽名的比較
(1)匿名性。都是一種個體代表群體簽名的體制,驗證者能驗證簽名為群體中某個成員所簽,但並不能知道為哪個成員,以達到簽名者匿名的作用。
(2)可追蹤性。群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭露真正的簽名者。環簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加額外的信息。提出了一個可驗證的環簽名方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份。
(3)管理系統。群簽名由群管理員管理,環簽名不需要管理,簽名者只有選擇一個可能的簽名者集合,獲得其公鑰,然後公布這個集合即可,所有成員平等。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
第4課區塊鏈中的密碼學學習總結這是加入公Ulord深度學習第四課,楊博士給大家主講區塊鏈中的密碼學問題,本期課程令讓我弄懂了一個一直困擾著我的關於公鑰和私鑰的問題,他們之間到底是什麼關系?再這次學習中我得到了答案,現在我把我學習到的內容跟大家分享一下。
區塊鏈里的公鑰和私鑰,是非對稱加密里的兩個基本概念。
公鑰與私鑰,是通過一種演算法得到的一個密鑰對,公鑰是密鑰對中公開的部分,私鑰是非公開的部分。公鑰通常用於加密會話,就是消息或者說信息,同時,也可以來用於驗證用私鑰簽名的數字簽名。
私鑰可以用來進行簽名,用對應的公鑰來進行驗證。通過這種公開密鑰體製得到的密鑰對能夠保證在全世界范圍內是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密數據,則必須用它對應的另一個密鑰來進行解密。
比如說用公鑰加密的數據就必須用私鑰才能解密,如果用私鑰進行加密,就必須要對應的公鑰才能解密,否則無法成功解密。另外,在比特幣的區塊鏈中,則是通過私鑰來計算出公鑰,通過公鑰來計算出地址,而這個過程是不可逆的。
什麼是區塊鏈加密演算法?區塊鏈加密演算法(EncryptionAlgorithm)
非對稱加密演算法是一個函數,通過使用一個加密鑰匙,將原來的明文文件或數據轉化成一串不可讀的密文代碼。加密流程是不可逆的,只有持有對應的解密鑰匙才能將該加密信息解密成可閱讀的明文。加密使得私密數據可以在低風險的情況下,通過公共網路進行傳輸,並保護數據不被第三方竊取、閱讀。
區塊鏈技術的核心優勢是去中心化,能夠通過運用數據加密、時間戳、分布式共識和經濟激勵等手段,在節點無需互相信任的分布式系統中實現基於去中心化信用的點對點交易、協調與協作,從而為解決中心化機構普遍存在的高成本、低效率和數據存儲不安全等問題提供了解決方案。
區塊鏈的應用領域有數字貨幣、通證、金融、防偽溯源、隱私保護、供應鏈、娛樂等等,區塊鏈、比特幣的火爆,不少相關的top域名都被注冊,對域名行業產生了比較大的影響。
區塊鏈的密碼技術有
密碼學技術是區塊鏈技術的核心。區塊鏈的密碼技術有數字簽名演算法和哈希演算法。
數字簽名演算法
數字簽名演算法是數字簽名標準的一個子集,表示了只用作數字簽名的一個特定的公鑰演算法。密鑰運行在由SHA-1產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然後比較結果。縮寫為DSA。
?
數字簽名是電子簽名的特殊形式。到目前為止,至少已經有20多個國家通過法律認可電子簽名,其中包括歐盟和美國,我國的電子簽名法於2004年8月28日第十屆全國人民代表大會常務委員會第十一次會議通過。數字簽名在ISO7498-2標准中定義為:「附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造」。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題,利用數據加密技術、數據變換技術,使收發數據雙方能夠滿足兩個條件:接收方能夠鑒別發送方所宣稱的身份;發送方以後不能否認其發送過該數據這一事實。
數字簽名是密碼學理論中的一個重要分支。它的提出是為了對電子文檔進行簽名,以替代傳統紙質文檔上的手寫簽名,因此它必須具備5個特性。
(1)簽名是可信的。
(2)簽名是不可偽造的。
(3)簽名是不可重用的。
(4)簽名的文件是不可改變的。
(5)簽名是不可抵賴的。
哈希(hash)演算法
Hash,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,其中散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,但是不可逆向推導出輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
哈希(Hash)演算法,它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
以比特幣區塊鏈為代表,其中工作量證明和密鑰編碼過程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),這種方式帶來的好處是增加了工作量或者在不清楚協議的情況下增加破解難度。
以比特幣區塊鏈為代表,主要使用的兩個哈希函數分別是:
1.SHA-256,主要用於完成PoW(工作量證明)計算;
2.RIPEMD160,主要用於生成比特幣地址。如下圖1所示,為比特幣從公鑰生成地址的流程。
E. 區塊鏈如何加密數據(區塊鏈如何加密數據)
區塊鏈以什麼方式保證網路中數據的安全性區塊鏈保證網路中數據的安全性的方式:
在區塊鏈技術中,數字加密技術是其關鍵之處,一般運用的是非對稱加密演算法,即加密時的密碼與解鎖時的密碼是不一樣的。簡單來說,就是我們有專屬的私鑰,只要把自己的私鑰保護好,把公鑰給對方,對方用公鑰加密文件生成密文,再將密文傳給你,我們再用私鑰解密得到明文,就能夠保障傳輸內容不被別人看到,這樣子,加密數據就傳輸完畢啦!
同時,還有數字簽名為我們加多一重保障,用來證明文件發給對方過程中沒有被篡改。由此可見區塊鏈的加密技術能夠有效解決數據流通共享過程中的安全問題,可謂是大有施展之處。
區塊鏈的密碼技術有密碼學技術是區塊鏈技術的核心。區塊鏈的密碼技術有數字簽名演算法和哈希演算法。
數字簽名演算法
數字簽名演算法是數字簽名標準的一個子集,表示了只用作數字簽名的一個特定的公鑰演算法。密鑰運行在由SHA-1產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然後比較結果。縮寫為DSA。
?
數字簽名是電子簽名的特殊形式。到目前為止,至少已經有20多個國家通過法律認可電子簽名,其中包括歐盟和美國,我國的電子簽名法於2004年8月28日第十屆全國人民代表大會常務委員會第十一次會議通過。數字簽名在ISO7498-2標准中定義為:「附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造」。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題,利用數據加密技術、數據變換技術,使收發數據雙方能夠滿足兩個條件:接收方能夠鑒別發送方所宣稱的身份;發送方以後不能否認其發送過該數據這一事實。
數字簽名是密碼學理論中的一個重要分支。它的提出是為了對電子文檔進行簽名,以替代傳統紙質文檔上的手寫簽名,因此它必須具備5個特性。
(1)簽名是可信的。
(2)簽名是不可偽造的。
(3)簽名是不可重用的。
(4)簽名的文件是不可改變的。
(5)簽名是不可抵賴的。
哈希(hash)演算法
Hash,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,其中散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,但是不可逆向推導出輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
哈希(Hash)演算法,它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
以比特幣區塊鏈為代表,其中工作量證明和密鑰編碼過程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),這種方式帶來的好處是增加了工作量或者在不清楚協議的情況下增加破解難度。
以比特幣區塊鏈為代表,主要使用的兩個哈希函數分別是:
1.SHA-256,主要用於完成PoW(工作量證明)計算;
2.RIPEMD160,主要用於生成比特幣地址。如下圖1所示,為比特幣從公鑰生成地址的流程。
【深度知識】區塊鏈之加密原理圖示(加密,簽名)
先放一張以太坊的架構圖:
在學習的過程中主要是採用單個模塊了學習了解的,包括P2P,密碼學,網路,協議等。直接開始總結:
秘鑰分配問題也就是秘鑰的傳輸問題,如果對稱秘鑰,那麼只能在線下進行秘鑰的交換。如果在線上傳輸秘鑰,那就有可能被攔截。所以採用非對稱加密,兩把鑰匙,一把私鑰自留,一把公鑰公開。公鑰可以在網上傳輸。不用線下交易。保證數據的安全性。
如上圖,A節點發送數據到B節點,此時採用公鑰加密。A節點從自己的公鑰中獲取到B節點的公鑰對明文數據加密,得到密文發送給B節點。而B節點採用自己的私鑰解密。
2、無法解決消息篡改。
如上圖,A節點採用B的公鑰進行加密,然後將密文傳輸給B節點。B節點拿A節點的公鑰將密文解密。
1、由於A的公鑰是公開的,一旦網上黑客攔截消息,密文形同虛設。說白了,這種加密方式,只要攔截消息,就都能解開。
2、同樣存在無法確定消息來源的問題,和消息篡改的問題。
如上圖,A節點在發送數據前,先用B的公鑰加密,得到密文1,再用A的私鑰對密文1加密得到密文2。而B節點得到密文後,先用A的公鑰解密,得到密文1,之後用B的私鑰解密得到明文。
1、當網路上攔截到數據密文2時,由於A的公鑰是公開的,故可以用A的公鑰對密文2解密,就得到了密文1。所以這樣看起來是雙重加密,其實最後一層的私鑰簽名是無效的。一般來講,我們都希望簽名是簽在最原始的數據上。如果簽名放在後面,由於公鑰是公開的,簽名就缺乏安全性。
2、存在性能問題,非對稱加密本身效率就很低下,還進行了兩次加密過程。
如上圖,A節點先用A的私鑰加密,之後用B的公鑰加密。B節點收到消息後,先採用B的私鑰解密,然後再利用A的公鑰解密。
1、當密文數據2被黑客攔截後,由於密文2隻能採用B的私鑰解密,而B的私鑰只有B節點有,其他人無法機密。故安全性最高。
2、當B節點解密得到密文1後,只能採用A的公鑰來解密。而只有經過A的私鑰加密的數據才能用A的公鑰解密成功,A的私鑰只有A節點有,所以可以確定數據是由A節點傳輸過來的。
經兩次非對稱加密,性能問題比較嚴重。
基於以上篡改數據的問題,我們引入了消息認證。經過消息認證後的加密流程如下:
當A節點發送消息前,先對明文數據做一次散列計算。得到一個摘要,之後將照耀與原始數據同時發送給B節點。當B節點接收到消息後,對消息解密。解析出其中的散列摘要和原始數據,然後再對原始數據進行一次同樣的散列計算得到摘要1,比較摘要與摘要1。如果相同則未被篡改,如果不同則表示已經被篡改。
在傳輸過程中,密文2隻要被篡改,最後導致的hash與hash1就會產生不同。
無法解決簽名問題,也就是雙方相互攻擊。A對於自己發送的消息始終不承認。比如A對B發送了一條錯誤消息,導致B有損失。但A抵賴不是自己發送的。
在(三)的過程中,沒有辦法解決交互雙方相互攻擊。什麼意思呢?有可能是因為A發送的消息,對A節點不利,後來A就抵賴這消息不是它發送的。
為了解決這個問題,故引入了簽名。這里我們將(二)-4中的加密方式,與消息簽名合並設計在一起。
在上圖中,我們利用A節點的私鑰對其發送的摘要信息進行簽名,然後將簽名+原文,再利用B的公鑰進行加密。而B得到密文後,先用B的私鑰解密,然後對摘要再用A的公鑰解密,只有比較兩次摘要的內容是否相同。這既避免了防篡改問題,有規避了雙方攻擊問題。因為A對信息進行了簽名,故是無法抵賴的。
為了解決非對稱加密數據時的性能問題,故往往採用混合加密。這里就需要引入對稱加密,如下圖:
在對數據加密時,我們採用了雙方共享的對稱秘鑰來加密。而對稱秘鑰盡量不要在網路上傳輸,以免丟失。這里的共享對稱秘鑰是根據自己的私鑰和對方的公鑰計算出的,然後適用對稱秘鑰對數據加密。而對方接收到數據時,也計算出對稱秘鑰然後對密文解密。
以上這種對稱秘鑰是不安全的,因為A的私鑰和B的公鑰一般短期內固定,所以共享對稱秘鑰也是固定不變的。為了增強安全性,最好的方式是每次交互都生成一個臨時的共享對稱秘鑰。那麼如何才能在每次交互過程中生成一個隨機的對稱秘鑰,且不需要傳輸呢?
那麼如何生成隨機的共享秘鑰進行加密呢?
對於發送方A節點,在每次發送時,都生成一個臨時非對稱秘鑰對,然後根據B節點的公鑰和臨時的非對稱私鑰可以計算出一個對稱秘鑰(KA演算法-KeyAgreement)。然後利用該對稱秘鑰對數據進行加密,針對共享秘鑰這里的流程如下:
對於B節點,當接收到傳輸過來的數據時,解析出其中A節點的隨機公鑰,之後利用A節點的隨機公鑰與B節點自身的私鑰計算出對稱秘鑰(KA演算法)。之後利用對稱秘鑰機密數據。
對於以上加密方式,其實仍然存在很多問題,比如如何避免重放攻擊(在消息中加入Nonce),再比如彩虹表(參考KDF機制解決)之類的問題。由於時間及能力有限,故暫時忽略。
那麼究竟應該採用何種加密呢?
主要還是基於要傳輸的數據的安全等級來考量。不重要的數據其實做好認證和簽名就可以,但是很重要的數據就需要採用安全等級比較高的加密方案了。
密碼套件是一個網路協議的概念。其中主要包括身份認證、加密、消息認證(MAC)、秘鑰交換的演算法組成。
在整個網路的傳輸過程中,根據密碼套件主要分如下幾大類演算法:
秘鑰交換演算法:比如ECDHE、RSA。主要用於客戶端和服務端握手時如何進行身份驗證。
消息認證演算法:比如SHA1、SHA2、SHA3。主要用於消息摘要。
批量加密演算法:比如AES,主要用於加密信息流。
偽隨機數演算法:例如TLS1.2的偽隨機函數使用MAC演算法的散列函數來創建一個主密鑰——連接雙方共享的一個48位元組的私鑰。主密鑰在創建會話密鑰(例如創建MAC)時作為一個熵來源。
在網路中,一次消息的傳輸一般需要在如下4個階段分別進行加密,才能保證消息安全、可靠的傳輸。
握手/網路協商階段:
在雙方進行握手階段,需要進行鏈接的協商。主要的加密演算法包括RSA、DH、ECDH等
身份認證階段:
身份認證階段,需要確定發送的消息的來源來源。主要採用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA簽名)等。
消息加密階段:
消息加密指對發送的信息流進行加密。主要採用的加密方式包括DES、RC4、AES等。
消息身份認證階段/防篡改階段:
主要是保證消息在傳輸過程中確保沒有被篡改過。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC:EllipticCurvesCryptography,橢圓曲線密碼編碼學。是一種根據橢圓上點倍積生成公鑰、私鑰的演算法。用於生成公私秘鑰。
ECDSA:用於數字簽名,是一種數字簽名演算法。一種有效的數字簽名使接收者有理由相信消息是由已知的發送者創建的,從而發送者不能否認已經發送了消息(身份驗證和不可否認),並且消息在運輸過程中沒有改變。ECDSA簽名演算法是ECC與DSA的結合,整個簽名過程與DSA類似,所不一樣的是簽名中採取的演算法為ECC,最後簽名出來的值也是分為r,s。主要用於身份認證階段。
ECDH:也是基於ECC演算法的霍夫曼樹秘鑰,通過ECDH,雙方可以在不共享任何秘密的前提下協商出一個共享秘密,並且是這種共享秘鑰是為當前的通信暫時性的隨機生成的,通信一旦中斷秘鑰就消失。主要用於握手磋商階段。
ECIES:是一種集成加密方案,也可稱為一種混合加密方案,它提供了對所選擇的明文和選擇的密碼文本攻擊的語義安全性。ECIES可以使用不同類型的函數:秘鑰協商函數(KA),秘鑰推導函數(KDF),對稱加密方案(ENC),哈希函數(HASH),H-MAC函數(MAC)。
ECC是橢圓加密演算法,主要講述了按照公私鑰怎麼在橢圓上產生,並且不可逆。ECDSA則主要是採用ECC演算法怎麼來做簽名,ECDH則是採用ECC演算法怎麼生成對稱秘鑰。以上三者都是對ECC加密演算法的應用。而現實場景中,我們往往會採用混合加密(對稱加密,非對稱加密結合使用,簽名技術等一起使用)。ECIES就是底層利用ECC演算法提供的一套集成(混合)加密方案。其中包括了非對稱加密,對稱加密和簽名的功能。
metacharset="utf-8"
這個先訂條件是為了保證曲線不包含奇點。
所以,隨著曲線參數a和b的不斷變化,曲線也呈現出了不同的形狀。比如:
所有的非對稱加密的基本原理基本都是基於一個公式K=kG。其中K代表公鑰,k代表私鑰,G代表某一個選取的基點。非對稱加密的演算法就是要保證該公式不可進行逆運算(也就是說G/K是無法計算的)。*
ECC是如何計算出公私鑰呢?這里我按照我自己的理解來描述。
我理解,ECC的核心思想就是:選擇曲線上的一個基點G,之後隨機在ECC曲線上取一個點k(作為私鑰),然後根據kG計算出我們的公鑰K。並且保證公鑰K也要在曲線上。*
那麼kG怎麼計算呢?如何計算kG才能保證最後的結果不可逆呢?這就是ECC演算法要解決的。
首先,我們先隨便選擇一條ECC曲線,a=-3,b=7得到如下曲線:
在這個曲線上,我隨機選取兩個點,這兩個點的乘法怎麼算呢?我們可以簡化下問題,乘法是都可以用加法表示的,比如22=2+2,35=5+5+5。那麼我們只要能在曲線上計算出加法,理論上就能算乘法。所以,只要能在這個曲線上進行加法計算,理論上就可以來計算乘法,理論上也就可以計算k*G這種表達式的值。
曲線上兩點的加法又怎麼算呢?這里ECC為了保證不可逆性,在曲線上自定義了加法體系。
現實中,1+1=2,2+2=4,但在ECC演算法里,我們理解的這種加法體系是不可能。故需要自定義一套適用於該曲線的加法體系。
ECC定義,在圖形中隨機找一條直線,與ECC曲線相交於三個點(也有可能是兩個點),這三點分別是P、Q、R。
那麼P+Q+R=0。其中0不是坐標軸上的0點,而是ECC中的無窮遠點。也就是說定義了無窮遠點為0點。
同樣,我們就能得出P+Q=-R。由於R與-R是關於X軸對稱的,所以我們就能在曲線上找到其坐標。
P+R+Q=0,故P+R=-Q,如上圖。
以上就描述了ECC曲線的世界裡是如何進行加法運算的。
從上圖可看出,直線與曲線只有兩個交點,也就是說直線是曲線的切線。此時P,R重合了。
也就是P=R,根據上述ECC的加法體系,P+R+Q=0,就可以得出P+R+Q=2P+Q=2R+Q=0
於是乎得到2P=-Q(是不是與我們非對稱演算法的公式K=kG越來越近了)。
於是我們得出一個結論,可以算乘法,不過只有在切點的時候才能算乘法,而且只能算2的乘法。
假若2可以變成任意個數進行想乘,那麼就能代表在ECC曲線里可以進行乘法運算,那麼ECC演算法就能滿足非對稱加密演算法的要求了。
那麼我們是不是可以隨機任何一個數的乘法都可以算呢?答案是肯定的。也就是點倍積計算方式。
選一個隨機數k,那麼k*P等於多少呢?
我們知道在計算機的世界裡,所有的都是二進制的,ECC既然能算2的乘法,那麼我們可以將隨機數k描述成二進制然後計算。假若k=151=10010111
由於2P=-Q所以這樣就計算出了kP。這就是點倍積演算法。所以在ECC的曲線體系下是可以來計算乘法,那麼以為這非對稱加密的方式是可行的。
至於為什麼這樣計算是不可逆的。這需要大量的推演,我也不了解。但是我覺得可以這樣理解:
我們的手錶上,一般都有時間刻度。現在如果把1990年01月01日0點0分0秒作為起始點,如果告訴你至起始點為止時間流逝了整1年,那麼我們是可以計算出現在的時間的,也就是能在手錶上將時分秒指針應該指向00:00:00。但是反過來,我說現在手錶上的時分秒指針指向了00:00:00,你能告訴我至起始點算過了有幾年了么?
ECDSA簽名演算法和其他DSA、RSA基本相似,都是採用私鑰簽名,公鑰驗證。只不過演算法體系採用的是ECC的演算法。交互的雙方要採用同一套參數體系。簽名原理如下:
在曲線上選取一個無窮遠點為基點G=(x,y)。隨機在曲線上取一點k作為私鑰,K=k*G計算出公鑰。
簽名過程:
生成隨機數R,計算出RG.
根據隨機數R,消息M的HASH值H,以及私鑰k,計算出簽名S=(H+kx)/R.
將消息M,RG,S發送給接收方。
簽名驗證過程:
接收到消息M,RG,S
根據消息計算出HASH值H
根據發送方的公鑰K,計算HG/S+xK/S,將計算的結果與RG比較。如果相等則驗證成功。
公式推論:
HG/S+xK/S=HG/S+x(kG)/S=(H+xk)/GS=RG
在介紹原理前,說明一下ECC是滿足結合律和交換律的,也就是說A+B+C=A+C+B=(A+C)+B。
這里舉一個WIKI上的例子說明如何生成共享秘鑰,也可以參考AliceAndBob的例子。
Alice與Bob要進行通信,雙方前提都是基於同一參數體系的ECC生成的公鑰和私鑰。所以有ECC有共同的基點G。
生成秘鑰階段:
Alice採用公鑰演算法KA=ka*G,生成了公鑰KA和私鑰ka,並公開公鑰KA。
Bob採用公鑰演算法KB=kb*G,生成了公鑰KB和私鑰kb,並公開公鑰KB。
計算ECDH階段:
Alice利用計算公式Q=ka*KB計算出一個秘鑰Q。
Bob利用計算公式Q'=kb*KA計算出一個秘鑰Q'。
共享秘鑰驗證:
Q=kaKB=ka*kb*G=ka*G*kb=KA*kb=kb*KA=Q'
故雙方分別計算出的共享秘鑰不需要進行公開就可採用Q進行加密。我們將Q稱為共享秘鑰。
在以太坊中,採用的ECIEC的加密套件中的其他內容:
1、其中HASH演算法採用的是最安全的SHA3演算法Keccak。
2、簽名演算法採用的是ECDSA
3、認證方式採用的是H-MAC
4、ECC的參數體系採用了secp256k1,其他參數體系參考這里
H-MAC全程叫做Hash-.其模型如下:
在以太坊的UDP通信時(RPC通信加密方式不同),則採用了以上的實現方式,並擴展化了。
首先,以太坊的UDP通信的結構如下:
其中,sig是經過私鑰加密的簽名信息。mac是可以理解為整個消息的摘要,ptype是消息的事件類型,data則是經過RLP編碼後的傳輸數據。
其UDP的整個的加密,認證,簽名模型如下:
區塊鏈技術如何保障信息主體隱私和權益隱私保護手段可以分為三類:
一是對交易信息的隱私保護,對交易的發送者、交易接受者以及交易金額的隱私保護,有混幣、環簽名和機密交易等。
二是對智能合約的隱私保護,針對合約數據的保護方案,包含零知識證明、多方安全計算、同態加密等。
三是對鏈上數據的隱私保護,主要有賬本隔離、私有數據和數據加密授權訪問等解決方案。
拓展資料:
一、區塊鏈加密演算法隔離身份信息與交易數據
1、區塊鏈上的交易數據,包括交易地址、金額、交易時間等,都公開透明可查詢。但是,交易地址對應的所用戶身份,是匿名的。通過區塊鏈加密演算法,實現用戶身份和用戶交易數據的分離。在數據保存到區塊鏈上之前,可以將用戶的身份信息進行哈希計算,得到的哈希值作為該用戶的唯一標識,鏈上保存用戶的哈希值而非真實身份數據信息,用戶的交易數據和哈希值進行捆綁,而不是和用戶身份信息進行捆綁。
2、由此,用戶產生的數據是真實的,而使用這些數據做研究、分析時,由於區塊鏈的不可逆性,所有人不能通過哈希值還原注冊用戶的姓名、電話、郵箱等隱私數據,起到了保護隱私的作用。
二、區塊鏈「加密存儲+分布式存儲」
加密存儲,意味著訪問數據必須提供私鑰,相比於普通密碼,私鑰的安全性更高,幾乎無法被暴力破解。分布式存儲,去中心化的特性在一定程度上降低了數據全部被泄漏的風險,而中心化的資料庫存儲,一旦資料庫被黑客攻擊入侵,數據很容易被全部盜走。通過「加密存儲+分布式存儲」能夠更好地保護用戶的數據隱私。
三、區塊鏈共識機制預防個體風險
共識機制是區塊鏈節點就區塊信息達成全網一致共識的機制,可以保障最新區塊被准確添加至區塊鏈、節點存儲的區塊鏈信息一致不分叉,可以抵禦惡意攻擊。區塊鏈的價值之一在於對數據的共識治理,即所有用戶對於上鏈的數據擁有平等的管理許可權,因此首先從操作上杜絕了個體犯錯的風險。通過區塊鏈的全網共識解決數據去中心化,並且可以利用零知識證明解決驗證的問題,實現在公開的去中心化系統中使用用戶隱私數據的場景,在滿足互聯網平台需求的同時,也使部分數據仍然只掌握在用戶手中。
四、區塊鏈零知識證明
零知識證明指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的,即證明者既能充分證明自己是某種權益的合法擁有者,又不把有關的信息泄漏出去,即給外界的「知識」為「零」。應用零知識證明技術,可以在密文情況下實現數據的關聯關系驗證,在保障數據隱私的同時實現數據共享。
F. 鍖哄潡閾炬槸浠涔 娣卞叆瑙f瀽鍖哄潡閾炬妧鏈鍘熺悊涓庡簲鐢錛
鍖哄潡閾炬槸涓縐嶅垎甯冨紡銆佸幓涓蹇冨寲鐨勬妧鏈鍜屾暟鎹緇撴瀯錛屽畠鍙浠ョ敤浜庡畨鍏ㄥ湴璁板綍鍜岀$悊浜ゆ槗銆佷俊鎮鎴栦換浣曠被鍨嬬殑鏁版嵁銆傚尯鍧楅摼鐨勬牳蹇冩濇兂鏄灝嗘暟鎹鍒嗘暎瀛樺偍鍦ㄥ氫釜鑺傜偣涓婏紝姣忎釜鑺傜偣閮芥湁鐩稿悓鐨勬暟鎹鍓鏈錛岄氳繃瀵嗙爜瀛﹀拰鍏辮瘑鏈哄埗紜淇濇暟鎹鐨勫畨鍏ㄦс侀忔槑鎬у拰涓嶅彲綃℃敼鎬с備互涓嬫槸瀵瑰尯鍧楅摼鎶鏈鍘熺悊鍜屽簲鐢ㄧ殑娣卞叆瑙f瀽錛
鍖哄潡閾炬妧鏈鍘熺悊錛
鍒嗗竷寮忚處鏈錛 鍖哄潡閾鵑氳繃灝嗘暟鎹鍒嗗竷瀛樺偍鍦ㄥ氫釜鑺傜偣涓婏紝褰㈡垚涓涓鍏變韓鐨勫垎甯冨紡璐︽湰銆傛瘡涓鑺傜偣閮藉寘鍚浜嗗畬鏁寸殑璐︽湰鍓鏈錛岀『淇濅簡鏁版嵁鐨勫幓涓蹇冨寲鍜岄珮鍙鐢ㄦс
鍖哄潡鍜岄摼錛 鍖哄潡鏄鍖呭惈涓瀹氭暟閲忎氦鏄撴垨鏁版嵁鐨勮板綍鍗曞厓錛屾瘡涓鍖哄潡閮藉寘鍚浜嗗墠涓涓鍖哄潡鐨勪俊鎮錛屽艦鎴愪簡涓涓閾懼紡緇撴瀯錛屽洜姝ゅ緱鍚嶁滃尯鍧楅摼鈥濄
鍔犲瘑綆楁硶錛 鏁版嵁鍦ㄥ尯鍧楅摼涓閫氳繃瀵嗙爜瀛︾畻娉曡繘琛屽姞瀵嗭紝紜淇濇暟鎹鐨勫畨鍏ㄦу拰闅愮佹с傛瘡涓鍖哄潡閮戒嬌鐢ㄥ搱甯岀畻娉曞瑰墠涓涓鍖哄潡鐨勫搱甯屽艱繘琛屽姞瀵嗭紝浠ヤ繚鎸佹暟鎹鐨勮繛緇鎬с
鍏辮瘑鏈哄埗錛 鍖哄潡閾劇綉緇滀腑鐨勮妭鐐歸氳繃鍏辮瘑鏈哄埗杈炬垚涓鑷達紝鍗沖備綍紜璁ゆ柊鐨勫尯鍧楀姞鍏ュ埌閾句腑銆傚父瑙佺殑鍏辮瘑鏈哄埗鍖呮嫭宸ヤ綔閲忚瘉鏄庯紙Proof of Work錛孭oW錛夊拰鏉冪泭璇佹槑錛圥roof of Stake錛孭oS錛夌瓑銆
涓嶅彲綃℃敼鎬э細 涓鏃︽暟鎹琚璁板綍鍦ㄥ尯鍧楅摼涓錛屽緢闅句慨鏀規垨鍒犻櫎銆傚洜涓烘瘡涓鍖哄潡閮藉寘鍚浜嗗墠涓涓鍖哄潡鐨勫搱甯屽礆紝涓鏃︽暟鎹琚綃℃敼錛屽皢浼氱牬鍧忔暣涓閾劇殑榪炵畫鎬э紝鍥犳ゆ暟鎹鐨勪笉鍙綃℃敼鎬у緱鍒頒簡淇濋殰銆
鍔犲瘑璐у竵錛 鍖哄潡閾炬渶鍒濅互姣旂壒甯佷負浠h〃鐨勫姞瀵嗚揣甯佽岄椈鍚嶃傚姞瀵嗚揣甯佸埄鐢ㄥ尯鍧楅摼鎶鏈瀹炵幇浜嗗幓涓蹇冨寲鐨勬暟瀛楄揣甯佷氦鏄撳拰綆$悊銆
鏅鴻兘鍚堢害錛 鏅鴻兘鍚堢害鏄涓縐嶈嚜鍔ㄦ墽琛屽悎綰︽潯嬈劇殑紼嬪簭錛屽瓨鍌ㄥ湪鍖哄潡閾句笂銆傚畠浠鍙浠ョ敤浜庡疄鐜拌嚜鍔ㄥ寲鐨勪氦鏄撱佽祫浜х$悊鍜屼笟鍔¢昏緫銆
渚涘簲閾劇$悊錛 鍖哄潡閾懼彲浠ュ炲姞渚涘簲閾劇殑閫忔槑搴﹀拰鍙榪芥函鎬э紝紜淇濅駭鍝佺殑鏉ユ簮鍜岃川閲忥紝鍑忓皯嬈鴻瘓鍜屽亣鍐掗棶棰樸
鏁板瓧韜浠借よ瘉錛 鍖哄潡閾懼彲鐢ㄤ簬寤虹珛鍘諱腑蹇冨寲鐨勬暟瀛楄韓浠界郴緇燂紝鐢ㄦ埛鍙浠ユ洿瀹夊叏鍦版帶鍒惰嚜宸辯殑韜浠戒俊鎮錛屽噺灝戣韓浠界洍紿冨拰鉶氬亣璁よ瘉闂棰樸
鎶曠エ緋葷粺錛 鍖哄潡閾懼彲浠ュ壋寤哄畨鍏ㄣ侀忔槑鍜岄槻綃℃敼鐨勬姇紲ㄧ郴緇燂紝紜淇濋変婦鐨勫叕騫蟲у拰鍙淇″害銆
閲戣瀺鏈嶅姟錛 鍖哄潡閾懼湪鏀浠樸佽法澧冩眹嬈俱佽祫浜х$悊絳夐噾鋙嶉嗗煙鏈夊箍娉涘簲鐢錛岃兘澶熸彁楂樻晥鐜囧拰闄嶄綆浜ゆ槗鎴愭湰銆
鐗╄仈緗戱細 鍖哄潡閾懼彲浠ヤ負鐗╄仈緗戣懼囨彁渚涘畨鍏ㄧ殑韜浠借よ瘉鍜屾暟鎹浼犺緭錛屽炲己璁懼囦箣闂寸殑淇′換鍜屼簰鎿嶄綔鎬с
鏁板瓧鑹烘湳鍜岀増鏉冧繚鎶わ細 鍖哄潡閾炬妧鏈鍙浠ョ敤浜庤瘉鏄庢暟瀛楄壓鏈鍝佺殑鎵鏈夋潈鍜岀増鏉冿紝闃叉㈢洍鐗堝拰渚墊潈闂棰樸
鍖哄潡閾炬妧鏈搴旂敤錛
鎬諱箣錛屽尯鍧楅摼鎶鏈浠ュ叾鍒嗗竷寮忋佸畨鍏ㄣ侀忔槑絳夌壒鐐癸紝鍦ㄥ氫釜棰嗗煙閮芥湁騫挎硾鐨勫簲鐢ㄥ墠鏅銆傜劧鑰岋紝涔熼渶瑕佹敞鎰忓尯鍧楅摼鎶鏈鐨勫矓闄愭э紝濡傚彲鎵╁睍鎬с佽兘婧愭秷鑰楃瓑闂棰橈紝鍦ㄥ疄闄呭簲鐢ㄤ腑闇瑕佺患鍚堣冭檻銆
G. 區塊鏈的加密技術
數字加密技能是區塊鏈技能使用和開展的關鍵。一旦加密辦法被破解,區塊鏈的數據安全性將受到挑戰,區塊鏈的可篡改性將不復存在。加密演算法分為對稱加密演算法和非對稱加密演算法。區塊鏈首要使用非對稱加密演算法。非對稱加密演算法中的公鑰暗碼體制依據其所依據的問題一般分為三類:大整數分化問題、離散對數問題和橢圓曲線問題。第一,引進區塊鏈加密技能加密演算法一般分為對稱加密和非對稱加密。非對稱加密是指集成到區塊鏈中以滿意安全要求和所有權驗證要求的加密技能。非對稱加密通常在加密和解密進程中使用兩個非對稱暗碼,稱為公鑰和私鑰。非對稱密鑰對有兩個特點:一是其間一個密鑰(公鑰或私鑰)加密信息後,只能解密另一個對應的密鑰。第二,公鑰可以向別人揭露,而私鑰是保密的,別人無法通過公鑰計算出相應的私鑰。非對稱加密一般分為三種首要類型:大整數分化問題、離散對數問題和橢圓曲線問題。大整數分化的問題類是指用兩個大素數的乘積作為加密數。由於素數的出現是沒有規律的,所以只能通過不斷的試算來尋找解決辦法。離散對數問題類是指基於離散對數的困難性和強單向哈希函數的一種非對稱分布式加密演算法。橢圓曲線是指使用平面橢圓曲線來計算一組非對稱的特殊值,比特幣就採用了這種加密演算法。非對稱加密技能在區塊鏈的使用場景首要包含信息加密、數字簽名和登錄認證。(1)在信息加密場景中,發送方(記為A)用接收方(記為B)的公鑰對信息進行加密後發送給
B,B用自己的私鑰對信息進行解密。比特幣交易的加密就屬於這種場景。(2)在數字簽名場景中,發送方A用自己的私鑰對信息進行加密並發送給B,B用A的公鑰對信息進行解密,然後確保信息是由A發送的。(3)登錄認證場景下,客戶端用私鑰加密登錄信息並發送給伺服器,伺服器再用客戶端的公鑰解密認證登錄信息。請注意上述三種加密計劃之間的差異:信息加密是公鑰加密和私鑰解密,確保信息的安全性;數字簽名是私鑰加密,公鑰解密,確保了數字簽名的歸屬。認證私鑰加密,公鑰解密。以比特幣體系為例,其非對稱加密機制如圖1所示:比特幣體系一般通過調用操作體系底層的隨機數生成器生成一個256位的隨機數作為私鑰。比特幣的私鑰總量大,遍歷所有私鑰空間獲取比特幣的私鑰極其困難,所以暗碼學是安全的。為便於辨認,256位二進制比特幣私鑰將通過SHA256哈希演算法和Base58進行轉化,構成50個字元長的私鑰,便於用戶辨認和書寫。比特幣的公鑰是私鑰通過Secp256k1橢圓曲線演算法生成的65位元組隨機數。公鑰可用於生成比特幣交易中使用的地址。生成進程是公鑰先通過SHA256和RIPEMD160哈希處理,生成20位元組的摘要成果(即Hash160的成果),再通過SHA256哈希演算法和Base58轉化,構成33個字元的比特幣地址。公鑰生成進程是不可逆的,即私鑰不能從公鑰推導出來。比特幣的公鑰和私鑰通常存儲在比特幣錢包文件中,其間私鑰最為重要。丟掉私鑰意味著丟掉相應地址的所有比特幣財物。在現有的比特幣和區塊鏈體系中,現已依據實踐使用需求衍生出多私鑰加密技能,以滿意多重簽名等愈加靈敏雜亂的場景。