属性基加密(ABE)
标识密码(IBE)实现了身份即公钥,但访问控制粒度仍限于单一身份。在云计算、物联网等场景中,数据所有者往往希望实现更灵活的授权。属性基加密(Attribute-Based Encryption, ABE) 由Sahai和Waters于2005年提出,它将IBE中的单一“身份”拓展为“属性集合”,从而支持一对多的细粒度访问控制,是隐私保护与数据共享的关键技术。
核心思想与基本概念
1. 从IBE到ABE的跨越
- IBE:用户公钥为唯一的标识(如
alice@company.com),私钥由KGC根据该标识生成。 - ABE:用户公钥/私钥与属性集合(如
{部门:研发, 职级:P7, 项目:Alpha})绑定。加密者可以为数据指定一个访问结构(Access Policy),只有属性满足该结构的用户才能解密。
2. 访问结构(Access Structure)
设参与者集合为 \(\{P_1, P_2, \dots, P_n\}\),访问结构 \(\mathbb{A} \subseteq 2^{\{P_1, \dots, P_n\}}\) 是一个单调集合族:
- 若 \(B \in \mathbb{A}\) 且 \(B \subseteq C\),则 \(C \in \mathbb{A}\)。
- \(\mathbb{A}\) 中的集合称为授权集合,不在其中的称为非授权集合。
单调性:意味着“属性越多,权限越大”。例如,策略“(研发 AND 高级)OR 总监”满足单调性。
两大分类:CP-ABE 与 KP-ABE
根据访问结构附加在密文上还是用户密钥上,ABE分为两类:
| 类型 | 全称 | 策略位置 | 谁决定策略 | 适用场景 |
|---|---|---|---|---|
| CP-ABE | 密文策略(Ciphertext-Policy) | 密文 | 加密者指定“谁可以读” | 云存储(数据拥有者自主控制) |
| KP-ABE | 密钥策略(Key-Policy) | 用户密钥 | 密钥分发机构指定“用户可以读什么” | 付费订阅、日志加密(按角色分类) |
CP-ABE(密文策略):
- 用户私钥关联属性集合 \(S\)(如
{A大学, 博士})。 - 密文关联访问结构 \(\mathbb{A}\)(如
(985高校 AND 博士)OR 教授)。 - 解密条件:\(S\) 满足 \(\mathbb{A}\)。
KP-ABE(密钥策略):
- 用户私钥关联访问结构 \(\mathbb{A}\)(如
(机密 OR 内部)AND 2025年后)。 - 密文关联属性集合 \(S\)(如
{机密, 研发部})。 - 解密条件:\(S\) 满足 \(\mathbb{A}\)(即密文标签满足密钥的策略)。
形式化算法定义
一个属性基加密系统通常包含四个多项式时间算法,以CP-ABE为例(KP-ABE角色对称):
1. 系统初始化(Setup)
输入安全参数 \(\lambda\),输出公开参数 \(pk\) 和主私钥 \(msk\)。该算法由可信权威机构运行。
2. 密钥生成(KeyGen)
输入 \(pk\)、\(msk\) 和用户属性集合 \(S\),输出该用户的解密私钥 \(sk_S\)。
3. 加密(Encrypt)
输入 \(pk\)、明文消息 \(m\) 和访问结构 \(\mathbb{A}\),输出密文 \(ct\)。注意 \(\mathbb{A}\) 嵌入在密文中。
4. 解密(Decrypt)
输入 \(pk\)、私钥 \(sk_S\) 和密文 \(ct\)。若 \(S\) 满足 \(\mathbb{A}\),则输出明文 \(m\),否则输出 \(\bot\)。
KP-ABE 的算法差异:\(\mathrm{KeyGen}\) 输入访问结构 \(\mathbb{A}\),输出 \(sk_{\mathbb{A}}\);\(\mathrm{Encrypt}\) 输入属性集合 \(S\),输出 \(ct\)。解密条件为 \(S\) 满足 \(\mathbb{A}\)。
安全模型(IND-CPA for ABE)
ABE的安全性通过挑战者与敌手之间的交互游戏定义,以 CP-ABE 为例(KP-ABE 对称):
- 初始化:挑战者运行 Setup,将 \(pk\) 发给敌手。
- 询问阶段1:敌手自适应地提交多个属性集合 \(S_1, S_2, \dots\) 请求私钥,挑战者返回对应的 \(sk_{S_i}\)。
- 挑战:敌手提交两个等长消息 \(m_0, m_1\) 和一个挑战访问结构 \(\mathbb{A}^*\)。挑战者随机选 \(\beta \in \{0,1\}\),计算 \(ct^* \leftarrow \mathrm{Encrypt}(pk, m_\beta, \mathbb{A}^*)\) 并发送给敌手。
- 询问阶段2:敌手继续请求私钥,但限制:任何请求的 \(S_i\) 都不能满足 \(\mathbb{A}^*\)(否则游戏平凡)。
- 猜测:敌手输出 \(\beta'\)。若 \(\beta' = \beta\),则敌手获胜。
优势定义:
若所有多项式时间敌手的优势均可忽略,则称方案是 IND-CPA 安全的。
关键安全要求——抗合谋攻击(Collusion Resistance):
即使多个用户将各自的私钥合并(例如,用户A有属性 \(x\),用户B有属性 \(y\),合起来满足访问结构),他们也无法解密密文。标准构造中通过为每个用户私钥注入独立的随机化因子 \(t\) 来实现,使得合谋无法组合。
实现访问结构的数学工具LSSS
为了将逻辑上的“与”、“或”、“门限”等访问结构转化为可计算的加密算法,现代 ABE 方案(如 Waters 2011)通常采用线性秘密共享方案(Linear Secret Sharing Scheme, LSSS):
- 秘密分割:将秘密 \(s \in \mathbb{Z}_p\) 分割成 \(l\) 个碎片 \(\lambda_i\),每个碎片对应访问矩阵 \(M\) 的一行(即一个属性)。
- 线性重构:若用户属性集合是授权集,则存在常数 \(\{\omega_i\}\) 使得:\[\sum_{i \in I} \omega_i \lambda_i = s \]若为非授权集,则不存在这样的常数,秘密在信息论意义上被隐藏。
LSSS 将单调布尔表达式转化为线性代数运算,使得加密过程能够基于属性进行“秘密嵌入”,而解密过程通过配对运算恢复秘密。
总结
- 本质:ABE 将加密系统中的“身份”泛化为“属性集合”,实现了一对多的灵活访问控制。
- 分类:CP-ABE(策略在密文,加密者决定准入)和 KP-ABE(策略在密钥,机构决定权限)。
- 安全目标:IND-CPA 安全 + 抗合谋攻击,通过安全游戏形式化定义。
- 数学基础:依赖双线性配对和 LSSS(或单调张成方案)来表达任意单调访问结构。

浙公网安备 33010602011771号