欢迎关注公众号:区块链之美

致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。

1.背景

区块链典型的一个应用场景是资源共享,而在实际应用中,很多参与者的数据很涉及机密,数据所有者并不乐意把自己的数据公开出来。数据明文在链上存证后,虽然共享给其他人,但是数据被所有的人都能查看,不存在一点私密性。如果数据所有者将数据使用自己的秘钥加密后在链上存证后,能实现数据的隐私保护,但是不能安全的共享给他人。

比如在金融领域,数据上链可以提高数据本身的安全性,也有利于监管机构从区块链中调取数据进行监管,但是为什么金融领域的区块链应用迟迟推进不下去呢?一个亟待解决的重要问题是,金融公司本身不愿意将数据存在链上。因为这些数据都是相当敏感且重要的,一旦数据外泄,会带来不小的损失。

2.基于属性的加密技术

2.1相关概念

2.1.1属性

在ABE中,属性也有着相似的作用。举个例子,JackyLi是A大学信息安全学院的教授,那么“A大学”,“信息安全学院”以及“教授”就是ABE中刻画JackyLi这个人的多个属性,这些属性可以构成一个属性集合,我们可以把它记为集合C_Jacky_Li。

2.1.2策略

一种简单的理解是策略实际即是由属性及它们间关系所组成的一个逻辑表达式。例如下式Policy:

参与X课题or(信息安全学院andA大学and教授)

这是一条简单的策略,其表达的含义是唯有X课题组的成员或是A大学信息安全学院的教授才能满足其要求。

2.1.3属性集合与策略匹配

使用C_Jacky_Li与Policy1进行说明。C_Jacky_Li集合中没有“参与X课题”这一属性,故其无法满足策略的前半部分;而策略的后半部分,要求“信息安全学院”、“A大学”、“教授”这三个属性同时出现,而C_Jacky_Li同时包含了这三个属性,所以属性集合匹配策略后半部分,由于策略前后两部分是or的关系,故属性集合C_Jacky_Li能够满足策略Policy1,我们称之为属性集合与策略匹配成功。

倘若此时另一个用户Johnson,他的属性集合是C_Johnson={计算机学院,A大学,教授},显然C_Johnson无法满足Policy1,此时属性集合与策略匹配失败。

2.4 ABE

一种基于属性加密技术(Attribute-Based Encryption,ABE),通过合理的配置共享策略,即可解决上述私密数据共享问题。根据嵌入的对象不同,ABE可划分为KP-ABE、CP-ABE。

以CP-ABE为例,举一个简单的例子说明ABE相较传统公钥加密算法的优势。

一个数据拥有者需要将一份明文文件,加密发送给N个不同的用户,倘若使用传统公钥加密算法,数据拥有者需要首先保存这N个用户的公钥(不考虑公钥证书的情况下),利用这N个不同公钥,使用该份明文文件,加密N次,形成N份不同的密文,分别发送给这个N个用户。PK:Public Key,公钥;CT:Cipher Text,密文。

若使用ABE来完成这项任务则会轻松很多。此时,数据拥有者只需要制定一条仅有这N个用户才能满足的访问策略,接着输入公共参数PP、该条策略以及明文文件至ABE加密算法,进行加密一次,形成唯一一份密文。得到密文后,数据拥有者将该份密文分别发送给这N个不同用户。

从加密计算开销与存储开销的角度来看,ABE在该场景下(数据加密共享场景)相较于传统公钥加密算法,有着肉眼可见的性能优势。

2.4.1 KP-ABE

KP-ABE(基于密钥策略的属性加密,Key-Policy ABE,KP-ABE)是将策略嵌入到用户密钥中,属性嵌入到密文中。密钥对应于一个访问结构而密文对应于一个属性集合,解密当且仅当属性集合中的属性能够满足此访问策略。这种设计比较接近静态场景,此时密文用与其相关的属性加密存放在服务器上,当允许用户得到某些消息时,就分配一个特定的访问策略给用户,其应用场景则更加偏向于付费视频网站、日志加密管理等等。如果用户想解密多个文件,那么他必须拥有多个可以满足匹配的秘钥,否则不能解密多个文件。

2.4.2 CP-ABE

CP-ABE(基于密文策略的属性加密,Ciphertext-Policy ABE,CP-ABE)是将策略嵌入到密文中,属性嵌入到用户密钥中。密文对应于一个访问结构而密钥对应于一个属性集合,解密当且仅当属性集合中的属性能够满足此访问结构。

CP-ABE基于属性的加密运用密码机制保护数据,由数据拥有者规定访问密文的策略,将属性集合与访问资源相关联,数据使用者可以根据自己的授权属性的访问密文信息,该技术适合隐私数据共享等访问类应用。

CP-ABE由于策略嵌入密文中,这就意味着数据拥有者可以通过设定策略去决定拥有哪些属性的人能够访问这份密文,也就相当于对这份数据做了一个粒度可以细化到属性级别的加密访问控制,CP-ABE的应用场景一般是公有云上的数据加密存储与细粒度共享。

2.3 KP-ABE与CP-ABE比较

