压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

零知識證明是零信任嗎?

如果只是為了回答標(biāo)題問題,兩個字就可以:不是

但還是想順便說說,零知識證明(ZKP)究竟是什么。

雖然零知識證明和零信任這兩個詞,都帶有“零”,都與“信任”有關(guān),但并不是一回事。兩者本質(zhì)上都要增強「信任」,但在增強「信任」的過程中,零知識證明強調(diào)不泄露知識;零信任強調(diào)不要過度授權(quán)。簡單說,零知識是為了隱藏知識;零信任是為了控制信任。關(guān)于零信任架構(gòu)可參考《零信任架構(gòu)》NIST標(biāo)準(zhǔn)草案

零知識證明解決了信任與隱私的矛盾:既通過「證明」提升「信任」,又通過「零知識」保護「隱私」。是兩全其美的方案。

本文更想表達(dá)的觀點其實是:探索零知識證明的過程,可以探索到安全的本質(zhì)

以筆者目前認(rèn)知,安全之終極定義,不是啟發(fā)式的CIA三性,而是采用形式化驗證的可證明安全——上帝(“模擬者”)與科學(xué)(數(shù)學(xué)、計算復(fù)雜度)完美結(jié)合的推演過程

一、了解零知識證明

01零知識證明的定義

零知識證明(ZKP,Zero-Knowledge Proof)的定義為:證明者(prover)能夠在不向驗證者(verifier)提供任何有用信息的情況下,使驗證者(verifier)相信某個論斷是正確的。

根據(jù)定義,零知識證明具有以下三個重要性質(zhì):

完備性(Completeness):

只要證明者擁有相應(yīng)的知識,那么就能通過驗證者的驗證,即證明者有足夠大的概率使驗證者確信。

(關(guān)于這里提到的“概率”,詳見后面的“色盲游戲”)

可靠性(Soundness):

如果證明者沒有相應(yīng)的知識,則無法通過驗證者的驗證,即證明者欺騙驗證者的概率可以忽略。

零知識性(Zero-Knowledge):

證明者在交互過程中僅向驗證者透露是否擁有相應(yīng)知識的陳述,不會泄露任何關(guān)于知識的額外信息

從定義中,還可以提取到兩個關(guān)鍵詞:“不泄露信息”+“證明論斷有效”。再濃縮一下就是:隱藏+證明

所以,零知識證明的核心目的是:隱藏證明需要它隱藏的各類秘密。(感覺很矛盾是吧)

02零知識證明的源頭

零知識證明是1984年由Goldwasser、Micali、Rackoff三個人提出,論文題目是《The Knowledge Complextiy of Interactive Proof Systems》《交互式證明系統(tǒng)中的知識復(fù)雜性》)。

1628055770_610a28daef0a25a26a022.jpg!small?1628055771442

從上圖的左上角可以看到,這篇論文其實發(fā)表在1989年。原因在于這篇論文的思想太過超前,以至于從1984年寫出初稿到1989年正式被采納發(fā)表,經(jīng)歷了整整五年時間。正是由于零知識證明這項開創(chuàng)性工作,Goldwasser和Micali兩人在2012年分享了圖靈獎——計算機領(lǐng)域最高獎項,也有“計算機界的諾貝爾獎”之稱。

03零知識證明的核心價值:消滅可信第三方

當(dāng)互聯(lián)?電?商務(wù)和在線交易蓬勃發(fā)展到今天,可信第三方(TTP,Trusted Third Party)幾乎不可或缺。但大家體會不到的事實是,可信第三方引入了巨大的「信任成本」。對第三方的過度信任,會帶來嚴(yán)重的「隱私泄露」、「單點失效」、「個?信息濫?」等問題。雖然學(xué)術(shù)界也提出“半可信第三方”(Semi-trusted Third Party)以放寬條件,但是”半可信” 仍不解決根本問題。根本問題是能否取消第三方

