Preethi Kasireddy瘦棋,?medium.com?(來源)
? ? ? ? 鑒于區(qū)塊鏈交易并不直接與您的身份掛鉤,它們可能顯得更私密肮柜。世界上任何人都可以匿名創(chuàng)建一個(gè)新的錢包擦俐,并使用它進(jìn)行交易檬嘀。
? ? ? ? 但是槽驶,這不是這么簡(jiǎn)單。
? ? ? ? ?一方面鸳兽,這項(xiàng)技術(shù)的大的方面就是應(yīng)用假名:所有交易是記錄和存儲(chǔ)在公共賬本中的掂铐,但是它們僅與一個(gè)個(gè)由數(shù)字和字母組成的賬戶地址相關(guān)聯(lián)。由于這個(gè)地址沒有真實(shí)世界的身份揍异,交易的創(chuàng)始人似乎無法跟蹤全陨。
? ? ? ? 然而,這種完全安全是一種誤導(dǎo)衷掷。只要化名不與個(gè)人聯(lián)系在一起辱姨,一個(gè)人就可以保護(hù)自己的隱私是一個(gè)事實(shí),但是只要有人與化名發(fā)生聯(lián)系戚嗅,秘密就顯露出來雨涛。這方面的一個(gè)典型的例子就是,執(zhí)法機(jī)構(gòu)承認(rèn)他們能夠在調(diào)查過程中識(shí)別特定的比特幣用戶渡处,這些“去匿名化”镜悉,違背了區(qū)塊鏈交易完全隱秘的承諾。
? ? ? ?這個(gè)去匿名化是如何實(shí)現(xiàn)的医瘫?
? ? ? ? 商家網(wǎng)站上的網(wǎng)絡(luò)跟蹤器和cookies使得交易人信息泄漏到網(wǎng)絡(luò)上變得非常容易,任何人(包括政府旧困,執(zhí)法機(jī)構(gòu)和惡意用戶)都可以隨時(shí)使用這些信息醇份。
? ? ? ?此外,像以太坊這樣的區(qū)塊鏈平臺(tái)吼具,用戶通過智能合約進(jìn)行交互僚纷,而不僅僅是簡(jiǎn)單的價(jià)值轉(zhuǎn)移。關(guān)于這些智能合約的所有細(xì)節(jié)在以太坊區(qū)塊鏈上都是公開的拗盒,包括發(fā)件人和收件人怖竭,交易數(shù)據(jù)本身,執(zhí)行的代碼以及合約中存儲(chǔ)的狀態(tài)陡蝇。
? ? ? ?將關(guān)鍵業(yè)務(wù)數(shù)據(jù)上傳到區(qū)塊鏈上后痊臭,黑客,競(jìng)爭(zhēng)對(duì)手或其他未授權(quán)方就都可以查看區(qū)塊鏈上的信息登夫,這對(duì)大多數(shù)公司來說都不會(huì)同意不會(huì)這樣做的广匙。原因如下:
電子病歷,這是非常私人和敏感的信息恼策。在公共區(qū)塊鏈上公開顯示這些信息是不可接受的鸦致,從而危及病人的機(jī)密性。
身份驗(yàn)證數(shù)據(jù),如社會(huì)安全號(hào)碼分唾,不能公開存儲(chǔ)在公共智能合同中抗碰。
憑證管理,如密碼和密鑰绽乔,在開放的弧蝇,最終不安全的智能合同中無法寫入的。
財(cái)務(wù)報(bào)告迄汛,如資產(chǎn)表或員工工資等文件不可能與公開的捍壤,易于追溯的區(qū)塊鏈地址發(fā)生聯(lián)系。
還有其他的例子鞍爱。
對(duì)于隱私和個(gè)人主權(quán)的個(gè)人鹃觉,組織和行業(yè)來說,隱私仍然是一個(gè)根本的障礙睹逃。我們中許多癡迷于區(qū)塊鏈和密碼貨幣的公司都有興趣建立一個(gè)不受信任和審查制度盗扇,為個(gè)人提供財(cái)務(wù)支持。矛盾的是沉填,我們正在使用一個(gè)公開的疗隶,易于追蹤的分類賬來做到這一點(diǎn)。 (每當(dāng)我想起來的時(shí)候我就會(huì)溜號(hào)R砟帧)
隱私解決方案
以下是幾個(gè)不同開發(fā)團(tuán)隊(duì)一直在努力的解決方案斑鼻。
1. 橢圓曲線Diffie-Hellman-Merkle(ECDHM)地址
要了解ECDHM地址,您需要了解Diffie-Hellman密鑰交換猎荠。 Diffie-Hellman密鑰交換背后的想法是它建立了雙方之間的共享秘密坚弱。這可以用來在公共網(wǎng)絡(luò)上私下交換信息。
過程是关摇?
發(fā)件人和收件人可以公開共享ECDHM地址荒叶,然后使用他們的共享密碼來獲取匿名比特幣地址。這些比特幣地址只能由擁有這個(gè)秘密的人公布输虱。唯一公開可見的是可重復(fù)使用的ECDHM地址些楣。因此,用戶不必?fù)?dān)心交易被跟蹤宪睹。
通過使用顏色而不是非常大的數(shù)字說明密鑰交換的一般概念的概念圖(來源:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
ECDHM地址方案的一些例子包括Peter Todd的Stealth Addresses愁茁,Justus Ranvier的BIP47可重復(fù)使用支付代碼,Justin Newton的BIP75波段地址交換等等横堡。但是埋市,這些方案的具體實(shí)現(xiàn)和實(shí)際使用是很少的。
2. 混合器
混合器的設(shè)想是命贴,一群人可以將他們的付款合并成一個(gè)交易池道宅,跟蹤私人賬本上的債務(wù)食听。然后,當(dāng)從交易池中獲得資金時(shí)污茵,每筆付款的來源都會(huì)被掩蓋樱报。任何觀察區(qū)塊鏈的人都可以看到所支付的金額以及收款人,但理論上泞当,無法追蹤付款的人迹蛤。混合器的一個(gè)例子是CoinJoin襟士。
來源:https://en.wikipedia.org/wiki/CoinJoin
不幸的是盗飒,混合器已被證明是不可靠的解決方案。例如陋桂,研究人員能夠輕松識(shí)別CoinJoin的交易逆趣,并證明識(shí)別的正確,只是需要支出32,000美元的成本嗜历,攻擊者就能夠以90%的機(jī)會(huì)成功實(shí)現(xiàn)交易的去匿名宣渗。進(jìn)一步, 研究人員也證實(shí)混合器只能提供非常有限的保護(hù)對(duì)于Sybil攻擊和Denial-of-Service 攻擊梨州。
更令人不安的是痕囱,混合器的私人賬本需要由一些中央機(jī)構(gòu)進(jìn)行管理,這意味著它需要一個(gè)值得信賴的第三方來“混合”交易暴匠。
由于CoinJoin是供用戶選擇是否使用的解決方案鞍恢,而不是默認(rèn)的方法,因此歷史上很少有人選用加入混合器的交易池每窖,結(jié)果就是這使得匿名產(chǎn)生的交易池很小有序。因此,很容易確定一個(gè)特定的輸出是來自少數(shù)幾個(gè)人中的某一人岛请。
混合器解決方案的另一個(gè)例子是CoinShuffle,這是一個(gè)由德國(guó)薩爾大學(xué)的一組研究人員開發(fā)的分散混合協(xié)議警绩。 CoinShuffle試圖通過不需要可信的第三方來組裝混合交易來改進(jìn)CoinJoin崇败。
3. Monero
解決隱私問題的另一種方法是創(chuàng)建默認(rèn)情況下私密的加密貨幣,如Monero肩祥。與許多山寨幣不同后室,Monero不是比特幣的分支。相反混狠,Monero基于另一種協(xié)議CryptoNote岸霹。
Monero提供的主要功能是另一種“環(huán)形簽名”方案。
環(huán)簽名是一種組簽名将饺,組中的每個(gè)簽名者都有一個(gè)秘密和公鑰贡避。與傳統(tǒng)的加密簽名不??同痛黎,它證明一個(gè)交易是由一個(gè)簽名者使用一個(gè)所述私鑰“批準(zhǔn)”的,而一個(gè)簽名組證明一個(gè)固定組的簽名者批準(zhǔn)了一個(gè)交易刮吧,而不會(huì)泄露誰湖饱。
4. 零知識(shí)證明
零知識(shí)證明是證明者設(shè)法讓驗(yàn)證者相信自己擁有一些秘密知識(shí),而不必直接展示該秘密知識(shí)杀捻。換句話說井厌,一個(gè)程序可以有秘密的輸入,證明者沒有向驗(yàn)證者展示任何東西致讥。零知識(shí)證明提供了可用于構(gòu)建隱私保護(hù)機(jī)制的基礎(chǔ)仅仆。應(yīng)用的例子包括:
示例1:挑戰(zhàn)/反應(yīng)游戲
在計(jì)算機(jī)安全方面,質(zhì)詢 - 響應(yīng)認(rèn)證是一個(gè)協(xié)議族垢袱,其中一方提出一個(gè)問題(“質(zhì)疑”)墓拜,而另一方必須提供一個(gè)有效的答案(“答復(fù)”)進(jìn)行認(rèn)證。這個(gè)“游戲”可以在區(qū)塊鏈上用來驗(yàn)證交易惶桐。如果一個(gè)特定的事務(wù)是無效的撮弧,另一個(gè)節(jié)點(diǎn)可以選擇“提示注意”來證明無效。這就要求提供可證實(shí)的證據(jù)姚糊,證明交易是無效的贿衍。如果不這樣做,就會(huì)產(chǎn)生一個(gè)“挑戰(zhàn)”救恨,要求交易的發(fā)起者提供一個(gè)證明交易有效的“回應(yīng)”贸辈。
舉一個(gè)例子:假如“鮑伯”只是訪問一些資源(例如他的車)。愛麗絲現(xiàn)在也想訪問它肠槽,所以她可以開車去雜貨店擎淤。鮑勃發(fā)出了一個(gè)挑戰(zhàn),假如是“52w72y”秸仙。愛麗絲必須用適合鮑勃發(fā)出的挑戰(zhàn)的一串字符來回應(yīng)嘴拢。通過使用只有Bob和Alice知道的算法來找到答案是唯一方法。而且寂纪,鮑勃每次都會(huì)發(fā)出不同的挑戰(zhàn)席吴。因此,知道以前的正確答案并不會(huì)給Alice帶來任何優(yōu)勢(shì)捞蛋。
挑戰(zhàn)/反應(yīng)游戲已經(jīng)在像以太坊這樣的區(qū)塊鏈中得到使用孝冒。但是,我們需要代碼庫和開發(fā)工具來使這類的認(rèn)證方案更加容易使用拟杉。
例2:zkSNARKs
什么是zkSNARKs庄涡?我們來看看不同字母的含義:
zk =零知識(shí)。不需要展示信息出來就可以證明信息存在
SNARK:簡(jiǎn)潔的知識(shí)非交互式自適應(yīng)參數(shù)搬设。
“簡(jiǎn)潔”是指可以快速驗(yàn)證的簡(jiǎn)潔證明穴店。
“非交互”意味著不要求驗(yàn)證者與證明者直接進(jìn)行交流撕捍。替代的方法是,證明者可以提前發(fā)布證明迹鹅,驗(yàn)證者可以確認(rèn)它是正確的卦洽。
“適應(yīng)性的知識(shí)論”意味著一些計(jì)算知識(shí)的證明。
雖然我希望有一天能夠在一篇文章中介紹zkSNARK斜棚,但是我會(huì)跳過這里的技術(shù)細(xì)節(jié)阀蒂。 zkSNARKs是一個(gè)令人興奮和有前途的隱私建設(shè)區(qū)塊,有幾點(diǎn)注意事項(xiàng):
1)SNARKs是資源密集型的弟蚀。
2)SNARKs允許用戶證明他們可以訪問一個(gè)秘密蚤霞,但是用戶有責(zé)任維護(hù)秘密并只是在需要時(shí)才使用它。
3)SNARKs有一個(gè)設(shè)置階段义钉,在這個(gè)階段昧绣,需要證明該路徑或者其計(jì)算是固定的。這個(gè)階段需要事先在相互已經(jīng)取得了信任的人群中進(jìn)行捶闸。這不僅要求您相信前期設(shè)置的人員夜畴,還意味著SNARK不適合運(yùn)行任意計(jì)算,因?yàn)橛?jì)算總是需要有準(zhǔn)備階段删壮。
示例3:zkSNARKs + Zcash
Zcash是基于zk-SNARKs的隱私保護(hù)加密貨幣贪绘。 Zcash擁有所謂的“屏蔽交易”,即所有使用的硬幣都有一個(gè)匿名集合央碟。屏蔽交易使用“屏蔽地址”税灌,要求發(fā)送者或接收者生成一個(gè)零知識(shí)證據(jù),允許其他人驗(yàn)證交易的加密數(shù)據(jù)亿虽,而不會(huì)被泄露菱涤。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Zcash交易圖
Zcash絕對(duì)是一個(gè)有趣的項(xiàng)目,值得關(guān)注洛勉。
例4:zkSNARKs +以太坊
在以太坊的下一個(gè)協(xié)議升級(jí)中粘秆,Metropolis,開發(fā)者將有能力有效驗(yàn)證鏈上的zk-SNARKs收毫。
在應(yīng)用了SNARKs的以太坊上我們可以做什么翻擒?某些合同變量可以被有效地私有化。取代存儲(chǔ)秘密信息在鏈上牛哺,它可以存儲(chǔ)信息在用戶哪里,那些可以證明他們遵守合同規(guī)則使用SNARKs的用戶劳吠。這些用戶中的每一個(gè)都需要獲得自己可信任的過程引润,這會(huì)增加一些準(zhǔn)備工作。但是痒玩,一旦路徑存在淳附,就可以根據(jù)需要使用于盡可能多的交易中议慰。
然而,以太坊上的SNARKs無法做到的是奴曙,獨(dú)立于用戶的自治性隱私别凹。由于以太坊上的SNARKs依靠用戶維護(hù)秘密的外鏈,如果沒有這個(gè)用戶洽糟,無法追蹤這個(gè)秘密炉菲。
例5:zkSTARKs
ZK-SNARKs有一個(gè)更新的,更閃亮的表親:ZK-STARK坤溃,'T'代表“透明”.ZK-STARK解決了Zk-SNARKs的主要弱點(diǎn)之一:依賴于可信賴的預(yù)先設(shè)置拍霜。它們也更簡(jiǎn)單,因?yàn)樗鼈兗兇庖蕾嚬S?jì)算和信息理論薪介,并且更安全祠饺,因?yàn)樗鼈儾皇褂脵E圓曲線或指數(shù)假設(shè)。
總的來說汁政,盡管在隱私保護(hù)方面取得了令人驚嘆的進(jìn)展道偷,但是仍然有很多工作要做。零知識(shí)證明軟件庫需要進(jìn)行大量的研究记劈,實(shí)戰(zhàn)檢驗(yàn)和完善勺鸦。 zkSNARKs和zkSTARKs需要在各種公共鏈上進(jìn)行實(shí)驗(yàn)。 Zcash需要在現(xiàn)實(shí)世界的場(chǎng)景用例中大規(guī)模地證明抠蚣。我們?nèi)匀贿€無法應(yīng)用這一方法祝旷。
5. 代碼混淆
另一個(gè)隱私保護(hù)機(jī)制是代碼混淆。目標(biāo)是找到一種混淆程序P的方法嘶窄,使得混淆器可以產(chǎn)生第二個(gè)程序O(P)= Q怀跛,使得如果給定相同的輸入,則P和Q返回相同的輸出柄冲,但是Q不顯示關(guān)于P的內(nèi)部結(jié)構(gòu)吻谋。這使得我們可以隱藏Q中的私有數(shù)據(jù),如密碼现横,社會(huì)安全號(hào)碼等漓拾,但仍然可以在程序中使用它。
雖然研究人員聲稱戒祠,黑盒混淆是不可能的骇两,但研究人員認(rèn)為弱化的混淆,不可區(qū)分性混淆器姜盈,是可以實(shí)現(xiàn)的低千。不可區(qū)分性混淆器O的定義是,如果你取兩個(gè)等價(jià)的程序A和B(即同一個(gè)輸入到A或B產(chǎn)生相同的輸出)并且計(jì)算O(A)= P和O(B)= Q馏颂,那么那里對(duì)于沒有訪問A或B的人來說示血,對(duì)于P是來自A還是B來說棋傍,沒有計(jì)算上可行的方法。
最近难审,研究人員Craig Gentry瘫拣,Amit Sahai等,已經(jīng)能夠完成不可區(qū)分的代碼混淆告喊。但是麸拄,該算法需要很大的計(jì)算量。
如果這個(gè)架構(gòu)可以獲得改進(jìn)葱绒,潛在的好處是巨大的感帅。在加密貨幣世界中,最令人感興趣的可能性是區(qū)塊鏈合同包含有私密信息地淀。
例如失球,我們可以想象一個(gè)以太坊合約,它包含一個(gè)用戶密碼給Coinbase帮毁。然后实苞,我們可以編寫一個(gè)程序,如果合同的某些條件得到滿足烈疚,合同將使用一些中間節(jié)點(diǎn)與Coinbase發(fā)起HTTPS會(huì)話黔牵,使用用戶的密碼登錄并進(jìn)行交易。由于合同中的信息將被混淆爷肝,中間節(jié)點(diǎn)或區(qū)塊鏈中的任何其他玩家將無法修改正在運(yùn)輸?shù)恼?qǐng)求或確定用戶的密碼猾浦。
6. Oracles
在區(qū)塊鏈空間中,一個(gè)Oracle是在智能合約和外部數(shù)據(jù)源之間傳遞信息的一方灯抛。它本質(zhì)上充當(dāng)區(qū)塊鏈上智能合約與區(qū)塊鏈外部數(shù)據(jù)源之間的數(shù)據(jù)載體金赦。因此,保持信息“私密”的一種方法就是使用Oracle從外部數(shù)據(jù)源獲取隱私信息对嚼。
7. 可信執(zhí)行環(huán)境
可信執(zhí)行環(huán)境(TEE)是主處理器的安全區(qū)域夹抗。它保證內(nèi)部加載的代碼和數(shù)據(jù)在保密性和完整性方面得到保護(hù)。這種可信賴的環(huán)境與面向用戶的操作系統(tǒng)并行運(yùn)行纵竖,但比面向用戶的操作系統(tǒng)更加私密和安全漠烧。
資料來源:https://www.slideshare.net/JavierGonzlez49/operating-system-support-for-runtime-security-with-a-trusted-execution-environment-phd-thesis
早期的研究和開發(fā)正在進(jìn)入TEE,以確定如何使用它們來實(shí)現(xiàn)區(qū)塊鏈上的隱私靡砌。我個(gè)人非常期待已脓,有更多的安全專家來解決這些問題。這方面的確需要更多的專家來通殃。