比较项

CP-ABE

KP-ABE

策略相关

密文

秘钥

属性集合相关

秘钥

密文

数据拥有者是否有权决定数据能被谁访问

属性集合中属性来源

用户属性

数据/文件属性

适用场景

云环境/区块链数据加密共享

日志管理、付费视频网站

2.支持用户属性可撤销和恢复的CP-ABE算法实现步骤

CP-ABE主要由7个步骤组成,前两步均在证书颁发中心(CA)执行,并存储PK\MK\UK:

  1. 初始化Setup:初始化算法为随机化算法,初始化仅生成系统公钥PK、系统主秘钥MSK。
  2. 撤销机构初始化:输入参数为PK,生成一个素数域P,为每个属性att计算list=1。算法输出初始化的P,map<userGID,prime>及map<att,list>,list并不是我们常见的list,而是一个大数,且为素数,用来记录是否被撤销。
  3. 秘钥生成KeyGen:可信授权中心根据PK、MK和数据请求者提交的属性集合S,为数据请求者生成与属性集合关联的用户秘钥UK。在素数域中为用户申请一个素数prime,从P中删除这个prime,保证不同用户获取的prime不一样,然后素数存入映射表map<userGID,prime>中。
  4. 加密Encrypt:加密算法(随机化算法)输入参数为PK、待加密消息M、访问策略关联的访问控制结构,输出基于属性加密的密文。
  5. 解密Decrypt:解密为确定化算法,由数据请求者执行。解密分为两个步骤,第一步:访问策略树的叶子节点,令i=att(x),x表示密文策略访问树的叶子节点,(函数att(x)返回节点x所对应的属性),如果i∈S,算法获取该属性对应的撤销列表list并取模list%prime。若值不为0,表明该用户未被撤销,若为0,表示已被撤销,解密结束;第二步:当第一步验证通过后,算法输入UK、密文M,如果属性集合满足访问策略,算法可成功解密密文M。
  6. 用户属性撤销:算法输入参数为属性att,属性对应的撤销列表list、用户user及用户对应的素数prime。当用户user被撤销属性att时,DO分别从映射表map<user,prime>和map<att,list>取出用户对应的素数prime及属性对应的撤销列表list,并计算list'=list×prime。属性att对应的撤销列表更新为list'。
  7. 用户属性恢复:算法输入参数为属性att,属性对应的撤销列表list、用户user及用户对应的素数prime。用户被撤销可能是暂时的,当用户user重新拥有属性att时,DO分别从映射表map<user,prime>和map<att,list>取出用户对应的素数prime及属性对应的撤销列表list,并计算list'=list÷prime。属性att对应的撤销列表更新为list'。

2.1用户和秘钥管理

2.1.1用户管理

用户拥有的基本信息(最小数据集合):GID(CA提供或业务方提供,但要保证全局唯一性)、CP-ABE用户属性(业务方提供)、唯一素数(CA用户注册单元提供)、私钥(CA用户私钥生成单元产生)。

用户提交信息(GID、CP-ABE用户属性、唯一素数)到CA,申请注册和生成用户私钥,用户私钥存在CA中,CA提供接口查询用户和用户私钥获取。

2.1.2策略更改

在实际工程应用中,撤销方案尽量选择复杂度低、计算开销小、实现简单的方案。因此,本设计中采用的策略撤销方案:通过固定长度的撤销列表记录撤销用户,撤销过程不必更新系统及相关用户的秘钥,可大大降低撤销所引起的计算开销。

2.1.3撤销

用户属性撤销:算法输入参数为属性att,属性对应的撤销列表list、用户user及用户对应的素数prime。当用户user被撤销属性att时,DO分别从映射表map<user,prime>和map<att,list>取出用户对应的素数prime及属性对应的撤销列表list,并计算list'=list×prime。属性att对应的撤销列表更新为list'。

2.1.4恢复

用户属性恢复:算法输入参数为属性att,属性对应的撤销列表list、用户user及用户对应的素数prime。用户被撤销可能是暂时的,当用户user重新拥有属性att时,DO分别从映射表map<user,prime>和map<att,list>取出用户对应的素数prime及属性对应的撤销列表list,并计算list'=list÷prime。属性att对应的撤销列表更新为list'。

3.安全性分析

已有大量学者对其研究证明是安全的,此处安全分析略。

4.方案优势

  1. 实现了加密数据的细粒度访问控制,即数据拥有者可以指定谁可以访问加密的数据,数据拥有者对数据具有完全的控制权。例如,金融公司自身可以控制谁能对数据进行访问,只需要把数据访问的权限交给监管机构和与之有数据合作的伙伴即可。
  2. CP-ABE不需要像其它加密方式那样,如非对称加密,每次加密都必须知道接收者的身份信息且发送给多个用户时必须加密多次,CP-ABE只需要设置访问策略仅执行一次加密,当用户拥有的属性符合加密者所描述的策略时,数据使用者就可以解密。
  3. 可解决对称加密密钥传输带来的密钥泄露的问题,保护了数据拥有者信息,也保护了数据使用者信息。

5.潜在的应用场景