那么,如果取消了可信第三方,還能保證交易的公平性嗎?想象?下這個交易場景:?個買家拎著現(xiàn)?箱?,另?個賣家也拎著?個箱?,裝著某種貴重貨物。在電影中的情節(jié)?,買賣雙?會坐在?個桌?兩側(cè),雙?倒數(shù)3-2-1,然后同時把箱?推給對?。當(dāng)然雙?最好都帶武器,防?對?耍賴。除了買家、賣家,并沒有任何第三?在場,兩?也互不信任。容易理解,任何??都不愿先出?,把??的箱?交給對?,因為擔(dān)心對?拿到箱?后?即跑路,導(dǎo)致自己錢貨兩空的結(jié)局。

時間走到2008年,?特幣橫空出世,中本聰給出了?種天才設(shè)計:在?個可以?任何準(zhǔn)?許可的P2P?絡(luò)中,采取區(qū)塊鏈技術(shù),以?種?常公平的?式進?去中心化記賬。

我們可以從另?個?度來理解中本聰?shù)膭?chuàng)新:比特幣實現(xiàn)了?種分布式協(xié)議,它以去中心化的方式,「模擬」出了一個「虛擬」的「可信第三?」

而對于零知識證明也可以這樣理解:零知識證明實現(xiàn)了一類密碼學(xué)理論技術(shù),它基于一些安全假設(shè),「模擬」出了?個虛擬的可信第三方

可見,「零知識證明」的一個重要作用是消滅可信第三方。換句話說,零知識證明提供的「信任」,能夠代替一個「可信第三方」

需要注意的是:「零知識證明」取代的并非是「第三方」,而是「可信第三方」。

04零知識證明的經(jīng)典示例:色盲游戲

零知識證明背后的邏輯并不復(fù)雜。下面給出交互式零知識證明的經(jīng)典示例——色盲游戲,以幫助理解零知識證明的概念。詳見參考資料[1]。

色盲游戲

參與者:Alice是色盲,Bob不是色盲

Bob手上有兩個大小、形狀完全一樣的球,但顏色不同:一個藍(lán)色,另一個紅色。

由于Alice是色盲,所以Alice無法分辨這兩個球是否是一樣的。

Bob需要向Alice證明這兩個球是不一樣的

在這個游戲中:

Alice被稱為驗證者:他需要驗證Bob的陳述正確與否;

Bob被稱為證明者:他需要證明自己的陳述(存在兩個顏色不一樣的球)。

采取零知識證明方式:Bob需要在Alice不能獲知兩個球的顏色的情況下,向Alice證明這兩個球的顏色是不一樣的這個事實,這與零知識證明的定義是相符合的。

零知識證明方法如下:

Alice當(dāng)著Bob的面拿起兩個球,左手拿藍(lán)球,右手拿紅球(當(dāng)然,Alice并不知道拿的是籃球還是紅球,因為她是色盲);

Alice然后將雙手放到背后,這樣Bob就看不到Alice手上的球了;

Alice在背后隨機交換左右手上的球,并在心里默默記住自己的交換方式;

交換完成后,Alice將手伸出,并詢問Bob“兩個球是否交換過位置?”;

如果Bob能看到球上的顏色,那么每次Alice換過球的位置后,Bob都能正確回答出Alice的問題。

1

分析推理過程如下:

第一次:假設(shè)Alice確實交換了兩個手中的球。

如果Bob回答對了,Alice仍然不會完全相信Bob可以區(qū)分這兩個球的顏色,因為Bob有50%的概率蒙對;

所以,即使Bob回答對了,Alice還要進行第二次測試;

如果Bob回答錯了,那么Alice可以肯定Bob不能區(qū)分兩個球的顏色。此項測試就可以終止了。

2

第二次:假設(shè)這一次Alice并沒有交換兩個手中球的位置,然后Alice問Bob是否交換了球的位置。

如果Bob回答對了,那么Alice有75%的概率相信Bob可以區(qū)分兩個球的顏色;

當(dāng)然,Alice還可以進行第三次測試;

如果Bob回答錯了,那么Alice可以肯定Bob不能區(qū)分兩個球的顏色。

此項測試就此終止。

3

