+-
使用代理重加密+PlatONE,来保证数据可信、安全地共享

在制造、医药等行业中,有着大量沉睡的数据。利用这些数据,将有潜力推动技术创新或解密生命科学。但同时,这些数据中涉及商业机密和用户隐私保护,在不可信环境下实现安全的数据共享一直是一个难题,传统中心化方案存在数据容易被泄露、数据容易被篡改、数据去向难以追踪、监管难度大等问题。公钥体制下的数据共享方案则存在通信代价、计算成本高、实用性差等问题。在数据沉睡和数据滥用的两个极端间,是否可以有技术手段来完成数据的授权与秘密分享?

本篇将讨论区块链技术与代理重加密(PRE)技术的融合方案,这种方案可以使用中间方提供的技术能力,但又能规避中间方获取数据明文,已达到数据的安全共享。

公钥直接加密法

我们先来看看如果直接进行数据分享,有没有什么简单的方法。下面以Alice(数据拥有者)向Bob(数据接收者)分享一份文件为例,说明公钥直接加密法。

1、Alice使用Bob的公钥对文件进行加密。

2、将数据分享给Bob。

3、Bob解密文件,获取信息。

这个过程简单而直接,这就是公钥直接加密法。但如果面对使用存储网络进行数据分享的情况公钥直接加密法有没有优势呢?

由于数据存储在存储网络中,且自己的私钥不能泄漏,所以Alice需要先下载文件,解密、重新使用Bob的公钥加密再上传到存储网络中,然后Bob可以从存储网络中获取文件。

还有一个问题,如果Alice有一天又想把数据分享给Julia,那么他需要再重新将上面的操作进行一遍。

分析上面的问题,我们其实只使用了存储网络的存储功能,而没有使用存储网络的计算功能。所以“直接公钥加密”是一种非常笨拙的方法。

代理重加密Proxy Re-Encryption,PRE

公钥加密的这个过程其实很简单。这个过程中,输入是用Alice的公钥加密过的文件,输出是经过Bob公钥加密过的文件。那么Alice能不能在不泄漏自己的私钥给存储网络的同时,又做到这一点呢?

为了在传输和存储时保证数据的隐私安全,我们会在可信区域通过AES等对称密钥算法,使用随机生成的对称密钥将数据进行加密。就像私钥对于数字资产的意义一样,这些对称密钥几乎和数据明文的价值相当。

如何管理这些密钥呢?这让人联想到密钥管理系统(KMS)。这个词汇因微软的License授权系统而被叫响。微软的KMS是一套中心化的密钥管理方案,微软的KMS服务器掌握了所有密钥,来协助用户激活客户端上微软发行的软件。因客户端侧只需一个脚本就可以完成激活,在大规模的部署场景上,这种方式非常安全高效。但中心化密钥管理系统显然不适用管理秘密分享的场景,因为密钥和数据价值与数据的主权方有关,而与技术的提供方无关。
image
这些需求催生了基于代理重加密的KMS方案。与中心化KMS不同,PRE实现了对于密钥这个秘密本身两次加密过程,作为中间方的加密代理服务提供了KMS的能力,但是它全程接触不到密钥。
image
总的来说,代理重加密是一种基于公钥加密体系的密码学方案实现。拜赐这一方案,加密代理服务可以在不知道密钥内容的情况下,将密钥从一个公钥对应的实体转移到另一个公钥对应的实体。
image
我们再次引入Alice和Bob这两位经典的密码学角色来阐述这一过程的原理。

Alice:数据的拥有者。

Bob:数据的使用者。

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

Alice用她的公钥pkA加密了需要分享的密钥(m),我们知道这个加密后的结果cA只有Alice的私钥skA才能解开;这个加密操作可以由任何Alice的可信设备来完成;

cA=pkA(m)

Alice准备将这个密钥(m)授权给Bob,当然她的意图是授权Bob访问密钥对应数据的权限。Alice使用Bob的公钥和自己的私钥制造了一个重加密密钥(rkA→B),这个rkA→B的生成是个单向过程,无法得知skA的部分:

rkA→B = rekey(skA,pkB)

代理加密中间方Proxy,拿到了Alice加密后的密钥密文cA和重加密密钥rkA→B,唯一可做的就是再次加密,产出了cB:

cB = reencrypt(rkA→B,cA)

Bob拿到cB,可以通过自己的私钥skB来接出Alice分享的密钥(m):

m=skB(cB)

这里有一份更详尽算法过程:
image
当然,两方之间的协商计算也可以用来传送密钥。但是代理重加密的好处是,它不是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+代理重加密,用户的个人健康数据可以加密存储在链上,也可以是医疗机构的服务器上,密钥由用户自己保管。如果有其他研究机构或者医药公司需要用户的健康数据来做研究,用户可以通过评估之后,使用代理重加密+区块链的解决方案共享给对应的机构和公司,并获取一定的酬劳。这样,用户自己的医疗健康数据所有权掌握在自己手中,且由于是加密存储,也无需担心泄露个人隐私。同时,区块链不可篡改的特性,也能保证数据的真实性。