国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

零知識證明講解

W_BinaryTree / 3616人閱讀

摘要:零知識證明系統包括兩部分宣稱某一命題為真的示證者和確認該命題確實為真的驗證者。零知識證明系統也叫做最小泄露證明系統。基于此衍生了集中知名的隱私幣,其中零知識證明起到了非常大的作用。下面我們來介紹幾種采用了零知識證明的區塊鏈系統。

微信:wuqiong_blockchain      

本文發表在BFTF,請跳轉鏈接: 一文讀懂區塊鏈中的零知識證明

本文被選為星球日報頭條,請跳轉鏈接: 一文讀懂區塊鏈中的零知識證明

零知識證明是一種基于概率的驗證方式,驗證的內容包括“事實類陳述”和“關于個人知識的陳述”。驗證者基于一定的隨機性向證明者提出問題,如果都能給出正確回答,則說明證明者大概率擁有他所聲稱的“知識”。零知識證明系統包括兩部分:宣稱某一命題為真的示證者(prover)和確認該命題確實為真的驗證者(verifier)。證明是通過這兩部分之間的交互來執行的。在零知識協議的結尾,驗證者只有當命題為真時才會確認。但是,如果示證者宣稱一個錯誤的命題,那么驗證者完全可能發現這個錯誤。

這里我們給出一個有關零知識證明的非常經典的例子,來幫助大家理解:

阿里巴巴被強盜抓住,為了保命,他需要向強盜證明自己擁有打開石門的口令,
同時又不能把密碼告訴強盜。他想出一個解決辦法,先讓強盜離開自己一箭之地,
距離足夠遠讓強盜無法聽到口令,足夠近讓阿里巴巴無法在強盜的弓箭下逃生。
如果強盜舉起左手,阿里巴巴就使用口令將石門打開,如果舉起右手,就將石門關閉。
阿里巴巴就在這個距離下向強盜展示了石門的打開和關閉。如果每次都能正
確打開和關閉大門,則證實阿里巴巴確實知道石門的密碼。

這個整個過程就是零知識證明,即證明者能夠在不向驗證者提供任何有用信息(石門的口令)的情況下,使驗證者相信某個論斷(阿里巴巴知道打開石門的方法)是正確的。

由此我們可以總結出零知識證明的三個屬性:

1、如果語句為真,誠實的驗證者(即:正確遵循協議的驗證者)將由誠實的證明者確信這一事實。

2、如果語句為假,不排除有概率欺騙者可以說服誠實的驗證者它是真的。

3、如果語句為真,證明者的目的就是向驗證者證明并使驗證者相信自己知道或擁有某一消息,而在證明過程中不可向驗證者泄漏任何有關被證明消息的內容。

零知識證明系統也叫做最小泄露證明系統。

中本聰創造性的提出了比特幣并且構建了一個去中心化的交易平臺,從而去除了長久以來對第三方交易平臺的信任依賴,但是與此同時,比特幣又需要將所有的交易廣播到網絡上并通過所有節點達成共識來保證整個系統的安全性,也就是說所有的人都可以看到網絡上所有的交易,而原始的比特幣協議又并沒有對交易發送者和接收者的地址作任何處理,這就導致某些細心的攻擊者通過分析一個地址的交易特征并結合一些實際信息,就有可能分析出地址與實際人的對應關系,從而給使用者的隱私帶來極大的隱患。基于此衍生了集中知名的隱私幣,其中零知識證明起到了非常大的作用。

下面我們來介紹幾種采用了零知識證明的區塊鏈系統。

ZCash

ZCash作為匿名加密貨幣項目,一開始只是作為比特幣的加密匿名層存在,后來因為其優秀的隱私性成為獨立的加密貨幣。與比特幣一樣,ZCash的總量也是2100萬,不同的是它可以實現真正意義上的匿名——各位甚至都不用知道對方有多少錢就能完成交易。

為什么ZCash如何實現真正的匿名和保護隱私?

利用了zk-SNARK技術,也即零知識證明的技術:即使貨幣的來源與流向信息完全保密,零知識證明技術仍然可以驗證花錢的用戶確實擁有貨幣。

公共區塊鏈:ZCash使用公共區塊鏈用于交易的展示,但是它會自動屏蔽掉交易的金額,貨幣的持有者可以通過查看密鑰來觀察相關聯的信息。

在使用ZCash數字貨幣進行交易時,它會自動加密交易的原數據;同時交易個體并不需要ZCash節點來保存數據,只需要zk-SNARK來證明其“消費能力”。這主要體現在交易過程中的兩點,一可以讓別人在不知道具體交易內容的情況下驗證交易(或者是智能合約函數調用)的有效性,二交易的詳情也可以在公共區塊鏈上消除掉。

