區塊鏈中涉及到的密碼學
1. 區塊鏈中的密碼學是怎麼應用的
在區塊鏈技術中,密碼學機制主要被用於確保交易信息的完整性、真實性和隱私性。
區塊鏈中的密碼學 包括布隆過濾器,哈希函數、加解密演算法,數字證書與數字簽名,同態加密,PKI體系等。
2. 區塊鏈BDR
區塊鏈是一個信息技術領域的術語。從本質上講,它是一個共享資料庫,存儲於其中的數據或信息,具有「不可偽造」「全程留痕」「可以追溯」「公開透明」「集體維護」等特徵。基於這些特徵,區塊鏈技術奠定了堅實的「信任「基礎,創造了可靠的「合作」機制,具有廣闊的運用前景。
什麼是區塊鏈?從科技層面來看,區塊鏈涉及數學、密碼學、互聯網和計算機編程等很多科學技術問題。從應用視角來看,簡單來說,區塊鏈是一個分布式的共享賬本和資料庫,具有去中心化、不可篡改、全程留痕、可以追溯、集體維護、公開透明等特點。這些特點保證了區塊鏈的「誠實」與「透明」,為區塊鏈創造信任奠定基礎。而區塊鏈豐富的應用場景,基本上都基於區塊鏈能夠解決信息不對稱問題,實現多個主體之間的協作信任與一致行動 。
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。區塊鏈(Blockchain),是比特幣的一個重要概念,它本質上是一個去中心化的資料庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一批次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊 。
作為核心技術自主創新的重要突破口,區塊鏈的安全風險問題被視為當前制約行業健康發展的一大短板,頻頻發生的安全事件為業界敲響警鍾。擁抱區塊鏈,需要加快探索建立適應區塊鏈技術機制的安全保障體系。
3. 區塊鏈密碼演算法是怎樣的
區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的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-bit Wt。其中Wt是分組之後的報文,t=1,2,...,16 。
STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。
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. 區塊鏈的核心技術是什麼
簡單來說,區塊鏈是一個提供了拜占庭容錯、並保證了最終一致性的分布式資料庫;從數據結構上看,它是基於時間序列的鏈式數據塊結構;從節點拓撲上看,它所有的節點互為冗餘備份;從操作上看,它提供了基於密碼學的公私鑰管理體系來管理賬戶。
或許以上概念過於抽象,我來舉個例子,你就好理解了。
你可以想像有 100 台計算機分布在世界各地,這 100 台機器之間的網路是廣域網,並且,這 100 台機器的擁有者互相不信任。
那麼,我們採用什麼樣的演算法(共識機制)才能夠為它提供一個可信任的環境,並且使得:
節點之間的數據交換過程不可篡改,並且已生成的歷史記錄不可被篡改;
每個節點的數據會同步到最新數據,並且會驗證最新數據的有效性;
基於少數服從多數的原則,整體節點維護的數據可以客觀反映交換歷史。
區塊鏈就是為了解決上述問題而產生的技術方案。
二、區塊鏈的核心技術組成
無論是公鏈還是聯盟鏈,至少需要四個模塊組成:P2P 網路協議、分布式一致性演算法(共識機制)、加密簽名演算法、賬戶與存儲模型。
1、P2P 網路協議
P2P 網路協議是所有區塊鏈的最底層模塊,負責交易數據的網路傳輸和廣播、節點發現和維護。
通常我們所用的都是比特幣 P2P 網路協議模塊,它遵循一定的交互原則。比如:初次連接到其他節點會被要求按照握手協議來確認狀態,在握手之後開始請求 Peer 節點的地址數據以及區塊數據。
這套 P2P 交互協議也具有自己的指令集合,指令體現在在消息頭(Message Header) 的 命令(command)域中,這些命令為上層提供了節點發現、節點獲取、區塊頭獲取、區塊獲取等功能,這些功能都是非常底層、非常基礎的功能。如果你想要深入了解,可以參考比特幣開發者指南中的 Peer Discovery 的章節。
2、分布式一致性演算法
在經典分布式計算領域,我們有 Raft 和 Paxos 演算法家族代表的非拜占庭容錯演算法,以及具有拜占庭容錯特性的 PBFT 共識演算法。
如果從技術演化的角度來看,我們可以得出一個圖,其中,區塊鏈技術把原來的分布式演算法進行了經濟學上的拓展。
在圖中我們可以看到,計算機應用在最開始多為單點應用,高可用方便採用的是冷災備,後來發展到異地多活,這些異地多活可能採用的是負載均衡和路由技術,隨著分布式系統技術的發展,我們過渡到了 Paxos 和 Raft 為主的分布式系統。
而在區塊鏈領域,多採用 PoW 工作量證明演算法、PoS 權益證明演算法,以及 DPoS 代理權益證明演算法,以上三種是業界主流的共識演算法,這些演算法與經典分布式一致性演算法不同的是,它們融入了經濟學博弈的概念,下面我分別簡單介紹這三種共識演算法。
PoW: 通常是指在給定的約束下,求解一個特定難度的數學問題,誰解的速度快,誰就能獲得記賬權(出塊)權利。這個求解過程往往會轉換成計算問題,所以在比拼速度的情況下,也就變成了誰的計算方法更優,以及誰的設備性能更好。
PoS: 這是一種股權證明機制,它的基本概念是你產生區塊的難度應該與你在網路里所佔的股權(所有權佔比)成比例,它實現的核心思路是:使用你所鎖定代幣的幣齡(CoinAge)以及一個小的工作量證明,去計算一個目標值,當滿足目標值時,你將可能獲取記賬權。
DPoS: 簡單來理解就是將 PoS 共識演算法中的記賬者轉換為指定節點數組成的小圈子,而不是所有人都可以參與記賬。這個圈子可能是 21 個節點,也有可能是 101 個節點,這一點取決於設計,只有這個圈子中的節點才能獲得記賬權。這將會極大地提高系統的吞吐量,因為更少的節點也就意味著網路和節點的可控。
3、加密簽名演算法
在區塊鏈領域,應用得最多的是哈希演算法。哈希演算法具有抗碰撞性、原像不可逆、難題友好性等特徵。
其中,難題友好性正是眾多 PoW 幣種賴以存在的基礎,在比特幣中,SHA256 演算法被用作工作量證明的計算方法,也就是我們所說的挖礦演算法。
而在萊特幣身上,我們也會看到 Scrypt 演算法,該演算法與 SHA256 不同的是,需要大內存支持。而在其他一些幣種身上,我們也能看到基於 SHA3 演算法的挖礦演算法。以太坊使用了 Dagger-Hashimoto 演算法的改良版本,並命名為 Ethash,這是一個 IO 難解性的演算法。
當然,除了挖礦演算法,我們還會使用到 RIPEMD160 演算法,主要用於生成地址,眾多的比特幣衍生代碼中,絕大部分都採用了比特幣的地址設計。
除了地址,我們還會使用到最核心的,也是區塊鏈 Token 系統的基石:公私鑰密碼演算法。
在比特幣大類的代碼中,基本上使用的都是 ECDSA。ECDSA 是 ECC 與 DSA 的結合,整個簽名過程與 DSA 類似,所不一樣的是簽名中採取的演算法為 ECC(橢圓曲線函數)。
從技術上看,我們先從生成私鑰開始,其次從私鑰生成公鑰,最後從公鑰生成地址,以上每一步都是不可逆過程,也就是說無法從地址推導出公鑰,從公鑰推導到私鑰。
4、賬戶與交易模型
從一開始的定義我們知道,僅從技術角度可以認為區塊鏈是一種分布式資料庫,那麼,多數區塊鏈到底使用了什麼類型的資料庫呢?
我在設計元界區塊鏈時,參考了多種資料庫,有 NoSQL 的 BerkelyDB、LevelDB,也有一些幣種採用基於 SQL 的 SQLite。這些作為底層的存儲設施,多以輕量級嵌入式資料庫為主,由於並不涉及區塊鏈的賬本特性,這些存儲技術與其他場合下的使用並沒有什麼不同。
區塊鏈的賬本特性,通常分為 UTXO 結構以及基於 Accout-Balance 結構的賬本結構,我們也稱為賬本模型。UTXO 是「unspent transaction input/output」的縮寫,翻譯過來就是指「未花費的交易輸入輸出」。
這個區塊鏈中 Token 轉移的一種記賬模式,每次轉移均以輸入輸出的形式出現;而在 Balance 結構中,是沒有這個模式的。
5. 區塊鏈中的公鏈是什麼
公鏈也稱「公有鏈」,即指全世界任何人都可以隨時進入到系統中讀取數據、發送可確認交易、競爭記賬的區塊鏈。公有鏈通常被認為是「完全去中心化」的,因為沒有任何個人或者機構可以控制或篡改其中數據的讀寫。而從應用上說,區塊鏈公有鏈則主要包括比特幣、以太坊、超級賬本、大多數山寨幣以及智能合約,其中區塊鏈公有鏈的始祖則為比特幣區塊鏈,具有以下特點:
1、代碼開源
代碼上傳到github,每個人都可以通過下載得到完整的區塊鏈數據,接受大眾的考驗。
2、完全去中心化
任何人都可以成為一個節點,每一個節點都是公開的,每個人都可以參與區塊鏈的計算,任何節點都不是永久的,而是階段性的,任何中心對節點都不具有強制性。任何人都可讀取的、且能發送交易,而且交易能夠在區塊鏈上得到有效的確認,任何人都可參與其中共識過程。共識過程決定某個區塊可以添加到區塊鏈中,以及確切的當前狀態。每個人都可以從中得到經濟獎勵,和在共識過程中所作的貢獻成正比。這些公有鏈通常被認為是「完全意義上的去中心化」。
3、開發去中心化應用
程序開發者通過此公鏈,可以很方便地開發出去中心化應用。公有鏈可以保護用戶權益免受程序開發者的影響。
6. 區塊鏈究竟是什麼呢
區塊鏈究竟是什麼呢?本質上講,區塊鏈是一種分布式、去中心化的網路資料庫系統, 這個系統會讓數據的存儲、更新、維護、操作變得不同。區塊鏈有四項不可缺的核心技術, 分別是:分布式存儲、共識機制、密碼學原理、智能合約。
那麼我們下面就講一講,與傳統數據處理相比,區塊鏈到底有什麼不同,幫助大家了 解區塊鏈是什麼,讓大家對區塊鏈有一個總的認知。
一、區塊鏈中的數據存儲:塊鏈式數據結構
在數據存儲方面,區塊鏈技術利用的是「塊鏈式數據結構」來驗證與存儲數據的。
塊鏈式結構是什麼意思呢?鐵鏈子大家都見過吧,一環套一環那種,那其實,每一環 我們可以看作是一個區塊,很多環節扣在一起就形成了區塊鏈。
這個所謂的「鐵鏈」是如何存儲數據的呢?簡單來講,區塊鏈和普通存儲數據的不同 之處在於:在區塊鏈上,後一個區塊里的數據是包含前一個區塊里的數據的。
以讀書為例:我們平時看書,看完第 1 頁,接著讀第 2 頁、第 3 頁......
那在區塊鏈裡面呢,如果給每個區塊標註上頁碼,那麼第 2 頁的內容是包含第 1 頁的 內容的,第 3 頁的內容包含第 1 頁和第 2 頁的內容......第 10 頁包含了前 9 頁的內容, 就是這樣一個層層嵌套的鏈條,這樣一來,就可以追溯到最本源的數據了,這就是區塊鏈 的可追溯性。
區塊鏈這種「塊鏈式數據結構」使之具備可追溯性,這就天然適用於許多領域,譬如: 食品溯源、葯品溯源等等。這樣一來,毒奶粉、假疫苗、偽劣食品事件出現的概率就會大 大降低,因為一旦出現問題,通過溯源可以清晰知道到底是哪個環節出現問題,問責追償 將會更加清晰。
二、區塊鏈中的數據更新:分布式節點共識演算法
在數據更新方面,區塊鏈技術是利用「分布式節點共識演算法」來生成和更新數據。
每每生成新的區塊(也就是更新數據的時候),都需要通過一種演算法,獲得全網 51% 以上節點的認可才能構成新的區塊。說白了就是投票,超過半數人同意就可以生成,這就 使得區塊鏈上的數據不容篡改。
為什麼這么說呢?我們還是打一個比喻:我們把區塊鏈比作一個賬本,因為都是記錄 數據的嘛,傳統世界裡,記賬權力在於記賬先生,賬本屬於記賬先生一個人的。那麼在區 塊鏈裡面,每一個人都擁有這個賬本,想要更新賬目呢,就要投票,半數人以上贊成才可 以去更新賬目數據。
在這個過程中,我們會涉及到這么幾個名詞:分布式、節點、共識演算法,這幾個名詞 其實非常好理解:
每個人都記賬(也就是人人擁有賬本,賬本分散在每個人手裡),就是所謂的「分布 式」;
大家討論、投票產生的、一致贊同的記賬辦法,就是所謂的「共識演算法」;
每一個參與記賬的人,就是所謂的「節點」。
三、 區塊鏈中的數據維護:密碼學
在數據維護階段,區塊鏈的不同之處就在於:它利用密碼學的方式來保證數據傳輸和 訪問的安全。
區塊鏈中所應用的密碼學原理主要有:哈希演算法、Merkle 哈希樹、橢圓曲線演算法、 Base58。這些原理,其實都是通過一系列復雜的運算以及換算,來保證區塊鏈上數據安全。
四、 區塊鏈中的數據操作:智能合約
智能合約,是由計算機程序定義並自動執行的承諾協議,說白了,就是用代碼執行的 一套交易准則,類似於現在的信用卡自動還款功能,開啟這個功能,你自己什麼都不用管, 到期銀行會自動扣除你欠的錢。
智能合約的突出優勢就是,很大程度上避免了由信任產生的一系列問題。
我們很多人,都遇到過被借錢的事情:朋友手頭緊了跟你借 2000 塊錢,承諾下個月 發了工資還錢,到了下個月他又找別的借口不還,拖來托去這事兒就沒譜了。本來沒多少 錢,還是朋友,雖然你很郁悶,這事也就算了。
那麼,有了智能合約以後,他就不能賴賬了,因為在智能合約上,一旦觸發合約中的 條款,代碼就會自動執行,不管他願不願意,只要他發了工資、賬戶上有了錢,他就得還 你。
總結一下本節內容,區塊鏈中有四項不可缺的核心技術,分別是:分布式存儲、共識 機制、密碼學原理、智能合約。
我們可以這樣理解:分布式存儲對應的是數據存儲這個階段,共識機制對應的是數據 的處理更新這個階段,密碼學對應的是數據安全,智能合約對應的是數據的操作問題。
7. 區塊鏈主要涉及到哪些大學專業
雖然區塊鏈技術依然處於發展的初期階段,但相應的人才卻供不應求。
我們來看看大學里有哪些與區塊鏈有關的專業
1.計算機(軟體工程、信息與計算科學、信息技術、信息安全等)
2、數學相關領域專業
3、經濟領域相關專業
4、密碼學
目前全球各個知名學府機構爭相推出了區塊鏈教學課程,有的大學甚至已經為區塊鏈課程設置了相應的結業證書。
8. 區塊鏈中的哈希值是什麼
哈希值是將任意長度的輸入字元串轉換為密碼並進行固定輸出的過程。哈希值不是一個「密碼」,我們不能通過解密哈希來檢索原始數據,它是一個單向的加密函數。
區塊鏈:
區塊鏈是一個信息技術領域的術語。從本質上講,它是一個共享資料庫,存儲於其中的數據或信息,具有「不可偽造」「全程留痕」「可以追溯」「公開透明」「集體維護」等特徵。基於這些特徵,區塊鏈技術奠定了堅實的「信任」基礎,創造了可靠的「合作」機制,具有廣闊的運用前景。2019年1月10日,國家互聯網信息辦公室發布《區塊鏈信息服務管理規定》 。