NuLink的零知識證明介紹
作者簡介:
作為NuLink Technology的研究員亚铁,Rookie是一位激情的創(chuàng)新者,他專注于密碼學和區(qū)塊鏈技術吞琐。
翻譯:
Reversing
作為NuLink項目的高級研究員,我一直致力于密碼學和隱私保護的研究黍图。多年來奴烙,這個領域一直有一個有趣的話題切诀,那就是ZKP(Zero Knowledge Proof,零知識證明)丰滑。最近它在社區(qū)中引起了很多關注翘单,因為有很多有趣的場景可以討論哄芜。例如,Zcash(1)圃庭。我想用一系列的文章來介紹這個超級有趣的話題失晴。
今天將是第一篇文章涂屁。通過一個簡單的故事书在,我將介紹什么是零知識證明和它的特性儒旬。在后面的文章中帖族,我將給出ZKP的嚴格形式化定義和NP語言零知識證明的通用理論構造竖般。最后,我將介紹這一技術近年來的發(fā)展艰亮、分類迄埃、代表方案和比較。希望你會喜歡這一系列的文章。
NuLink網絡是一個給保護隱私的應用程序開發(fā)人員實施最佳實踐和最佳安全和隱私的去中心化的解決方案彩库。NuLink平臺提供端點加密和加密訪問控制骇钦。敏感的用戶數(shù)據(jù)可以從任何用戶平臺安全地共享到云端或分布式存儲竞漾,并通過代理重加密或屬性加密自動授予對該數(shù)據(jù)的訪問业岁。在這個過程中笔时,有必要確保數(shù)據(jù)的可用性。這里的可用性從字面上看是指數(shù)據(jù)是終端用戶想要的借笙,可以使用的业稼。有一種加密技術可以幫助我們解決這個問題蚂蕴,叫做零知識證明掂墓。顧名思義君编,零知識證明可以讓你充分證明你是某些數(shù)據(jù)的所有者,而不會泄露信息祠乃,也就是說,外界對你的數(shù)據(jù)(“知識”)是“零”了解的琴拧。
一個簡單的例子蚓胸,“P(Prover沛膳,證明者)如何在不透露答案的情況下證明他知道數(shù)獨游戲的答案锹安?”叹哭。方法如下:P將答案按順序記錄在一組卡片上风罩,并將其翻面(記錄答案的那一面朝下)芯侥。V(Verifier柱查,驗證者)可以選擇每次按行或列或塊(3*3的區(qū)域)拿起卡片唉工,然后翻開驗證(驗證之前先將卡片的順序打亂,否則數(shù)獨的答案就會泄露出去,不再構成“零知識”)竿报,每堆卡片都是1–9烈菌。假設這種行為重復100次芽世,如果所有的答案都是正確的,那么P確實知道解決方案荠割。否則蔑鹦,P需要猜測V在每一次行為中的驗證規(guī)則举反。那么他的答案就會錯幾次室囊。整個證明過程并不能幫助V得到答案(V仍然不知道數(shù)獨要如何解融撞,因為他每次只能拿起1行或1列或1塊)尝偎。這就是一個零知識證明的例子。接下來,我們將給出一個關于證明系統(tǒng)(proof system)和零知識屬性的非正式定義鲤看。粗略地說义桂,一個合理的證明系統(tǒng)應該滿足以下兩個屬性:
完備性(completeness):如果證明者P和驗證者V都誠實地執(zhí)行證明系統(tǒng)的指令,那么驗證者V將以高概率接受所有真實信息的證明溉瓶。攒岛。
健全性(soundness):對于有任何錯誤信息的證明者P灾锯,驗證者V以高概率拒絕它顺饮。
從安全的角度來看,證明系統(tǒng)的屬性只涉及保護驗證者V免受欺騙的問題赦肋。接下來励稳,我們將給出零知識的大致定義趣避,這是一個與證明者P安全有關的屬性。
零知識(zero knowledge):對于驗證者V來說愁拭,在證明結束時,他不會獲得任何額外的 “知識”:他在證明中觀察到的一切都可以由模擬器模擬出來枫攀,無需與驗證者P互動。
很明顯技羔,上述定義并不嚴謹,這只是為了讓讀者快速理解這些概念拙绊。為了進一步探索ZKP技術,我們需要了解密碼學中的承諾(commitment)、語言(language)违寞、證明系統(tǒng)坞靶、零知識證明系統(tǒng)(zero knowledge proof system)、完備性蝴悉、健全性和零知識的正式定義。在接下來的文章中瘾敢,我們將介紹這些定義拍冠。模擬者(Simulator)的概念是亮點,這是一個有趣的概念簇抵,可以幫助我們定義零知識庆杜。