這樣交易雙方似乎從來沒出現,而實際交易已經完成了。作為吃瓜群眾只知道有交易發生了,但也無法對貨幣流向進行跟蹤。這樣便實現了真正的“匿名交易”。

zk-SNARK中的技術實現

同態隱藏

同態隱藏可以一定程度上實現零知識證明。

舉例:

A擁有x和y兩個秘密的數字,需要向B證明這兩個數字的和是7,只需要執行下面三個步驟:

1.A計算f(x),f(y),并發送給B
2.因為函數f(x)滿足加法同態,B可以通過f(x),f(y)計算f(x+y)
3.B獨立計算f(7),并驗證f(x+y)=f(7)

多項式盲驗證

多項式盲驗證,即將加法同態的特性利用到多項式中。(此處數學概念比較強,可以只做淺顯了解)

假定A知道一個最高d次的多項式P,而B想要知道對應某個s的E(P(s)):

我們希望在驗證的過程中,A只知道P,不知道s,B只知道s,不知道P,可以通過下面方式實現:

1.對s的每個指數,B計算E(1),E(s),...,E(sd),并發送給A
2.A知道多項式的所有系數,可以利用同態特性計算P(s),并回送給B

KCA(Knowledge of Coefficient Test and Assumption)以及完整的多項式盲驗證

上面提供的多項式盲驗證方式有一個致命的問題,就是B根本沒法驗證A是真正利用多項式P(s)去計算結果,也就是說無法證明A真正知道這個多項式P(X)。KCA繼續完善了上面的驗證。

。。。。。此處省略三千字數學算法講解。。。。。。。

總之:

通過加法同態,我們可以實現加法隱藏,讓B在不知道x和y的情況下,
校驗x+y的值。進一步,通過多項式盲驗證,我們可以在不暴露多項
式P(X)的情況下,讓B校驗任意給定s對應的P(s)。

任意計算轉換到多項式證明

從多項式推廣到任意計算的盲驗證。最終我們把原算式的證明轉化成為多項式的證明,只要證明多項式,即可驗證原算式。

匹諾曹協議

最后一步的驗證流程。

門羅幣

門羅幣(Monero)作為目前加密數字貨幣中代表性的一種,在保證交易的隱私性方面應用著極其巧妙的密碼學技術。

門羅幣的兩個屬性

不可鏈接性(Unlinkability):無法證明兩個交易是發送給同一個人的,也就是無法知道交易的接收者是誰。

不可追蹤性(Untraceability):無法知道交易的發送者是誰。

門羅幣的技術實現

Stealth Addresses (隱蔽地址)

在門羅幣中,每次發送者要發起一筆交易時,先利用接收者的公鑰信息計算出一個一次性臨時中間地址,然后將金額發送到這個中間地址,接收者再利用自己的公私鑰信息找到那筆交易,從而進行花費,這樣網絡上其他的用戶包括礦工等就無法確定中間地址到底屬于誰的,但依然可以驗證交易的有效性,而由于這個地址又是一次性的,每次都重新隨機產生的,攻擊者也就無法對真實的發送者接收者作任何關聯。

假設Alice想給Bob轉一筆賬,對于Bob來說壓力是非常大的,因為他需要掃描區塊鏈上的所有的交易,然后計算相應的信息進行對比才能找到發給自己的交易。門羅幣為此提出了一個改進的方案,就是Bob可以將他私鑰的一半(a,B)交給一個第三方,從而授權第三方來幫忙檢查區塊鏈上所有屬于Bob的交易,也就減輕了Bob的壓力,但最終還是只有Bob能花費。

2.One-time Ring Signature (一次性環簽名)

簡而言之,環簽名要做的就是將簽名者的公鑰和另外一個公鑰集合(但不知道私鑰)進行混合,然后再對消息進行簽名,這樣對于簽名驗證者(任何人都可以驗證)來說,無法區分混合后集合中哪一個公鑰對應的是真正的簽名者。

下面主要介紹一下門羅幣中采用的環簽名技術的整個流程:

第一步,密鑰生成(GEN)
簽名者首先隨機選擇一個私鑰x,然后計算對應的公鑰。同時還計算另外一個公鑰。這個公鑰I稱之為“密鑰鏡像”(key image),對于每一個簽名來說這個密鑰鏡像是唯一的,所以后面也被用來判斷簽名是否之前出現過。

