科普 一文讀懂零知識證明(一)

2021-10-06 03:22:27 字數 1363 閱讀 4982

一般來講,區塊鏈中的隱私支付涉及的主要有這麼幾個隱私方面的問題:

交易發起者和接收者的隱私:指讓攻擊者通過分析區塊鏈或者分布式賬本上的資訊無法或很難推斷出交易發起者和接收者身份。

交易金額的隱私:指攻擊者通過分析區塊鏈無法獲得具體交易金額的有用資訊。

交易安全性:由於區塊鏈系統是去中心化的,所以需要考慮如何防止雙花攻擊。

現有的各類匿名幣則是為了解決這些問題,採用了多種匿名手段。其中不得不涉及到乙個名詞「零知識證明」。

四種常用匿名手段

1)通道(channels)

交易雙方運用智慧型合約創造了乙個支付通道。其中一方便通過它,向另一方發起執行包含交易的智慧型合約的請求的這樣乙個過程。

2)混合器(mixers)

簡單的說就是將幾個互不相干的交易混合到一起,混淆交易的輸入與輸出,這樣其他人就不知道記錄在區塊鏈上的交易記錄到底哪乙個是輸入,哪乙個是輸出了。不過存在第三方中心化問題,可引入智慧型合約解決。

採用了混合器解決方案之後,還能防止乙個使用者創造過多的賬戶來達到攻擊的目的,原理即為用這種演算法來提供私隱性的保護,使得在混合器解決方案中,使用者和賬戶之間的一致性和有限性得到了保證。

3)環簽名(ring signature)

環簽名是一種特殊的群簽名組成的協議。在其中,你需要證明的是,你擁有著這組群簽名中的任意乙個簽名的簽署權。在這種情況下,你可以告訴別人,這裡有五個簽名,其中有乙個是你自己的簽名。

這樣,你傳送了一段資訊給別人,就能夠通過這組環簽名中專屬於你的簽名來證實你就是你,不可能是別人。但是,你僅能證明你的簽名存在於這組環簽名之中,不能證明確切哪個是你的簽名。

4)零知識證明(zero knowledge proofs)

零知識證明可以看作數字簽名和加密兩種概念的推廣和結合。下文將具體介紹。

零知識證明的定義

零知識證明屬於密碼學範疇。提出時間為20世紀80年代初(2023年)。

分類:零知識證明分為互動零知識證明和非互動零知識證明。

非互動:用乙個短隨機串代替互動過程並實現了零知識證明,非互動零知識證明的乙個重要應用場合是需要執行大量密碼協議的大型網路。

1)只需要證明者給出了證明,後續不需要互動

2)任何人可以驗證是否正確,但不能完全由一方設計

定義:證明者能夠在不向驗證者提供任何有用的資訊的情況下,使驗證者相信某個論斷是正確的。(相當於通過繞圈子的方式證明,中間包含對有用資訊的推導過程)

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

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

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

讀懂區塊鏈 零知識證明(一)

網上有乙個被很多人引用的例子,即 阿里巴巴的零知識證明 可以幫助我們理解 零知識證明 的原理。一天,阿里巴巴被強盜抓住了,強盜向阿里巴巴拷問進入山洞的咒語。面對強盜,阿里巴巴是這麼想的 如果我把咒語告訴了他們,他們就會認為我沒有價值了,就會殺了我省糧食 但如果我死活不說,他們也會認為我沒有價值而殺了...

一文讀懂Nginx

問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...

一文讀懂SpringMVC

主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...