专栏首页用户7358413的专栏分片重加密实现区块链可分享型隐私
原创

分片重加密实现区块链可分享型隐私

1. 现状

我们习惯把数据都存储在各种云服务器上,带来方便的同时也存在很多数据隐私泄露的隐患,绝大多数的云服务供应商并不完全值得信任,他们完全可以在未经用户允许的情况下擅自泄露用户的数据,用户甚至毫不知情。

解决这个问题最直接的方法是存储之前将隐私数据加密,只要保管好加密密钥不泄露,就不会存在问题。然而这种情况下,数据也只能由用户自己通过私钥解密,如果需要共享数据给其他用户的话,就只能在可信的环境将密钥也共享,这就给数据分享带来了很大的风险。所以还需要一个更好的解决方案,在不暴露私钥的同时能将加密数据共享给特定用户,且该用户在没有密钥的情况也能解密。代理重加密就解决了这个问题。

2. 基本概念

代理重加密(Proxy Re-Encryption, PRE)是一种密钥转换算法,可以将数据所有人(owner)公钥加密的密文可以被转换为另一种密文,被转换后的密文可以由被授权人(recipient)的私钥进行解密。密文转换过程由一个半可信的代理服务器(proxy)执行,在执行该过程前,代理节点需要持有一个由授权人到被授权人的转换密钥,一般授权人提前生成并发送给代理节点。通过转换密钥无法直接解析密文,最终还需要被授权人的私钥才能解密,所以代理节点没办法获取到明文信息。

3. 算法流程

假设Alice要通过代理重加密节点给Bob共享数据,Alice作为sender,Bob作为Receiver

3.1数据加密

  • Alice生成一个随机数dek,作为对称加密密钥:dek = random()
  • 使用对称加密密钥dek加密待分享的数据d:c = encryptSym(dek, d)
  • 使用Alice的非对称公钥加密对称加密密钥dek:edek = encryptPke(pkA, dek)
  • 加密数据c+加密的密钥edek上传到云服务器

3.2 重加密密钥

  • Alice使用自己的私钥和Bob的公钥为Bob生成对应的重加密密钥:re = reKey(skA, pkB)
  • 将重加密密钥分发到重加密节点

