首页 > 其他分享 >云场景下的代理重加密 Proxy Re-Encryption

云场景下的代理重加密 Proxy Re-Encryption

时间:2024-04-12 21:55:26浏览次数:19  
标签:加密 Encryption Alice Re Proxy 密文 Bob 数据 密钥

目录

主页

引言

2022年12月,人工智能迎来了一件大事,OpenAI的ChatGPT横空诞生,成为了现象级产品。如果说算力是人工智能的发动机,那么数据则是人工智能的Gasoline

互联网平台的封闭导致了信息孤岛, 从而降低了数据公开流通,和数据要素价值,数据流通是实现数据社会化利用和实现数据资源价值的必然路径。随着国内数据二十条政策落地,支持依法依规在场内场外采取开放、共享、交换、交易等方式流通数据,为数据共享提供了法律和政策指导,推动了数据开放、流通和共享的发展。

数据二十条对数据安全提出了一定的要求:

  • 数据安全保护:在数据共享过程中,必须采取适当的安全措施,保护数据的机密性、完整性和可用性,防止未经授权的访问、使用和泄露。
  • 数据访问和使用权限:数据共享应该建立明确的访问和使用权限,确保只有授权的用户可以访问和使用数据,并限制数据的滥用和不当使用。
  • 数据共享协议和契约:数据共享应该建立在明确的协议和契约基础上,明确各方的权利和责任,确保数据共享的合法性和可持续性。

本文将要介绍的技术主要针对数据安全保护,在数据共享过程中保证数据的机密性

代理重加密

代理重加密(Proxy Re-encryption, 简称PRE)方案是一种密码系统,允许第三方(代理)修改为某一方(数据提供方)加密的密文,以便其他方(数据使用方) 能够解密该密文。

PRE方案主要有以下特点:

  • 委托(Delegation)- 允许消息接收者(密钥持有者)基于他的密钥和被委托用户的密钥生成一个重加密密钥。代理将使用这个重加密密钥作为输入,通过重加密函数将密文转换为被委托用户的密钥。非对称代理重加密方案有双向和单向两种类型。
  • 传递性(Transitivity)- 传递性代理重加密方案允许对密文进行无限次的重加密。例如,一个密文可以从Bob重新加密为Charlie,然后再从Charlie重新加密为David,依此类推。非传递性方案只允许对给定密文进行一次(或有限次数)的重加密。大多数已知的方案都是双向和传递性的。目前,唯一已知的单向传递性代理重加密是通过同态加密实现的。

PRE方案常用于云环境下的数据安全共享。

无PRE数据安全共享

在下图中,Alice为数据提供方,Bob为数据使用方,Alice和Bob分别维护自己的加密公私钥

image

  • Alice加密数据上传到云存储
  • 当Alice需要向Bob共享数据时,需要获取Bob的加密公钥
  • Alice使用Bob的加密公钥对数据进行加密,并上传到云存储,如:密文数据 for Bob
  • Bob下载密文数据,并本地解密获取明文数据

使用PRE进行数据共享

image

  • Alice将数据加密,并将加密后的数据上传到云存储
  • 当Alice需要向Bob共享数据时,需要获取Bob的加密公钥
  • Alice生成重加密密钥,并发送给代理重加密服务(Proxy Re-encryption Service)
  • 代理重加密服务基于重加密密钥和步骤1中的加密数据,生成重加密密文数据
  • Bob下载密文数据,并使用本地私钥进行解密,获取明文
对比 \ 数据共享 不使用PRE 使用PRE
性能 低,需要数据提供者进行本地加密,
性能依赖于本地算力
高,代理重加密服务部署在云端,
可以借助云计算能力
易用性 中,对于数据提供者和数据使用者来说,
难度与不适用PRE相差不大
复杂度 低,基于基础密码算法,
复杂度相对较低
依赖于PRE方案和Proxy服务,
流程较为复杂,有一定的实现和运维难度
安全性 较高,云厂商和数据使用方存在合谋风险,但攻击有限

代理重加密关键流程

代理重加密方案涉及五元组<KeyGen, Encrypt, ReGenKey, ReEncrypt, Decrypt>

  • KeyGen:本地密钥生成函数
  • Encrypt: 数据加密函数
  • ReGenKey:重加密密钥生成函数
  • ReEncrypt:数据重加密函数
  • Decrypt:数据解密函数

image

  • 数据提供方Alice和数据使用方Bob使用KeyGen函数,分别生成本地公私钥
  • Alice使用Encrypt函数对明文信息M进行加密,并将密文数据C上传到代理重加密服务Proxy
  • 数据使用方提供加密公钥,并发送给Alice
  • Alice使用ReGenKey函数,生成针对Bob的重加密密钥,并发送给Proxy
  • Proxy使用ReEncrypt,并基于密文数据C和重加密密钥,生成新的密文数据:重加密密文数据
  • Bob获取重加密密文数据,并使用本地私钥进行解密

以上方案中数据加解密使用了非对称算法,众所周知非对称算法性能较低,因此在实际应用中,一般会使用对称算法对数据进行加密,并使用代理重加密对对称密钥进行加密共享,由于对称密钥只有几十字节,所以性能会提升几个数量级。方案和流程如下:

image

优化版代理重加密方案涉及8元组<SymKeyGen, SymEncrypt, SymDecrypt, KeyGen, Encrypt, ReGenKey, ReEncrypt, Decrypt>

  • KeyGen, Encrypt, ReGenKey, ReEncrypt, Decrypt与前文同,不再赘述

  • SymKeyGen:对称算法密钥生成函数

  • SymEncrypt:对称加密函数

  • SymDecrypt:对称机密函数

  • 数据提供方和数据使用方使用KeyGen函数,分别生成本地公私钥。同时Alice生成对称密钥(随机数)

  • Alice使用Encrypt函数对明文信息M进行加密,并将密文数据C上传到代理重加密服务Proxy

  • 数据使用方提供加密公钥,并发送给Alice

  • Alice使用ReGenKey函数,生成针对Bob的重加密密钥,并发送给Proxy

  • Proxy使用ReEncrypt,并基于密文数据C和重加密密钥,生成新的密文数据:重加密密文数据

  • Bob获取重加密密文数据,并使用本地私钥进行解密

实践&应用

这里主要介绍demo以及相关应用

总结

在这里总结本文的主要内容和结论,强调解决问题的重要性和意义。
在这里展望未来的发展方向和可能的研究方向,让读者了解本文的研究价值和意义。

参考资料

在这里列出本文所引用的参考文献,让读者了解本文的来源和参考资料。

  • 参考资料1
  • 参考资料2

标签:加密,Encryption,Alice,Re,Proxy,密文,Bob,数据,密钥
From: https://www.cnblogs.com/informatics/p/18131941

相关文章