本期 AMA 項目爲 NuCypher,分享嘉賓爲 NuCypher 的加密算法工程師 John Pacific,分享的主題爲如何安全地存儲、共享和管理鏈上私人數據。
原文標題:《對話 NuCypher:如何安全地存儲、共享和管理鏈上私人數據》
分享:John Pacific,NuCypher 加密算法工程師
John Pacific,NuCypher 加密算法工程師
AMA 分爲固定問答和自由問答兩個環節。
固定問答
1 Unitimes:你好 John。歡迎參加 Unitimes AMA,請先介紹一下你自己以及 NuCypher 吧。
大家好,我是 John Pacific。大家通常都叫我「Tux」(Linux 的吉祥物企鵝的名字),大家也可以 t 通過這個名字在我們的 Discord(一款語音與文字聊天工具)上找到我。
NuCypher 是一個去中心化應用程序的隱私層。我們允許開發人員在構建尊重個人隱私的應用程序,並通過去中心化的方式尊重他們的意見。這一點是通過「代理重加密」技術(Proxy Re-Encryption)來實現的。
2 Unitimes:NuCypher 具體怎麼運作的?它和中心化密鑰管理系統有什麼不同?
使用稱爲「閾值加密」的東西並將其應用於代理重新加密(PRE),我們開發了一種稱爲「Umbral」(源自拉丁語,意爲「影子」)的獨特加密方案。
Umbral 允許我們在法定數量的節點上分離對重新加密操作的信任,這就是 NuCypher 非常安全的原因。Umbral 使用「m of n」方案,該方案指定我們需要「m」次重新加密(稱爲閾值)來訪問某些數據。
在 NuCypher 網絡中,我們將「n」個密鑰分配給網絡上「n」個節點。當這些節點收到重新加密的請求時,他們會執行加密操作用零知識證明的方法證明他們是正確的。如果他們沒有正確地執行操作,那麼我們可以使用我們在以太坊上部署的智能合約來削減惡意執行操作的節點。
與中心化服務相比,NuCypher 的服務是去信任化的。我們在網絡中的節點永遠看不到明文,因爲它們只在密文上運行。這是非常獨特的,因爲在中心化服務中,你得相信服務商不會把你的私鑰泄露出去。
通過這種方式,NuCypher 實現了抗審查且不可阻擋的端到端加密和隱私。
3 Unitimes:什麼是代理重加密?你能用通俗易懂的語言給大家解釋一下嗎?
假設有兩個人分別叫 Alice 和 Bob。Bob 想要在 Alice 允許的情況下獲得她的某些數據(例如照片)。但 Alice 不想用 Bob 的公鑰來加密數據,因爲這樣的話他就可以保留對數據的永久訪問權限。所以她希望共享用她自己的密鑰來加密過的數據。
通過使用代理重加密技術,Alice 可以授予 Bob 在特定時間內訪問該照片的權限。要實現這一點,Alice 可以用她的私鑰和 Bob 的私鑰生成重新加密密鑰。然後,她將密鑰分成「n」個片段,並將每個片段分發到我們網絡上的節點。
(以上是代理重加密閾值加密部分)
使用重加密密鑰,節點能夠用 Alice 的密鑰轉換加密數據,也能用 Bob 的密鑰解密。
NuCypher 不對「批量數據」(如照片或者其他加密過的內容)進行操作,我們只是對加密這些數據的密鑰進行重加密。
重加密之後,Bob 將有權限訪問 Alice 指定的時間段內的數據。一旦超過了這個時間段,Bob 就會失去訪問權限,再也看不到 Alice 的照片了。如果 Alice 不想讓 Bob 訪問數據,Alice 也可以隨時撤銷 Bob 的訪問權限。
代理重加密技術可以有效地創建訪問控制系統。
4 Unitimes:代理重加密的典型應用場景有哪些?
一個很典型的用例是不受審查的加密文件傳輸。如果你擔心有人看到你要傳輸的文件而對文件傳輸進行阻止,那你就可以用 NuCypher 來進行操作。
我們希望看到能夠尊重用戶感受的應用程序。如果在共享某個數據的中途不想再繼續共享了,也可以撤銷對這個數據的訪問權限。
建立認同這一點的數字系統對於社會公正和隱私來說非常重要。
5 Unitimes:NuCypher 網絡中的區塊鏈部分是如何運作的?
我們的區塊鏈部分其實非常簡單——用於組織獲取拆分重加密密鑰片段的節點的數量。我們也會對這些節點的付款進行協調。
我之前提到了這一點,區塊鏈技術在 NuCypher 網絡中的一個重要功能是使用零知識證明來證明重加密的正確執行。某個節點加入我們的網絡時會質押我們的代幣。如果這個節點執行錯誤的重加密並且零知識證明無法驗證的話,那麼我們就會削減他們的收益。
6 Unitimes:在你看來,爲什麼代理重加密非常適用於分佈式系統?
代理重加密比標準公鑰加密具有更高的可擴展性。在標準公鑰加密中,必須爲系統中的每個用戶加密。如果你想與 500 人共享一些數據,那就必須加密 500 次!
這樣的話擴展性是一個很大的問題。而代理重加密技術可以只需要進行一次加密,然後授予對該數據的訪問權限。這個技術還允許我們在這些系統中建立隱私和同意控制,這是傳統的公鑰基礎設施無法做到的。
7 Unitimes:你們打算如何和傳統的密鑰管理巨頭(如谷歌亞、馬遜和微軟等)競爭?
除了我們的產品以及我們實現安全的目標與他們一致之外,我認爲我們並不真正參與和這些巨頭的競爭。
與谷歌、亞馬遜或微軟不同,我們現在專注於分佈式系統。但是,我們的產品也非常具有競爭力。如果我們真的要競爭的話,我認爲我們的技術團隊能夠與這樣的公司競爭,甚至比他們做得更好。
此外,我們還提供完全同態加密。我們的完全同態加密庫目前是世界上最快、最實用的,而且技術也不斷在進步。
8 Unitimes:NuCypher 代幣 NKMS 有什麼功能?
我們的代幣 NKMS 創建了一種激勵機制,讓我們能夠引進我之前提到的博弈論機制。關於這方面的更多信息,推薦大家閱讀這篇文章,瞭解我們的 WorkLock 代幣分發模式:
https://blog.nucypher.com/the-worklock
9 Unitimes:NuCypher 會嚴重依賴以太坊的性能表現嗎?
僅僅在付款和節點數量組織流程上會依賴。
但是,我們希望我們的方法能夠在此方面進行改進,未來如果付款有了替代新方案之後,可能依賴度會降低。
10 Unitimes:一月底的時候 NuCypher 發佈了創世版(測試版),目前運行得怎麼樣?你們的下一步計劃是什麼?
進展非常順利!我們目前專注於下一個版本 —— 一個去中心化的開發網。在那之後,它將成爲我們主網上線的終點線衝刺。
我們一直在贊助黑客松,讓更多的開發人員準備好開始在公共網絡上使用我們的技術。我們通過創世版發現了許多漏洞並且已經爲其構建修復程序了。這非常令人激動!
自由問答
固定問答環節結束後,參與此次 AMA 的成員可以自由提問。以下爲 Unitimes 從羣成員的提問中精選的幾個問答:
1 運行一個節點能獲得多少收益 ?
這取決於你質押 (stake) 的資產的多少以及節點在網絡中的正常運行時間和表現。想要獲取一個明確的答案,請查看我在我們官網提及的挖礦論文。你可以根據你的具體情況來獲知具體的收益詳情。
2 你好 , John。感謝你的分享。你們當前使用的零知識證明 (ZKP) 協議是什麼?或者是你們使用的是一個定製化的協議?
實際上我們使用的是一個最簡單的協議—— Schnorr 協議證明。我們不需要在我們的應用中使用諸如 zkSNARKs 或者 Bulletproofs 等複雜的協議。我們可以使用更爲簡單的零知識證明協議。
3 你好,John。感謝你的分享。我的問題是,代理重加密 (proxy re-encryption) 主要是應用於私鑰的加密,而是不原始數據的加密。我想知道的是你們會將數據存儲在哪裏?你們會維護一個類似 IPFS (星際文件系統) 的數據層嗎?
我們當前並沒有限定存儲的地方。我們允許應用開發者們將數據存儲在任何他們想要存儲的地方。當前我們的網絡並沒有一個存儲層。
4 請問你「彭博社專欄將 Cosmos、Nervos、NuCypher 和 PolkaDot 列爲 2019 年最應該關注的四個重點項目」這一事件有什麼看法?
我覺得這很棒!這證明了關注隱私保護和共識的開源技術能夠帶來重大影響。
5 撤銷數據傳輸或者共享操作 (revoking access) 也需要最低人數達成共識嗎?
是的,我們需要一個最低數量的節點來參與到撤銷操作中。但是,這項政策將會自行失效。
6 你好,John。當前還有其他代理重加密解決方案能和你們競爭嗎?
曾經有好幾家企業致力於代理重加密的研究,但是他們的實現並不像我們的那樣安全和強勁。據我所知,他們的競爭力不及我們。
7 我要在哪裏將我的加密數據上傳到 NuCypher 網絡中?
NuCypher 並不會提供一個存儲方案。我們告訴開發者們,他們可以自由地選擇存儲方案,比如 Amazon S3、IPFS 和 Google Drive 等等。
8 如果節點出現故障,返回虛假或者錯誤的信息,那該怎麼辦?
這就是爲何我們需要零知識證明的原因。如果數據是虛假或者錯誤的,我們可以對數據進行證明。我們的智能合約將對有故障的節點進行罰沒 (slash),網絡也將自我糾正。
9 John,使用 Schnorr 零知識證明來驗證數據的一般 gas 成本是多少?
實際上成本有一點高。如果我記得沒錯的話,應該是 70 萬至 100 萬 gas。但是隻有當某個用戶得到了一個錯誤的證明時,我們纔有必要進行這一操作。報告錯誤證明的用戶也會獲得一筆報酬作爲獎勵,這筆獎勵將足以抵消 gas 成本。
10 通過使用代理重加密,如果我的數據被黑客攻擊了,那這些數據將依舊很安全嗎?
這要取決於攻擊的類型,但我們的目標是讓你的數據能夠抵禦任何攻擊者(即便是政府級別的攻擊者)。