- 區(qū)塊鏈應(yīng)用開發(fā)指南:業(yè)務(wù)場(chǎng)景剖析與實(shí)戰(zhàn)
- 熊麗兵 董一凡等
- 878字
- 2022-07-28 20:18:06
3.1 拋磚引玉:初識(shí)零知識(shí)證明
3.1.1 為什么會(huì)有零知識(shí)證明?
前面已經(jīng)學(xué)習(xí)過,在使用私鑰/公鑰體系時(shí),永遠(yuǎn)不應(yīng)該暴露私鑰,因?yàn)槿魏潍@得私鑰的第三方都能夠解密其獲得的每一條加密消息。下面來考慮一種情況:
常規(guī)密碼在大部分?jǐn)?shù)據(jù)庫中都存儲(chǔ)為哈希(Hash),而不是明文。這里哈希指一個(gè)函數(shù),會(huì)把一個(gè)輸入轉(zhuǎn)換成另一個(gè)唯一的字符串?dāng)?shù)據(jù),從而掩飾或隱藏原始數(shù)據(jù)。
在哈希函數(shù)中,實(shí)際上幾乎不可能從哈希函數(shù)創(chuàng)建的惟一字符串反推出原始數(shù)據(jù)。例如,系統(tǒng)可以使用keccak256哈希算法,將密碼“HappyLearningZKP”哈希為0x8d73 022c3e12c1c41d5bdbeb0bac5574b814301c5353fc72b135a09ccc764f0f。
看看這種字母和數(shù)字的組合,即使知道哈希算法并使用強(qiáng)大的算力,也無法倒推出原始密碼“HappyLearningZKP”。重要的是,哈希函數(shù)在定義上是決定性的,這意味著相同的輸入總是會(huì)得到相同的輸出。因此,如果一個(gè)網(wǎng)站將我們的密碼存儲(chǔ)為0x8d7 3022c3e12c1c41d5bdbeb0bac5574b814301c5353fc72b135a09ccc764f0f,那么當(dāng)我們輸入“HappyLearningZKP”時(shí),該網(wǎng)站可以通過對(duì)其哈希,并與存儲(chǔ)在數(shù)據(jù)庫中的哈希值進(jìn)行比較,來檢查我們是否輸入了正確的密碼。
在上面的情景中,請(qǐng)注意:雖然網(wǎng)站不會(huì)存儲(chǔ)我們的明文密碼,但我們?nèi)匀恍枰ㄟ^一個(gè)安全通道與網(wǎng)站共享密碼,這樣才能證明你知道你的正確密碼。
如果可以向網(wǎng)站證明我們知道正確的密碼,而又不必向它共享或透露該密碼,那不是更好嗎?或者再進(jìn)一步:證明以前的那個(gè)你就是現(xiàn)在你說的這個(gè)你?
總體來說,這種方法代表了當(dāng)今大多數(shù)行業(yè)驗(yàn)證信息的方式——需要提供信息來驗(yàn)證它,需要重新執(zhí)行計(jì)算來驗(yàn)證它是否完整地正確執(zhí)行。比如,如果銀行想批準(zhǔn)一筆從我們的賬戶到另一賬戶的電子匯款,銀行必須在轉(zhuǎn)賬前檢查你的賬戶,來確認(rèn)你的賬戶中有足夠的錢,以此證明我們不是在花費(fèi)你實(shí)際不擁有的錢。同樣,如果你想證明自己的身份,你必須提供你的社會(huì)安全號(hào)碼或政府簽發(fā)的其他身份證明。
而在另一些情況下,不需要知道知識(shí)的細(xì)節(jié)就可以檢查結(jié)果。例如,供應(yīng)商甲的出價(jià)是否高于供應(yīng)商乙?供應(yīng)商乙不應(yīng)該看到供應(yīng)商甲的出價(jià),同樣,很可能雙方都不想向客戶以外的第三方披露自己的出價(jià)。這時(shí),通過零知識(shí)證明的方式,監(jiān)管或?qū)徲?jì)機(jī)構(gòu)可以得知,供應(yīng)商甲的出價(jià)低于供應(yīng)商乙。
這就是零知識(shí)證明:一方(證明者)能夠向另一方(驗(yàn)證者)證明,自己擁有某一條特定的信息,而又無須披露該信息是什么。
- 數(shù)據(jù)庫應(yīng)用基礎(chǔ)教程(Visual FoxPro 9.0)
- Lean Mobile App Development
- Starling Game Development Essentials
- MATLAB Graphics and Data Visualization Cookbook
- 重復(fù)數(shù)據(jù)刪除技術(shù):面向大數(shù)據(jù)管理的縮減技術(shù)
- INSTANT Apple iBooks How-to
- 辦公應(yīng)用與計(jì)算思維案例教程
- SQL Server 2012數(shù)據(jù)庫管理教程
- 大數(shù)據(jù)測(cè)試技術(shù):數(shù)據(jù)采集、分析與測(cè)試實(shí)踐(在線實(shí)驗(yàn)+在線自測(cè))
- 推薦系統(tǒng)全鏈路設(shè)計(jì):原理解讀與業(yè)務(wù)實(shí)踐
- 代碼的未來
- GameMaker Game Programming with GML
- 大數(shù)據(jù)用戶行為畫像分析實(shí)操指南
- Hands-On Big Data Analytics with PySpark
- SQL必知必會(huì)(第四版)