Ⅰ 區塊鏈協議如何驗證
區塊鏈常見的三大共識機制區塊鏈是建立在P2P網路,由節點參與的分布式賬本系統,最大的特點是「去中心化」。也就是說在區塊鏈系統中,用戶與用戶之間、用戶與機構之間、機構與機構之間,無需建立彼此之間的信任,只需依靠區塊鏈協議系統就能實現交易。
可是,要如何保證賬本的准確性,權威性,以及可靠性?區塊鏈網路上的節點為什麼要參與記賬?節點如果造假怎麼辦?如何防止賬本被篡改?如何保證節點間的數據一致性?……這些都是區塊鏈在建立「去中心化」交易時需要解決的問題,由此產生了共識機制。
所謂「共識機制」,就是通過特殊節點的投票,在很短的時間內完成對交易的驗證和確認;當出現意見不一致時,在沒有中心控制的情況下,若干個節點參與決策達成共識,即在互相沒有信任基礎的個體之間如何建立信任關系。
區塊鏈技術正是運用一套基於共識的數學演算法,在機器之間建立「信任」網路,從而通過技術背書而非中心化信用機構來進行全新的信用創造。
不同的區塊鏈種類需要不同的共識演算法來確保區塊鏈上最後的區塊能夠在任何時候都反應出全網的狀態。
目前為止,區塊鏈共識機制主要有以下幾種:POW工作量證明、POS股權證明、DPOS授權股權證明、Paxos、PBFT(實用拜占庭容錯演算法)、dBFT、DAG(有向無環圖)
接下來我們主要說說常見的POW、POS、DPOS共識機制的原理及應用場景
概念:
工作量證明機制(Proofofwork),最早是一個經濟學名詞,指系統為達到某一目標而設置的度量方法。簡單理解就是一份證明,用來確認你做過一定量的工作,通過對工作的結果進行認證來證明完成了相應的工作量。
工作量證明機制具有完全去中心化的優點,在以工作量證明機制為共識的區塊鏈中,節點可以自由進出,並通過計算隨機哈希散列的數值解爭奪記賬權,求得正確的數值解以生成區塊的能力是節點算力的具體表現。
應用:
POW最著名的應用當屬比特幣。在比特幣網路中,在Block的生成過程中,礦工需要解決復雜的密碼數學難題,尋找到一個符合要求的BlockHash由N個前導零構成,零的個數取決於網路的難度值。這期間需要經過大量嘗試計算(工作量),計算時間取決於機器的哈希運算速度。
而尋找合理hash是一個概率事件,當節點擁有佔全網n%的算力時,該節點即有n/100的概率找到BlockHash。在節點成功找到滿足的Hash值之後,會馬上對全網進行廣播打包區塊,網路的節點收到廣播打包區塊,會立刻對其進行驗證。
如果驗證通過,則表明已經有節點成功解迷,自己就不再競爭當前區塊,而是選擇接受這個區塊,記錄到自己的賬本中,然後進行下一個區塊的競爭猜謎。網路中只有最快解謎的區塊,才會添加的賬本中,其他的節點進行復制,以此保證了整個賬本的唯一性。
假如節點有任何的作弊行為,都會導致網路的節點驗證不通過,直接丟棄其打包的區塊,這個區塊就無法記錄到總賬本中,作弊的節點耗費的成本就白費了,因此在巨大的挖礦成本下,也使得礦工自覺自願的遵守比特幣系統的共識協議,也就確保了整個系統的安全。
優缺點
優點:結果能被快速驗證,系統承擔的節點量大,作惡成本高進而保證礦工的自覺遵守性。
缺點:需要消耗大量的演算法,達成共識的周期較長
概念:
權益證明機制(ProofofStake),要求證明人提供一定數量加密貨幣的所有權。
權益證明機制的運作方式是,當創造一個新區塊時,礦工需要創建一個「幣權」交易,交易會按照預先設定的比例把一些幣發送給礦工本身。權益證明機制根據每個節點擁有代幣的比例和時間,依據演算法等比例地降低節點的挖礦難度,從而加快了尋找隨機數的速度。
應用:
2012年,化名SunnyKing的網友推出了Peercoin(點點幣),是權益證明機制在加密電子貨幣中的首次應用。PPC最大創新是其采礦方式混合了POW及POS兩種方式,採用工作量證明機制發行新幣,採用權益證明機制維護網路安全。
為了實現POS,SunnyKing借鑒於中本聰的Coinbase,專門設計了一種特殊類型交易,叫Coinstake。
上圖為Coinstake工作原理,其中幣齡指的是貨幣的持有時間段,假如你擁有10個幣,並且持有10天,那你就收集到了100天的幣齡。如果你使用了這10個幣,幣齡被消耗(銷毀)了。
優缺點:
優點:縮短達成共識所需的時間,比工作量證明更加節約能源。
缺點:本質上仍然需要網路中的節點進行挖礦運算,轉賬真實性較難保證
概念:
授權股權證明機制(DelegatedProofofStake),與董事會投票類似,該機制擁有一個內置的實時股權人投票系統,就像系統隨時都在召開一個永不散場的股東大會,所有股東都在這里投票決定公司決策。
授權股權證明在嘗試解決傳統的PoW機制和PoS機制問題的同時,還能通過實施科技式的民主抵消中心化所帶來的負面效應。基於DPoS機制建立的區塊鏈的去中心化依賴於一定數量的代表,而非全體用戶。在這樣的區塊鏈中,全體節點投票選舉出一定數量的節點代表,由他們來代理全體節點確認區塊、維持系統有序運行。
同時,區塊鏈中的全體節點具有隨時罷免和任命代表的權力。如果必要,全體節點可以通過投票讓現任節點代表失去代表資格,重新選舉新的代表,實現實時的民主。
應用:
比特股(Bitshare)是一類採用DPOS機制的密碼貨幣。通過引入了見證人這個概念,見證人可以生成區塊,每一個持有比特股的人都可以投票選舉見證人。得到總同意票數中的前N個(N通常定義為101)候選者可以當選為見證人,當選見證人的個數(N)需滿足:至少一半的參與投票者相信N已經充分地去中心化。
見證人的候選名單每個維護周期(1天)更新一次。見證人然後隨機排列,每個見證人按序有2秒的許可權時間生成區塊,若見證人在給定的時間片不能生成區塊,區塊生成許可權交給下一個時間片對應的見證人。DPoS的這種設計使得區塊的生成更為快速,也更加節能。
DPOS充分利用了持股人的投票,以公平民主的方式達成共識,他們投票選出的N個見證人,可以視為N個礦池,而這N個礦池彼此的權利是完全相等的。持股人可以隨時通過投票更換這些見證人(礦池),只要他們提供的算力不穩定,計算機宕機,或者試圖利用手中的權力作惡。
優缺點:
優點:縮小參與驗證和記賬節點的數量,從而達到秒級的共識驗證
缺點:中心程度較弱,安全性相比POW較弱,同時節點代理是人為選出的,公平性相比POS較低,同時整個共識機制還是依賴於代幣的增發來維持代理節點的穩定性。
區塊鏈中的每個區塊中記錄要經歷哪些驗證環節?
會經歷三個驗證環節,分別是:
1.賬本驗證問題實際上對於第一個問題,很容易想到解決方法,那就是少數服從多數,如果某個節點的賬本數據被篡改了,那麼只需要和全網其他節點的數據比對,就必然能發現異常。但問題在於,隨著時間的推移,記錄的累積,數據量會越來越龐大,記得在13年的時候,筆者下載的比特幣錢包,從網路同步下載下來的交易賬本數據就已經多達幾十GB,如果說要對這么大的數據進行逐一傳輸、比對,可以說是不現實的。
2.賬戶所有權的證明如果我要通過某個賬戶給另一個賬戶轉賬,必然需要證明我對此賬戶的所有權。對於中心化的貨幣系統,我們只需要向銀行出示密碼即可,但是對於去中心化的系統,如果我們也通過出示密碼給其他節點,來證明我們對賬戶的所有權,那麼我們的密碼也就泄露給了其他節點(即用戶)。
3.事實上這是一個現代密碼學中比較基礎的問題,說白了就是如何在不暴露自己私鑰的前提下,自證身份,也有很成熟的解決方法:利用非對稱加密演算法。關於演算法的細節,計劃在後面單獨說說現代密碼學的一些基礎演算法,這里我們就用類比的方法描述一下。
4.記賬問題:去中心化的前提就是,時刻需要有節點在線,否則就沒有人處理記賬、驗證交易等工作,那麼,比特幣有什麼機制,讓人們心甘情願的時刻保持在線呢?我們之前說過,比特幣_10分鍾,會將這10分鍾內的交易數據打包記錄成一個區塊,也就是記賬。但是不是所有人都有權利去記賬的,全網的每個節點,都會去計算一個問題,只有第一個解出符合要求的答案的節點,才有記賬權,而作為獎勵,該節點會得到一定數量的比特幣。
5.隨著比特幣的價格越來越高,越來越多的人參與到這種解題競賽中去,並將這一過程戲稱為「挖礦」,也正是這些「礦工」,維持著整個比特幣網路的運轉。而這也就是比特幣的發行過程:_10分鍾,通過獎勵礦工的形式,產生新的比特幣。
如何檢測區塊鏈智能合約的風險等級高低隨著上海城市數字化轉型腳步的加快,區塊鏈技術在政務、金融、物流、司法等眾多領域得到深入應用。在應用過程中,不僅催生了新的業務形態和商業模式,也產生了很多安全問題,因而安全監管顯得尤為重要。安全測評作為監管重要手段之一,成為很多區塊鏈研發廠商和應用企業的關注熱點。本文就大家關心的區塊鏈合規性安全測評談談我們做的一點探索和實踐。
一、區塊鏈技術測評
區塊鏈技術測評一般分為功能測試、性能測試和安全測評。
1、功能測試
功能測試是對底層區塊鏈系統支持的基礎功能的測試,目的是衡量底層區塊鏈系統的能力范圍。
區塊鏈功能測試主要依據GB/T25000.10-2016《系統與軟體質量要求和評價(SQuaRE)第10部分:系統與軟體質量模型》、GB/T25000.51-2016《系統與軟體質量要求和評價(SQuaRE)第51部分:就緒可用軟體產品(RUSP)的質量要求和測試細則》等標准,驗證被測軟體是否滿足相關測試標准要求。
區塊鏈功能測試具體包括組網方式和通信、數據存儲和傳輸、加密模塊可用性、共識功能和容錯、智能合約功能、系統管理穩定性、鏈穩定性、隱私保護、互操作能力、賬戶和交易類型、私鑰管理方案、審計管理等模塊。
2、性能測試
性能測試是為描述測試對象與性能相關的特徵並對其進行評價而實施和執行的一類測試,大多在項目驗收測評中,用來驗證既定的技術指標是否完成。
區塊鏈性能測試具體包括高並發壓力測試場景、尖峰沖擊測試場景、長時間穩定運行測試場景、查詢測試場景等模塊。
3、安全測評
區塊鏈安全測評主要是對賬戶數據、密碼學機制、共識機制、智能合約等進行安全測試和評價。
區塊鏈安全測評的主要依據是《DB31/T1331-2021區塊鏈技術安全通用要求》。也可根據實際測試需求參考《JR/T0193-2020區塊鏈技術金融應用評估規則》、《JR/T0184—2020金融分布式賬本技術安全規范》等標准。
區塊鏈安全測評具體包括存儲、網路、計算、共識機制、密碼學機制、時序機制、個人信息保護、組網機制、智能合約、服務與訪問等內容。
二、區塊鏈合規性安全測評
區塊鏈合規性安全測評一般包括「區塊鏈信息服務安全評估」、「網路安全等級保護測評」和「專項資金項目驗收測評」三類。
1、區塊鏈信息服務安全評估
區塊鏈信息服務安全評估主要依據國家互聯網信息辦公室2019年1月10日發布的《區塊鏈信息服務管理規定》(以下簡稱「《規定》」)和參考區塊鏈國家標准《區塊鏈信息服務安全規范(徵求意見稿)》進行。
《規定》旨在明確區塊鏈信息服務提供者的信息安全管理責任,規范和促進區塊鏈技術及相關服務的健康發展,規避區塊鏈信息服務安全風險,為區塊鏈信息服務的提供、使用、管理等提供有效的法律依據。《規定》第九條指出:區塊鏈信息服務提供者開發上線新產品、新應用、新功能的,應當按照有關規定報國家和省、自治區、直轄市互聯網信息辦公室進行安全評估。
《區塊鏈信息服務安全規范》是由中國科學院信息工程研究所牽頭,浙江大學、中國電子技術標准化研究院、上海市信息安全測評認證中心等單位共同參與編寫的一項建設和評估區塊鏈信息服務安全能力的國家標准。《區塊鏈信息服務安全規范》規定了聯盟鏈和私有鏈的區塊鏈信息服務提供者應滿足的安全要求,包括安全技術要求和安全保障要求以及相應的測試評估方法,適用於指導區塊鏈信息服務安全評估和區塊鏈信息服務安全建設。標准提出的安全技術要求、保障要求框架如下:
圖1區塊鏈信息服務安全要求模型
2、網路安全等級保護測評
網路安全等級保護測評的主要依據包括《GB/T22239-2019網路安全等級保護基本要求》、《GB/T28448-2019網路安全等級保護測評要求》。
區塊鏈作為一種新興信息技術,構建的應用系統同樣屬於等級保護對象,需要按照規定開展等級保護測評。等級保護安全測評通用要求適用於評估區塊鏈的基礎設施部分,但目前並沒有提出區塊鏈特有的安全要求。因此,區塊鏈安全測評擴展要求還有待進一步探索和研究。
3、專項資金項目驗收測評
根據市經信委有關規定,信息化專項資金項目在項目驗收時需出具安全測評報告。區塊鏈應用項目的驗收測評將依據上海市最新發布的區塊鏈地方標准《DB31/T1331-2021區塊鏈技術安全通用要求》開展。
三、區塊鏈安全測評探索與實踐
1、標准編制
上海測評中心積極參與區塊鏈標准編制工作。由上海測評中心牽頭,蘇州同濟區塊鏈研究院有限公司、上海七印信息科技有限公司、上海墨珩網路科技有限公司、電信科學技術第一研究所等單位參加編寫的區塊鏈地方標准《DB31/T1331-2021區塊鏈技術安全通用要求》已於2021年12月正式發布,今年3月1日起正式實施。上海測評中心參與編寫的區塊鏈國標《區塊鏈信息服務安全規范》正處於徵求意見階段。
同時,測評中心還參與編寫了國家人力資源和社會保障部組織,同濟大學牽頭編寫的區塊鏈工程技術人員初級和中級教材,負責編制「測試區塊鏈系統」章節內容。
2、項目實踐
近年來,上海測評中心依據相關技術標准進行了大量的區塊鏈安全測評實踐,包括等級保護測評、信息服務安全評估、項目安全測評等。在測評實踐中,發現的主要安全問題如下:
表1區塊鏈主要是安全問題
序號
測評項
問題描述
1
共識演算法
共識演算法採用Kafka或Raft共識,不支持拜占庭容錯,不支持容忍節點惡意行為。
2
上鏈數據
上鏈敏感信息未進行加密處理,通過查詢介面或區塊鏈瀏覽器可訪問鏈上所有數據。
3
密碼演算法
密碼演算法中使用的隨機數不符合GB/T32915-2016對隨機性的要求。
4
節點防護
對於聯盟鏈,未能對節點伺服器所在區域配置安全防護措施。
5
通信傳輸
節點間通信、區塊鏈與上層應用之間通信時,未建立安全的信息傳輸通道。
6
共識演算法
系統部署節點數量較少,有時甚至沒有達到共識演算法要求的容錯數量。
7
智能合約
未對智能合約的運行進行監測,無法及時發現、處置智能合約運行過程中出現的問題。
8
服務與訪問
上層應用存在未授權、越權等訪問控制缺陷,導致業務錯亂、數據泄露。
9
智能合約
智能合約編碼不規范,當智能合約出現錯誤時,不提供智能合約凍結功能。
10
智能合約
智能合約的運行環境沒有與外部隔離,存在外部攻擊的風險。
3、工具應用
測評中心在組織編制《DB31/T1331-2021區塊鏈技術安全通用要求》時,已考慮與等級保護測評的銜接需求。DB31/T1331中的「基礎設施層」安全與等級保護的安全物理環境、安全通信網路、安全區域邊界、安全計算環境、安全管理中心等相關要求保持一致,「協議層安全」、「擴展層安全」則更多體現區塊鏈特有的安全保護要求。
測評中心依據DB31/T1331相關安全要求,正在組織編寫區塊鏈測評擴展要求,相關成果將應用於網路安全等級保護測評工具——測評能手。屆時,使用「測評能手」軟體的測評機構就能准確、規范、高效地開展區塊鏈安全測評,發現區塊鏈安全風險,並提出對應的整改建議
區塊鏈如何更好的保證電子合同效力電子合同本身就是一種電子數據,具有易篡改與易刪除等安全缺陷,不利於該服務的長期發展。為了保證用戶在電子合同平台上簽署的電子文件與電子合同的法律效力,需要對電子合同簽署的全過程進行存證。
在根據區塊鏈存證技術實現的「法鏈」應用中,平台將對電子合同簽署的關鍵環節進行存檔,並將關鍵信息與數據分布存儲到整個區塊鏈當中,從而實現電子合同的全流程存證。
深究其實現原理,區塊鏈通過深度使用密碼學演算法、特別設計的數據結構和多方參與的共識演算法,由機器演算法來解決多方交易記錄的一致性、可靠存儲和防篡改問題,與電子數據存證有著天然的強關聯。
首先,電子合同簽約記錄存儲在由多方共同維護的共享賬本上,不可篡改,不可抵賴,當然也不會丟失。
其次,電子合同文本、電子合同要素加密存儲,包括電子合同參與人也採取加密存儲,只有參與人才可以解密查看,在數據上保護簽約方隱私。
再次,機器按照預定義的規則(智能合約)嚴格執行,不再僅靠與第三方一紙協議保證。基於區塊鏈的KYC服務自動檢查驗證證書有效性和身份,在保證隱私的基礎上確保參與人身份有效真實。
目前,我們的電子合同平台上所簽的電子合同都通過區塊鏈技術實現了電子文件數字指紋的分布式存證,進一步強化了平台電子合同的法律效力。
區塊鏈使用安全如何來保證呢區塊鏈本身解決的就是陌生人之間大規模協作問題,即陌生人在不需要彼此信任的情況下就可以相互協作。那麼如何保證陌生人之間的信任來實現彼此的共識機制呢?中心化的系統利用的是可信的第三方背書,比如銀行,銀行在老百姓看來是可靠的值得信任的機構,老百姓可以信賴銀行,由銀行解決現實中的糾紛問題。但是,去中心化的區塊鏈是如何保證信任的呢?
實際上,區塊鏈是利用現代密碼學的基礎原理來確保其安全機制的。密碼學和安全領域所涉及的知識體系十分繁雜,我這里只介紹與區塊鏈相關的密碼學基礎知識,包括Hash演算法、加密演算法、信息摘要和數字簽名、零知識證明、量子密碼學等。您可以通過這節課來了解運用密碼學技術下的區塊鏈如何保證其機密性、完整性、認證性和不可抵賴性。
基礎課程第七課區塊鏈安全基礎知識
一、哈希演算法(Hash演算法)
哈希函數(Hash),又稱為散列函數。哈希函數:Hash(原始信息)=摘要信息,哈希函數能將任意長度的二進制明文串映射為較短的(一般是固定長度的)二進制串(Hash值)。
一個好的哈希演算法具備以下4個特點:
1、一一對應:同樣的明文輸入和哈希演算法,總能得到相同的摘要信息輸出。
2、輸入敏感:明文輸入哪怕發生任何最微小的變化,新產生的摘要信息都會發生較大變化,與原來的輸出差異巨大。
3、易於驗證:明文輸入和哈希演算法都是公開的,任何人都可以自行計算,輸出的哈希值是否正確。
4、不可逆:如果只有輸出的哈希值,由哈希演算法是絕對無法反推出明文的。
5、沖突避免:很難找到兩段內容不同的明文,而它們的Hash值一致(發生碰撞)。
舉例說明:
Hash(張三借給李四10萬,借期6個月)=123456789012
賬本上記錄了123456789012這樣一條記錄。
可以看出哈希函數有4個作用:
簡化信息
很好理解,哈希後的信息變短了。
標識信息
可以使用123456789012來標識原始信息,摘要信息也稱為原始信息的id。
隱匿信息
賬本是123456789012這樣一條記錄,原始信息被隱匿。
驗證信息
假如李四在還款時欺騙說,張三隻借給李四5萬,雙方可以用哈希取值後與之前記錄的哈希值123456789012來驗證原始信息
Hash(張三借給李四5萬,借期6個月)=987654321098
987654321098與123456789012完全不同,則證明李四說謊了,則成功的保證了信息的不可篡改性。
常見的Hash演算法包括MD4、MD5、SHA系列演算法,現在主流領域使用的基本都是SHA系列演算法。SHA(SecureHashAlgorithm)並非一個演算法,而是一組hash演算法。最初是SHA-1系列,現在主流應用的是SHA-224、SHA-256、SHA-384、SHA-512演算法(通稱SHA-2),最近也提出了SHA-3相關演算法,如以太坊所使用的KECCAK-256就是屬於這種演算法。
MD5是一個非常經典的Hash演算法,不過可惜的是它和SHA-1演算法都已經被破解,被業內認為其安全性不足以應用於商業場景,一般推薦至少是SHA2-256或者更安全的演算法。
哈希演算法在區塊鏈中得到廣泛使用,例如區塊中,後一個區塊均會包含前一個區塊的哈希值,並且以後一個區塊的內容+前一個區塊的哈希值共同計算後一個區塊的哈希值,保證了鏈的連續性和不可篡改性。
二、加解密演算法
加解密演算法是密碼學的核心技術,從設計理念上可以分為兩大基礎類型:對稱加密演算法與非對稱加密演算法。根據加解密過程中所使用的密鑰是否相同來加以區分,兩種模式適用於不同的需求,恰好形成互補關系,有時也可以組合使用,形成混合加密機制。
對稱加密演算法(symmetriccryptography,又稱公共密鑰加密,common-keycryptography),加解密的密鑰都是相同的,其優勢是計算效率高,加密強度高;其缺點是需要提前共享密鑰,容易泄露丟失密鑰。常見的演算法有DES、3DES、AES等。
非對稱加密演算法(asymmetriccryptography,又稱公鑰加密,public-keycryptography),與加解密的密鑰是不同的,其優勢是無需提前共享密鑰;其缺點在於計算效率低,只能加密篇幅較短的內容。常見的演算法有RSA、SM2、ElGamal和橢圓曲線系列演算法等。對稱加密演算法,適用於大量數據的加解密過程;不能用於簽名場景:並且往往需要提前分發好密鑰。非對稱加密演算法一般適用於簽名場景或密鑰協商,但是不適於大量數據的加解密。
三、信息摘要和數字簽名
顧名思義,信息摘要是對信息內容進行Hash運算,獲取唯一的摘要值來替代原始完整的信息內容。信息摘要是Hash演算法最重要的一個用途。利用Hash函數的抗碰撞性特點,信息摘要可以解決內容未被篡改過的問題。
數字簽名與在紙質合同上簽名確認合同內容和證明身份類似,數字簽名基於非對稱加密,既可以用於證明某數字內容的完整性,同時又可以確認來源(或不可抵賴)。
我們對數字簽名有兩個特性要求,使其與我們對手寫簽名的預期一致。第一,只有你自己可以製作本人的簽名,但是任何看到它的人都可以驗證其有效性;第二,我們希望簽名只與某一特定文件有關,而不支持其他文件。這些都