㈠ 鍦ㄥ尯鍧楅摼涓涓鑸浣跨敤浠涔堝姞瀵嗙畻娉
鍦ㄥ尯鍧楅摼涓錛屼竴鑸浣跨敤涓ょ嶄富瑕佺殑鍔犲瘑綆楁硶錛
鎷撳睍鐭ヨ瘑錛
鍝堝笇鍑芥暟鏄涓縐嶅皢浠繪剰闀垮害鐨勬暟鎹錛堝傛枃鏈銆佹暟瀛楃瓑錛夎漿鎹涓哄滻瀹氶暱搴︼紙閫氬父涓256浣嶆垨512浣嶏級鐨勬憳瑕佺殑鏂規硶銆傚畠浠闈炲父蹇涓旈潪甯稿畨鍏錛屽洜涓烘敼鍙樻暟鎹涓鐨勪竴灝忛儴鍒嗭紙鍗充嬌鏄寰灝忕殑鏀瑰彉錛変細瀵艱嚧鍝堝笇緇撴灉鐨勫彉鍖栭潪甯稿ぇ錛岀敋鑷充笉鍙閫嗐傝繖縐嶇壒鎬т嬌寰楀搱甯屽嚱鏁板湪鍖哄潡閾句腑琚騫挎硾浣跨敤錛屽傚尯鍧楃殑merkle鏍戠粨鏋勩佷氦鏄撶殑鏁板瓧絳懼悕浠ュ強瀵嗙爜瀛﹂挶鍖呯殑瀛樺偍絳夈
姣旂壒甯佸尯鍧楅摼涓昏佷嬌鐢⊿HA-256浣滀負鍏跺搱甯屽嚱鏁幫紝榪欐槸鐢盌avid Chaum鍜孧ayra P. Chilomchik鍦1997騫村紩鍏ョ殑涓縐嶇畻娉曘係HA-256鎻愪緵浜嗕竴縐嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ュ壋寤哄尯鍧楅摼騫剁『淇濅氦鏄撶殑瀹夊叏鎬с傛ゅ栵紝鍖哄潡閾句腑鐨凪erkle鏍戠粨鏋勪篃鏄鍩轟簬SHA-256鐨勫搱甯屽嚱鏁版潵鍒涘緩鐨勩
浠ヤ笂涓ょ嶅姞瀵嗙畻娉曞拰鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓閮芥壆婕旂潃闈炲父閲嶈佺殑瑙掕壊錛屽畠浠淇濊瘉浜嗕氦鏄撶殑瀹夊叏鎬с佸畬鏁存у拰鍖垮悕鎬э紝鍚屾椂涔熺『淇濅簡鍖哄潡閾劇綉緇滅殑鍘諱腑蹇冨寲鍜屼笉鍙綃℃敼鎬с
鍚屾椂錛岀敱浜庡尯鍧楅摼涓鐨勬暟鎹鏄浠ュ尯鍧楃殑褰㈠紡涓嶆柇澧為暱鐨勶紝榪欎簺鍔犲瘑綆楁硶榪樿鐢ㄤ簬鍒涘緩鍖哄潡澶村拰鍖哄潡闂寸殑閾炬帴錛岃繘涓姝ユ彁楂樹簡鍖哄潡閾劇殑鎬ц兘鍜屽畨鍏ㄦс
㈡ 區塊鏈dna中的兩種演算法分別是
共識演算法,密碼演算法。根據查詢中華人民共和國國家互聯網信息辦公室官網得知。
1、共識演算法:用於確保分布式系統中的各個節點對某個共享狀態或值能夠達成一致意見。
2、密碼演算法:是用於加密和解密的數學函數,密碼演算法是密碼協議的基礎。
㈢ 區塊鏈加密用什麼演算法(區塊鏈加密方式)
區塊鏈的加密技術數字加密技能是區塊鏈技能使用和開展的關鍵。一旦加密辦法被破解,區塊鏈的數據安全性將受到挑戰,區塊鏈的可篡改性將不復存在。加密演算法分為對稱加密演算法和非對稱加密演算法。區塊鏈首要使用非對稱加密演算法。非對稱加密演算法中的公鑰暗碼體制依據其所依據的問題一般分為三類:大整數分化問題、離散對數問題和橢圓曲線問題。第一,引進區塊鏈加密技能加密演算法一般分為對稱加密和非對稱加密。非對稱加密是指集成到區塊鏈中以滿意安全要求和所有權驗證要求的加密技能。非對稱加密通常在加密和解密進程中使用兩個非對稱暗碼,稱為公鑰和私鑰。非對稱密鑰對有兩個特點:一是其間一個密鑰(公鑰或私鑰)加密信息後,只能解密另一個對應的密鑰。第二,公鑰可以向別人揭露,而私鑰是保密的,別人無法通過公鑰計算出相應的私鑰。非對稱加密一般分為三種首要類型:大整數分化問題、離散對數問題和橢圓曲線問題。大整數分化的問題類是指用兩個大素數的乘積作為加密數。由於素數的出現是沒有規律的,所以只能通過不斷的試算來尋找解決辦法。離散對數問題類是指基於離散對數的困難性和強單向哈希函數的一種非對稱分布式加密演算法。橢圓曲線是指使用平面橢圓曲線來計算一組非對稱的特殊值,比特幣就採用了這種加密演算法。非對稱加密技能在區塊鏈的使用場景首要包含信息加密、數字簽名和登錄認證。(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個字元的比特幣地址。公鑰生成進程是不可逆的,即私鑰不能從公鑰推導出來。比特幣的公鑰和私鑰通常存儲在比特幣錢包文件中,其間私鑰最為重要。丟掉私鑰意味著丟掉相應地址的所有比特幣財物。在現有的比特幣和區塊鏈體系中,現已依據實踐使用需求衍生出多私鑰加密技能,以滿意多重簽名等愈加靈敏雜亂的場景。
什麼是區塊鏈加密演算法?
區塊鏈加密演算法(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所示,為比特幣從公鑰生成地址的流程。
區塊鏈:防篡改的哈希加密演算法同學A和B在教室里拋硬幣,賭誰打掃衛生,正面朝上,則A打掃,反面朝上,則B打掃,這個策略沒有什麼問題。
然而,如果把情景遷移到網路聊天室,A和B同樣進行拋硬幣的游戲,估計B就不會答應了,因為當A拋了硬幣,B不論是猜
正面還是反面,A都可以說B猜錯了。
怎麼解決這個問題呢?要不先給拋硬幣的結果加密,B再猜?這個方法可以試一下。
假設任意奇數代表硬幣正面,任意偶數代表反面。A想一個數375,然後乘以一個258,把其結果告訴B為96750,並聲明A想的375為密鑰,由他保管。
在接下來驗證結果時,A可以謊稱258為他想的數,375為密鑰,A還是立於不敗之地。那如果A事先把密鑰告訴B呢?B可以直接算出原始數字,失去了保密作用。
這種知道加密方法就知道了解密方法顯然行不通,那有沒有一種方法,知道了加密方法仍然無法恢復原文呢?
顯然是有的,在加密過程中加入不可逆運算就OK了。A設計新的加密方式:
假設A想的數是375,進行加密:
B拿到結果120943,但他幾乎不能根據120943反算出密匙375。
如果B想要驗證A是否說謊:
終於可以拋硬幣了……
這種丟掉一部分信息的加密方式稱為「單向加密」,也叫哈希演算法。
有個問題:
這個是有可能的,但可以解決,就是增加上述演算法的難度,以致於A很難很難找到。
根據以上表述,一個可靠的哈希演算法,應該滿足:
密碼學中的哈希函數有3個重要的性質,即抗碰撞性、原像不可逆、難題友好性。
碰撞性,就是指A同學事先找出一奇一偶使得哈希結果一致,在計算上是不可行的。
首先,把大空間桑拿的消息壓縮到小空間上,碰撞肯定是存在的。假設哈希值長度固定為256位,如果順序取1,2,…2256+1,這2256+1個輸入值,逐一計算其哈希值,肯定能找到兩個輸入值使得其哈希值相同。
A同學,看到這里時,請不要高興的太早。因為你得有時間把它算出來,才是你的。為什麼這么說呢?
根據生日悖論,如果隨機挑選其中的2130+1輸入,則有99.8%的概率發現至少一對碰撞輸入。那麼對於哈希值長度為256為的哈希函數,平均需要完成2128次哈希計算,才能找到碰撞對。如果計算機每秒進行10000次哈希計算,需要約1027年才能完成2128次哈希計算。
A同學,不要想著作弊了,估計你活不了這么久。當然如果計算機運算能力大幅提升,倒是有可能。
那麼完整性還用其他什麼用途呢?
用來驗證信息的完整性,因為如果信息在傳遞過程中別篡改,那麼運行哈希計算得到的哈希值與原來的哈希值不一樣。
所以,在區塊鏈中,哈希函數的抗碰撞性可以用來做區塊和交易的完整性驗證。
因為一個哈希值對應無數個明文,理論上你並不知道哪個是。就如,4+5=9和2+7=9的結果一樣,知道我輸入的結果是9,但能知道我輸入的是什麼數字嗎?
如果,對消息m進行哈希計算時,在引入一個隨機的前綴r,依據哈希值H(r||m),難以恢復出消息m,這代表該哈希函數值隱藏了消息m。
所以,B同學,根據結果想反推出原數據,這是不大可能的事,就猶如大海里撈針。
難題好友性,指沒有便捷的方法去產生一滿足特殊要求的哈希值。是什麼意思呢,通俗的講,就是沒有捷徑,需要一步一步算出來。假如要求得到的哈希結果以若干個0開頭,那麼計算找到前3位均為0的哈希值和找到前6位均為0的哈希值,其所需的哈希計算次數是呈一定數量關系。
這個可以怎麼用呢?在區塊鏈中,可以作為共識演算法中的工作量證明。
主要描述了哈希函數的3個重要性質:抗碰撞性、原像不可逆、難題友好性。
因為這些重要性質,區塊鏈中的區塊和交易的完整性驗證、共識演算法的工作量證明等功能用哈希函數來實現。
[1].鄒均,張海寧.區塊鏈技術指南[M].北京:機械出版社,2016.11
[2].長鋏,韓鋒.區塊鏈從數字貨幣到信用社會[M].北京:中信出版社,2016.7
[3].張健.區塊鏈定義未來金融與經濟新格局[M].北京:機械工業出版社,2016.6
區塊鏈技術的六大核心演算法區塊鏈技術的六大核心演算法
區塊鏈核心演算法一:拜占庭協定
拜占庭的故事大概是這么說的:拜占庭帝國擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。
在這個分布式網路里:每個將軍都有一份實時與其他將軍同步的消息賬本。賬本里有每個將軍的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些將軍。盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。
由此,在一個分布式的系統中,盡管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識
區塊鏈核心演算法二:非對稱加密技術
在上述拜占庭協定中,如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。誰都可以發起進攻的信息,但由誰來發出呢?其實這只要加入一個成本就可以了,即:一段時間內只有一個節點可以傳播信息。當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。
在如今看來,非對稱加密技術完全可以解決這個簽名問題。非對稱加密演算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現,如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密;同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
區塊鏈核心演算法三:容錯問題
我們假設在此網路中,消息可能會丟失、損壞、延遲、重復發送,並且接受的順序與發送的順序不一致。此外,節點的行為可以是任意的:可以隨時加入、退出網路,可以丟棄消息、偽造消息、停止工作等,還可能發生各種人為或非人為的故障。我們的演算法對由共識節點組成的共識系統,提供的容錯能力,這種容錯能力同時包含安全性和可用性,並適用於任何網路環境。
區塊鏈核心演算法四:Paxos演算法(一致性演算法)
Paxos演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性演算法」以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分布式計算中的重要問題。節點通信存在兩種模型:共享內存和消息傳遞。Paxos演算法就是一種基於消息傳遞模型的一致性演算法。
區塊鏈核心演算法五:共識機制
區塊鏈共識演算法主要是工作量證明和權益證明。拿比特幣來說,其實從技術角度來看可以把PoW看做重復使用的Hashcash,生成工作量證明在概率上來說是一個隨機的過程。開采新的機密貨幣,生成區塊時,必須得到所有參與者的同意,那礦工必須得到區塊中所有數據的PoW工作證明。與此同時礦工還要時時觀察調整這項工作的難度,因為對網路要求是平均每10分鍾生成一個區塊。
區塊鏈核心演算法六:分布式存儲
分布式存儲是一種數據存儲技術,通過網路使用每台機器上的磁碟空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在網路中的各個角落。所以,分布式存儲技術並不是每台電腦都存放完整的數據,而是把數據切割後存放在不同的電腦里。就像存放100個雞蛋,不是放在同一個籃子里,而是分開放在不同的地方,加起來的總和是100個。
區塊鏈技術中的哈希演算法是什麼?1.1.簡介
計算機行業從業者對哈希這個詞應該非常熟悉,哈希能夠實現數據從一個維度向另一個維度的映射,通常使用哈希函數實現這種映射。通常業界使用y=hash(x)的方式進行表示,該哈希函數實現對x進行運算計算出一個哈希值y。
區塊鏈中哈希函數特性:
函數參數為string類型;
固定大小輸出;
計算高效;
collision-free即沖突概率小:x!=y=hash(x)!=hash(y)
隱藏原始信息:例如區塊鏈中各個節點之間對交易的驗證只需要驗證交易的信息熵,而不需要對原始信息進行比對,節點間不需要傳輸交易的原始數據只傳輸交易的哈希即可,常見演算法有SHA系列和MD5等演算法
1.2.哈希的用法
哈希在區塊鏈中用處廣泛,其一我們稱之為哈希指針(HashPointer)
哈希指針是指該變數的值是通過實際數據計算出來的且指向實際的數據所在位置,即其既可以表示實際數據內容又可以表示實際數據的存儲位置。下圖為HashPointer的示意圖
HashPointer在區塊鏈中主要有兩處使用,第一個就是構建區塊鏈數據結構。了解區塊鏈的讀者應該知道區塊鏈數據結構由創世區塊向後通過區塊之間的指針進行連接,這個指針使用的就是圖示的HashPointer.每個區塊中都存儲了前一個區塊的HashPointer。這樣的數據結構的好處在於後面區塊可以查找前面所有區塊中的信息且區塊的HashPointer的計算包含了前面區塊的信息從而一定程度上保證了區塊鏈的不易篡改的特性。第二個用處在於構建MerkleTree.MerkleTree的各個節點使用HashPointer進行構建,關於區塊鏈數據結構以及MerkleTree的內容我們在後續文章中進行進一步介紹。
哈希還在其他技術中有所應用例如:交易驗證以及數字簽名等等。
2.加密演算法
2.1簡述
加密簡單而言就是通過一種演算法手段將對原始信息進行轉換,信息的接收者能夠通過秘鑰對密文進行解密從而得到原文的過程。按照加密方和解密方秘鑰相同與否可以將加密演算法大致分為三種子類型:
對稱加密
對稱加密的加密解密方使用相同的秘鑰,這種方式的好處在於加解密的速度快但是秘鑰的安全分發比較困難,常見對稱加密演算法有DES,AES,...
非對稱加密
非對稱加密體系也稱為公鑰體系,加解密時加密方擁有公鑰和私鑰,加密方可以將公鑰發送給其他相關方,私鑰嚴格自己保留。例如銀行的頒發給個人用戶的私鑰就存儲在個人的U盾里;非對稱加密中可以通過私鑰加密,他人能夠使用公鑰進行解密,反之亦然;非對稱加密演算法一般比較復雜執行時間相對對稱加密較長;好處在於無秘鑰分發問題。常見的其他非對稱加密演算法有RSA,ECC,區塊鏈中主要使用ECC橢圓曲線演算法。
對稱加密與非對稱加密的結合
這種方式將加密過程分為兩個階段,階段一使用非對稱加密進行秘鑰的分發使得對方安全地得到對稱加密的秘鑰,階段二使用對稱加密對原文進行加解密。
2.2數字簽名
數字簽名又稱之為公鑰數字簽名,是一種類似於寫在紙上的物理簽名。數字簽名主要用於數據更改的簽名者身份識別以及抗抵賴。數字簽名包含三個重要特性:
只有自己可以簽署自己的數字簽名,但是他人可以驗證簽名是否是你簽發;
數字簽名需要和具體的數字文檔綁定,就好比現實中你的簽名應該和紙質媒介綁定;
數字簽名不可偽造;
依賴非對稱加密機制可以較容易實現上述三種特性。
首先,需要生成個人的公私鑰對:
(sk,pk):=generateKeys(keysize),sk私鑰用戶自己保留,pk公鑰可以分發給其他人
其次,可以通過sk對一個具體的message進行簽名:
sig:=sign(sk,message)這樣就得到了具體的簽名sig
最後,擁有該簽名公鑰的一方能夠進行簽名的驗證:
isValid:=verify(pk,message,sig)
在區塊鏈體系中每一條數據交易都需要簽名,在比特幣的設計過程中直接將用戶的公鑰來表徵用戶的比特幣地址。這樣在用戶發起轉賬等比特幣交易時可以方便的進行用戶交易的合法性驗證。
2.3數字證書和認證中心
2.3.1數字證書(DigitalCertificate)
數字證書又稱「數字身份證」、「網路身份證」是經認證中心授權頒發並經認證中心數字簽名的包含公開秘鑰擁有者及公開秘鑰相關信息的電子文件,可以用來判別數字證書擁有者身份。
數字證書包含:公鑰、證書名稱信息、簽發機構對證書的數字簽名以及匹配的私鑰
證書可以存儲在網路中的資料庫中。用戶可以利用網路彼此交換證書。當證書撤銷後,簽發此證書的CA仍保留此證書的副本,以備日後解決可能引起的糾紛。
2.3.2認證中心(CertificateAuthority)
認證中心一般簡稱CA,CA一般是一個公認可信的第三方機構,其作用主要是為每個用戶頒發一個獨一無二的包含名稱和公鑰的數字證書。
2.4常見加密演算法的對比
㈣ 區塊鏈技術的六大核心演算法
區塊鏈技術的六大核心演算法
區塊鏈核心演算法一:拜占庭協定
拜占庭的故事大概是這么說的:拜占庭帝國擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。
在這個分布式網路里:每個將軍都有一份實時與其他將軍同步的消息賬本。賬本里有每個將軍的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些將軍。盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。
由此,在一個分布式的系統中,盡管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識
區塊鏈核心演算法二:非對稱加密技術
在上述拜占庭協定中,如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。誰都可以發起進攻的信息,但由誰來發出呢?其實這只要加入一個成本就可以了,即:一段時間內只有一個節點可以傳播信息。當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。
在如今看來,非對稱加密技術完全可以解決這個簽名問題。非對稱加密演算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
區塊鏈核心演算法三:容錯問題
我們假設在此網路中,消息可能會丟失、損壞、延遲、重復發送,並且接受的順序與發送的順序不一致。此外,節點的行為可以是任意的:可以隨時加入、退出網路,可以丟棄消息、偽造消息、停止工作等,還可能發生各種人為或非人為的故障。我們的演算法對由共識節點組成的共識系統,提供的容錯能力,這種容錯能力同時包含安全性和可用性,並適用於任何網路環境。
區塊鏈核心演算法四:Paxos 演算法(一致性演算法)
Paxos演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性演算法」以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分布式計算中的重要問題。節點通信存在兩種模型:共享內存和消息傳遞。Paxos演算法就是一種基於消息傳遞模型的一致性演算法。
區塊鏈核心演算法五:共識機制
區塊鏈共識演算法主要是工作量證明和權益證明。拿比特幣來說,其實從技術角度來看可以把PoW看做重復使用的Hashcash,生成工作量證明在概率上來說是一個隨機的過程。開采新的機密貨幣,生成區塊時,必須得到所有參與者的同意,那礦工必須得到區塊中所有數據的PoW工作證明。與此同時礦工還要時時觀察調整這項工作的難度,因為對網路要求是平均每10分鍾生成一個區塊。
區塊鏈核心演算法六:分布式存儲
分布式存儲是一種數據存儲技術,通過網路使用每台機器上的磁碟空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在網路中的各個角落。所以,分布式存儲技術並不是每台電腦都存放完整的數據,而是把數據切割後存放在不同的電腦里。就像存放100個雞蛋,不是放在同一個籃子里,而是分開放在不同的地方,加起來的總和是100個。
㈤ 區塊鏈需要哪些技術
區塊鏈技術主要依賴於分布式賬本、加密演算法、共識機制和智能合約等核心組件。
1. 分布式賬本:區塊鏈的基礎是分布式賬本技術,它是一個去中心化的資料庫,記錄所有交易歷史並分布在多個網路節點上。每個節點都擁有完整的賬本副本,這確保了信息的透明性和不可篡改性,因為要改變任何一個區塊的信息,都需要在多數節點上同時修改,這在實際操作中幾乎不可能實現。
2. 加密演算法:區塊鏈使用加密技術來保證數據的安全性和匿名性。哈希函數用於將交易數據轉化為固定長度的哈希值,確保數據的完整性和不可逆性。公鑰和私鑰的非對稱加密技術則用於數字簽名,保證交易的發起者身份真實且不可抵賴。
3. 共識機制:在區塊鏈網路中,所有的交易都需要經過一定的共識機制確認才能被添加到新的區塊中。常見的共識機制有工作量證明(Proof of Work)、權益證明(Proof of Stake)等。這些機制確保了網路中的所有參與者對交易歷史達成一致,防止欺詐和雙花問題。
4. 智能合約:智能合約是區塊鏈上的自動執行協議,它允許在沒有第三方的情況下進行可信交易。智能合約包含了預設的規則和條件,一旦滿足這些條件,合約就會自動執行,提高了交易效率和減少了中介環節。
這些技術的結合使得區塊鏈成為一個安全、透明、去中心化的信息存儲和交換平台,廣泛應用於數字貨幣、供應鏈金融、物聯網、身份認證等多個領域。