零知識證明(Zero—Knowledge Proof)趁矾,是由S.Goldwasser耙册、S.Micali及C.Rackoff在20世紀(jì)80年代初提出的。它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下毫捣,使驗證者相信某個論斷是正確的详拙。
零知識證明的三條性質(zhì)
完備性(驗證方和證明方都是誠實的矿微,并遵循證明的每一個步驟)
正確性(沒人能假冒證明方,阿里巴巴和強盜的故事尚揣,存在一種可能的情況:阿里巴巴不知道咒語冷冗,但和別人串通好,強盜舉起左右手的時候惑艇,由那個人給出咒語)
零知識性(證明者只向驗證者提供了“擁有這個知識”的信息蒿辙,并沒有獲得知識本身的任何一點信息)
零知識證明需要滿足三個屬性。
1滨巴、如果語句為真思灌,誠實的驗證者(即:正確遵循協(xié)議的驗證者)將由誠實的證明者確信這一事實。
2恭取、如果語句為假泰偿,不排除有概率欺騙者可以說服誠實的驗證者它是真的。
3蜈垮、如果語句為真耗跛,證明者的目的就是向驗證者證明并使驗證者相信自己知道或擁有某一消息,而在證明過程中不可向驗證者泄漏任何有關(guān)被證明消息的內(nèi)容攒发。
我們來看下百度百科給出的例子:
1调塌、A要向B證明自己擁有某個房間的鑰匙,假設(shè)該房間只能用鑰匙打開鎖惠猿,而其他任何方法都打不開羔砾。這時有2個方法:
①A把鑰匙出示給B,B用這把鑰匙打開該房間的鎖,從而證明A擁有該房間的正確的鑰匙姜凄。②B確定該房間內(nèi)有某一物體政溃,A用自己擁有的鑰匙打開該房間的門,然后把物體拿出來出示給B态秧,從而證明自己確實擁有該房間的鑰匙董虱。
后面的②方法就屬于零知識證明。它的好處在于申鱼,在整個證明的過程中愤诱,B始終不能看到鑰匙的樣子,從而避免了鑰匙的泄露润讥。
2、A擁有B的公鑰盘寡,A沒有見過B楚殿,而B見過A的照片,偶然一天兩個人見面了竿痰,B認出了A脆粥,但A不能確定面前的人是否是B,這時B要向A證明自己是B影涉,也有2個方法变隔。
① B把自己的私鑰給A,A用這個私鑰對某個數(shù)據(jù)加密蟹倾,然后用B的公鑰解密匣缘,如果正確,則證明對方確實是B鲜棠。
② A給出一個隨機值肌厨,并使用B的公鑰對其加密,然后將加密后的數(shù)據(jù)交給B豁陆,B用自己的私鑰解密并展示給A柑爸,如果與A給出的隨機值相同,則證明對方是B盒音。
后面的方法屬于零知識證明表鳍。
3、有一個缺口環(huán)形的長廊祥诽,出口和入口距離非常近(在目距之內(nèi))譬圣,但走廊中間某處有一道只能用鑰匙打開的門,A要向B證明自己擁有該門的鑰匙雄坪。采用零知識證明胁镐,則B看著A從入口進入走廊,然后又從出口走出走廊,這時B沒有得到任何關(guān)于這個鑰匙的信息盯漂,但是完全可以證明A擁有鑰匙颇玷。
說了這么多例子,零知識證明的優(yōu)點就是既安全就缆、又有良好的隱私帖渠、又減少計算量。
那么區(qū)塊鏈中使用零知識證明竭宰,就是在整個交易過程中空郊,完全匿名,可以在某些特定場景中保護必要的隱私切揭。?