下圖給出了上述情況的概率樹:

4

概率計算結(jié)果如下:

第一次Bob回答正確時,Alice可以說Bob陳述的斷言為真的概率為50%;

如果Bob第二次又回答正確,那么Alice可以說Bob陳述為真的概率達(dá)75%;

如果第三次又正確,概率將達(dá)到87.5%;……

如果連續(xù)n次Bob都通過了測試,則Alice以1-(1/2)^n 的概率認(rèn)為 Bob 說的是真的,這兩個球的確是有紅藍(lán)兩種顏色。

這個示例中的零知識證明,是一種基于概率的驗證方式(即概率證明,而非確定性證明),驗證者(verifier)基于一定的隨機性向證明者(prover)提出問題,如果證明者都能給出正確回答,則說明證明者大概率擁有他所聲稱的“知識”。

看看這個示例是如何滿足零知識證明的定義中的三性

完備性:如果Bob擁有分辨球顏色的知識,則Bob每次都會正確回答。

可靠性:如果Bob不具備分辨球顏色的知識,則Bob無法總是回答正確。

零知識性:直到最后,Alice也無法得知兩球的具體顏色,因為Bob從未透露這個信息。

二、領(lǐng)悟信任與安全

01信任的產(chǎn)生機理

零知識證明是怎么「憑空產(chǎn)生了信任」?

零知識證明的信任,基于比較客觀的理論

一類是基礎(chǔ)理論

如「數(shù)論與代數(shù)」、「數(shù)理邏輯」、「計算理論」等;

另一類是安全假設(shè)

如「離散對數(shù)難題」等。

如果我們信任這些基礎(chǔ)理論(數(shù)學(xué)、邏輯),也信任安全假設(shè)沒有被攻破,那么我們確實可以得出下面的結(jié)論:零知識證明實現(xiàn)了一類密碼學(xué)理論技術(shù),它基于一些安全假設(shè),「模擬」出了?個虛擬的可信第三方。

2016年《經(jīng)濟學(xué)人》提出「區(qū)塊鏈?zhǔn)切湃螜C器」。仔細(xì)思考信任的推導(dǎo)機制,可以發(fā)現(xiàn):

區(qū)塊鏈:解決的是「分布式計算的信任」;

零知識證明:解決的是「數(shù)據(jù)的信任」;

形式化驗證:解決的是「邏輯的信任」。

上述三點:邏輯 <-> 計算 <-> 數(shù)據(jù),共同構(gòu)成一個閉環(huán),也許才能真正實現(xiàn)「信任機器」這一構(gòu)想。

總之,任何「信任」都需要基于某些信任基礎(chǔ)(如可信計算基(Trusted Computing Base)),任何「安全」都有安全性假設(shè)

信任的最后一環(huán)是「形式化驗證」。形式化驗證實際上是為邏輯、流程或業(yè)務(wù)進行形式化建模,你可以理解為用一種數(shù)學(xué)語言進行描述,模型就是一些數(shù)學(xué)概念(或數(shù)學(xué)對象),比如集合、代數(shù)、范疇等等。然后所有的形式化驗證都在用「顯式」的或「隱式」的方式「嚴(yán)格證明」某個結(jié)論(或者叫做定理)。

而理解零知識證明理論的核心,是理解「模擬」這個概念。上面我們提到了兩個「模擬」:一個是區(qū)塊鏈,另一個是零知識證明。再來回顧一下:

比特幣實現(xiàn)了?種分布式協(xié)議,它以去中心化的方式,「模擬」出了一個「虛擬」的「可信第三方」

零知識證明實現(xiàn)了一類密碼學(xué)理論技術(shù),它基于一些安全假設(shè),「模擬」出了?個虛擬的可信第三方

他們之所以可信,是因為他們能夠「模擬出可信第三方」。這個模擬過程都是可以形式化的,并且是可證明的。如今,模擬(Simulation)安全性證明已是密碼學(xué)界的共識,也是基本的形式化工具,沒有經(jīng)過證明/驗證的模擬是無法讓大家接受的。