3.3 数据解密

  • Bob在云服务器下载加密数据c+加密的密钥edek
  • 向重加密节点申请重加密
  • 重加密节点密钥转换:edek'=reEncrypt(reS->R, edek)
  • 使用Bob私钥解密对称密钥:dek=decryptPke(skB, edek') 
  • 使用对称加密密钥解密数据:d=decryptSym(dek, c)

4. 密钥分片

代理重加密节点虽然无法通过转换密钥解析密文,但也可能会出现由于故障,宕机,网络连接等问题导致被授权人解密失败,或者可能出现代理节点作恶,不转换或者错误转换,同样会导致被授权人解密失败。Shamir门限密钥共享方案正好解决这个问题。

Shamir门限密钥共享方案也称为(k,n)门限密钥共享方案,假设有n个成员,算法把密钥拆分成n个密钥分片,只有收集大于等于k个分片才能将原始的密钥重构,k就是门限值(k < n)。

数据所有人将转换密钥使用Shamir门限密钥共享方案拆分成n个密钥分片,分别发送给n个代理重加密节点。被授权人需要向至少k个节点申请密钥转换,然后再使用Shamir门限密钥共享方案重构转换密钥。

被授权人只需要申请k个密钥分片就可以解密,降低了单个节点异常的风险,也降低了节点作恶的成功率。

5. 代理重加密和传统DH加密的区别

区别一

传统的DH加密原理是发送方和接受方选择独自的随机数,经过一定计算之后交换计算结果,然后双方生成同样的数作为对称加密共享密钥。

DH加密结合云服务器存储也能解决隐私数据上链的问题,在共享用户数量,加密文件和密钥稳定性不变的时候,两者区别不大,重加密甚至复杂度会相对高一点。

在共享用户数量不定,加密文件数量不定,或者对称密钥频繁更新的场景,DH加密会增加客户端的加密工作量,而代理重加密则把这部分工作转化为重加密转移到云服务器完成。

区别二

传统加密方式没有密钥管理,一次分享之后除非更换对称加密密钥,否则被分享人一直具有解密权限

代理重加密有密钥管理机制,分享者可以通过重加密节点可以对分享用户的访问时限和权限做控制

6. 代理重加密和区块链

代理重加密节点相对比较中心化,如果使用在不信任的去中心化的场景中,就需要考虑到节点作恶的风险,即使使用密钥分片到多个节点也只能降低节点作恶的可能性,节点还是有可能会联合作恶。使用区块链智能合约来管理节点,可以使用相应的奖惩措施来惩罚作恶的节点。同时,区块链也可以存储隐私数据的哈希,以确保云端存储的数据的一致性。

  • 节点成为代理节点之前需要在区块链质押一定的代币,才能注册成为节点;代币在节点取消注册后解冻,在节点作恶时会被扣除一定的代币
  • 节点通过正常的密钥转换赚取一定的酬劳
  • 被委托人如果通过节点申请重加密之后解密失败,可以通过智能合约校验是否为节点作恶,如果是则对作恶节点扣除一定的代币作为惩罚

7. 总结

  • 代理重加密解决了隐私数据的加密和无交互共享,以及共享权限管理
  • 密钥分片降低了代理节点作恶和宕机导致的解密失败的风险
  • 代理重加密结合区块链智能合约可以使用在不信任的去中心化网络中

8. 应用案例

现实生活中的医疗健康数据针对于个人来说属于隐私数据,比如病例信息,体检结果等,这些信息一般存储在医疗机构的数据库中,用户并没有自身医疗健康数据的所有权,机构可以将数据共享给一些其他的研究机构,医药公司等等,完全泄露了用户的个人隐私。

结合区块链+代理重加密,用户的个人健康数据可以加密存储在区块链或者是云服务器上,也可以是医疗机构的服务器上,密钥由用户自己保管。如果有其他研究机构或者医药公司需要收集用户的健康数据,用户可以通过评估之后,使用代理重加密共享给对应的机构和公司,并获取一定的酬劳。通过区块链+代理重加密的解决方案,用户自己的医疗健康数据的所有权在自己手中,且由于是加密存储,也无需担心泄露个人隐私,并且区块链不可篡改的特性,同时也能保证数据的真实性。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分片重加密实现区块链可分享型隐私

    我们习惯把数据都存储在各种云服务器上,带来方便的同时也存在很多数据隐私泄露的隐患,绝大多数的云服务供应商并不完全值得信任,他们完全可以在未经用户允许的情况下擅自...

    用户7358413
  • 某动态js加密cookie网站爬虫记录

    1.问题由来:由于公司新项目需求,需要从不同平台爬取大量与项目相关的数据,大多数平台没有反爬机制,只有一个站点布置了反爬。虽然可以爬取的平台很多,可以选择爬取其...

    用户7358413
  • 比特元黑科技?分片节点如何突破“数据膨胀"难题?

    2020的区块链公链的发展又迈向了新的行业里程碑,包括应用创新、生态联合等多方向齐头并进发展。然而繁荣背后,限制行业发展桎梏依旧存在,资本推动一时的繁荣,但真实...

    用户7358413
  • 分片重加密实现区块链可分享型隐私

    我们习惯把数据都存储在各种云服务器上,带来方便的同时也存在很多数据隐私泄露的隐患,绝大多数的云服务供应商并不完全值得信任,他们完全可以在未经用户允许的情况下擅自...

    用户7358413
  • HTTPS 之对称加密与非对称加密

    加密 encryption 与解密 decryption 使用的是同样的密钥 secret key,对称加密是最快速、最简单的一种加密方式。加密和解密算法是公开...

    s_在路上
  • 非对称加密和对称加密的区别

    对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫...

    sunsky
  • 什么是HDFS透明加密

    数据加密是安全级别要求较高企业所必须的,比如说金融行业,医疗行业或者政府。我们知道HDFS中的数据会以block的形式保存在各台数据节点的本地磁盘中,但这些bl...

    Fayson
  • 开发过程中你都用到了哪些数据加密算法

    在日常的开发过程中,主要使用的加密算法有摘要算法、对称加密算法和非对称加密算法。融合自己的理解和一些简单的示例,记录下来,便于日常查看。后期也会不断的更新该文章...

    A梦多啦A
  • 通俗理解HTTPS

    说起HTTP请求,我们几乎每天都在发出这样的请求,例如我们在浏览器中输入http://www.baidu.com时,就是向百度的服务器发出一个http请求,...

    xujjj
  • 在线系统数据服务的迁移策略

    成都办公室的张耀丹是去年毕业的,只是他的职业生涯一开始就面对一个复杂的遗留系统。好在遗留系统的复杂并没有让他退却,而是从中学习到了解决遗留系统的思考之道。 他写...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券