使用代理重加密+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+代理重加密,用户的我的健康数据能够加密存储在链上,也能够是医疗机构的服务器上,密钥由用户本身保管。若是有其余研究机构或者医药公司须要用户的健康数据来作研究,用户能够经过评估以后,使用代理重加密+区块链的解决方案共享给对应的机构和公司,并获取必定的酬劳。这样,用户本身的医疗健康数据全部权掌握在本身手中,且因为是加密存储,也无需担忧泄露我的隐私。同时,区块链不可篡改的特性,也能保证数据的真实性。

相关文章
相关标签/搜索