理論上,所有客觀標(biāo)準(zhǔn)都能進行驗證,大到一個安全協(xié)議,小到一行代碼,都能采用形式化驗證的方法。恰好筆者曾經(jīng)研究過可證明安全,從那些密碼學(xué)安全性證明中體會到了「模擬」與「可證明安全」中所表達(dá)出的神奇理念。從某種程度上,可以領(lǐng)會到「安全」之真諦。

如果對模擬、安全、不可區(qū)分性等形式化驗證的方法感興趣,請參考資料[6],它將帶你到另一個存在「上帝」的「平行世界」,橫跨科學(xué)與哲學(xué)問題。

02證明?vs.?驗證

零知識證明的實現(xiàn)可以通過三段旅程來描述:(詳見參考資料[3])

隱藏秘密之旅:單向功能

證明秘密之旅:同態(tài)映射

構(gòu)建通用零知識證明之旅:證明NPC問題的多項式

「零知識證明」中的「證明」與其定義中的「驗證」是何關(guān)系?這涉及到證明存在的意義。所有的證明,都體現(xiàn)了「證明」與「驗證」的「不對稱性」。

證明:可能是一個非常耗費算力,或者腦力的活動,無論是耗時幾百年的「費馬大定理」,還是比特幣中的 POW 證明,這些證明都凝結(jié)了在尋找證明過程中所消耗的能量。

證明過程可能是超乎尋常的復(fù)雜,偶爾需要天才橫空出世。

驗證:一定(或者應(yīng)該)是一個非常簡單的、機械的、在有效時間內(nèi)(多項式復(fù)雜度)且能終止的活動。

某種意義上,「證明」與「驗證」這種不對稱性,真正體現(xiàn)了證明的意義,展示了零知識證明的價值。關(guān)于這一部分,詳見參考資料[2]。

03信任 vs. 隱私

從根本上講,信任是個好東西。我們創(chuàng)建了信用體系,可以向我們信任的人和組織提供信貸;依靠名聲、信譽記錄等,也能夠與我們不信任的人開展業(yè)務(wù)

但是,信任通常是建立在犧牲隱私的基礎(chǔ)之上的。為了互相信任,通常必須放棄一些隱私。而且信任通常與你的身份信息密切相關(guān)。

而零知識證明恰恰是一種兩全其美的方案:既通過「證明」提升「信任」,又通過「零知識」保護隱私

04匿名 vs. 假名

對于隱私的理解,其實分兩種:

第一種是匿名(Anonymous),意思是用戶不用透露任何和自己相關(guān)的信息,好比是學(xué)校的表白墻,你永遠(yuǎn)無法知道到底是誰寫了上去,反正字就是寫在了上面。

第二種是假名(Pseudonymous),意思是用戶通過自己創(chuàng)造的假名來發(fā)表信息,好比是貼吧,如果你不了解這個用戶,你無法建立網(wǎng)名到實名的聯(lián)系,你也就不知道發(fā)帖的人是誰。

目前,大多數(shù)當(dāng)前的區(qū)塊鏈技術(shù)只是假名。如比特幣中每個用戶都會隨機生成自己的公鑰(假名)地址來收款。這種公鑰地址其實是一種假名,一旦在哪里實名制認(rèn)證過,就可以把網(wǎng)名和實名關(guān)聯(lián)起來,毫無隱私可言。

如果黑客或政府可以將真實姓名與網(wǎng)絡(luò)地址相關(guān)聯(lián),那么可以通過鏈接區(qū)塊鏈交易追溯到用戶交易時的身份。盡管區(qū)塊鏈被贊譽為完美安全方案,但知情人士都知道這種弱點。事實上,世界各地的執(zhí)法機構(gòu)一直在利用這一漏洞來抓住犯罪分子。

這就好比有人用網(wǎng)名在貼吧上發(fā)帖子噴人,然后被人用密保找到了手機號,再用手機號找到了注冊的實名,從而被人肉是一個道理。

