密碼學博士帶你瞭解「零知識證明」與「隱私幣」

買賣虛擬貨幣

3 月 26 日 19:00,「琬點聊」第二十五期開播,本期主題為「密碼學博士帶你瞭解零知識證明與隱私幣 」,本次直播由 Blocklike CEO 小琬對話上海交通大學密碼學博士、Suterusu CTO 林煌。

林煌博士:Suterusu CTO,擁有上海交通大學的密碼學博士和佛羅里達大學的隱私保護分散式系統博士學位。曾在洛桑理工學院擔任博士後研究員,負責基因組資料保護和基於區塊鏈的資料貨幣化方面的應用密碼學研究。後任香港應用科技研究院副主任工程師,是若干區塊鏈專案的 PI,負責架構及方案設計。曾在多個頂級 IEEE 期刊和密碼安全會議上發表二十幾篇論文,引用次數過 1000。

本次直播中,林煌帶我們進入了密碼學的世界,深入淺出地科普了關於隱私保護,零知識證明的原理,隱私幣的種類差異等等問題。

以下為本期直播內容,由 Blocklike(ID:iblocklike)編輯整理:

小琬:近期主流社交媒體微博被爆出洩露使用者大量隱私,「有 5.38 億條微博使用者資訊在暗網出售,其中,1.72 億條有賬戶基本資訊。涉及到的賬號資訊包括使用者 ID 、賬號釋出的微博數、粉絲數、關注數、性別、地理位置等」,此事在社會上引起了熱議。作為隱私保護方面的專家,您認為目前社會中存在的隱私洩露事件都是由哪些原因引起的?隱私洩露都有哪些路徑呢?

林煌:導致隱私洩漏的原因可以從兩個角度分析:一個是系統在設計實現時存在的漏洞,另外是使用者在實際使用過程中的疏忽。

比如這次微博隱私資訊洩漏事件,我瞭解的情況是微博的訪問控制系統允許使用者使用本地手機通訊錄來搜尋朋友手機號所使用的賬號。這個看似合理的訪問控制機制允許駭客利用這個漏洞,透過偽造本地手機通訊錄來掃描賬戶所使用的手機號。這個算是系統設計時的疏忽導致的攻擊。

另外一些實現方面的漏洞,比如很多安全系統用到密碼演算法,而密碼演算法的實現是很容易出問題,如前段時間轟動一時的針對 openssl 實現的 heartbleed 攻擊,還有針對各種系統漏洞的零日攻擊等等。

在實際使用中也容易出現各種問題,比如使用者在選擇系統密碼時可能會選擇一些隨機性極弱的密碼,如 123456 等,這個駭客很容易就能猜出來,還有使用者為了記憶方便,可能在多個網站上使用相同的密碼,這也很容易導致駭客透過撞庫猜出對應的密碼。

這些看起來似乎是個很常見很容易解決的問題,但在實際中確實屢見不鮮,甚至國家級的安全部門都會犯這種低階的錯誤,比如最近 CIA 的一個用於網路攻擊的工具庫的洩漏也是由於管理員設定的密碼過於簡單,結果被人成功攻擊了。

據報道,他們設定的密碼分別為 123ABCdef 和 mysweetsummer,所以哪怕這些理應非常專業的部門也會犯這種非常低階的錯誤。

另外很多時候駭客會使用各種 malware 來攻擊,比如給使用者發些附有 malware 連結的釣魚郵件等等,很多時候這種社會工程學的攻擊往往會利用一些人性的弱點,所以需要使用者隨時保持警惕才能防止這種攻擊。

小琬:允許使用本地手機通訊錄來搜尋朋友手機號應該是社交平臺必備的功能,是否都會存在比較大的資訊洩露風險?畢竟連微博實力這麼強的平臺都會有漏洞,更別提小軟體了。

林煌:是的,所以很多時候系統設計時可能需要在系統的可用性和安全性之間做取捨。安全本質上是取捨的藝術。

