ABE 密码学,以及与区块链结合的价值

背景

  • 区块链技术具备篡改难度高、使用成本低、分布式的优点,本应成为各行各业的重要助力。但是由于链上参与方担心自己的核心数据外泄,不愿将自己的核心数据上链,这个原因成为阻止区块链落地的主要难题。
  • 使用 ABE密码学,就可以使得区块链中数据所有权得到有效保护,链上数据归属权为参与者本人所有,外人无法访问。

ABE 密码学是什么

  • ABE 是基于属性的加密,即(Attribute-Based Encryption)。与 RSA、IBE (基于身份加密)等加密方式相比,其最大的不同点是实现了一对多的加解密。也就是说,ABE 不需要像其他加密方式那样,每次加密都必须知道接受者的身份信息,只要用户拥有的属性符合加密者所描述的策略时,用户就可以解密。

例子

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

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

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

属性指的是什么

  • 属性可以理解为一个对象具有的某些特征。举个例子,Jacky Li 是 A 大学信息安全学院的教授,那么「A 大学」,「信息安全学院」以及「教授」就是 ABE 中刻画 Jacky Li 这个人的多个属性,多个不同的属性,可以构成不同的属性集合。在此基础上,策略实际即是由属性及它们间关系所组成的一个逻辑表达式。
  • 倘若抛开严谨的定义,用一句话说明 ABE 公钥加密算法,其实就是看属性集合与策略是否匹配密码要求的过程。
  • 在 ABE 中,需要弱化公钥这一概念,称之为公共参数(public parameter)。属性集合则被嵌入到私钥中,如果用户拥有的属性可以与密码要求的策略匹配成功,就可以成功解密。

具体的例子

  • 假设现有一条密文策略规定:参与 X 课题 or (信息安全学院 and A 大学 and 教授)
  • 这条策略表达的含义是,唯有 X 课题组的成员或 A 大学信息安全学院的教授才能满足要求进行解密。现在有三个用户,分别是 A 大学信息安全学院的 Alan 教授,A 大学经济管理学院的 Black 教授,B 大学参与 X 课题的 Charles 教授。
  • 三个用户中,Alan 的属性集合{计算机学院,A 大学,教授}满足要求,Charles 的属性{参与 X 课题}也满足要求,但是 Black 的属性不能满足要求。所以 Alan 和 Charles 解密成功,而 Black 解密失败。

两种不同的方案

  • 目前,实现 ABE 的方案主要有 CP-ABE (密文策略 ABE)和 KP-ABE (秘钥策略 ABE)。二者最大的分别在于策略和属性的匹配方式上。
  • CP-ABE,指的是策略嵌入在密文中,属性集合嵌入到密钥中,当且仅当属性能够满足策略时可以解密。
  • KP-ABE 是指,策略嵌入到密钥中,属性集合嵌入到密文中。
  • 虽然在结构上,二者具有明显的对偶关系,但在实际使用中,二者的应用场景却有着明显的不同。
  • CP-ABE 由于策略嵌入密文中,这就意味着,数据拥有者可以通过设定策略去决定拥有哪些属性的人能够访问这份密文,也就相当于对这份数据做了一个加密访问控制。CP-ABE 的应用场景一般是公有云上的数据加密存储与共享。
  • KP-ABE 的应用场景则更加偏向于付费视频网站、日志加密管理等等。

CP-ABE

简介

  • CP-ABE(ciphertext policy attribute based encryption,密文策略属性基加密系统):所谓密文政策加密系统是指,密文对应于一个访问结构而密钥对应于属性集合,解密当且仅当属性集合中的属性能够满足此访问结构。这种设计比较接近于现实中的应用场景,可以假象每个用户根据自身条件或者属性从属性机构得到密钥,然后加密者来制定对消息的访问控制。

流程​

  • 设置:使用随机算法,输入隐藏的安全参数,输出公开参数PK和一个主密钥MK。
  • 加密:使用随机算法,输入一个消息m、一个访问结构A、公开参数PK,输出密文E。​
  • 密钥生成:使用随机算法,输入一组属性Y、主密钥MK、公开参数PK,输出一个解密密钥D。
  • 解密算法输入:​基于访问结构A加密的密文E,对应属性组Y的解密密钥D,公开参数PK。如果Y∈A,输出X消息m。

