布隆過濾器、同態加密、PKI體系……一文告訴你密碼學在區塊鏈中能做什麼!

買賣虛擬貨幣

來源 | CSDN部落格

作者 | 孫啟超

整理 | Carol

出品 | 區塊鏈大本營(blockchain_camp)

密碼學是區塊鏈技術的核心。所有交易資訊都被編碼進區塊當中,而這些區塊連線在一起則形成區塊鏈結構。

隨著計算機時代的到來,密碼學躍升到了一個新的高度。那麼,密碼學在區塊鏈當中又能做些什麼、發揮什麼作用呢?今天我們就來聊一聊這個話題。

本篇會講述密碼學在區塊鏈中的具體的使用,從而理解為什麼區塊鏈可以防止訊息被篡改、怎麼進行數字身份認證。比特幣中是如何透過多重簽名實現多個人共同管理某個賬戶的比特幣交易。

布隆過濾器

布隆過濾器是一種基於 Hash 的高效查詢結構,能夠快速判斷某個元素是否在一個集合內。

首先回顧一下基於Hash的快速查詢,由於Hash演算法具有一一對應的特點,即一個內容對應一個Hash值,而Hash值最終是可以轉化為二進位制編碼,這就天然的構成了一個 “ 內容 - 索引 ” 的一個結構。

假如給定一個內容和儲存陣列,透過構造Hash函式,使Hash值總量不超過陣列的大小,就可以實現快速的基於內容的查詢。如 “演算法改變人生” 的 Hash 值如果是 “1000”,則存放到陣列的第 1000 個單元上去。如果需要快速查詢任意內容,如 “演算法改變人生” 字串是否在儲存系統中,只需要計算 Hash 值,並用 Hash 值檢視系統中對應元素即可。

布隆過濾器採用了多個 Hash 函式來提高空間利用率。對同一個給定輸入來說,多個 Hash 函式計算出多個地址,分別在對應的這些地址上標記為 1。進行查詢時,進行同樣的計算過程,並檢視對應元素,如果都為 1,則說明較大概率是存在該輸入。

布隆過濾器相對單個 Hash 演算法查詢,大大提高了空間利用率,可以使用較少的空間來表示較大集合的存在關係。上面講的Hash查詢和布隆過濾器,基本思想都是基於內容的編址。

布隆過濾器示例圖(僅供參考)

同態加密

同態加密可以對密文直接進行處理,跟對明文進行處理後再對處理結果加密,得到的結果相同。同態加密可以保證實現處理者無法訪問到資料自身的資訊。

什麼是同態呢?它來自代數領域,包括四種型別:加法同態、乘法同態、減法同態和除法同態。同時滿足加法同態和乘法同態,則意味著是代數同態,即全同態。同時滿足四種同態性,則被稱為算數同態。

在計算機中如果實現了全同態意味著對於所有處理都可以實現同態性。只能實現部分特定操作的同態性,被稱為特定同態。

區塊鏈中的應用:使用同態加密技術,執行在區塊鏈上的智慧合約可以處理密文,而無法獲知真實資料,極大的提高了隱私安全性。

雖然同態加密的優勢很明顯,並且已經實現,但是存在的問題就是需要較高的計算時間或儲存成本,相比傳統加密演算法的效能和強度還有差距。所以困難與機會同在,誰解決了這些困難,誰就把握住了這個機會。

同態加密示例圖(僅供參考)

數字簽名

數字簽名可以證實某數字內容的完整性和確認其來源,也就是不可抵賴性。理論上所有的非對稱加密演算法都可以用來實現數字簽名,常用演算法包括 DSA(Digital Signature Algorithm,基於 ElGamal 演算法)和 ECSDA(Elliptic Curve Digital Signature Algorithm,基於橢圓曲線演算法)等。針對一些特定的安全需求,產生了一些特殊數字簽名技術:

盲簽名:簽名者需要在無法看到原始內容的前提下對資訊進行簽名。實現對所簽名內容的保護,防止簽名者看到原始內容;同時實現防止追蹤,簽名者無法將簽名內容和簽名結果進行對應。

多重簽名:當 x 個簽名者中,收集到至少 y 個(x >= y >= 1)的簽名,即認為合法。x 是提供的公鑰個數,y 是需要匹配公鑰的最少的簽名個數。它可以有效地被應用在多人投票共同決策的場景中。比特幣交易中就支援多重簽名,可以實現多個人共同管理某個賬戶的比特幣交易。

群簽名:群組內某一個成員可以代表群組進行匿名簽名。簽名可以驗證來自於該群組,卻無法準確追蹤到簽名的是哪個成員。同樣存在一些問題,就是群簽名需要存在一個群管理員來新增新的群成員,因此存在群管理員可能追蹤到簽名成員身份的風險。

環簽名:簽名者首先選定一個包括簽名者自身的臨時簽名者集合。用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的其他成員可能並不知道自己被包含在最終的簽名中。環簽名的主要用途在保護匿名性,屬於一種簡化的群簽名。

數字證書

數字證書分為兩類:

  • 加密數字證書:用於保護用於加密用途的公鑰。

  • 簽名驗證數字證書:保護用於簽名用途的公鑰。

兩種型別的公鑰也可以同時放在同一證書中。同時證書需要由證書認證機構CA來進行簽發和背書。權威的商業證書認證機構包括 DigiCert、GlobalSign等。使用者也可以自行搭建CA 系統,在私有網路中進行使用。

一個數字證書內容可能包括證書域(證書的版本、序列號、簽名演算法型別、簽發者資訊、有效期、被簽發主體、簽發的公開金鑰)、CA 對證書的簽名演算法和簽名值等。證書的頒發者還需要對證書內容利用自己的私鑰進行簽名,以防止他人篡改證書內容。

PKI體系

PKI的全稱是Public Key Infrastructure公鑰基礎設施,是建立在公私鑰基礎上實現安全可靠傳遞訊息和身份確認的一個通用框架。包含3個核心元件:

  1. CA:全稱Certification Authority,負責證書的頒發和吊銷,接收來自 RA 的請求。

  2. RA:全稱Registration Authority,對使用者身份進行驗證,校驗資料合法性,負責登記,稽覈過了就發給 CA;

  3. 證書資料庫:存放證書,多采用 X.500 系列標準格式。可以配合LDAP 目錄服務管理使用者資訊。

CA 是最核心的元件,負責完成對證書資訊的維護。通常的操作流程為:

使用者透過 RA 登記申請證書,提供身份和認證資訊等 → CA 稽覈後完成證書的製造,頒發給使用者 → 使用者如果需要撤銷證書則需要再次向 CA 發出申請。

總結

回顧下本文,我們主要講解了密碼學中的一些核心問題和經典演算法。相信讀者已經對現代密碼學的發展狀況和關鍵技術有了初步瞭解。

掌握這些知識,對於理解區塊鏈系統如何實現隱私保護和安全防護很有幫助。現代密碼學安全技術在設計上基於專業的現代數學知識,如果想深入學習其原理,則需要更深入的學習現代的數學科學,尤其是數論、抽象代數。

區塊鏈和密碼學是相互促進發展的一個過程,區塊鏈中大量使用了密碼學的知識;同樣的,為了滿足區塊鏈的不同場景,也反向促進了密碼學的進一步發展。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;