小琬:隱私的重要性不言而喻,對於大資料時代習慣了使用網際網路生產和生活的個人及組織更是如此,然而目前的現狀卻是大眾苦隱私洩露久矣卻多束手無策,在您看來,我們可以透過哪些門檻較低的方法來保護個人及組織的隱私?如果隱私已經洩露出去了,可以有哪些方法來及時止損呢?

林煌:我覺得首先要防患於未然,也就是在系統設計實現這個階段要有專業人士參與,尤其是像密碼方案的設計和實現有很多需要注意的地方,比如要使用在實際中被反覆測試過的密碼程式碼庫等。

這也是為何我們強調應該多支援密碼程式碼庫的設計和實現,包括像 Suterusu 這種專案,因為安全可靠的密碼程式碼庫需要出色的密碼學家和工程師通力合作,這需要有足夠的資源長期地支援才可能完成。

另外,從使用者的角度講,要提高安全意識,養成良好的上網習慣,如果你嫌設定隨機性高的密碼使用起來過於麻煩,也可以用一些密碼管理器。當隱私資訊洩漏時,比如微博上的賬戶密碼洩漏,應該及時地重置相關隱私資訊。

小琬:其實大家都會有意識的保護隱私,但有時候防不勝防。比如密碼的管理,安全和容易記憶也需要取捨。我也嘗試用過密碼管理器,不過比較擔心密碼管理器的安全。林博士覺得密碼管理器是否安全,有沒有推薦的比較安全的密碼管理器。

林煌:其實還是有些簡單易用的密碼生成和記憶法的,也不一定非得用密碼管理器。我不使用密碼管理器的,可以給你推薦一種 manuel blum,一個圖靈獎獲得者設計的一種隨機密碼生成法。這個基本思想是,你自己設計一個數學演算法,將字母和數字對應。然後每次你用一個網站,你可以用該網站網址使用這個演算法和數字對應,當然生成的密碼隨機性不一定足夠強,不過如果你的演算法本身不洩漏的話,在實際中應該是夠用的。

小琬:主打隱私保護的隱私幣作為一種特殊的幣種,在行業中熱度很高,您作為密碼學博士,是如何看待隱私幣的呢?不同的隱私幣有哪些區別?

林煌:首先隱私幣是一個將理論密碼學應用於實際的非常棒的社會實驗。由於這些嘗試,零知識證明等非常艱深的密碼學概念才得以走出實驗室,為大眾所知。目前主流用到零知識證明的隱私幣主要包括 zcash,門羅幣以及稍微小眾點的 grin 和 beam。

zcash 所使用的零知識證明需要可信初始化,他允許攻擊者在無法被偵測到的情況下列印無限量的 zcash,而門羅幣目前使用的環簽名方案雖然不需要可信初始化,但簽名大小還是和匿名集合線性相關,相對而言又不是那麼 scalable。

grin 和 beam 都是 mimblewimble 協議的實現,由於 mimblewimble 協議本身是在匿名性和 scalability 之間找 tradeoff 的方案,所以在隱私性上相對弱一些。另外上述幾種隱私幣幾乎都不支援智慧合約。

我們 Suterusu 專案提出的匿名支付方案允許我們的隱私保護區塊鏈協議在安全性和可擴充套件性之間獲得最佳均衡,即幾乎常數級別的證明大小且無需可信初始化。我們的匿名支付方案還支援智慧合約平臺,因此能支援些更為複雜的金融科技方面的應用。

如果大家有興趣瞭解更多關於隱私幣方面的區別,可以參考下我之前寫過的兩篇相關的文章:雜談去中心化隱私支付(一文讀懂「隱私幣」| 雜談去中心化隱私支付)和介紹 zcash 和 mimblewimble 的文章(隱私幣 Zcash 不「隱私」MimbleWimble 簡史)。

小琬:這裡可能還需要您解釋一個概念:可信初始化。