区块链技术与开放银行的构建

6.CP-ABE算法Java实现

可参考以下两个开源项目实现,但是不包括访问策略更改,这一点需要自己实现。

  1. https://github.com/stefano81/dcpabe
  2. https://github.com/TU-Berlin-SNET/jTR-ABE

基于属性加密方案(CP-ABE,KP-ABE)相关推荐

  1. 基于属性加密方案的发展

    1.公钥加密体制: 与对称密码体制相比,公钥密码体制加密密钥(公钥)和解密密钥(私钥)是不一样的,加密密钥是可以公开的,并且不会危及密码算法的安全性.其过程可以简单的表示如下图所示: 如上图所示,其步 ...

  2. 基于属性加密的ABE算法的应用场景思考展望

    ABE算法先前使用在云计算场景中,和区块链存在交叉应用场景,具体问题体现在 数据的异地存储.云服务器提供商的不可信.管理员能否对自身数据拥有足够的控制能力以及如何保证数据的安全有效共享都是亟需解决的问 ...

  3. 一种基于属性加密技术(ABE)的轻量级数据共享方案

    A Lightweight Secure Data Sharing Scheme for Mobile Cloud Computing IEEE TRANSACTIONS ON CLOUD COMPU ...

  4. 面向云环境基于属性加密的密文分享系统——简介

    1.Abstract 随着互联网技术的发展,人们需要处理和存储的信息数据量也越来越大.云计算的来临,在满足人们对海量数据存储空间以及计算资源需求的同时,云存储本身带来的安全问题也不容忽视.数据的异地存 ...

  5. 属性加密技术及基于属性的ABE算法的访问控制技术介绍

    属性加密技术 基于身份的加密体制简介 基于身份的加密体制可以看作一种特殊的公钥加密,它有如下特点:系统中用户的公钥可以由任意的字符串组成.这些字符串可以是用户在现实中的身份信息,如:身份证号码.用户姓 ...

  6. cp abe java_CP-ABE基于密文策略的属性加密(JAVA源码)

    [实例简介] 这个软件是一个Java实现基于"ciphertext-policy属性加密"(CP-ABE). 使用该软件,您需要Java加密为基础的配对库(jPBC)安装(jpbc ...

  7. 基于属性的加密(ABE)

    Trias联合"北大软微-八分量协同创新实验室"定期举办技术沙龙.该实验室成立于去年9月份,以可信计算.区块链等作为主要研究方向,致力于推动智能互联新时代下的人机互信问题的解决.针 ...

  8. 属性加密(ABE)基础知识

    属性加密 最近在看ABE相关论文,因为本人(数学功底一般)不太能理解其中原理.所以特意记录ABE的基础知识,以便日后能快速重温. ABE常见分类 属性基加密的思想是让密文和密钥与属性集合和访问结构产生 ...

  9. 科学计算机撤销,云计算环境下基于属性的撤销方案-计算机科学.PDF

    云计算环境下基于属性的撤销方案-计算机科学.PDF 第 卷 第 期 计 算 机 科 学 45 8 Vol.45No.8 年 月 2018 8 COMPUTER SCIENCE Au.2018 g 云计 ...

最新文章

  1. DELL通过LCD简单的判别服务器的硬件故障
  2. 模板初步——定义模板
  3. Java线程与并发编程实践----同步器(Phaser)
  4. 使用javascript模拟常见数据结构(四)
  5. 2014年计算机求职总结--准备篇
  6. 三菱伺服自动调谐_三菱伺服参数设置调试软件MR Configurator2 Ver 1.70Y
  7. linux夏令时配置文件,Linux中有关时区及夏令时设置(TZ环境变量)
  8. SLAM14讲学习笔记(一) 李群李代数基础
  9. 原型模式与深拷贝浅拷贝
  10. Collection接口共性方法
  11. 荐读 | 分享交易员的书单,向名家请教交易之道,交易精彩无比
  12. 在AS中引用第三方java类库含源代码包
  13. Linux性能优化全景指南(建议收藏)
  14. win7无法访问服务器共享文件夹解决办法
  15. C语言字符串类基本知识
  16. 国际大会演讲ppt_如何在会议或活动中接受技术演讲
  17. 获取某月上一个或下一个月
  18. ScreenMatch适配方案和PxCook配合使用踩坑记录
  19. Android实例,做一个微信好友列表,列表视图应用
  20. 利用OpenStreetMap决定GPS点所在的道路类型

热门文章

  1. 淘宝,解决了14个中兴公司的就业岗位
  2. linux预留的系统调用号,Linux的系统调用号列表
  3. jqdatasdk用pyechart画图生成网页并保存到本地
  4. IOS开发常用工具网站地址
  5. 大气黑色简约动态PPT-朴尔PPT
  6. 企业付款 php_PHP接入微信企业付款功能
  7. Linux下载慢问题解决
  8. 关于 java:Android:如何以编程方式设置 MediaPlayer 音量?
  9. 专业技能与职业素养报告计算机,专业技能与职业素养实施细则.docx
  10. springboot 业务消息总线及延时消息回调