使用代理重加密+PlatONE,來保證數據可信、安全地共享

在製造、醫藥等行業中,有着大量沉睡的數據。利用這些數據,將有潛力推進技術創新或解密生命科學。但同時,這些數據中涉及商業機密和用戶隱私保護,在不可信環境下實現安全的數據共享一直是一個難題,傳統中心化方案存在數據容易被泄露、數據容易被篡改、數據去向難以追蹤、監管難度大等問題。公鑰體制下的數據共享方案則存在通訊代價、計算成本高、實用性差等問題。在數據沉睡和數據濫用的兩個極端間,是否能夠有技術手段來完成數據的受權與祕密分享?算法

本篇將討論區塊鏈技術與代理重加密(PRE)技術的融合方案,這種方案可使用中間方提供的技術能力,但又能規避中間方獲取數據明文,已達到數據的安全共享。數據庫

 

公鑰直接加密法

咱們先來看看若是直接進行數據分享,有沒有什麼簡單的方法。下面以Alice(數據擁有者)向Bob(數據接收者)分享一份文件爲例,說明公鑰直接加密法。安全

1、Alice使用Bob的公鑰對文件進行加密。服務器

2、將數據分享給Bob。網絡

3、Bob解密文件,獲取信息。併發

這個過程簡單而直接,這就是公鑰直接加密法。但若是面對使用存儲網絡進行數據分享的狀況公鑰直接加密法有沒有優點呢?區塊鏈

因爲數據存儲在存儲網絡中,且本身的私鑰不能泄漏,因此Alice須要先下載文件,解密、從新使用Bob的公鑰加密再上傳到存儲網絡中,而後Bob能夠從存儲網絡中獲取文件。加密

還有一個問題,若是Alice有一天又想把數據分享給Julia,那麼他須要再從新將上面的操做進行一遍。spa

分析上面的問題,咱們其實只使用了存儲網絡的存儲功能,而沒有使用存儲網絡的計算功能。因此「直接公鑰加密」是一種很是笨拙的方法。3d

 