林煌:所謂的可信初始化是由於這種型別的零知識證明協議的初始化過程中涉及一些陷門知識,這種陷門知識好比數字簽名方案中的私鑰。在簽名方案中你的私鑰洩漏給攻擊者,那攻擊者可以生成合法的簽名而不被探測。在零知識證明方案中這種陷門知識洩漏則允許攻擊者生成合法的證明而不被探測。由於在實際中需要一個 entity 負責初始化過程,這種陷門知識必然為這個負責的 entity 所掌握,因此實際上這和去中心化支付的理念是背道而馳的,而且也是個巨大的安全隱患。儘管 zcash 試圖使用安全多方計算來解決這個問題,但安全多方計算還是有可能引入新的安全漏洞,而且攻擊者還是有可能成功攻擊這些多方計算的參與者,所以這不是徹底的解決方案,理想的零知識證明方案應該是無需可信初始化的。

小琬:零知識證明被認為是保護資料隱私的一種優質方案,但其作為一種新型的科學技術,尚難以被大眾理解。作為零知識證明領域的前沿探索者,請您為大家深入淺出地講解一下零知識證明的原理。

林煌:零知識證明其實可以看作一種加密的數學證明。當你讀完一個數學證明,正常情況下你應該有種在數學上功力見長的感覺,因為你掌握關於這個定理的新知識。

而零知識證明則有所不同,他的目的不在於讓證明驗證者掌握新知識,他的核心目的是說服驗證者證明者懂得如何證明這個命題,或者更正式地說他掌握了使得命題成立所需的秘密,僅此而已。

他不關心驗證者讀完證明後有沒有掌握新知識,事實上這裡的零知識恰恰被定義成證明本身除了洩露一個事實:即證明者掌握了使得命題成立需要的秘密外,不洩漏其他任何資訊。

所以零知識證明的證明往往是以密文的形式出現,所謂密文你可以把他看作一堆亂碼。換句話說透過讀這些亂碼,就能相信命題成立,相信證明者懂得如何寫這個證明,但除此之外你一無所知。

由於零知識證明本身是以亂碼的形式出現,這時候我們就得考慮一個問題,就是如果一個沒有掌握證明這個命題所需秘密的人,一個攻擊者渾水摸魚濫竽充數怎麼辦?

所以零知識證明的另外一個性質可靠性(soundness)就變了非常有意義,他的目的就在於保證攻擊者在不掌握證明命題成立所需的知識或秘密情況下是無法偽造證明的。

當然,零知識證明還得考慮完整性(completeness)這個性質,我們這裡暫時就不展開了。

通俗地說,零知識證明可以看作數字簽名和加密兩種概念的推廣和結合。零知識這個性質其實和加密方案所需的保密性有一定對應關係的,加密方案的保密效能保證加密密文不洩漏所加密明文的任何有用資訊。零知識這個性質在隱私幣中則通常用於保證隱私性。

而可靠性則可以看作數字簽名方案的不可偽造性在通用命題中的一種推廣。在數字簽名方案中,一個沒有簽名金鑰的使用者是無法偽造簽名的,這就是所謂的不可偽造性。零知識證明的可靠性在隱私幣中往往用於保證只有使用者掌握隱私幣對應的秘密情況下才能成功花掉相應貨幣。

小琬:中本聰在其短短 9 頁的比特幣白皮書 [Sato08] 中用了一整個章節討論比特幣的隱私問題,數字貨幣自誕生以來,圍繞著其產生的隱私安全問題就一直備受行業從業者的關注,請問在您看來零知識證明可以為數字貨幣的隱私安全提供哪些助力?

林煌:零知識證明在保密支付中最簡單的應用就是用於證明當輸入和輸出金額以密文或數字承諾的形式出現時滿足 balance 的條件,即輸入金額之和等於輸出金額之和。由於密碼方案通常在有限域上進行,因此一個負數等價於一個很大的正數,往往需要使用區間證明來證明金額在合理的範圍之內。

為了保證交易參與者的隱私,會使用到成員證明來隱藏交易發起者身份。另外,如果傳送者需要給接受者加密一些資訊,可能會使用零知識證明證明所加密內容的合法性。這些都是零知識證明在數字貨幣交易隱私方面所起的作用。

