本文是我的 2019 年科研“属性加密”系列博文的首篇,该系列博文旨在用汉语介绍我和我导师的合作论文 Compact Adaptively Secure ABE from Lin: Beyond and Towards LL20 。在这一篇里,我将介绍属性加密的基本概念并定下一个“小目标”。
关于 2020 的怨念:因为新冠肺炎,公费去 Zagreb 旅游的机会没有了😔,不过求学和探索的脚步不能停止。(当然,今年的坏事儿可不止肺炎。)
属性加密
属性加密全称基于属性的加密,起源于 2005 年 Sahai、Waters 提出的模糊身份加密 SW05GPSW06 ,是一种公钥加密方案。它是更早的身份加密的扩展 Sha84BF01 。一句话来说的话,属性加密就是用密码学施行的访问控制列表。
在属性加密中有一个权威机构,它负责选择一个谓词 并生成整个系统的公钥和主密钥。任何人都可以用公钥加密任何消息,并且每个密文都和一个属性 相关联;权威机构可以(利用主密钥)颁发受限密钥(通常是颁发给有特定权限的用户),每个受限密钥和一个属性 相关联。解密密文使用的是受限密钥,且解密能够成功当且仅当 这就是说,每个用户只能解密他具有权限访问的密文(权限用 描述)。
常见的 ABE 有两种,“密钥策略”和“密文策略”。在 KP-ABE 中, 是程序的输入(狭义的“属性”),而 是输出一个 bit 的程序(狭义的“策略”),而 就是“程序 在输入 时的输出”。在 CP-ABE 中,密钥和属性关联,密文和策略关联。
在 ABE 中,属性 都是公开的,惟一需要保护的是消息本身。这样的加密方案在安全方面要求抗乌合:多个单独不能解密某个密文的用户在一起合作,仍然不能解密该密文。这里我援引 Wee 在 ASIACRYPT 2016 受邀讲座 Wee16 里的一个例子:
考虑一个婚恋网站,假设你想发布相亲信息——信息里有很多私人数据——所以你希望只有你心仪的约会对象可以解密你的信息。这个需求可以用 CP-ABE 实现,如下图:
用户注册时向婚恋网站提交认证信息,认证通过后即可获得对应属性的密钥。假设有两个串通好的用户,一个长得高、皮肤黝黑但不是很帅且是计算机科学硕士,另一个长得不高、皮肤白嫩但是很帅,是生物学博士,这两个人就分别有两个密钥,对应于他们的属性(高、皮肤黝黑、计算机科学;帅、博士)。如果这两个人共享他们的密钥,那么他们仍然不应该能解密上述相亲信息。
这个例子也表明对合取式策略(就是一堆属性的“且”)单纯地嵌套加密是不安全的。
语法和正确性
现在来形式化定义 ABE。简单起见,固定消息(明文)集合 以及属性集合、谓词 一个适用于 的 ABE 有 4 个高效随机算法:1
- 是初始化算法,输出公钥/主密钥对
- 是受限密钥生成算法,用来生成和 相关联的密钥
- 是加密算法,用来产生加密了消息 且和 相关联的密文
- 是解密算法,它输出一条消息(解密结果)或者一个特殊的符号 表示“不能解密”或者“解密出错”。
正确性要求对任意满足 的 以及任意 都有
安全性
这里采用基于不可区分性的安全性,不过和上次内积加密不同,这次用猜测博弈定义。考虑使坏者 和挑战者 进行如下博弈:
- 初始化: 运行 并把 发送给
- 询问 I: 可以进行任意多轮询问,每轮它可以向 发送一个 收到后运行 并把 返回给
- 挑战: 发送一个 和两条消息 其中 必须满足 对所有 成立(这个密文必须不能被 已经知道的密钥解密)。 收到后均匀随机地选择 运行 并把挑战密文 发送给
- 询问 II:同询问 I,但任何询问必须满足 (新的密钥必须不能解密挑战密文)。
- 猜测: 输出 它获胜当且仅当
ABE 安全(准确说是 IND-CPA——在选择明文攻击下密文不可区分)当且仅当对任意高效2的使坏者 都有3 (即使坏者的优势) 是可忽略4函数。
这个定义是在用形式化语言表达“如果设计上应该不能解密,那确实就不能解密”。用大白话来说:使坏者可以获得任意多个密钥和一个密文,密钥、密文关联的属性都任它选择(而且这种选择是适应性的,就是说查询和挑战都可以基于它已经获得的信息选择),并且使坏者也知道密文加密的是某两条消息之一;使坏者的任务是搞清楚密文里面加密的是哪一条消息,为了不“白送”(让使坏者通过加密方案的正确性平凡地获胜),我们要求它获得的密钥都不应该能解密挑战密文。
至于 IND-CPA 如何体现“选择明文攻击”以及多个密文的安全性问题,读者可参考《内积加密:公钥 IPFE 和 CPA 安全性》里关于 IND-CPA 的讨论。
↩2 “高效的使坏者”指任何多项式大小的电路族,也可以理解为附加接受多项式长度的 谏言 的概率多项式时间图灵机;谏言代表使坏者离线准备的破解用信息,它只需要数学上存在,甚至不需要是可计算的。见《内积加密:公钥 IPFE 与 CPA 安全性》注解 2。
↩3 想要以 1/2 的概率获胜非常容易,只要永远都瞎猜(或者永远输出固定猜测)就行了。这个定义就是在说使坏者能做的和瞎猜差不多。
↩4 不熟悉数学的读者可以把“可忽略”理解为“绝对值很小”,例如 就是 的可忽略函数,但 不是。一个函数 可忽略是指对任意 都存在 使得 对任意 成立。
“小”目标
我们希望构造具有如下好性质的 ABE 方案:
- 它的 IND-CPA 安全性可以归结为常用假设。
- 密文、密钥长度和具体使用的 长度分别成正比。
- 支持表达力很强的谓词。
第一条实际上可以拆成两条:一是要求适应性安全,即使坏者的任意选择都可以基于先前已经获得的信息(弱化版本是限制使坏者必须一开始就选择挑战密文的属性 二是要求安全性基于标准假设。
之前,满足前两条的最高表达力的谓词是 即布尔公式,这归功于 KW19 (我有一篇写得很烂的笔记)。本系列博文要介绍的工作 LL20 支持算术分支程序表达的谓词,这个工作基于双线性群里的 假设。这系列博文里主要介绍针对算术公式的做法,并且采用 DDH 假设。
算术公式是形如 的形式表达式。它是由未定元和整数进行有限次求差、求积得出的表达式,运算的次数加一定义为它的规模。固定质数 则一个 元算术公式 自然定义了 即把每个未定元替换为自变量的值后求值的函数。
我们即将讨论的 ABE 方案里,密文属性是 密钥属性是算术公式 解密条件是 即
关于算术公式的定义有两个值得注意的地方。在算术公式中,一个未定元可以出现5任意多次。算术公式不直接支持乘方运算,例如 的规模是 10 而不是 2,因为这个公式的标准写法是
此外,自然也可以考虑解密条件是 的 ABE 方案。跃跃欲试的读者可能会提出这可以直接用 费马小定理 归约为“非零解密”的 ABE,即利用 然而这不行,因为 的规模是 规模的 倍,而通常 很大(超过任何多项式)。好在将要构造的 ABE 可以同时处理两种解密条件,这里省略一种只是为了简化。
本篇结语
这一篇介绍了属性加密的概念,定义了属性加密(包括安全性),并定下了一个小目标——基于 假设构造支持算术公式的 ABE。下一篇介绍 LL20 构造中建立信息论意义下安全性的核心工具——算术密钥乱码化方案。
请启用 JavaScript 来查看由 Disqus 驱动的评论。