代理重加密(Proxy Re-Encryption,PRE

公鑰加密的這個過程其實很簡單。這個過程當中,輸入是用Alice的公鑰加密過的文件,輸出是通過Bob公鑰加密過的文件。那麼Alice能不能在不泄漏本身的私鑰給存儲網絡的同時,又作到這一點呢?

爲了在傳輸和存儲時保證數據的隱私安全,咱們會在可信區域經過AES等對稱密鑰算法,使用隨機生成的對稱密鑰將數據進行加密。就像私鑰對於數字資產的意義同樣,這些對稱密鑰幾乎和數據明文的價值至關。

如何管理這些密鑰呢?這讓人聯想到密鑰管理系統(KMS)。這個詞彙因微軟的License受權系統而被叫響。微軟的KMS是一套中心化的密鑰管理方案,微軟的KMS服務器掌握了全部密鑰,來協助用戶激活客戶端上微軟發行的軟件。因客戶端側只需一個腳本就能夠完成激活,在大規模的部署場景上,這種方式很是安全高效。但中心化密鑰管理系統顯然不適用管理祕密分享的場景,由於密鑰和數據價值與數據的主權方有關,而與技術的提供方無關。

這些需求催生了基於代理重加密的KMS方案。與中心化KMS不一樣,PRE實現了對於密鑰這個祕密自己兩次加密過程,做爲中間方的加密代理服務提供了KMS的能力,可是它全程接觸不到密鑰。

總的來講,代理重加密是一種基於公鑰加密體系的密碼學方案實現。拜賜這一方案,加密代理服務能夠在不知道密鑰內容的狀況下,將密鑰從一個公鑰對應的實體轉移到另外一個公鑰對應的實體。

咱們再次引入Alice和Bob這兩位經典的密碼學角色來闡述這一過程的原理。

Alice:數據的擁有者。

Bob:數據的使用者。

Proxy:懵懂的代理加密中間方。

  1. Alice用她的公鑰pkA加密了須要分享的密鑰(m),咱們知道這個加密後的結果cA只有Alice的私鑰skA才能解開;這個加密操做能夠由任何Alice的可信設備來完成;

cA=pkA(m)

  1. Alice準備將這個密鑰(m)受權給Bob,固然她的意圖是受權Bob訪問密鑰對應數據的權限。Alice使用Bob的公鑰和本身的私鑰製造了一個重加密密鑰(rkA→B),這個rkA→B的生成是個單向過程,沒法得知skA的部分:

rkA→B = rekey(skA,pkB)

  1. 代理加密中間方Proxy,拿到了Alice加密後的密鑰密文cA和重加密密鑰rkA→B,惟一可作的就是再次加密,產出了cB:

cB = reencrypt(rkA→B,cA)

  1. Bob拿到cB,能夠經過本身的私鑰skB來接出Alice分享的密鑰(m):

m=skB(cB)

這裏有一份更詳盡算法過程:

固然,兩方之間的協商計算也能夠用來傳送密鑰。可是代理重加密的好處是,它不是1對1的,它是N對N的;且它基於非交互的,不要求參與方同時在線。

總結來講,代理重加密是一種密鑰轉換算法,能夠將數據擁有者(受權人)公鑰加密的密文轉換爲另外一種密文,被轉換後的密文能夠由數據使用者(被受權人)的私鑰進行解密。密文轉換過程由一個半可信的代理服務器(proxy)執行,在執行該過程前,代理節點須要持有一個由受權人到被受權人的轉換密鑰,通常受權人提早生成併發送給代理節點。經過轉換密鑰沒法直接解析密文,最終還須要被受權人的私鑰才能解密,因此代理節點沒辦法獲取到明文信息。

 

PRE+PlatONE

代理重加密節點相對比較中心化,若是使用在無信任的去中心化場景中,就須要考慮到節點做惡的風險,即便使用密鑰分片到多個節點也只能下降節點做惡的可能性。使用區塊鏈智能合約來管理節點,並制定相應的獎懲措施來懲罰做惡的節點。同時,區塊鏈也能夠存儲隱私數據的哈希值,以確保雲端存儲的數據的一致性。

加入區塊鏈後,在獎懲機制方面,能夠有多種方式。好比,節點成爲代理節點以前須要在區塊鏈質押必定Token,才能註冊成爲節點;代幣在節點取消註冊後解凍,在節點做惡時會被扣除必定的Token;節點經過正常的密鑰轉換賺取必定的酬勞;被委託人若是經過節點申請重加密以後解密失敗,能夠經過智能合約校驗是否爲節點做惡,若是是則對做惡節點扣除必定的代幣做爲懲罰

所以,在PRE的基礎之上,咱們引入了PlatONE聯盟鏈,使用鏈的帳戶體系,經過鏈的存證能力確立數據主權方,再經過Token經濟學實現數據市場。

PlatONE是支持隱私計算的聯盟鏈,將其做爲PRE方案的一個支撐,主要是由於PlatONE擁有完善的企業級權限管理機制,可以實現數據主權的多層級、多維度的管控;支持CA證書機制,能夠實現數據主權的逐級受權。另外,PlatONE支持同態加密、零知識證實等多種隱私保護密碼學算法,可以解決數據受權過程當中,雙方身份等敏感信息泄露問題。

咱們知道,區塊鏈的帳戶機制也是基於公鑰密碼體系,帳戶地址的實際由公鑰計算而來,Alice和Bob的公鑰能夠關聯到PlatONE上的帳戶地址。

在數據的祕密分享以前,Alice能夠對於數據內容進行哈希,並匯同數據概述、主權人信息、數據的實際存儲位置、數據使用的收費規則等造成一個信息集。Alice用私鑰簽名這個信息集,併發向PlatONE上的一個用於確立數據主權的智能合約。

Alice對於數據訪問的受權機制,也是經過智能合約實現的。這樣在受權以前,Alice就能夠向Bob要上一筆數據的使用費了。

 

應用前景

以現實生活中的醫療健康數據爲例,這些數據對於我的來講屬於隱私數據,好比病例信息,體檢結果等,這些信息通常存儲在醫療機構的數據庫中,用戶並無自身醫療健康數據的全部權,若是機構將數據共享給一些其餘的研究機構,醫藥公司等,就會泄露用戶的我的隱私。

結合聯盟鏈平臺PlatONE+代理重加密,用戶的我的健康數據能夠加密存儲在鏈上,也能夠是醫療機構的服務器上,密鑰由用戶本身保管。若是有其餘研究機構或者醫藥公司須要用戶的健康數據來作研究,用戶能夠經過評估以後,使用代理重加密+區塊鏈的解決方案共享給對應的機構和公司,並獲取必定的酬勞。這樣,用戶本身的醫療健康數據全部權掌握在本身手中,且因爲是加密存儲,也無需擔憂泄露我的隱私。同時,區塊鏈不可篡改的特性,也能保證數據的真實性。

相關文章
相關標籤/搜索