关于多权威属性加密论文阅读

来源于2007年Multi-authority Attribute Based Encryption

从单权威机构到多权威机构的意义是什么呢?

        基础方案(单权威方案SW)支持数据持有者对数据进行加密使用指定的属性集合并且指定一个数值d。当一个用户需要使用该数据时,需要满足至少拥有该属性集合中d个属性时,才能解密成功拿到原数据。文中举了一个例子如下:发件人对消息进行加密,当用于如下三个属性(罗德岛州驾驶执照、罗德岛州选民登记或布朗大学的学生证)里面两个属性的用户拥有解密的能力。如用户A拥有布朗大学的学生证和罗德岛州选民登记他就可以解密发件人加密的消息。然而单权威方案的缺点就是这些属性都是来自一台可信赖的服务器,这台服务器需要监管所有的属性。现实中,驾照应该由交管所来管理,选民登记应该由委员会来管理,而学生证应该由学校管理。我们可以看到多权威方案的模式更加符合现实世界的运作,每个机构为管理一组属性(每一权威机构之间的属性是不不想交)。因此,多权威方案孕育而生,提高了系统的灵活性和可扩展性。

本论文的结果

        本论文实现了多权威机构的基于属性加密,在方案中存在一个中心权威机构和k个属性权威机构以及用户。该方案支持发送者为每个权威机构k指定一组属性和数字dk,使得一个用户满足所有权威机构k中规定的至少dk的属性时才能解密。对于安全性来讲,该方案允许任意数量的属性权威被破坏,并保证加密的安全性,只要所需的属性不能完全从这些权威获得并且受信任的权威保持诚实。此外,论文中还对方案提出一些扩展,这些扩展将在下文出现。

改进中的困难和使用的技术

        本文是思路是通过运行多个SW方案然后管理这些副本,实现从单权威到多权威。

抗合谋问题

        对于基础方案SW,我们要预防用户的合谋攻击,合谋攻击的具体表现文中也提供了例子:假设用户A拥有学生证,而用户B拥有驾驶证。在上文中提到的例子中,我们说如果一个用户拥有学生证和驾驶证就可以解密数据,但是现在看来无论是用户A和用户B他们都没有满足条件因此他们不能对加密的数据进行解密。对于一个用户去解密数据的简化流程大致如下,他需要拿着他的属性向权威机构去申请密钥,每一个属性会有一个属性密钥,用户拿着这些密钥去解密,如果密钥的数量够的话。回到例子,现在用户A和B就是想要解密,他们就密谋,他们将自己的向权威机构申请的属性密码分享给对方,对方拿到后将其拼接起来然后就变成了一个可以解密的合法密钥。

        因此,我们需要做的就是,让密钥拼不起来。基础方案SW中使用方法是,每一个用户的密钥是使用不同的随机共享秘密生产的,因此密钥数学上自然而然拼接不起来。

        我们将单权威机构变成多权威机构遇到的困难之一也是需要满足抗合谋攻击这个问题,因为方案中出现了新的实体,我们不只要防止用户和用户,还要防止属性权威机构之间的合谋问题。SW方案可以防止当局下的用户的合谋问题。但是如果用户在不同权威机构下的合谋呢?如果有一个密文解密需要权威机构一的一些属性,和权威机构二的一些属性,此时用户A满足一的属性要求,用户B满足二的属性要求,那他们的密钥还是能不能合并?显然,我们的方案需要二者的密钥是不能合并的。我们需要注意,这一防合谋的实现并不是因为SW方案带来的。因为对于单一权威机构来讲,对于每一个用户,可以查看用户请求的所有属性并给出密钥,因此它可以轻松地适当地重新随机化秘密共享。(在多权威的机构下,因为如果我们只是简单的使用多个SW的副本,那么每个权威会为其用户随机化秘密共享,这样子有可能出现两个用户如A和B他们的秘密共享是相同的,因此导致密钥可以合起来。)多权限情况下,我们再次希望以不同的方式为每个用户分割秘密,这次将其分配给多个权限。然而,现在我们需要在当局之间没有任何沟通的情况下做到这一点。

     解决方法

        我们继续来考虑A和B的问题,存在两个权威机构一和权威机构二,情况一:如果A用户向一申请属性集合A1的密钥,B用户向二申请属性集合A2的密钥;情况二:用户A分别向一申请A1的密钥以及向二申请A2的密钥。对于权威机构来讲这两种情况如果只依据属性来讲,就是相同的情况。而我们上面说过SW的防合谋就是因为查看到用户请求的所有属性,因此他可以做出随机化秘密分享(这里我有点不明白,这么说SW方案不用需有相同属性的用户申请属性密钥么?我也没看过基础方案,这里暂且不讨论)。既然情况一样,对于情况一的两个用户来说,随机化的秘密就是一样的因此就可以拼接。

        解决方案就是退一步海阔天空的感觉,也就是给用户加入全局标识符GID,有没有IBE的味道?有了GID就可以辨别这两种方案了。此时,我们要区别于IBE,就要做到这个GID不影响解密能力的主导权是属性决定的,因此引入了中心权威机构。

