代理重加密(Proxy Re-Encryption)技术原理和Java代码实现

2023-11-08

欢迎关注公众号:区块链之美, 致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。

1. 代理重加秘的应用介绍

由于大部分的云服务供应商并不能完全值得信任,云服务供应商可能会在未经用户允许的情况下,擅自泄露用户的隐私数据或重要文件。

解决这个问题最直接的方法是数据加密,对于涉及用户隐私或含有敏感信息的数据文件,将数据加密后上传是一种普遍的保证数据机密性的方法 ,这样数据上传者只需保管好解密密钥即可。但是云计算服务中存在大量的需要共享数据的应用需求,对于这种简单的数据加密上传方式,由于加密文件只能被用户自行解密,这样的数据加密文件并不能通过云服务器来分享给他人,为此这便需要一种密码方案,使得能对存储在云服务器上的密文进行安全有效的转换。

显然,传统的加密或数字签名方案并不具有密文转换功能,而代理重加密 ( P r o x y R e − E n c r y p t i o n , P R E ) (Proxy Re-Encryption,PRE) (ProxyReEncryptionPRE)技术是一种可以对密文进行安全转换的加密方法,PRE 技术可以将用户 A 用自己公钥加密上传的密文转换成另一种形式的密文,使得用户 B 可以用自己私钥对转换后的密文进行解密,并且在整个转换过程中不会泄露任何对应的明文信息,因此 PRE 对于云计算是天然的应用,可以保证云端数据的安全访问与共享。

由于 PRE 能对密文进行安全转换这一特性,PRE 技术被深入地研究以及在云环境中充分发挥着其实用价值。目前 PRE 技术已广泛应用于云计算环境下的众多领域之中,如访问控制 、分布式文件系统 、加密邮件转发系统 、垃圾邮件过滤系统等 。

2. 业务需求分析

基于数据分享场景,用户B想获取用户A在云上的加密数据,A不能与B直接通信,只能通过中间商云平台;A不能将加密数据的秘钥发给云平台,由云平台再转发给B,这样云平台就知道A的保密数据;要求不能像CP-ABE那样,而是要求通过“请求+确认”方式获取A的数据,即B在每次想获取A的数据时,要想A申请,只有A同意了以后B才能获取并查看数据。

3. PRE概念

PRE 是一种对密文进行安全转换的加密技术,在 1998 1998 1998 年欧密会上,Blaze 等首次提出了代理重加密的概念 。在代理重加密中,基于授权人(delegator)公钥加密的密文可以被转换为另一种密文,且保持对应明文不变,被转换后的密文可以由被授权人(delegate)的私钥进行解密。该密文转换过程由一个半可信的代理者(proxy)执行,在执行该过程前,代理者需要持有一个由授权人到被授权人的转换密钥,该转换密钥一般由授权人事先生成并交给代理者。同时在密文转换的整个过程中,代理者无法获取关于该密文对应明文的任何信息。

4.传统公钥PRE算法流程

在介绍之前,先解释一个概念多跳性 ( M u l t i − h o p ) (Multi-hop) (Multihop):多跳性是指一个密文可以被不同的转换密钥连续进行多次转换,并且对应的明文保持不变。与其相对的是单跳性,即原始密文只能被转换一次。