KP-ABE

简介

  • KP-ABE​(key policy attribute based encryption,密钥策略属性基加密系统):所谓密钥政策加密系统是指,密钥对应于一个访问控制而密文对应于一个属性集合,解密当且仅当属性集合中的属性能够满足此访问结构。这种设计比较接近静态场景,此时密文用与其相关的属性加密存放在服务器上,当允许用户得到某些消息时,就分配一个特定的访问结构给用户。

流程

  • 设置:使用随机算法,输入隐藏的安全参数,输出公开参数PK和一个主密钥MK。
  • 加密:使用随机算法,输入一个消息m、一组属性Y、公开参数PK,输出密文E。​
  • 密钥生成:使用随机算法,输入访问结构A、主密钥MK、公开参数PK,输出一个解密密钥D。
  • 解密算法输入:​基于属性组Y加密的密文E,对应访问结构A的解密密钥D,公开参数PK。如果Y∈A,输出X消息m。

与区块链怎么结合   隐私

  • 区块链的一大特点在于数据共享,这本是区块链的一大优点。然而,在实际应用中,很多参与者的数据很涉及机密,数据所有者并不乐意把自己的数据公开出来。
  • 比如在金融领域。数据上链可以提高数据本身的安全性,也有利于监管机构从区块链中调取数据进行监管,这些我们都知道了。但是为什么金融领域的区块链应用迟迟推进不下去呢?一个亟待解决的重要问题是,金融公司本身不愿意将数据存在链上。因为这些数据都是相当敏感且重要的,一旦数据外泄,会带来不小的损失。
  • 通过 ABE,金融公司可以将自己的数据加密后传到区块链上。由于数据全程都是密文,链上其他人只能看到加密之后的乱码,没有使用价值,拿到了也没有用。与之相对,金融公司自身可以控制谁能对数据进行访问,只需要把数据访问的权限交给监管机构和与之有数据合作的伙伴即可。
  • 传统的加密方式是将数据加密后,将秘钥发送给各个需要访问数据的机构,这种方式效率虽然比较高,但是一旦秘钥外泄,无法断定是哪一个机构作为。相比起传统的加密,ABE 的好处很明显,因为每一个机构的属性不尽相同,其秘钥也不尽相同,一旦我把秘钥泄露给外界,很容易就被追查得到。
  • CP-ABE不需要像其它加密方式那样,如非对称加密,每次加密都必须知道接收者的身份信息且发送给多个用户时必须加密多次,CP-ABE只需要设置访问策略仅执行一次加密,当用户拥有的属性符合加密者所描述的策略时,数据使用者就可以解密。
  • 可解决对称加密密钥传输带来的密钥泄露的问题,保护了数据拥有者信息,也保护了数据使用者信息。

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

  • CP-ABE主要由7个步骤组成,前两步均在证书颁发中心(CA)执行,并存储PK\MK\UK:
  1. 初始化:初始化算法为随机化算法,初始化仅生成系统公钥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'。

用户和秘钥管理

用户管理

  • 用户拥有的基本信息(最小数据集合):GID(CA提供或业务方提供,但要保证全局唯一性)、CP-ABE用户属性(业务方提供)、唯一素数(CA用户注册单元提供)、私钥(CA用户私钥生成单元产生)。
  • 用户提交信息(GID、CP-ABE用户属性、唯一素数)到CA,申请注册和生成用户私钥,用户私钥存在CA中,CA提供接口查询用户和用户私钥获取。

策略更改

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

撤销

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

恢复

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

CP-ABE算法实现

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

  1. https://github.com/stefano81/dcpabe
  2. https://github.com/TU-Berlin-SNET/jTR-ABE
  3. java平台
  4. charm平台
  5. CP-ABE_JNI

参考链接

  • 参考链接
  • CP-ABE和KP-ABE
  • 基于ABE算法的访问控制研究
  • 基于属性的加密概述
  • 基于属性加密方案(CP-ABE,KP-ABE)