中心权威机构

        中心权威机构的加入是为用户的 GID 提供一个设置密钥,每一个用户会将自己的GID发送给中心权威机构之后接收相应的密钥。这个密钥用于和用户重构的秘密值相结合后就可以得到致盲因子,然后就可以解密。每个属性权威机构都有一个为随机函数(PRF),用来随机化秘密值。当用户向中心权威申请密钥时,中心权限机构会为每一个属性权威计算PRF的结果并作为每一个SW副本的秘密。总结来说,PRF 的使用意味着每个用户的密钥独立于任何其他用户的密钥,并且不可能共谋。然后中央机构给出必要的附加密钥,以确保如果我们在同一 GID 上计算每个 PRF,我们总是可以将结果组合起来以获得固定值,从而允许我们给出独立于 GID 的密文。

多权威机构构建过程        

        我们将从如何构建单权威方案直到构建多权威方案,一步一步说起。

        首先第一步实现秘密共享,这一步直接用到了拉格朗日插值法。简单的理解就是说我们将秘密值y作为多项式p(0),如果这个多项式是d-1次的,我们就可以通过d个点恢复出来(例如,在二维坐标轴上,知道两个点确定一个直线方程,知道三个点确定一个一次方程等等等),而这些点你可以看做是用户的属性,这样子是不是一个用户如果拥有d个属性就可以恢复出这个多项式方程我们就可以算出p(0)=y了。方案一如下图:

        接下来,要实现的就是指定属性。以上方案的缺点就是任何d个点都可以恢复出多项式来,也就是任何满足数量的属性可以重建秘密值y,这并不是我们想要的。因此我们的做法就是将每一个属性都对应一个数值,并且在加密的时候,提供指定属性数据。运用到了双线性映射方案二如下图:

        这样子我们就完成了单权威的构建。对于目前方案依旧存在一个问题,就是如果一个用户满足一个密文解密的属性要求后,他就将获得永久的解密能力即使在之后他的属性不满足其他密文的属性要求。这是因为加密使用了固定的y,这意味着每一次加密如果想要不一样,需要向解密者重新生成私钥,以便生成不同的y。解决的办法是在附上一个随机数,密文的格式:E=Y^s=e(g,g)^{ys}m,这就保证了每一个密文都不同。现在解密需要g^{t_is}和适应的s,因为引入了随机数放在指数上,所以提供了额外的公钥。

        上文提及到,使用多个SW副本来实现多权威。我们对多权威的要求是,一个用户需要满足所有属性权威机构至少d个属性才可能解密。第一个思路就是使用两次秘密分享的办法。一个用户对于第k个属性权威机构如果满足至少d个属性那么可以恢复出y_k(k权威机构所持的秘密),如果对于所有的属性权威机构用户都能恢复出秘密值,用户可以对这些秘密值相加最终得到主秘密y_0\sum_{k=1}^{K}Y_k=y_0,方案具体构造如下:

        上面的方案有一个问题,我们考虑如下情景,我们假设有k个用户和k个属性授权机构,第k个用户拥有第k个属性授权机构要求的属性,但不具有其他属性机构的属性。此时,这些用户会出现合谋的现象,每个用户都计算出自己达到要求的属性权威机构的秘密,之后将他们的秘密相乘起来得到主秘密。这代表着k个单独的用户拥有属性集A^k_C(累加起来就是A_C)和一个用户拥有属性集A_C是一样的。我们需要去识别每一个用户。解决的方法就是为每一个用户加上GID,用户必须向每一个权威机构提供相同的GID,以便接受一组一致的密钥。此外,唯一标识不会影响正常的解密能力。此外,我们为了防止不会出现合谋的现象。我们为每一个属性权威机构k去选择一个不同的随机值y_{k,u},由于y_{k,u'}y_{k,u}是独立无关的所有不会出现能够合并的情况。

        如果所有的权威机构都独立的选择y_{k,u},怎么保证对于不同的用户他们从自己的每一个权威机构重建的秘密值累加之和都为y_0呢?有一种方法是让权威们互相沟通,这样就能确保他们选择的秘密最终累加起来会是最后的y_0,但是我们不希望权威之间是互通,因为这些权威并不是完全可信的。此时,就运用到了我们先前提及到的中心权威机构,它不负责监管属性,而是知道各个属性权威机构设置秘密值的状态,由它来为各个权威机构分配y_{k,u}。它使用秘密状态的信息提供一个秘密密钥,当该密钥与加密中给出的g^s以及各个机构中获得的秘密值y_{k,u}相结合起来就会为用户提供“主秘密”。具体的算法如下:

安全分析 

        我们将从基础的SW的安全分析过渡到本文提出方案的安全分析。

SW方案安全性分析

        方案是选择id安全的,方案的底层困难问题是DBDH问题。

        简单的说就是给定e(g,g)^{abc},e(g,g)^R让敌手去区分。我们说如果存在一个敌手能够攻破SW方案,那么我们就可以利用这个敌手去解决BDH问题。(最终我们得出结果说解决了BDH问题,但是由于BDH是数学难题是解决不了的所以出现矛盾,我们最后得出结果就是不存在这样可以攻破我们方案的敌手)我们可以证明我们,即使在给定挑战密钥和自适应选择密文的密钥查询下,消息M_b=\frac{E}{e(g,g)^{y_0s}}和随便的消息是不可区分的,进一步说明e(g,g)^{y_0s}G_2中的其他元素是不可区分的。既然要归约到DBH问题,那我们就需要将问题实例嵌入到我们的方案中,我们设置s=c,y_0=ab

多权威机构安全性分析

        我们可以将单权威对安全性的分析应用到多权威方案。在这里,我们说只要一个权威机构需求的属性条件,用户没有办法达到,我们就可以允许敌手发起对给定用户的私钥和属性私钥查询。所以,最坏的情况是除了某个k属性权威机构外,其余的权威机构的秘密敌手都能算出来,并且能够计算出用户私钥和g^s的双线性配对。我们需要让

是不可计算的对于敌人来说。因此, 我们必须将这个不可计算的值隐藏在y_{k,u}上面。这个秘密是由用户属性不满足属性权威的机构来保存的,我们让这些属性权威机构的编号为\hat{k},并且设置y_{\hat{k},u}=ab+z_{k,u}b。对于其他诚实的权威机构来讲,我们要求他们的秘密是可以计算的所以设置y_{​{k},u}=z_{k,u}b

        密钥查询设置

                首先,为了确保归约的成功,我们需要对属性权威生成公钥。

                公钥T_{k,i}=g^{t_{k,i}},我们分两种情况设置,如果属性是权威机构所需要的,由于后面的计算需要E_{k,i}=T_{k,i}^s=g^{t_{k,i}s}=g^{t_{k,i}c}的存在,我们需要让这个是可以计算的。因此我们设置t_{k,i}=\beta _{​{k,i}}。对于属性不是权威机构所要求的,我们设置t_{k,i}=\beta _{​{k,i}}b,这样这些属性的E_{k,i}=T_{k,i}^s就是不可计算的。

                这里将属性权威分为两类清空,第一种情况是用户属性不满足条件的属性权威机构,第二种是用户属性满足的情况。对于第一种情况,我们需要设置计算不出来的密钥例如p(0)=ab+z_{k,u}b。对于第二种情况,我们可以秘密p(0)=z_{k,u}b

                对于第一种情况,我们设置了p(0)=ab+z_{k,u}b,对于最多d-1个点,也就是对应的属性我们给这些属性私钥D_{k,i}=g^{p(i)/t_{k,i}}=g^{p(i)/\beta _{k,i}}。我们通过插值法,选择d个点,定义一个多项式。对与挑战中的属性i,我们设置p(i)b的一个倍数。我们已经有了p(0)以及b个点,我们可以恢复多项式,对于其他的点我们可以通过插值来找到g^{p(i)/t_{k,i}}

g^{p(0)/t_{k,i}}g^{p(j)/t_{k,i}}的一个加权乘积。g^{p(j)/t_{k,i}}这个将是B的一个倍数,对于g^{p(0)/t_{k,i}}=g^\frac{​{(ab+z_{k,u}b)}}{b\beta _{k,i}}=g^\frac{​{(a+z_{k,u})}}{\beta _{k,i}}这也是可以计算的。

具体的安全归约如下图所示

 

扩展

        现在我们能来说说对我们方案的一些扩展。第一个扩展是改变解密需要的属性数量值d_k,在本方案我们视为每次需要的数量都是最大数量。将虚拟属性加入到我们的属性集合之中,每个用户也会获得虚拟属性对于的私钥。对于一个密文,如果想要将其需求的属性数量少于默认值d_{max},我们只需要在输出密文时,多附带上额外的E_i=T_i^s(用户可以在属性数目没达到需求数目的时候,使用虚拟属性重建秘密)

        第二个扩展是第一个扩展的特例,可以无视某一权威机构(直接提供足够多的虚拟属性,我们就不需要管我们的属性是否满足该权威机构的条件了。)但是,如果这么做那么有一点麻烦就是需要用户还是需要去该权威获得到所以虚拟属性的密钥。为了解决这一问题,我们添加了一个权威机构属性k对于每一个权威,同时添加公钥T_{Nk}=g^{t_{Nk}},以及给予每一个用户一个用于每个权威机构的秘密密钥D_{Nk}=g^{\frac{y_{k,u}}{T_{Nk}}},用了这个,对于被指定忽略的权威机构,我们直接通过公钥和用户的密钥来恢复权威的秘密达到了忽略属性是否满足条件的效果。

        我们的方案目前是要求用户满足所有属性权威机构才能解密,因此第三个扩展是支持满足D个权威机构就可以解密。大体的思路就是用两次拉格朗日插值,足够的属性可以获得权威的秘密,足够的秘密直接获得主密钥。具体做法是中心权威机构给每个用户一个密钥D_{CA}=g^{P(k)-F_{s_k(u)}},然后每一个用户用其属性恢复F_{s_k(u)}结合D_{CA}=g^{P(k)-F_{s_k(u)}}得到g^{P(k)}最后在恢复出秘密之P(0)

        此外,还可以为我们的方案在任何时候添加属性权威机构以及将我们多权威的方案是为单一授权CNF属性加密。在后者中,每一个权威机构对应于一个句子。唯一的计算开销是每个权威机构中属性不能重复,对于这个问题的解决方法是每一个属性创建独立的副本(也就是即使是相同的属性:学生证,在权威机构一获得的对应属性密钥和在权威机构二中获得是不一样的

                

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

盘点CSV文件在Excel中打开后乱码问题的两种处理方法

目录 一、CSV文件乱码问题概述 二、修改文件编码格式 1.识别CSV文件编码 2.修改编码格式 3.在Excel中打开修改后的CSV文件 案例 三、利用文本编辑器进行预处理 1.打开CSV文件并检查乱码 2.替换或删除乱码字符 3.保存并导入Excel 案例 四、注意事项 1、识别原始编码…

【机器学习】有监督学习算法之:逻辑回归

逻辑回归 1、引言2、逻辑回归2.1 定义2.2 基本原理2.3 公式2.3.1 核心公式2.3.2 Sigmoid函数 2.4 代码示例 3、总结 1、引言 小屌丝:鱼哥,鱼哥,求助 小鱼:咋了。 小屌丝:我被逻辑回归难住了。 小鱼:然后你…

数据结构 - 堆

这篇博客将介绍堆的概念以及堆的实现。 1. 堆的定义: 首先堆的元素按照是完全二叉树的顺序存储的。 且堆中的某个节点总是不大于或不小于其父节点的值。 根节点最大的堆叫做大堆,根节点最小的堆叫小堆。逻辑结构如下图所示: 大堆和小堆的…

ZJUBCA研报分享 | 《BTC/USDT周内效应研究》

ZJUBCA研报分享 引言 2023 年 11 月 — 2024 年初,浙大链协顺利举办为期 6 周的浙大链协加密创投训练营 (ZJUBCA Community Crypto VC Course)。在本次训练营中,我们组织了投研比赛,鼓励学员分析感兴趣的 Web3 前沿话题…

opencv解析系列 - 基于DOM提取大面积植被(如森林)

Note&#xff1a;简单提取&#xff0c;不考虑后处理&#xff08;填充空洞、平滑边界等&#xff09; #include <iostream> #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include <opencv2/opencv.hpp> using namespace cv…

Ajax (1)

什么是Ajax&#xff1a; 浏览器与服务器进行数据通讯的技术&#xff0c;动态数据交互 axios库地址&#xff1a; <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> 如何使用呢&#xff1f; 我们现有个感性的认识 <scr…

【Prometheus】k8s集群部署node-exporter

​ 目录 一、概述 1.1 prometheus简介 1.2 prometheus架构图 1.3 Exporter介绍 1.4 监控指标 1.5 参数定义 1.6 默认启用的参数 1.7 prometheus如何收集k8s/服务的–三种方式收集 二、安装node-exporter组件 【Prometheus】概念和工作原理介绍-CSDN博客 【云原生】ku…

微信小程序使用 iconfont

base64 形式引入 首先我们点击 iconfont 项目中的 项目设置 按钮&#xff0c;位置如下图所示&#xff1a; 我们勾选图中所示三种字体格式&#xff0c;选择 base64 是为了将另外两种字体转为 base64 形式&#xff0c;而选择 woff 与 ttf 字体原因如下&#xff1a; TTF 兼容性更…

【自然语言处理】NLP入门(五):1、正则表达式与Python中的实现(5):字符串常用方法:对齐方式、大小写转换详解

文章目录 一、前言二、正则表达式与Python中的实现1.字符串构造2. 字符串截取3. 字符串格式化输出4.字符转义符5. 字符串常用函数函数与方法之比较 6. 字符串常用方法1. 对齐方式center()ljust()rjust() 2. 大小写转换lower()upper()capitalize()title()swapcase() 一、前言 本…

基于.Net 的图形验证码模块

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

【探索程序员职业赛道:挑战与机遇】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

本地部署推理TextDiffuser-2:释放语言模型用于文本渲染的力量

系列文章目录 文章目录 系列文章目录一、模型下载和环境配置二、模型训练&#xff08;一&#xff09;训练布局规划器&#xff08;二&#xff09;训练扩散模型 三、模型推理&#xff08;一&#xff09;准备训练好的模型checkpoint&#xff08;二&#xff09;全参数推理&#xff…

PaddlePaddle框架安装

提示&#xff1a;可在python环境中进行安装&#xff0c;避免环境污染&#xff0c;创建命令conda create -n xxx_name python3.9,激活conda activate xxx_name 第一步&#xff1a;查看计算机平台版本 在窗口输入查看命令&#xff0c;查看CUDA的版本 nvidia-smi 二、根据以下条件…

pycharm连接远程服务器解决远程服务器文件不同步问题

一、pycharm连接远程服务器 1.前提条件 linux已经安装好虚拟环境&#xff0c;并且虚拟环境已经有python的相关环境 conda create -n name python3.10 2.连接服务器 1.进入pycharm的Settings 2.在Project里找Python Interpreter 3.点击⚙&#xff0c;再点击add 4.选择SSH…

【C++从练气到飞升】02---初识类与对象

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、面向过程和面向对象初步认识 二、类的引用 1. C语言版 2. C版 三、类的定义 类的两种定义方式&#xff…

机器学习-04-分类算法-01决策树

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类算法&#xff0c;本篇为分类算法开篇与决策树部分。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程…

如何在Win系统本地部署Jupyter Notbook交互笔记并结合内网穿透实现公网远程使用

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中&#xff0c;使用最多的无疑就是各种函数、图表、…

【前端系列】CSS 常见的选择器

CSS 常见的选择器 CSS&#xff08;层叠样式表&#xff09;是一种用于描述网页样式的标记语言&#xff0c;它定义了网页中各个元素的外观和布局。在 CSS 中&#xff0c;选择器是一种用于选择要应用样式的 HTML 元素的模式。选择器允许开发人员根据元素的类型、属性、关系等来选…

【计算机视觉】图像处理算法(其他篇)

来源&#xff1a;《OpenCV3编程入门》&#xff0c;怀念毛星云大佬&#x1f56f;️ 说明&#xff1a;本系列重点关注各种图像处理算法的原理、作用和对比 漫水填充 漫水填充法是一种用特定的颜色填充连通区域&#xff0c;通过设置可连通像素的上下限以及连通方式来达到不同的填…

【零基础学习02】嵌入式linux驱动中原子操作基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天给大家分享一下,linux系统里面并发与竞争具体实现,操作硬件为I.MX6ULL开发板。 第一:Linux系统并发与竞争简介 linux是一个多任务操作系统,存在多个任务操作同一个…