【開發智能合約 - 密碼學系列】零知識證明Ep.1 - 益智又有趣的機制

2023/06/30閱讀時間約 4 分鐘

什麼是零知識證明(Zero-knowledge proof)

是一種密碼學的概念,用於在不揭示具體信息的情況下,證明某個主張的正確性。它允許一方(稱為證明者)向另一方(稱為驗證者)證明某個陳述的真實性,而無需透露任何關於陳述的具體細節..., 這根本文字天書啊,底下讓我們用白話文來說一下唄!
「我必須向你證實我是誰,但我又不能直接告訴你我是誰...」、「傳統的證明與零知識證明,兩者都在證明一件事情,但過程卻很不一樣...」。
這些邏輯就是在詮釋零知識證明(Zero-knowledge proof)。
甚至我們之前介紹的「【認證與授權】曇花一現的OTP如何保護我們的資產」當我們收到驗證碼之後,系統根據這組驗證碼間接的識別了身分,這也是零知識驗證概念中的一種案例。
其實零知識證明早在密碼學就已經存在的一種技術,隨著區塊鏈的發展熱度而被關注,加上區塊鏈的特性,這項技術正好補足這一塊。

運作流程

經典的色盲遊戲

假設有一個色盲遊戲,其中遊戲主持人選擇一個顏色,然後玩家需要通過提問來猜測該顏色是什麼,玩家可以問主持人關於顏色的特性,例如:這個顏色是紅色的嗎?這個顏色比另一個顏色深嗎?...等問題。
這裡就可以應用零知識證明的概念。假設主持人知道答案是紅色,但玩家是色盲的,無法正確識別顏色。主持人可以使用零知識證明來證明自己確實知道答案是紅色,而不需要直接告訴玩家答案。
在這種情況下,主持人可以使用零知識證明的協議,例如zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge),通過生成證明來向玩家展示自己知道答案是紅色的事實,而不洩露任何有關答案的具體信息。
這樣,主持人可以在不揭示答案的情況下,向玩家證明自己確實知道答案是紅色,同時玩家也可以驗證主持人的證明的有效性,確信主持人並非瞎猜。
這個例子展示了零知識證明如何應用於一個經典的色盲遊戲,以證明一個事實而不揭示具體細節,從而保護隱私並確保證明的可靠性。

什麼樣的特性推進「區塊鏈」呢?

隱私性

在Web3.0的發展之下,零知識證明帶來了隱私性的特點,如果我們擁有某個數字資產但我們又不想暴露我們擁有什麼,此時就能夠用到零知識的技術,在不透漏重要關鍵訊息的前提下證明我們對資產的所有權。

擴展性

擴展性也是很重要的一環,當區塊鏈進行擴容時需要成千上萬臺機器重複進行計算工作,以達成共識協議,我們可以將一些計算工作交給零知識證明,在區塊鏈網路外部完成,而區塊鏈本身只負責共識與安全,大幅度降低了區塊鏈網路的成本,

有什麼缺陷?

● 計算量大:生成和驗證零知識證明需要大量計算,可能導致效能問題。
● 可信度問題:證明的可信度依賴於使用的庫或協議的正確性和安全性。
● 隨機性需求:某些協議需要可靠的隨機性,若不符合要求可能影響安全性。
● 特定假設限制:某些協議基於特定數學假設,若假設被破解,可能影響證明的可靠性。
● 隱私風險:在設計和實現過程中,可能存在隱私泄露的風險。
● 限制應用場景:某些場景下,證明過程可能過於耗時,限制了實用性。

結語

會介紹零知識證明主要是為了奠定未來的區塊鏈與AI訓練的基礎, 這些皆包含零知識驗證的影子, Zero-Shot Learning、Zero-Shot Classification…等興起的模型訓練方法皆提倡零知識的基礎下可以適應各個領域。
原來密碼學是如此有趣的一門章節,很多概念其實都出現在我們生活周遭,包括益智遊戲、桌遊...都可能包含密碼學的影子,甚至到了區塊鏈更是離不開它,如果我們能夠更懂它,相信除了開發軟體之外,也能帶來生活上的一些啟發,進而發展出另類的創新想法。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!
為什麼會看到廣告
91會員
260內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!