一个传统 PKI 环境下的单向多跳代理重加密方案包含下列算法 [ 1 ] ^{[1]} [1]

  • (1) 钥生成算法 K e y G e n ( p a r ) → ( p k ; s k ) KeyGen(par) \to (pk;sk) KeyGen(par)(pk;sk):输入系统公开参数 par,该算法输出 ( p k , s k ) (pk,sk) (pk,sk)作为一个用户的公私钥对。

  • (2) 加密算法 E n c ( p a r , M , p k ) → C ( 0 ) Enc(par, M , pk ) \to C _{(0)} Enc(par,M,pk)C(0) :输入系统公开参数 par,消息空间中的明文 M ,某一用户的公钥 pk ,该算法输出由公钥 pk 加密的密文 C ( 0 ) C_{ (0)} C(0) ,其中0 表示密文 C 未被重加密过, C ( 0 ) C_{ (0)} C(

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代理重加密(Proxy Re-Encryption)技术原理和Java代码实现 的相关文章

  • in和exsits、count(*)查询优化

    一 in和exsits 1 1 原则 小表驱动大表 即小的数据集驱动大的数据集 1 2 in 适用场景 当B表的数据集小于A表的数据集时 in优于exists select from A where id in select id from

随机推荐

  • VC的血与泪,最难尽调的是人性————失败风投案例分析

    VC的血与泪 最难尽调的是人性 失败风投案例分析 风险投资 Venture Capital 简称是VC 在中国是一个约定俗成的具有特定内涵的概念 其实把它翻译成创业投资更为妥当 广义的风险投资泛指一切具有高风险 高潜在收益的投资 狭义的风险
  • 【因果推断与机器学习】Causal Inference:Chapter_3

    Identification 当我们以因果结构图模型的形式捕获了我们的因果假设 因果分析的第二个阶段就是识别 在这个阶段 我们的目标是分析我们的因果模型 包括特征之间的因果关系以及观察到哪些特征 以确定我们是否有足够的信息来回答特定的因果推
  • UE4 C++ 结构体数组使用AddUnique方法添加元素报错

    当使用TArray的AddUnique方法给结构体数组添加元素时 如果结构体没有重写 操作符时就会报错 那么为什么会报这个错呢 因为AddUnique方法在添加元素前会将传入的元素在数组内搜索一遍 也就是Find 函数 在Find函数内部用
  • 【译】通过 Rust 学习解析器组合器 — Part 1

    原文地址 Learning Parser Combinators With Rust 原文作者 Bodil 译文出自 掘金翻译计划 本文永久链接 https github com xitu gold miner blob master TO
  • 数据结构——链表例题1

    1 在递增有序链表L中插入值为x的元素 使L依旧保持递增 void Insert LinkList L DataType x LinkList p L q p gt next s while x gt q gt data q NULL q可
  • 基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

    视频讲解 Vision Transformer的鸟类图像分类 200个类别 完整代码 数据 哔哩哔哩 bilibili 项目结构 数据展示 主要的运行代码 import os import math import random import
  • 深入理解生产者与消费者问题

    缓冲区的形象理解 缓冲区好像使用一条传送带替代托架 传送带上一次可以放多个产品 生产者在缓冲区尾加入数据 消费者在缓冲区头读取数据 缓冲区满时 缓冲区上锁并等待消费者线程读取数据 每一个生产或消费动作使得传送带向前移动一个单位 因此 消费者
  • Day22_7 Java学习之对象数组

    目录 一 什么是对象数组 二 对象数组的作用 三 对象数组的语法定义及动静初始化 语法定义 静态初始化 在定义数组的同时对数组元素进行初始化 动态初始化 使用运算符new为数组分配空间 四 对象数组案例演示 案例需求 具体实现代码 一 什么
  • 《数据结构》第4章 串、数组和广义表

    数据结构 第4章 串 数组和广义表 第4章 串 数组和广义表 4 1 串的定义 4 2 串的类型定义 存储及其 运算 知识点1 串的表示 方法1 定长顺序存储表示 方法2 堆分配存储表示 方法3 串的块链存储表示 知识点2 必考 串的模式匹
  • Snipaste - 截图工具

    Snipaste 简介 Snipaste 是一个简单开源且强大的截图工具 也可以让你将截图贴回到屏幕上 下载并打开 Snipaste 按下 F1 来开始截图 再按 F3 截图就在桌面置顶显示了 就这么简单 你还可以将剪贴板里的文字或者颜色信
  • VS2008配置opencv

    配置过程 1 需要先提前安装好VS2008并下载好opencv的库 2 配置Windows环境变量 具体步骤为 右键我的电脑 属性 详细设定标签里 gt 环境变量 gt 系统变量 找到Path 将D Program Files opencv
  • 网络通信之应用层协议--Linux

    文章目录 关于应用层协议的理解 应用层协议的制定 理论部分 代码部分 完整代码以及测试 HTTP协议 代码测试HTTP协议 HTTPS协议 加密原因 基础的加密方式 数据摘要 数据指纹 数字签名 HTTPS的加密方式的选择 总结 关于应用层
  • OWASP TOP-10(2023) API风险

    OWASP API 1 对象级别授权失效 水平越权 攻击者就可以通过改变请求中的对象ID来绕过授权限制 从而获取敏感数据或者完全掌控账户 这个漏洞在基于API的应用程序中非常普遍 因为服务器通常无法跟踪完整的用户状态 而是依赖于请求参数中的
  • 网络攻防复习篇

    绪论 1 网络空间的4个要素 设施 数据 用户 操作 见第一章PPT 61页 下面这个图要背好 2 网络空间安全基本概念 络空间安全涉及到 络空间中的电磁设备 电 信息系统 运 数据和系统应 中所存在的安全问题 既要防 保护 信息通信技术系
  • open3d读取、显示和保存点云数据

    1 从文件中读取点云 接口1 bool open3d io ReadPointCloud const std string filename geometry PointCloud pointcloud const ReadPointClo
  • NCC申请授权

    1 进入home路径下的bin文件夹 打开sysconfig配置文件 2 在sysconfig配置界面 点击license 生成硬件锁 在弹框界面输入产品号 产品号可在点击 读取授权 按钮后 进行查看 后 点击确定 自动生成一个hardke
  • CryptoPP使用介绍

    CryptoPP使用介绍 发表时间 2012年06月15 分类 编程开发 作者 天缘 Crypto 是个免费的C 加解密类库 由于资格太老 持续更新 最新版本到了CryptoPP 5 6 对天缘而言 第一眼看到CryptoPP就感觉头大 根
  • 文本语言模型的参数估计-最大似然估计、MAP及贝叶斯估计

    以PLSA和LDA为代表的文本语言模型是当今统计自然语言处理研究的热点问题 这类语言模型一般都是对文本的生成过程提出自己的概率图模型 然后利用观察到的语料数据对模型参数做估计 有了语言模型和相应的模型参数 我们可以有很多重要的应用 比如文本
  • JavaWeb - Servlet:重定向和转发,状态管理

    Servlet JDBC 应用 在 Servlet 中可以使用 JDBC 技术访问数据库 常见功能如下 查询 DB 数据 然后生成显示页面 例如 列表显示功能 接收请求参数 然后对 DB 操作 例如 注册 登录 修改密码等功能 为了方便重用
  • 代理重加密(Proxy Re-Encryption)技术原理和Java代码实现

    欢迎关注公众号 区块链之美 致力于区块链技术研究 传播区块链技术和解决方案 区块链应用落地 区块链行业动态等 1 代理重加秘的应用介绍 由于大部分的云服务供应商并不能完全值得信任 云服务供应商可能会在未经用户允许的情况下 擅自泄露用户的隐私