什麼是零知識證明 (Zero Knowledge Proof)?
什麼是零知識證明 (Zero Knowledge Proof)?
零知識證明可以讓一方 (證明方) 在不透露任何實際資訊的情況下向另一方 (驗證方) 證明某保密資訊或宣告是真的。
術語 “零知識“ 本身就表明了不需要揭露任何資訊,證明方就可以向驗證方證實 ta 所知道的保密資訊以及 ta 的宣告都是真的。
那為什麼需要零知識證明呢?當我們不想披露任何資訊,但需要說服其他人相信我們知道的保密資訊和提出的宣告是真的時候。
目前有兩種零知識證明:
1.互動式的 (Interactive)
2.非互動式的 (Non Interactive)
舉例說明互動式的零知識證明
假設你需要通過 ZKP (零知識證明) 證明你的年齡大於或等於18歲,但不揭露具體年齡。我們需要第三方機構為你的年齡擔保,具體如下:
第三方說:”已接收您出生證明的影印件,我們已經得知您的年齡為 21 歲。現在為您提供一串數字密碼,請將它儲存到保密與安全的地方。稍後您會用到它。“
”你持有的那串數字密碼將會被雜湊演算法處理 22 次,然後得出一個最終年齡雜湊程式碼給你 (沒錯,處理次數必須為年齡 +1,才能使得整個操作行得通)。也就是說,你拿到那串數字密碼之後,會有 22 次雜湊處理過程才能獲得最終的年齡雜湊程式碼。“
“我們將您的姓名、時間戳與最終年齡雜湊程式碼一起打包。這個證明包將提供給他人驗證。“
好了,那麼當你想要向其他人證明你的年齡超過 18 歲時,你只需要證明從你拿到數字密碼到最終年齡雜湊程式碼之間的雜湊演算法處理次數大於 18 就可以了。
那麼怎麼證明呢?你只需要向他人展示最後的 18 次雜湊演算法處理記錄。你需要自己進行前 4 次雜湊演算法處理 (對數字密碼進行雜湊演算法處理 4 次),然後將結果提供給其他人:第四次雜湊值。
他們會對第四次雜湊值再處理18次 (現在對你的數字密碼總共進行了 22 次雜湊演算法處理),最終他們能夠得出最終年齡雜湊程式碼並且使用證明包對它進行驗證。
實際上,驗證者是在說:"傳送我們一個值,我們會對其進行 18 次雜湊演算法處理,然後這個雜湊值將與你提供的年齡雜湊程式碼進行對比。" 如果你低於18歲,最終年齡雜湊程式碼的雜湊演算法處理次數就沒有18次,我們對你提供的那個初始雜湊值進行 18 次雜湊演算法處理後,就會與最終年齡雜湊程式碼不一樣。
但是這種互動式方法有一些侷限:
1.每次驗證都需要進行整個冗長的過程。而上述例子只是簡單的雜湊演算法處理,想象一下如果需要對實際加密演算法進行計算會如何。
2.證明方與驗證方都需要同時在場,不管是線上還是面對面。
接下來是非互動式的零知識證明
1986 年,Fiat 與 Shamir 發明了 Fiat-Shamir heuristic (啟發式) 演算法,這是第一個基於互動式零知識證明來構建數字簽名的演算法。
Fiat-Shamir heuristic 演算法通過使用承諾方案 (Commitment Scheme) 可變為非互動式零知識證明。這就是所謂的 ZK-SNARKs,也可以稱為簡潔的非互動式零知識證明 (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)。
要使 Fiat-Shamir Heuristic 演算法更加強大,需要使用承諾 (commitment)。承諾方案在許多IC外匯icmarketsvip.com加密協議中都是基本組成部分。承諾方案允許承諾者釋出一個值 (即承諾),然後將它們繫結到某訊息上而不披露它們 (隱藏)。
Pederson 承諾與 Polynomial 承諾是 ZK 證明使用的兩個最著名承諾方案。
但大約到 2013 年,ZK-SNARKs 才實際可行和實現,並真正用於應用中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995368/viewspace-2869223/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 初識零知識證明
- 共識機制proof of efficiency(PoE)是什麼?
- 帶你走進零知識證明
- [譯]零知識證明: an illustrated primer
- 什麼是知識
- 零知識證明的最新發展和應用
- 零知識證明: Tornado Cash 專案學習
- 零知識證明初見
- 詳細講解:零知識證明 之 zk-SNARK 開篇
- 零知識證明在隱私保護和身份驗證中的應用
- 【知識分享】伺服器證書是什麼有哪些型別伺服器型別
- 詳細講解:零知識證明 之 ZCash 完整的匿名交易流程
- 零知識證明與同態加密:隱私計算的雙劍加密
- 研發知識:MDD、MDF是什麼?
- 區塊鏈交易隱私如何保證?華為零知識證明技術實戰解析區塊鏈
- 【知識分享】伺服器cdn是什麼有什麼功能伺服器
- 【知識分享】代理伺服器是什麼有什麼用伺服器
- 【知識分享】asp伺服器是什麼有什麼用途伺服器
- Token的驗證原理是什麼?網路安全網路協議知識點協議
- 【知識分享】安全漏洞掃描是什麼有什麼功能
- 【知識分享】網路伺服器是什麼有什麼作用伺服器
- 【知識分享】DHCP伺服器是什麼有什麼優勢伺服器
- 【知識分享】什麼是伺服器租用需要注意什麼伺服器
- 【知識分享】web伺服器是什麼有什麼特點Web伺服器
- 【知識分享】什麼是IT運維管理服務運維
- 【IT運維小知識】安全組是什麼意思?運維
- 【知識分享】什麼是終端伺服器伺服器
- 【隱私計算筆談】MPC系列專題(六):零知識證明和位元承諾
- 區塊鏈新演算法:人類證明(Proof of Human:PoH) - santisiri區塊鏈演算法
- 【Python小知識】什麼是HTTP和HTTPS?有什麼不同?PythonHTTP
- 知識圖譜Knowledge Graph構建與應用
- ssl證書是由什麼組成?ssl證書是什麼?
- 前端基礎知識之什麼是節點Node?前端
- 【知識分享】伺服器是幹什麼用的伺服器
- OCP知識點講解 之 什麼是Buffer Cache?
- 產品經理的知識結構是什麼
- 【雲端計算小知識】什麼是雲端計算?雲端計算特點是什麼?
- 【知識分享】什麼是獨立ip伺服器有什麼優勢伺服器