为移动云数据实现基于可撤销属性组的加密:多代理辅助方法

news2025/3/13 3:07:47

参考文献为2023年发表的Achieving Revocable Attribute Group-Based Encryption for Mobile Cloud Data: A Multi-Proxy Assisted Approach

动机

对于目前的代理辅助的可撤销基于属性加密来说,外包解密存一些缺点。当多个具有相同属性的用户请求外包转换时,代理服务器必须执行多次转换操作,这增加了代理服务器计算开销和用户请求时间。由于移动设备计算能力较小,所有才有了外包解密,将大部分计算开销让代理服务器计算,将小部分计算开销留给移动设备上的数据使用者。传统的代理服务器外包解密系统如下图所示,当数据使用者请求某一个云上的加密数据时,它需要先从云中下载密文,然后将密文和转换密钥一起发送给代理服务器解密后,代理服务器再将部分解密的密文发送给数据使用者,然后数据使用者在解密。我们可以看出,在基于属性的加密中,如果很多用户属性相同,并且他们都想要对应于该属性加密的密文,那么这个系统的通信开销就会很大,对于代理服务器来说计算开销也很大,因为每次都要对想用的密文进行一个部分解密。本篇论文的就是解决相同属性的用户解密时和代理服务器之间多次冗余的通信和计算开销。

知识补充

撤销机制

        撤销机制分为三类:直接撤销、间接撤销、服务器辅助撤销。在直接撤销中,数据使用者将撤销列表和密文一起发送,并且需要在撤销的时候更新;对于间接撤销需要为未撤销用户更新私钥以及更新密文。而服务器辅助撤销如上说所,将解密分为两个部分,对于被撤销的用户,服务器拒绝为其解密第一部分。对于直接撤销中,撤销列表和密文是如何嵌在一起的还是有点疑惑

群签名   

        论文底层使用了一个群签名的,可以参考上一篇博客内容群签名

结果

        代理服务器拥有属性集合,具有想用的属性集合的用户会被分配到该代理服务器中,这说明用户和代理服务对于一个密文具有想用的解密能力,实现细粒度访问控制(论文中说群签名实现细粒度访问控制,我对这一个说法有点不理解)。用户不在具有转换密钥,也不再直接云服务器交互,这些功能直接全部给了代理服务器从而减少了用户和云以及代理服务器的交互通信开销。当发生撤销时,无需更新密文和用户密钥,具体是通过让撤销用户恢复不出秘密值而解不了密。

方案构建

        系统中有五个实体存在:云服务、数据拥有者、中心权威机构、代理服务器、数据使用者。系统模型如下图:

方案有以下算法组成:

        初始化:

        转换密钥生成:对于每一个代理服务器(对于一个属性集合)分配一个转换密钥 

        用户密钥生成:对于一个代理服务器,在转换密钥生成阶段CA会为其分配一个z次的多项式。此时,CA会为群中的每一个用户都为其分配z对(x,y)用于帮助用户恢复秘密值k。

         加密:就是普通的ABE加密的方式

        申请访问:使用了上面提过的群签名方案,单纯就是应用没有任何的修改。这里用户作为证明者,证明自己拥有合法的私钥即SDH的知识。代理服务器在这里作为验证者,验证用户提交的知识签名是否有效。

        转换阶段:首先根据群签名的验证算法,验证收到的签名是否有效,如果有效则继续进行下一步。代理服务器查看自己的属性是否满足访问策略如果满足则进行下一步。 对于原始密文代理服务器会用转换密钥对其进行第一次解密,生成了一个含有k次的双线配对运算B。

        解密阶段:

         追踪阶段:也只是用了群签名的方案里面的特性。

         撤销阶段:首先CA更新秘密值k'=r'P(0),然后使用更新的k'去更新新的转换密钥,使用新的转换密钥就会是部分解密中带有新的秘密值k'。然后根据撤销表,对没有撤销的用户进行广播密钥更新的信息,这样子未撤销的用户还能通过插值恢复秘密值而被撤销的用户就无法恢复出新的秘密值。

         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非写代码无以致远

