去中心世界的加解密專家 NuCypher
Dapp 中的資料傳輸
最近為了寫一些Dapp真的是想破頭,總是不知道怎麼解決鏈上資料加解密的問題。剛好無意中發現了Ocean Protocal中提到他們使用的Data交換就是計畫透過NuCypher來進行加解密,不看還好,一看發現:「這根本是未來去中心化世界的重要一根支柱阿!」
在區塊鏈上,所有的東西都是可以被所有人看到的,所以所有敏感的內容一定要經過「加密」才可以放到鏈上。但是如果使用較傳統的加密方式,例如Public key - Private key非對稱式加密,同一筆資料要寄給不同人時,就需要利用不同人的公鑰來加密。儘管有像是IPFS這樣去中心化的儲存空間,同一筆「資料」也會因為要給不同人,而被複製很多次因而浪費這些空間。
Image Sources: Slides online document
改進的方法有很多,其一就是先用一個對稱式加密加密文件,接下來只要再「把這把鑰匙用不同人的公鑰加密」,並寄給其他人,大家就能夠透過自己私鑰解開,得到能夠打開雲端文件鎖的鑰匙,這麼一來檔案不用一再被複製。不過NuCypher想的更高更遠,甚至不想要信任任何一個中間傳遞這些訊息的節點,想要作到一個完完全全的去中心化。
Proxy Reencryption
NuCypher自己開發了一套稱為Re-encryption的加密方式,也就是說,在一個文件被利用鑰匙dek
一次加密過後,發送者會使用自己的私鑰以及對方的公鑰產生一組Re-encryption Key
。產生這組Re-encryption Key
之後,便會傳給網路中的Proxy(代理者)
現在先想像在中心化的世界裡,這些Proxy會乖乖的在透過一個Reencrypt()
的Function,利用剛剛的reencryption key來Reencrypt大家都看得到的「加密後文件密碼(e-dek)」。厲害的是,經過這個Function之後產生的「新e-dek」就可以由Bob直接用自己的私鑰解密,接著接收者就可以拿到解開檔案的最後一把鑰匙:dek
。
Decentralization
Threshold split-key Re-encryption
到這裡好像很多東西並不是太必要,但別忘了剛剛是所謂「中心化」的世界。NuCypher未來會做一個分散式的Server(就像是智能合約)負責所有Reencryption Key的發放,做這個去中心化就是為了避免被攻擊等等造成的危險,所以整個網路中,實際上會有很多的Node掌管re-encryption key的不同部份(Split-Key Reencryption)。這個加密系統的設計就是讓你在某些Node失效的情況下仍然可以重組出想要獲取某Data的鑰匙。(有點像Multisig的概念)
Access Control
同時這個設計之下,有另外一個很大的好處就是所有人Access權限的管理。在這樣由不同node掌管re-encryption key的世界裡,只要你刪除對某人的re-encryption key,就等於拿走他Access Data的權力。
還有,有了NuCypher Protocal後,可以透過一個智能合約可以撰寫一些:「付錢就給你資料」的簡單規則,雖然這不一定需要Re-encryption才做的到,但是他提昇了區塊鏈應用設計的方便性。總之,我是覺得我找到我在找的東西啦!雖然後面的密碼學複雜到我完全看不懂,但感覺未來日子還很長呀,有時間再慢慢讀,現在先把code clone下來玩玩看再說囉...
有興趣的朋友也可以自己去看看這部完整的YouTube,講到更多的細節以及關於發Token的計畫。其實我聽完也覺得這感覺真的是個很基礎端被需要的Protocal,考慮贊助一下這個友善的開發團隊吧 xD
This post has received a 1.66 % upvote from @booster thanks to: @antonsteemit.
@antonsteemit, 我很欣赏你!
你好吗?才子,才女,你参加月旦评了吗?有才的人都去参加了呢。假如我的留言打扰到你,请回复“取消”。
Congratulations,
you just received a 20.83% upvote from @steemhq - Community Bot!
Wanna join and receive free upvotes yourself?
Vote for
steemhq.witness
on Steemit or directly on SteemConnect and join the Community Witness.This service was brought to you by SteemHQ.com