代理重加密_代理重加密BBS方案

代理重加密_代理重加密BBS方案云计算中的数据机密性风险极大地阻碍了云计算的应用,而在用户端加密的模式对于数据共享来说非常不便,用户频繁的获取和释放授权将使得用户增效据加解密工作繁重。因此代理重加密技术在云端进行数据的密文转换,减轻了用户端的负担,同时加强了云端数据的保密性。一、代理重加密代理重加密是密文间的一种密钥转换机制,是由Blaze等人在1998年的欧洲密码学年会上提出的,并由Ateniese等人在2005年的网络和分布式系统安全研讨会议和2007年的美国计算机学会计算机与通信安全会议上给出了规范的形式化定义。在代理重加密中

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

云计算中的数据机密性风险极大地阻碍了云计算的应用,而在用户端加密的模式对于数据共享来说非常不便,用户频繁的获取和释放授权将使得用户增效据加解密工作繁重。因此代理重加密技术在云端进行数据的密文转换,减轻了用户端的负担,同时加强了云端数据的保密性。

一、代理重加密

代理重加密是密文间的一种密钥转换机制,是由Blaze等人在1998年的欧洲密码学年会上提出的,并由Ateniese等人在2005年的网络和分布式系统安全研讨会议和2007年的美国计算机学会计算机与通信安全会议上给出了规范的形式化定义。

在代理重加密中,一个半可信代理人通过代理授权人产生的转换密钥Rk把用授权人Alice的公钥Pa加密的密文转化为用被授权人(Delegatee)Bob的公钥Pb加密的密文,在这个过程中,代理人得不到数据的明文信息,从而降低了数据泄露风险。而这两个密文所对应的明文是一样的,使Alice和Bob之间实现了数据共享。所谓的半可信,指的是只需相信这个代理者Proxy -定会按方案来进行密文的转换。根据密文转换次数,代理重加密可以分为单跳代理重加密和多跳代理重加密,单跳代理重加密只允许密文被转换一次,多跳代理重加密则允许密文被转换多次。根据密文转换方向,代理重加密也可以分为双向代理重加密和单向代理重加密。双向代理重加密是指代理者既可以将Alice的密文转换成Bob的密文,也可以将Bob的密文转换成Alice的密文。单向代理重加密指代理者只能将Alice的密文转换成Bob的密文。当然,任何单向代理重加密方案都可以很容易地变成双向代理重加密方案。

而双向代理重加密,和个单向代理重加密方案只能满足选择明文攻击安全,而实际应用通常要求密码组件能够抵抗选择密文攻击安全。为此,Calletti等人在2007年的ACM CCS会议上提出了首个能在标准模型下证明的CCA安全双向代理重加密方案。在2008年的公钥密码学会议上,Libert等人提出了一个无需借助随机预言机的单向代理重加密方案,该方案可以在非自适应攻陷模型下达到选择密文安全。

二、云计算中代理重加密的应用

1、云计算中代理重加密的应用模式

在云计算中,云计算服务提供商作为代理人,用户A不能完全相信云计算服务提供商,因此将自己需要存储的数据在本地用自己的公钥Pa加密后再传送至云中存储,这样,云计算服务商就无法得到其数据的明文信息,而该数据只有用户A使用自己的私钥Sa才能解密口当用户A需要把该数据与用户B共享时,他可以根据自己的一些信息(如私钥)及用户B的公钥Pb计算一个转换密钥Rk,由云计算服务商使用转换密钥Rk,将针对用户A的密文重加密得到针对用户B的密文,这样,用户B可以容易地从云中下载该密文数据,使用自己的私钥Sb即可解密,过程如图1所示。
这样,数据在云中的整个生命周期完全以密文形式存储,而云计算服务商也无法得知用户A和用户B的私钥,因此,云计算服务商无法获得数据明文。用户A无需对云计算服务商有很大程度的信任,就可以放心地将自己的数据存储在云中。

这样一个代理重加密方案一般包含以下几个部分:

1) PRE.Setup。初始设定函数,根据安全参数设置工作环境。

2)PRE.KeyGen。密钥生成函数,为授权人和被授权人分别产生自己的公私钥对。

3)PRE.ReKeyGeno转换密钥生成函数,授权人利用自己的用户信息及被授权人的公钥产生一个代理重加密的转换密钥Rk,并将这个转换密钥通过安全的信道传递给云计算服务提供商。

4)PRE.Enco加密函数,授权人使用自己的公钥对数据进行加密,所得到的密文称为原始密文。

5)PRE.ReEnco重加密函数,云计算服务商利用转换密钥对原始密文进行再次加密,所得到的密文称为重加密密文。该密文实际上等同于用被授权人的公钥加密的明文。

  1. PRE.Deco解密函数,被授权人使用自己的私钥对重加密密文进行解密,得到相应的明文;或授权人使用自己的私钥对原始密文进行解密,得到相应的明文。

这样的代理重加密算法应该具有以下几个特征:

