推荐阅读
1.北大学术 | 基于属性的加密概述
北大学术 | 基于属性的加密概述
原创Triaslab 最后发布于2018-12-24 15:07:55 阅读数 1139 收藏
展开

Trias联合“北大软微-八分量协同创新实验室”定期举办技术沙龙。该实验室成立于去年9月份,以可信计算、区块链等作为主要研究方向,致力于推动智能互联新时代下的人机互信问题的解决。针对沙龙具体细节问题,我们将推出由实验室教授、博士生主笔撰写的系列文章。本期文章由北京大学的两位博士生李聪、冯新宇撰写。
关注信息安全圈的小伙伴,九月初可能看到了一则新闻,欧洲电信标准协会(ETSI)发布了两套新的基于属性的加密(Attribute-Based Encryption,ABE,下文的描述中均使用英文缩写)标准。新加密标准被认为可确保个人数据只会在用户密钥的属性匹配加密属性时才能解密。
看完这则新闻,你或许不禁会问,什么是ABE?什么又叫做用户密钥的属性匹配加密属性?下面就聊聊ABE中的几个基本问题。
属性,属性集合及策略
百度百科中对属性的解释是:“属性就是人类对于一个对象的抽象方面的刻画。由于事物属性的相同或相异,客观世界中就形成了许多不同的事物类。具有相同属性的事物就形成一类,具有不同属性的事物就分别地形成不同的类”[1]。
在ABE中,属性也有着相似的作用。举个例子,Jacky Li是A大学信息安全学院的教授,那么“A大学”,“信息安全学院”以及“教授”就是ABE中刻画Jacky Li这个人的多个属性,这些属性可以构成一个属性集合,我们可以把它记为集合SJacky L。
下面我们聊聊策略。一种简单的理解是策略实际即是由属性及它们间关系所组成的一个逻辑表达式,例如下式Policy1:
参与X课题 or(信息安全学院 and A大学and 教授)
这是一条简单的策略,其表达的含义是唯有X课题组的成员或是A大学信息安全学院的教授才能满足其要求。
最后,还必须说说属性集合与策略的匹配。
我们仍使用SJacky Li与Policy1进行说明。SJacky Li集合中没有“参与X课题”这一属性,故其无法满足策略的前半部分;而策略的后半部分,要求“信息安全学院”、“A大学”、“教授”这三个属性同时出现,而SJacky Li同时包含了这三个属性,所以属性集合匹配策略后半部分,由于策略前后两部分是or的关系,故属性集合SJacky Li能够满足策略Policy1,我们称之为属性集合与策略匹配成功。

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

(策略与属性集合匹配失败示意图)
什么是ABE?
清楚了ABE中的属性及策略的概念,我们开始解释什么是ABE。抛开严谨的定义,用一句话说明ABE加密算法其实就是看属性集合与策略是否相匹配的一个公钥加密“游戏”。
简单解释下这句话,首先ABE是一个公钥加密算法,既然是公钥加密算法,就有公钥和私钥的概念,每一名参与ABE系统的用户都有一个属于自己的私钥,而加密方在加密数据时使用的则是公钥,在ABE中我们弱化公钥这一概念,称之为公共参数(public parameter)。