零知識證明可以彌補這種匿名缺陷。利用零知識證明創(chuàng)建信任的社會,是一個更加注重個人隱私的社會。它會把隱私控制權(quán)真正轉(zhuǎn)移到消費者手上,而不是將其交給政府或組織等。

三、零知識證明的應(yīng)用

零知識證明定義中有兩個關(guān)鍵詞:“不泄露信息”、“證明論斷有效”。基于這兩個特點,直接擴展出零知識證明在區(qū)塊鏈上的兩大應(yīng)用場景:(詳見參考資料[1])

隱私:在隱私場景中,我們可以借助零知識證明的“不泄露信息”特性,在不泄漏交易細(xì)節(jié)(接收方、發(fā)送方、交易余額)的情況下,證明區(qū)塊鏈上的資產(chǎn)轉(zhuǎn)移是有效的。

擴容:在擴容場景中,不太關(guān)注零知識證明技術(shù)的“不泄露信息”這個特性,更加關(guān)注“證明論斷有效”這個特性。由于鏈上資源是有限的,所以我們需要把大量的計算遷移到鏈下進行,因此需要有一種技術(shù)能夠證明這些在鏈下發(fā)生的動作是可信的,零知識證明正好可以幫助我們做鏈下可信計算的背書。

端到端的通訊加密:用戶之間可以互相發(fā)消息,但是不用擔(dān)心服務(wù)器拿到所有的消息記錄,同時消息也可以按照服務(wù)器的要求,出示相應(yīng)的零知識證明,比如消息的來源、發(fā)送的目的地。

身份認(rèn)證:用戶可以向網(wǎng)站證明,他擁有私鑰,或者知道某個只要用戶自己才知道的秘密答案,而網(wǎng)站并不需要知道這個私鑰和秘密,但是網(wǎng)站可以通過驗證這個零知識證明, 從而確認(rèn)用戶的身份。

去中心化存儲:服務(wù)器可以向用戶證明他們的數(shù)據(jù)被妥善保存,并且不泄露數(shù)據(jù)的任何內(nèi)容。

信用記錄:信用記錄是另一個可以充分發(fā)揮零知識證明優(yōu)勢的領(lǐng)域,用戶可以有選擇性的向另一方出示自己的信用記錄,同時證明信用記錄的真實性。

更多的例子,可以是任何形式的數(shù)據(jù)共享、數(shù)據(jù)處理、數(shù)據(jù)傳輸

2019年7月,美國國防部高級研究計劃局(DARPA)發(fā)布了一份加密驗證和評估信息安全保障(SIEVE)項目的廣泛機構(gòu)公告(HR001119S0076)。該項目尋求在零知識證明方面最先進的技術(shù),目標(biāo)是在不泄露秘密信息的前提下驗證軍事能力。該項目關(guān)注的是網(wǎng)絡(luò)安全和網(wǎng)絡(luò)空間作戰(zhàn)方面用于驗證軍事能力的零知識證明,包括概率和不確定分支條件在內(nèi)的大型復(fù)雜的證明。項目研究分為三個技術(shù)領(lǐng)域:構(gòu)建有用的零知識語句;構(gòu)建高效的零知識證明生成編譯器;后量子零知識研究。

參考資料

[1]《零知識證明介紹》,吳壽鶴;

[2]《初識「零知識」與「證明」》

[3]《一文讀懂零知識證明背后的簡單邏輯》,李畫;

[4]《zkPoD:區(qū)塊鏈,零知識證明與形式化驗證,實現(xiàn)無中介、零信任的公平交易》,郭宇;

[5]《淺談零知識證明:背景與起源》,東澤;

[6]《從「模擬」理解零知識證明:平行宇宙與時光倒流》,郭宇;

作者:柯善學(xué)整編 來源:公眾號?網(wǎng)絡(luò)安全觀

來源:FreeBuf.COM

上一篇:醫(yī)療氣動管道(PTS)系統(tǒng)中的PwnedPiper漏洞使美國80%以上醫(yī)院受到影響

下一篇:ISC2021聚焦智慧醫(yī)療,眾專家就醫(yī)療安全運營重要性達(dá)成共識