區塊鏈密碼學結合
Ⅰ 區塊鏈中現代密碼學
1983年 - David Chaum描述的盲簽
1997年 - Adam Back發明的HashCash(工作證明制度的一個例子)
2001年 - Ron Rivest,Adi Shamir和Yael Tauman向加密社區提出了環簽名
2004年 - Patrick P. Tsang和Victor K.提出使用環簽名系統進行投票和電子現金;
2008年 - 由Satoshi Nakamoto出版的Bitcoin白皮書
2011年 - 比特幣系統中的匿名分析,Fergal Reid和Martin Harrigan
2012 - 目的地址比特幣匿名(CryptoNote中的一次性地址)。
安全多方計算起源於1982年姚期智的百萬富翁問題。後來Oded Goldreich有比較細致系統的論述。
姚氏百萬富翁問題是由華裔計算機科學家、圖靈獎獲得者姚啟智教授首先提出的。該問題表述為:兩個百萬富翁Alice和Bob想知道他們兩個誰更富有,但他們都不想讓對方知道自己財富的任何信息。該問題有一些實際應用:假設Alice希望向Bob購買一些商品,但她願意支付的最高金額為x元;Bob希望的最低賣出價為y元。Alice和Bob都非常希望知道x與y哪個大。如果x>y,他們都可以開始討價還價;如果z<y,他們就不用浪費口舌。但他們都不想告訴對方自己的出價,以免自己在討價還價中處於不利地位。
該方案用於對兩個數進行比較,以確定哪一個較大。Alice知道一個整數i;Bob知道一個整數j, Alice與B0b希望知道究竟i>=j還是j>i,但都不想讓對方知道自己的數。為簡單起見,假設j與i的范圍為[1,100】。Bob有一個公開密鑰Eb和私有密鑰Db。
安全多方計算(Secure Multi-Party Computation)的研究主要是針對無可信第三方的情況下, 如何安全地計算一個約定函數的問題. 安全多方計算在電子選舉、電子投票、電子拍賣、秘密共享、門限簽名等場景中有著重要的作用。
同態加密(Homomorphic Encryption)是很久以前密碼學界就提出來的一個Open Problem。早在1978年,Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzos就以銀行為應用背景提出了這個概念[RAD78]。對,你沒有看錯,Ron Rivest和Leonard Adleman分別就是著名的RSA演算法中的R和A。
什麼是同態加密?提出第一個構造出全同態加密(Fully Homomorphic Encryption)[Gen09]的Craig Gentry給出的直觀定義最好:A way to delegate processing of your data, without giving away access to it.
這是什麼意思呢?一般的加密方案關注的都是數據存儲安全。即,我要給其他人發個加密的東西,或者要在計算機或者其他伺服器上存一個東西,我要對數據進行加密後在發送或者存儲。沒有密鑰的用戶,不可能從加密結果中得到有關原始數據的任何信息。只有擁有密鑰的用戶才能夠正確解密,得到原始的內容。我們注意到,這個過程中用戶是不能對加密結果做任何操作的,只能進行存儲、傳輸。對加密結果做任何操作,都將會導致錯誤的解密,甚至解密失敗。
同態加密方案最有趣的地方在於,其關注的是數據處理安全。同態加密提供了一種對加密數據進行處理的功能。也就是說,其他人可以對加密數據進行處理,但是處理過程不會泄露任何原始內容。同時,擁有密鑰的用戶對處理過的數據進行解密後,得到的正好是處理後的結果。
有點抽象?我們舉個實際生活中的例子。有個叫Alice的用戶買到了一大塊金子,她想讓工人把這塊金子打造成一個項鏈。但是工人在打造的過程中有可能會偷金子啊,畢竟就是一克金子也值很多錢的說… 因此能不能有一種方法,讓工人可以對金塊進行加工(delegate processing of your data),但是不能得到任何金子(without giving away access to it)?當然有辦法啦,Alice可以這么做:Alice將金子鎖在一個密閉的盒子裡面,這個盒子安裝了一個手套。工人可以帶著這個手套,對盒子內部的金子進行處理。但是盒子是鎖著的,所以工人不僅拿不到金塊,連處理過程中掉下的任何金子都拿不到。加工完成後。Alice拿回這個盒子,把鎖打開,就得到了金子。
這裡面的對應關系是:盒子:加密演算法盒子上的鎖:用戶密鑰將金塊放在盒子裡面並且用鎖鎖上:將數據用同態加密方案進行加密加工:應用同態特性,在無法取得數據的條件下直接對加密結果進行處理開鎖:對結果進行解密,直接得到處理後的結果同態加密哪裡能用?這幾年不是提了個雲計算的概念嘛。同態加密幾乎就是為雲計算而量身打造的!我們考慮下面的情景:一個用戶想要處理一個數據,但是他的計算機計算能力較弱。這個用戶可以使用雲計算的概念,讓雲來幫助他進行處理而得到結果。但是如果直接將數據交給雲,無法保證安全性啊!於是,他可以使用同態加密,然後讓雲來對加密數據進行直接處理,並將處理結果返回給他。這樣一來:用戶向雲服務商付款,得到了處理的結果;雲服務商掙到了費用,並在不知道用戶數據的前提下正確處理了數據;
聚合簽名由Boneh等人提出,主要是通過聚合多個簽名為一個簽名,來提高簽名與驗證的效率。要對多個用戶的數據進行簽名,聚合簽名能夠極大地降低簽名計算復雜度。CL就是聚合簽名。
零知識證明過程有兩個參與方,一方叫證明者,一方叫驗證者。證明者掌握著某個秘密,他想讓驗證者相信他掌握著秘密,但是又不想泄漏這個秘密給驗證者。
雙方按照一個協議,通過一系列交互,最終驗證者會得出一個明確的結論,證明者是或不掌握這個秘密。
對於比特幣的例子,一筆轉帳交易合法與否,其實只要證明三件事:
發送的錢屬於發送交易的人
發送者發送的金額等於接收者收到金額
發送者的錢確實被銷毀了
整個證明過程中,礦工其實並不關心具體花掉了多少錢,發送者具體是誰,接受者具體是誰。礦工只關心系統的錢是不是守恆的。
zcash 就是用這個思路實現了隱私交易。
零知識證明的三條性質對應:
(1)完備性。如果證明方和驗證方都是誠實的,並遵循證明過程的每一步,進行正確的計算,那麼這個證明一定是成功的,驗證方一定能夠接受證明方。
(2)合理性。沒有人能夠假冒證明方,使這個證明成功。
(3)零知識性。證明過程執行完之後,驗證方只獲得了「證明方擁有這個知識」這條信息,而沒有獲得關於這個知識本身的任何一點信息。
只有環成員,沒有管理者,不需要環成員之間的合作,簽名者利用自己的私鑰和集合中其他成員的公鑰就能獨立的進行簽名,不需要其他人的幫助,集合中的其他成員可能不知道自己被包含在了其中。
環簽名可以被用作成一種泄露秘密的方式,例如,可以使用環形簽名來提供來自「白宮高級官員」的匿名簽名,而不會透露哪個官員簽署了該消息。 環簽名適用於此應用程序,因為環簽名的匿名性不能被撤銷,並且因為用於環簽名的組可以被即興創建。
1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)
2)簽名。簽名者用自己的私鑰和任意n個環成員的公鑰為消息m生成簽名a
3)簽名驗證。簽名者根據環簽名和消息m,驗證簽名是否是環中成員所簽。如果有效就接收,如果無效就丟棄。
群簽名的一般流程
盲數字簽名(Blind Signature)簡稱盲簽名——是一種數字簽名的方式,在消息內容被簽名之前,對於簽名者來說消息內容是不可見的。1982年大衛·喬姆首先提出了盲簽名的概念。盲簽名因為具有盲性這一特點,可以有效保護所簽署消息的具體內容,所以在電子商務和電子選舉等領域有著廣泛的應用。
類比例子:對文件簽名就是通過在信封里放一張復寫紙,簽名者在信封上簽名時,他的簽名便透過復寫紙簽到文件上。
所謂盲簽名,就是先將隱蔽的文件放進信封里,而除去盲因子的過程就是打開這個信封,當文件在一個信封中時,任何人不能讀它。對文件簽名就是通過在信封里放一張復寫紙,簽名者在信封上簽名時,他的簽名便透過復寫紙簽到文件上。
一般來說,一個好的盲簽名應該具有以下的性質:
不可偽造性。除了簽名者本人外,任何人都不能以他的名義生成有效的盲簽名。這是一條最基本的性質。
不可抵賴性。簽名者一旦簽署了某個消息,他無法否認自己對消息的簽名。
盲性。簽名者雖然對某個消息進行了簽名,但他不可能得到消息的具體內容。
不可跟蹤性。一旦消息的簽名公開後,簽名者不能確定自己何時簽署的這條消息。
滿足上面幾條性質的盲簽名,被認為是安全的。這四條性質既是我們設計盲簽名所應遵循的標准,又是我們判斷盲簽名性能優劣的根據。
另外,方案的可操作性和實現的效率也是我們設計盲簽名時必須考慮的重要
因素。一個盲簽名的可操作性和實現速度取決於以下幾個方面:
1,密鑰的長度;
2,盲簽名的長度;
3,盲簽名的演算法和驗證演算法。
盲簽名具體步驟
1,接收者首先將待簽數據進行盲變換,把變換後的盲數據發給簽名者。
2,經簽名者簽名後再發給接收者。
3,接收者對簽名再作去盲變換,得出的便是簽名者對原數據的盲簽名。
4,這樣便滿足了條件①。要滿足條件②,必須使簽名者事後看到盲簽名時不能與盲數據聯系起來,這通常是依靠某種協議來實現的。
Ⅱ 區塊鏈的密碼技術有
密碼學技術是區塊鏈技術的核心。區塊鏈的密碼技術有數字簽名演算法和哈希演算法。
數字簽名演算法
數字簽名演算法是數字簽名標準的一個子集,表示了只用作數字簽名的一個特定的公鑰演算法。密鑰運行在由SHA-1產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然後比較結果。縮寫為DSA。
數字簽名是電子簽名的特殊形式。到目前為止,至少已經有 20 多個國家通過法律 認可電子簽名,其中包括歐盟和美國,我國的電子簽名法於 2004 年 8 月 28 日第十屆全 國人民代表大會常務委員會第十一次會議通過。數字簽名在 ISO 7498-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所示,為比特幣從公鑰生成地址的流程。
Ⅲ 區塊鏈應用什麼技術來實現此功能
區塊鏈應用了以下的技術來實現
第一種是共識機制,常用的共識機制主要有PoW、PoS、DPoS、PBFT、PAXOS等。由於區塊鏈系統中沒有一個中心,因此需要有一個預設的規則來指導各方節點在數據處理上達成一致,所有的數據交互都要按照嚴格的規則和共識進行;
第二種是密碼學技術,密碼學技術是區塊鏈的核心技術之一,目前的區塊鏈應用中採用了很多現代密碼學的經典演算法,主要包括:哈希演算法、對稱加密、非對稱加密、數字簽名等。
第三種是分布式存儲,區塊鏈是一種點對點網路上的分布式賬本,每個參與的節點都將獨立完整地存儲寫入區塊數據信息。分布式存儲區別於傳統中心化存儲的優勢主要體現在兩個方面:每個節點上備份數據信息,避免了由於單點故障導致的數據丟失;每個節點上的數據都獨立存儲,有效規避了惡意篡改歷史數據。
智能合約:智能合約允許在沒有第三方的情況下進行可信交易,只要一方達成了協議預先設定的目標,合約將會自動執行交易,這些交易可追蹤且不可逆轉。具有透明可信、自動執行、強制履約的優點。區塊鏈技術有許多獨特的特點,使它成為一項獨特的發明,並賦予它無限的視野去探索。
Ⅳ 一文讀懂,XFS中你必須掌握的密碼與區塊鏈理論術語
人們對於事物的深刻認知,不是像「如何將大象放進冰箱?」那般,只回答「打開冰箱,把大象放進去,關上冰箱」那麼簡單。 任何事物都需要一個抽絲剝繭,化整為零的認知過程。 特別是一個新興的概念和事物,更需要更加細致的了解。
XFS系統是一個分布式文件系統,但它並不是一個單一的框架結構,他 是密碼學、區塊鏈、互聯網等多種技術手段結合的一個有機整體 ,因此,想要更詳細的了解它,我們必須知道一些專業術語的概念。
1.加密網路
加密網路簡單來說就是一個公共區塊鏈。在區塊鏈技術誕生之前,互聯網網路中的數據傳輸其實是沒有任何加密手段的,黑客一旦截取的其中的數據,那麼除非那段數據本身就是密文,否則那些數據就直白地暴露在黑客眼前。
加密網路便是通過區塊鏈技術,由區塊鏈各個節點維護,任何人都可以無需許可加入,更重要的是,整個網路中運轉的數據是加密的。XFS系統便是一個典型的加密網路。
2.哈希演算法
哈希演算法是區塊鏈中用以確保數據完整性和安全性的一個特殊程序。哈希演算法採用的是名為「哈希函數」數學關系,結果輸出被稱為「加密摘要」。加密摘要的特點是任意長度的數據輸入後,返回的都是一個唯一且固定長度的值。
哈希函數具備:
基於這些特性,它在保證加密安全時也被用於防篡改,因為即使對散列函數的數據輸入進行微小更改也會導致完全不同的輸出。這也成為了現代密碼學和區塊鏈的主力。
3.分布式賬本
區塊鏈就是一個分布式賬本,但這個賬本不僅僅可以記錄交易信息,還可以記錄任何數據交互。每個分類帳交易都是一個加密摘要,因此無法在不被檢測到的情況下更改條目。這樣使得區塊鏈使參與者能夠以一種去中心化的方式相互審計。
4.私鑰和公鑰
私鑰和公鑰是區塊鏈通過哈希演算法形成加密後生成的一組用於解密的「鑰匙」。通過對私鑰加密,形成公鑰,此時,原始信息只能通過私鑰進行查看,由用戶自己保存,公鑰就如同一個房屋地址,用於進行數據交互,是可以公開的。反之,如果對公鑰加密,形成私鑰,那麼就會形成不可篡改的數字簽名,因為這個公鑰上的簽名只有私鑰擁有者才能進行創建。
1.節點
節點是一個區塊鏈網路的最基礎建設,也是區塊鏈網路和現實連接的物理設備。單個節點擁有許多的功能,例如緩存數據、驗證信息或將消息轉發到其他節點等。
2.點對點(P2P)網路
區塊鏈所構建的便是去中心化後節點與節點之間的數據交互。傳統的互聯網數據傳輸是一種客戶端—伺服器—客戶端的中心輻射模式。點對點網路則更符合「網」這個詞,在這個網路中,每個節點都在單一通信協議下運行,以在它們之間傳輸數據,避免了因為伺服器單點故障而引發的網路崩潰。
3.共識驗證
區塊鏈的共識驗證解決了大量分散的節點意見不統一的問題,以「少數服從多數」的哲學依據,在區塊鏈網路中,更多的節點認可便意味著「共識」,通常而言,區塊鏈網路中超過51%的節點認可的便會被採用和認可。
4.復制證明和時空證明
這兩個證明在XFS系統中都可以總稱為存儲證明。XFS系統的核心功能之一是數據存儲,因此,為了證明存儲的有效性,便通過復制證明驗證數據是否存在節點存儲空間中,並通過時空證明驗證時間上的持續性。存儲提供方如果在儲存有效期內能持續提交存儲證明,那麼他便會獲得由XFS系統提供的獎勵。
5.冗餘策略和糾刪碼
這是XFS用來平衡數據存儲量的兩個方式。冗餘策略將數據通過多副本的方式備份,確保數據在損壞或丟失後能找回。
糾刪碼則是確保數據在復制、傳輸時不會產生過多備份,節省存儲空間、提高傳輸效率。
6.文件分片協議
XFS將文件切分為N個細小的碎片存儲在節點當中,這些碎片只要有任意 M個碎片即可恢復出數據,這樣只要不同時有 N-M+1 個節點失效就能保證數據完整不丟失。
7.智能合約
XFS中的智能合約是一段程序代碼,由於是基於區塊鏈生成的,因此同樣繼承了區塊鏈不可篡改、可追溯等特點,它能保證雙方執行結果的確定性,這也使得XFS網路中的數據交互變得更加可信。
8.Dapp
即去中心化APP,同普通的APP一樣具備更加方便快捷的網路接入埠,唯一不同的便是它拋棄了傳統APP中心化的特點,這使得Dapp中的數據是歸屬於用戶自身,不用擔心隱私泄露、大數據殺熟等問題。
XFS系統是一個開放性平台,用戶可以自由的在其中使用、設計、創作各種Dapp。
結語
關於XFS中的理論術語基於篇幅原因是很難詳細展開細講的,這其中涉及到了更多的互聯網和區塊鏈專業知識。但通過上面這些簡單的解釋,相信大家對XFS系統也有了一個比較立體的認知,那麼,我們便期待打破傳統中心化存儲弊端,開船全新存儲時代的XFS新一代分布式文件系統吧。
Ⅳ 通俗解釋區塊鏈是什麼
區塊鏈本質上是一個去中心化的分布式賬本資料庫。區塊鏈使用密碼學相關聯的演算法產生數據塊,而每一個數據塊上就記載了多次比特幣網路交易確認的信息。
簡單的來說,區塊鏈就像是賬本,構如逗成區塊鏈的每一個區皮胡塊就是賬本的每一頁。交易的細節都被記錄在一個網路里任何燃橡攔人都可以看得到的公開賬簿上。
區塊鏈通過密碼學的方式來保證已有數據不可被篡改,這個部分的核心有兩點:密碼學哈希數值和非對稱加密。
Ⅵ 區塊鏈技術原理與應用 介紹一下
1、區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了過去十分鍾內所有比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。是比特幣的底層技術,像一個資料庫賬本,記載所有的交易記錄。
2、廣義定義:利用加密鏈式結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用自動化腳本代碼(智能合約)來變成和操作數據的一種全新的去中心化基礎架構與分布式計算範式。
3、狹義定義:按照時間順序將數據區塊以鏈條的方式組合成特定數據結構,並以密碼學方式保證的不可篡改和不可偽造的去中心化共享賬戶。
4、區塊鏈的特點:去中心化:區塊鏈數據的驗證、記賬、存儲、維護和傳輸等過程均是基於分布式系統機構,採用純數學方法而不是中心結構來建立分布式節點間的信任關系,從而形成去中心化的可信任的分布式系統。
5、時序數據:區塊鏈採用帶有時間戳的鏈式區塊結構存儲數據,從而為數據增加了時間維度,具有極強的可驗證性和可追溯性。
6、集體維護:區塊鏈系統採用特定的經濟激勵機制來保證分布式系統中所以節點均可參與數據區塊的驗證過程,並通過共識演算法來選擇特定的節點將新區快添加到區塊鏈。
7、可編程:區塊鏈技術提供靈活的腳本代碼系統,支持用戶創建高級的智能合約、貨幣或其他去中心化應用。
8、安全可信:區塊鏈技術採用非對稱密碼原理對數據進行加密,同時藉助分布式系統各節點的工作量證明等共識演算法形成的強大算力來抵禦外部攻擊、保證區塊鏈數據不可篡改和不可偽造,因而具有較高的安全性。
9、區塊鏈應用場景:數字貨幣:以比特幣為代表,本質上是由分布式網路系統生成的數字貨幣,其發行過程不依賴特定的中心化機構。
Ⅶ 如何學習區塊鏈技術_如何理解區塊鏈技術
1、技術語言
Python和Go這兩門語言是眾多公司招聘都提到的技術語言。需要優先學習。而且這兩種語言在區塊鏈之外的滑拆技術方向也有很大的應用。比如Go用在大並發系統的後台構築,Python用於人工智慧系統構築。所以學習這兩門語言是優先考慮的問題。
2、技術框架
掌握Bitcoin、ETH和Hyperledger的一種或多種。BTC就不用說了,底層是C寫的,大量的貨幣類項目,如萊特幣,dash,門羅,zcash等都使用比特幣的技術進行二次開發。
ETH則是區塊鏈2.0的代表,可以在ETH網路上構建各種各樣的應用類Dapp。現在大量的應用類區塊鏈項目都是使用ETH平台開發的。
Hyperledgerfabric則是IBM力推的區塊鏈開發平台,主要用於聯盟鏈的開發,是目前普及度最高的聯盟鏈開發平台。
3、演算法
POW(工作量證明演算法),POS(權益證明演算法),PBFT(拜占庭容錯演算法)等都是區塊鏈中密碼學部分的重要組成,對於這些演算法有充分的了解,有利於你參加區塊鏈項目底層開發時能夠對密碼學的部分有更好的理解。
(7)區塊鏈密碼學結合擴展閱讀:
區塊鏈技術就是一種分布式記賬技術,它的特點就啟讓汪是去中心化、公開透明,讓每個人都可以參與資料庫建立,而且每個建立的數據又是不可篡改的,大家都參與了,陌生人之間的信任問題也就解決了。
區塊鏈技術出現了,它是個悄仔全民參與的記賬技術,AB之間的交易信息和數據公布於眾,而且是不可篡改的,大家都知道有這個事情的發生,那麼這里就不需要什麼權威的第三方C了,或者說系統里的每一個都是充當了C的角色,這也叫做去中心化。