(传统公钥加密算法加解密示意图(该图片来于百度图片库)[2])
其次,在传统公钥加密中,用户会使用其私钥尝试解密密文,ABE也不例外。
与传统方法不同的是,设计者将属性集合与策略嵌入到了用户私钥与密文中,这样一来,私钥与密文输入解密算法尝试解密的过程,实际也就是属性集合与策略相匹配的过程,倘若能够匹配成功,则算法顺利完成解密操作,用户可成功恢复出明文数据。倘若匹配失败,则用户无法恢复明文,解密失败。
KP-ABE与CP-ABE
在这里还有两个概念需要说明,即KP-ABE与CP-ABE。
KP-ABE,Key-Policy ABE,翻译过来即是密钥策略ABE,什么是密钥策略?上文中提到了ABE的解密过程中需要进行策略与属性集合匹配的操作,但实际我们并没有说清楚策略和属性集合分别在哪。Key-Policy指的是策略嵌入用户密钥中,属性集合嵌入于密文中,在解密的过程中,用户将嵌入策略的密钥与嵌入属性集合的密文输入解密算法,通过这种方式,实现策略与属性集合的匹配。
而CP-ABE(Ciphertext-Policy ABE,密文策略ABE)呢?自然是策略嵌入在密文中啊!它与KP-ABE在结构上是一种对偶关系,这也就是为什么往往学者们在提出一个新的CP-ABE方案时,会在同一篇论文中同时再提出一个KP-ABE方案。同样条件与假设下,两类算法的密文密钥结构设计比较好类比与迁移。
需要注意的一点是,这种相似性仅存在于结构上,CP-ABE与KP-ABE在应用场景方面有着极大的不同。
CP-ABE由于策略嵌入密文中,这就意味着,数据拥有者可以通过设定策略去决定拥有哪些属性的人能够访问这份密文,也就相当于对这份数据做了一个粒度可以细化到属性级别的加密访问控制。
CP-ABE的应用场景一般是公有云上的数据加密存储与细粒度共享,而KP-ABE的应用场景则更加偏向于付费视频网站、日志加密管理等等(由于篇幅的关系,具体场景会在后续文章中继续讨论)。
ABE的优势是什么?
我们以CP-ABE为例,举一个简单的例子说明ABE相较传统公钥加密算法的优势。
一个数据拥有者需要将一份明文文件,加密发送给N个不同的用户,倘若使用传统公钥加密算法,数据拥有者需要首先保存这N个用户的公钥(不考虑公钥证书的情况下),利用这N个不同公钥,使用该份明文文件,加密N次,形成N份不同的密文,分别发送给这个N个用户。

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