第二步,簽名(SIG)
首先簽名者隨機選擇一個包含n個元素的公鑰集合,然后和自己的公鑰進行混合產生混合后的集合S,假設混合后簽名者的公鑰在S中的下標為s,那么他的公鑰就是Ps。然后簽名者再從[1,l-1]中隨機選擇{qi, i = 0,...,n}和{wi, i=0,...,n,i!=s},然后再計算一個非交互式的挑戰(non-interactive challenge)。
這里非交互式是相對與交互式零知識證明中的挑戰而言的,在交互式中這個挑戰是驗證者隨機選取的一個值,而因為在區塊鏈中交易雙方只能通過區塊鏈來進行傳遞信息,而不能直接進行交互,所以這里選擇非交互式零知識證明。而需要這個挑戰的原因是避免證明者偽造證據來欺騙驗證者的情況出現。

第三部,簽名驗證(VER)
驗證者要驗證簽名的有效性,首先計算然后驗證。如果等式成立,然后運行LNK來驗證簽名是否使用過;如果等式不成立,說明簽名是非法的。

第四步,重復校驗(LNK)
這要求系統必須維護一個包含所有簽名的鏡像的集合,然后對于每一個新的簽名,通過判斷它的鏡像是否在集合中,來判斷該簽名是否之前出現過。注意在這一步之前,先要通過上一步的簽名驗證過程。


門羅幣通過隱蔽地址來保證不可鏈接性,通過環簽名來保證不可追蹤性,從而給用戶的交易信息提供了很好的隱私性。但同時我們也可以發現,在隱蔽地址時獲取incoming transaction方面給用戶帶來很大的壓力,而且公私鑰的長度也變為了原來的兩倍,環簽名時對于混淆公鑰的選擇要保證一定的隨機性,簽名的產生和驗證過程復雜度都明顯增加了,這些都是需要改進的地方。

去年12月,門羅團隊宣布在協議中整合Bulletproofs機制。門羅團隊表示,部署這項技術能夠減少80%的交易容量,后續還將降低80%的交易費用,整體上能夠提供“更大的存儲空間、更合理的驗證時間以及更低的費用”。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/24290.html

相關文章

  • 詳細講解知識證明 之 ZCash 完整的匿名交易流程

    摘要:存儲所有經過不可逆函數后生成的值列表存儲的是已經被消費的中的隨機數生成的值。為和分別生成隨機數和將的公鑰設置到里面去,代表收款人是。至此,的匿名交易流程形成了閉環。在這里應用到了零知識證明,它的代碼是根據理論完成的,同時也參考了。 作者:林冠宏 / 指尖下的幽靈 掘金:juejin.im/user/587f0d… 博客:www.cnblogs.com/linguanh/ GitH...

    niceforbear 評論0 收藏0
  • 用Python從開始創建區塊鏈

    摘要:設變量,求的值用實現如下未知結果是因為在比特幣中,使用稱為的工作量證明算法,它和上面的問題很類似。礦工們為了爭奪創建區塊的權利而爭相計算結果。通常,計算難度與目標字符串需要滿足的特定字符的數量成正比,礦工算出結果后,會獲得比特幣獎勵。 本文主要內容翻譯自Learn Blockchains by Building One ?本文原始鏈接,轉載請注明出處。 作者認為最快的學習區塊鏈的方式是...

    Anleb 評論0 收藏0
  • 用Python從開始創建區塊鏈

    摘要:設變量,求的值用實現如下未知結果是因為在比特幣中,使用稱為的工作量證明算法,它和上面的問題很類似。礦工們為了爭奪創建區塊的權利而爭相計算結果。通常,計算難度與目標字符串需要滿足的特定字符的數量成正比,礦工算出結果后,會獲得比特幣獎勵。 本文主要內容翻譯自Learn Blockchains by Building One ?本文原始鏈接,轉載請注明出處。 作者認為最快的學習區塊鏈的方式是...

    鄒立鵬 評論0 收藏0
  • 區塊鏈學習之密碼學安全技術(五)

    摘要:非對稱加密算法的安全性往往需要基于數學問題來保障,目前主要有基于大數質因子分解離散對數橢圓曲線等經典數學難題進行保護。消息認證碼基于對稱加密,可以用于對消息完整性進行保護。 Hash 算法與數字摘要 Hash (哈希或散列)算法它能將任意長度的二進制明文串映射為較短的(通常是固定長度的)二進制串(Hash值),并且不同的明文很難映射為相同的Hash值。 Hash 定義 Hash (哈希...

    aboutU 評論0 收藏0

發表評論

0條評論

W_BinaryTree

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<