标题党一下&#xff0c;本篇文章主要汇总了一些代码题&#xff0c;让大家写一些代码练习一下吧&#xff01; 变种水仙花_牛客题霸_牛客网 (nowcoder.com) #include<stdio.h> int main() {for (int i 10000; i < 99999; i) {int sum 0;for (int j 10; j < 1000…

业务网关的设计与实践

在过去的两年里&#xff0c;主要在做业务网关的开发。今年春节后选择转岗去做更偏近业务的开发。公司的业务是金融相关&#xff0c;一直觉得金融相关的业务是有一定门槛并且是对职业生涯有帮助的&#xff0c;所以趁这个机会来深入了解这块业务。 仔细回想&#xff0c;在做业务…

数据结构和算法:十大排序

排序算法 排序算法用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用&#xff0c;因为有序数据通常能够被更高效地查找、分析和处理。 排序算法中的数据类型可以是整数、浮点数、字符或字符串等。排序的判断规则可根据需求设定&#xff0c;如数字大小、字符 ASCII…

【算法】单单单单单调栈,接接接接接雨水

【算法】单单单单单调栈&#xff0c;接接接接接雨水 今天没有小故事。 参考以及题单来源&#xff1a; 代码随想录 (programmercarl.com) Part 1 啥是单调栈&#xff1f; 1.啥啥啥是单调栈&#xff1f; 栈的特性想必各位再熟悉不过了&#xff1a;先进后出。栈仅仅有一个出口&a…

递归算法讲解2

前情提要 上一篇递归算法讲解在这里 递归算法讲解&#xff08;结合内存图&#xff09; 没看过的小伙伴可以进去瞅一眼&#xff0c;谢谢&#xff01; 递归算法的重要性 递归算法是非常重要的&#xff0c;如果想要进大厂&#xff0c;以递归算法为基础的动态规划是必考的&…

Android安卓开发 - 简单介绍(一)

最近呢需要重构还有维护安卓项目&#xff0c;所以最近会从零开始梳理开发的一些知识点以及开发的内容 前面已经写了安装的教程&#xff0c;idea怎么安装&#xff0c;还有官方的开发工具Android Studio怎么安装 2024最新版Android studio安装入门教程&#xff08;非常详细&…

SpringBoot整合ELK8.1.x实现日志中心教程

目录 背景 环境准备 环境安装 1.JDK安装 2.安装Elasticsearch 3.安装zookeeper 4.安装Kafka 5.安装logstash 6.安装file beat 解决方案场景 1.日志采集 1.1 应用日志配置 1.1.1 创建logback-spring.xml文件 1.1.2 创建LoggerFactory 1.1.3 trace日志的记录用法 …

K8S- Deployment 的滚动更新 Rolling Update

滚动更新 这里的更新指的不是更新deployment 本身的属性(label/ replicas)等&#xff0c; 而是更新POD 的container 的版本 更新方法通常有两种 是直接update deployment配置&#xff0c; 注意只有update了template中的内容(与container相关) 才会触发更新用kubectl set ima…

C++ | Leetcode C++题解之第7题整数反转

题目&#xff1a; 题解&#xff1a; class Solution { public:int reverse(int x) {int rev 0;while (x ! 0) {if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {return 0;}int digit x % 10;x / 10;rev rev * 10 digit;}return rev;} };

鸿宇多用户商城 scan_list.php SQL注入漏洞复现