(使用ABE算法示意图)
从加密计算开销与存储开销的角度来看,ABE在该场景下(数据加密共享场景)相较于传统公钥加密算法,有着肉眼可见的性能优势,此处便不再赘述。
结语
在本文最后,给出维基百科对于ABE的定义[3],是不是发现你能明白这段文字在说什么了?
ABE从06年正式被提出到现在,已经经历了十二个年头。在这十二年里,ABE领域都是公钥密码学研究中的一个重要方向。
随着ETSI新型加密标准的提出,相信ABE会越来越多地进入产业界的视野,逐渐成为一项可以落地的技术。在后续的文章中,我们还将对ABE的更多问题以及ETSI发布的标准进行更深入地讨论,敬请期待!
引用
[1] 百度百科
https://baike.baidu.com/item/%E5%B1%9E%E6%80%A7/1405051?fr=aladdin
[2]百度图库
http://u6.gg/f4QMa
[3] 维基百科
https://en.wikipedia.org/wiki/Attribute-based_encryption
————————————————
版权声明:本文为CSDN博主「Triaslab」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/triaslab/article/details/85233601
2.密文策略基于属性加密(CP-ABE)访问树构造与解密
在密文策略基于属性加密方案中,最难理解的过程莫过于访问树的构造和从访问树中解密出访问树的秘密数,本文从访问树的构造和从访问树中解密出访问树的秘密数进行讨论。
1. 构造访问树
在CP-ABE方案中,访问树用于隐藏源数据的加密密钥,其形状结构如其名一样,是一棵树。其叶子节点为数据所有者设定的属性和属性值以及父节点传于此节点的秘密值,并对其加密处理,只有数据访问者拥有此属性方可解密出此节点的秘密值;非叶子节点为门限节点,数据访问者需满足此门限最低值方可解密此节点秘密值,例如门限为3/5,此节点有5个子节点,数据访问者需至少满足3个子节点才能解密出秘密值。
如下图所构造的访问树,能解密此访问树加密的源数据,数据访问者需满足的属性是:第一种:(“计算机学院” 且 “硕士” 且 “研二”)和 “教师”(此属性结合可能不存在,因为教师和研二不存在且关系) ,第二种:“教师” 和(“网络实验室” 或 “云实验室”),第三者:(“计算机学院” 且 “硕士” 且 “研二”)和(“网络实验室” 或 “云实验室”);否则无法访问。
如何构造这样的一棵访问树?
从根节点开始,其门限值为2,孩子节点有3个,随机生成一个多项式,其最高次数为门限值少1,故根节点的最高次数为1,然后将常数项设置为秘密数(秘密数为需要秘密保存的数);如此根节点随机的多项式为f(x)=5+3x,秘密数为5。此外,将根节点的孩子节点从左至右依次标记为1,2,3,.....,将节点标记值代入f(x)函数中,所得值(即生成新的秘密值)传给该标记的孩子节点秘密保存;故“3/3”节点(左边第一个节点)标记为1,传给“3/3”节点的秘密值f(1)=5+3*1=8,中间“教师”节点(中间节点)标记为2,传给“教师”节点的秘密值f(2)=5+3*2=11,“1/2”节点(右边节点)标记为3,传给“1/2”节点的秘密值为f(3)=5+3*3=14。
“3/3”节点和“1/2”节点在接收到父节点传来的值后,按照上述方式生成随机多项式,将常数项设置为父节点传来的值,此外也按照上述方式生成新的秘密值并将它传给子节点,数据如图所示(对于非叶子节点,都按照此方式进行)。对于叶子节点,在接受到父节点的秘密值后,用此叶子节点的属性对秘密值进行加密处理。
至此,访问树已构造完成!
2. 从访问树中解密出访问树的秘密数
数据访问者需满足访问树方可解密出访问树的秘密值,对于上述访问树,数据访问者需满足以下属性集中的一个:(计算机学院、硕士、研二、教师(此属性结合可能不存在,因为教师和研二不存在且关系))、(计算机学院、硕士、研二、网络实验室)、(计算机学院、硕士、研二、云实验室)、(教师、网络实验室)、(教师、云实验室)。若上述属性集中某一个或多个(至少一个)为数据访问者属性集的子集,则能解密出秘密值,下面开始解密处理。
对于叶子节点,在数据访问者属性集中寻找出和此节点属性与属性值一致的属性,用找出的属性解密出此节点的秘密值(即公式1),当然不能完全解密出,他是秘密值和加密时对此属性设置的加密值的乘积。
解密出叶子节点后,开始解密其父节点(非叶子节点),在解密出叶子节点后,即可得到多对值;如在上述访问树的“3/3”节点,其孩子节点解密出三个值19,44,83(推理过程忽略随机数),在生成这三个数时,f(1)=19,f(2)=44,f(3)=83,其中f(x)=8+4x+7x^2(解密时并不知道此多项式,只知道后面的三个点),因此在f(x)上有三个点是(1,19),(2,44),(3,83);因为此节点存储的秘密值是多项式的常数项,即f(0)=秘密值,故我们需要根据这三个点得到0所对应的值是多少,根据拉格朗日公式就能求出0所对应的值,即解密出秘密值(即公式2);对于非叶子节点均可按照上述方式解密出秘密值,在根节点处解密出整个树所隐藏的秘密值(是秘密值和加密时对此属性设置的加密值的乘积,所有节点解密出的秘密都存在一个随机数,解密出的值都是随机数和秘密值的乘积,只是讲述过程中为了方便忽略了随机数,最后根节点解密出的随机数在最后的解密过程中会抵消掉(公式3))。
另外需要说明的是“3/3”节点是一个3个孩子节点、门限值为3的节点,相当于且关系,数据访问者需解密出所有的孩子节点方可用拉格朗日公式解密出常数项(即秘密值);“1/2”节点是一个2个孩子节点、门限值为1的节点,故为或关系,数据访问者只满足其中一个孩子节点即可解密出秘密值(秘密值就是孩子节点解密出的秘密值,因为根据随机多项式生成规则,多项式的最高次数为门限值少1,门限值为1,故最高次数为0,即常数项);若如“2/3”这样的节点,既非且关系,也非或关系,3个孩子节点,门限值为2,若需解密出此节点的秘密值,数据访问者需解密出三个孩子节点中的两个节点即可解密出孩子节点。
参考文献:
[1] 陶启, 黄晓芳. 基于密文策略多机构属性基加密方案[J]. 武汉大学学报(理学版), 2015, 61(6).
[2]刘西蒙,马建峰,熊金波,李琦,张涛.密文策略的权重属性基加密方案[J].西安交通大学学报,2013,47(8).
[3] John Bethencourt, Amit Sahai, Brent Waters:Ciphertext-Policy Attribute-Based Encryption. IEEE Symposium on Security and Privacy 2007: 321-334
————————————————
版权声明:本文为CSDN博主「e小王同学V」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ping802363/article/details/65639016