近來,零知識證明在 personal data monetization 方面也出現了不錯的應用,比如 basic attention token 專案最近使用零知識證明在保證使用者隱私的同時區分獲得 token 的是真正的使用者而非殭屍網路,詳情請查我之前寫的介紹這個 zk-sense 專案的文章(零知識證明在傳統網際網路經濟中的新應用場景—隱私保護reCAPTCHA)。這個既和 basic attention token 這個數字貨幣有關,又和傳統網際網路經濟的新模式相關,非常有意思。

另外,如果考慮數字貨幣的應用基礎設施的話,比如半去中心化的身份認證設施或者聯盟身份認證設施,由於涉及使用者身份隱私和可問責性,零知識證明也有用武之地。

小琬:著重於隱私、分權及可擴充套件性的門羅幣是最早的也是最熱門的隱私幣種之一,有非常多的使用者持有並且使用它,請問您對門羅幣的評價是?

林煌:門羅幣在社羣方面做得很不錯,但就像我上面提過的那樣,在 scalability 和效率上其實還有很大的提高空間,另外,門羅幣本身是不支援智慧合約的。

相比之下,我們 Suterusu 的方案在安全性上不遜色於門羅幣,在 scalability 上比他們更有優勢,且支援智慧合約。

小琬:目前全球對於資料與隱私安全間的政策尚不明朗,很多留存在網際網路中的隱私正在被當做是免費的資料在使用,有觀點認為資料的「隱私」邊界不在該不該發現和彙集一些必要的資訊,而在於後續,這些資訊如何被儲存、管理、分析和使用。請問在您看來,資料的監管與「隱私」邊界在哪?

林煌:這種觀點可能未必準確,我認為保護資料的隱私必須從資料來源頭做起,我們知道系統的安全程度取決於系統中最弱的一環。而很多時候,資料系統最弱的一環可能就恰恰在資料的源頭,目前隱私系統設計的一些新理念包括 bring application to data 事實上也和這個前提密切相關的。

近年來隱私資料監管方面的進展是有目共睹的,這包括歐洲的一般資料保護法(GDPR)和美國加州最近公佈的消費者隱私法(CCPA)。這些法規對商家 monetize 使用者資料的過程提出了很多要求。

比如 CCPA 明確指出:使用者個人資訊如果被用於所知會的不同目的,商家必須提前告知並徵得使用者同意才行。再比如,商家如果提供金融激勵來購買使用者隱私資料時,必須明確說明估算使用者資料價值的具體方法。

在法規上逐漸明確地定義使用者對個人資料的所有權和控制權是件好事,但法規沒有技術的配合是行不通的。未來隨著個人資料主權的建立以及 personal data monetization 框架的建立我相信密碼技術會在這個過程中起到至關重要的作用。

這裡可能包括從在多方資料分享時可能用到的多方計算技術,為了保證多方計算過程的計算可靠性會用到的零知識證明技術,比如為了給隱私資料合理定價設計的隱私保護的資料定價技術,甚至可以想象將來由於使用者資料對於不同的買家的價值不同而導致價格不同,也許智慧合約也可以用於自動化這種 monetization 過程。

小琬:您在 Suterusu 擔任 CTO,這個專案在應用路徑上跟其他隱私幣的差別在哪裡?

林煌:我們設想的 Suterusu 的應用場景主要有以下幾種:匿名交易,關於數字貨幣的匿名化要求將越來越強,Suterusu 作為一個隱私保護二層協議將為其他主流數字貨幣提供匿名化服務。另外,我們也會考慮提供可控匿名的模組,從而滿足使用者對合規化方面的要求。由於 suter 提供了智慧合約功能,可以透過智慧合約自動化實現合規請求。另外一個應用場景是零知識身份證明,現在一個網站的註冊使用者登入時幾乎都要向網站管理員洩漏自己的身份,透過在身份認證過程中引入零知識成員證明有可能在滿足身份認證要求同時還能保護使用者隱私。此外,我們也在研究使用零知識證明來提高區塊鏈系統的 scalability。目前比如 zk-rollup 還有 coda 的思路都是使用零知識證明來提高區塊鏈的 scalability,但它們多多少少都存在一些安全隱患。比如幫助生成零知識證明的 operator 有可能被 dos 攻擊等,所以,這方面也是我們研究努力的方向。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;