0x01 产品简介 鸿宇多用户商城是一款支持各行业的多商家入驻型电商平台系统,商家版APP,微信商城,小程序及各种主流营销模块应有尽有,是一个功能强大的电子商务平台,旨在为企业和个人提供全面的在线购物解决方案。 0x02 漏洞概述 鸿宇多用户商城 scan_list.php 文件 data[fa…

Python 网络请求:深入理解Requests库

目录 引言 一、Requests库简介 二、安装与基本使用 三、requests库的特性与优势 四、requests库在实际应用中的案例 1.get请求 2.post请求 3.超时重试 4.headers设置 5.session会话 6.携带cookie​​​​​​​ 7.携带代理​​​​​​​ 8.携带身份认证​​​​​…

FLink学习(三)-DataStream

一、DataStream 1&#xff0c;支持序列化的类型有 基本类型&#xff0c;即 String、Long、Integer、Boolean、Array复合类型&#xff1a;Tuples、POJOs 和 Scala case classes Tuples Flink 自带有 Tuple0 到 Tuple25 类型 Tuple2<String, Integer> person Tuple2.…

InternLM2-lesson2作业

书生浦语大模型趣味 Demo 视频连接&#xff1a;https://www.bilibili.com/video/BV1AH4y1H78d/?vd_source902e3124d4683c41b103f1d1322401fa 目录 书生浦语大模型趣味 Demo一、基础作业二、进阶作业 一、基础作业 第一次执行&#xff1a; 第二次执行&#xff1a; 第一次执…

最新408试卷分析+备考经验分享

408出题再糟糕&#xff0c;你是不是还是要考&#xff1f; 别管出题人出多刁钻的题&#xff0c;大家拿到的卷子都是一样的&#xff0c;要难就都难&#xff0c;要刁钻就一起g... 所以再潜心钻研出题规律或出题套路&#xff0c;不如多花些时间去多复习巩固几遍知识点&#xff01…

Leetcode_2两数相加

文章目录 前言一、两数相加1.1 问题描述1.2 解法一&#xff1a;分别将链表转为数字&#xff0c;然后相加1.3 代码实现1.4 解法二&#xff1a;分别将对应位置数字相加1.5 代码实现 二、使用步骤1.引入库2.读入数据 前言 链表是一种物理内存非连续存储&#xff0c;非顺序的线性数…

深入理解C/C++的内存管理

在C和C中&#xff0c;高效的内存管理是编写性能优化和资源高效利用程序的关键。本文将深入探讨C/C内存管理的各个方面&#xff0c;包括内存的分布、C语言和C中的动态内存管理方式&#xff0c;以及new和delete操作符的使用 C/C内存分布 C和C程序的内存可以分为以下几个区域&…

【Linux】-进程知识铺垫①计算机硬件的组织:冯诺依曼体系结构详细解读②关于操作系统对软硬件及用户的意义

目录 ​编辑 1.关于计算机的体系结构 1.1 冯诺依曼体系结构的诞生 2.冯诺依曼体系结构 2.1 cpu:运算器&#xff1a;更多的是让cpu具有特殊的数据计算功能&#xff1a; 2.2 控制器 2.3输入设备 2.4输出设备 3.计算机各个硬件设备之间的关系 4.内存与计算机效率 5.关于为什么总说…

AI智能校色解决方案,专业级画质提升

由于拍摄环境、设备性能以及编辑经验等多种因素的影响&#xff0c;视频画质往往难以达到理想状态。这时&#xff0c;一款高效、智能的校色解决方案就显得尤为重要。美摄科技凭借深厚的图像处理技术和AI算法研发实力&#xff0c;推出了全新的AI智能校色解决方案&#xff0c;助力…

Kubernetes(k8s)核心资源解析:Pod详解

Kubernetes核心资源解析&#xff1a;Pod详解 1、什么是Pod&#xff1f;2、Pod 的组成3、Pod 如何管理多个容器4、Pod 的网络5、Pod 的存储方式6、Pod 的工作方式6.1 自主式 Pod6.2 监控和管理 Pod6.3 Pod 的创建流程 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

力扣热题100_链表_2_两数相加

文章目录 题目链接解题思路解题代码 题目链接 2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 …