区块链中的密码学,使用ABE结合区块链相关推荐

  1. 区块链中的密码学(五)-零知识证明简述

    本篇是这个系列的最后一篇,尽管在区块链中还有很多的密码学应用,将来会必然会更多,然而笔者认为,就今天我们有限的学习时间来讲的话,任何人都应该对信息的获取做减法.思来想去,选择了"零知识证明& ...

  2. 区块链中的密码学系列之SHA256算法(三)

    1. 前言 SHA系列算法是一种密码散列函数,由美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS).现在已经被破解. 我们本文主要研究SHA256算法. 2. ...

  3. 区块链中的密码学应用

    区块链中应用到的密码学主要包括以下几方面: 数字摘要 区块链本质上是一种分布式数据存储方式,每一个数据区块之间靠数字摘要建立起联系,比如比特币中每一个区块都包含了它前一个区块的摘要值.因此数字摘要是区 ...

  4. 区块连中的密码学--SHA256实现机制

    区块连中的密码学–SHA256实现机制 摘要 本文主要介绍区块链中所使用的密码学知识,同时因为Hash函数是区块链中重要的一环,因此也使用python3对SHA256进行了实现. 一.什么是区块链 关 ...

  5. 解密区块链中的密码学

    在这片文章中,我们总结了区块链会用到的一些密码学原语,那什么是密码学"原语"? 不同于操作系统的"原语"概念,(注:操作系统原语是操作系统或计算机网络用语范畴. ...

  6. 从区块链中常见的攻击类型谈区块链的隐私与安全

    本文整理自Parity亚洲技术总监贾瑶琪先生在万向区块链蜂巢学院直播间进行的Web 3.0训练营公开课. 过去几年,从比特币到以太坊,区块链系统从最初的分布式账本功能,慢慢进化到现在类似于分布式计算机 ...

  7. 区块链中的密码学之数字签名方案(十二)

    1. 前言 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性( integrity)和来源( 或不可抵赖,non-repudiation). 一个典型的场景是,A 要发给 B 一个 ...

  8. 区块链中密码学与安全技术

    区块链的定义 区块链的定义,应当是:区块链是一种按照时间顺序将数据进行分布式存储的块链式数据结构,它利用共识机制进行数据验证,利用密码学进行数据保护和用户安全访问,利用智能合约来操作数据,从而成为不可 ...

  9. 密码学在区块链中的应用 【八】

    密码学在区块链中的应用 [8] 区块链相关密码学 数据的组织方式,区块链的块链结构.通过块的哈希链接起来的链. 世界状态:使用 merkle 哈希树组织,便于快速检索和网络传输.如账户树,交易树,账单 ...

最新文章

  1. 百度与华为重磅合作!李彦宏:技术是百度的信仰
  2. 网站使用QQ登录问题小结
  3. Re题目------Enm.exe
  4. Bzoj4503 两个串
  5. scrapy item引用时报错
  6. 【实战 Ids4】║ 控制台密码模式搭配Ocelot网关
  7. c语言常量指什么作用,c语言字符常量是什么
  8. android从assets文件下面复制文件
  9. 用matlab对称振子E面方向图,什么天线的E面方向图 H面方向图是具体什么方向图`...
  10. 完善计算机 实践性教学,计算机基础实践性教学分析论文.doc
  11. Windows命令行下对文件做MD5校验
  12. 〖Python 数据库开发实战 - Python与MySQL交互篇⑧〗- 项目实战 - 开发新闻管理系统(项目展示)
  13. 【C语言编程练习】5.7填数字游戏求解
  14. 2022数模国赛B题无人机第一题第一小问的简单编程
  15. play框架2.5.6教程——使用play控制台
  16. 力扣-518题 零钱变换 II(C++)- 动态规划、完全背包问题
  17. 外汇天眼:外汇市场上不得不说的两大类庄家!
  18. 皮肤问题与肠道的关系
  19. TraceView使用
  20. win10 打印机脱机怎么办

热门文章

  1. 海量数据持久层解决方案_爱数AnyBackup重磅发布海量非结构化数据超可用解决方案...
  2. cesium 隐藏entity_cesium entity创建各类实体
  3. if 组件是否存在_UE4 UMG简介+Slate组件问题排查
  4. 【转】UML基础: 第1部分 - 类图 (Class Diagram)
  5. 【转】c#中@的3种作用
  6. SCRUM与XP区别
  7. 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案
  8. 如何轻松记忆Linux文件系统层次结构
  9. JSP的三六九四七(三大指令、六大标签、九大内置对象、四大作用域、七个动作指令)
  10. wince投屏苹果手机_怎么把手机上的导航映射到中控屏