1)透明性,代理人(云计算服务商)对于授权人A或被授权人B来说都是透明的。

2)单向性,一个从用户A到用户B的授权,不能用于构造一个从用户B到用户A的授权。

3)非交互性,授权人A生成从A到B的转换函数RkA_B.不需要被授权人B的参与。

4)安全性,该代理方案应该是CCA安全的,并能够抵抗合谋攻击,即用户A与代理人的合谋不能得到用户B的私钥,用户B与代理人合谋也不能得到A的私钥。

5)非传递性,通过用户A对B的授权和B对C的授权,代理人不能产生A对C的授权。

2、云计算中使用代理重加密实现数据共事

由于非对称加密算法的效率限制,不适合用来给大型的数据文件加密,因此在云计算中暂不考虑将代理重加密直接用于加密数据文件。可以先使用对称加密算法加密数据文件得到数据密文,然后使用代理重加密算法加密该对称密钥得到密钥密文,用户欲访问数据文件时,可以先解密该密钥密文得到对称密钥,然后再用该对称密钥解密数据密文,得到数据文件的明文。

3、云计算中使用代理重加密实现授权管理

当云计算的用户需要为其他用户授权时,需要取得对方的公钥,针对每个用户生成对应的转换密钥,并通过安全的信道传递给云端。这样,云端对于每一个被授权的用户都生成一份重加密密文,对于未被授权用户没有对应的重加密密文。即使未被授权用户得到针对其他用户的重加密密文,也无法解密出明文。也可以将基于属性的加密(ABE,Attribute-based Encryption)理念应用于代理重加密,使用这样的代理重加密算法,可以一次为多个具有同样一组属性的用户授权。

4、云计算中使用代理重加密实现访问控制

用户请求访问数据文件时,云端通过对该用户的身份认证及权限认证,判断用户是否可以读取该数据文件,如果用户拥有这一权限,云端将根据用户公钥向其返回数据密文和对应的密钥密文,用户可以通过依次解密这两个密文文件得到数据的明文。如果云端没有对应于用户公钥的密钥密文,则用户没有被文件所有者授予访问这一数据文件的权限。

中国对于信息安全的要求正在逐渐增长,而云计算已经对数据加密提出了更高的要求,可以说云计算安全技术的提高已经制约了云计算的发展。因此,越来越多的研究者从事这方面的研究,在代理重加密方面的研究也已经趋于成熟,很多研究者都已经设计了具有CCA安全的双向或单向代理重加密方案。但目前,代理重加密在云计算方面的应用还未得到很好的尝试和开展,在以后的工作中会迸一步地研究和深入。

小知识之云计算

云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。它意味着计算能力也可作为一种商品通过互联网进行流通。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195556.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 对象数组(C++学习笔记 20)[通俗易懂]

    对象数组(C++学习笔记 20)[通俗易懂]一、对象数组的定义所谓对象数组,指每一个数组元素都是对象的数组,即若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。定义一个一维数组的格式如下:类名数组名[下标表达式]与基本数据类型的数组一样,在使用对象数组时也只能访问单个数组元素,其一般形式为:数组名[下标].成员名在建立数组时,同样要调用构造函数。有几个数组元…

    2022年7月12日
    19
  • php 自带过滤和转义函数

    php 自带过滤和转义函数

    2021年10月22日
    38
  • gridview分页显示_html分页显示数据

    gridview分页显示_html分页显示数据首先把CSS样式代码粘贴过来:.gv{   border:1pxsolid#D7D7D7;   font-size:12px;   text-align:center;}.gvHeader{   color:#3F6293;   background-color:#F7F7F7;   height:24px;   line-height:24px;   tex

    2022年9月15日
    1
  • 如何理解java方法的传值和传引用的参数传递方式_指针参数传递

    如何理解java方法的传值和传引用的参数传递方式_指针参数传递结论:1)当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值2)当使用引用数据类型作为方法的形参时,若在方法体中修改形参指向的数据内容,则会对实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区;3)当使用引用数据类型作为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区例一:基本数据类型作为形参,运行结果不改变实参publicclassMain{publicstatic

    2022年8月30日
    5
  • gulp pipe缓存_gulp使用教程

    gulp pipe缓存_gulp使用教程首先,gulp的源码里没有任何一部分是定义pipe的。gulp的pipe方法是来自nodejsstreamAPI的。gulp本身是由一系列vinyl模块组织起来的。pipe方法到底是什么呢?pipe跟他字面意思一样只是一个管道例如我有一堆文件var s=gulp.src(["fileA","fileB","fileC"])src方法实际上是’vinyl-fs’模…

    2025年5月22日
    0
  • 操作系统实验四 银行家算法

    操作系统实验四 银行家算法操作系统实验四银行家算法一、实验目的1、理解银行家算法。2、掌握进程安全性检查的方法与资源分配的方法。二、实验内容与基本要求编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。进程已占资源最大需求数资源种类ABCDABCDP000120012P1100017

    2022年7月22日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号