属性基加密(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\)。该算法由可信权威机构运行。

\[(pk, msk) \leftarrow \mathrm{Setup}(\lambda) \]

2. 密钥生成(KeyGen)

输入 \(pk\)\(msk\) 和用户属性集合 \(S\),输出该用户的解密私钥 \(sk_S\)

\[sk_S \leftarrow \mathrm{KeyGen}(pk, msk, S) \]

3. 加密(Encrypt)

输入 \(pk\)、明文消息 \(m\) 和访问结构 \(\mathbb{A}\),输出密文 \(ct\)。注意 \(\mathbb{A}\) 嵌入在密文中。

\[ct \leftarrow \mathrm{Encrypt}(pk, m, \mathbb{A}) \]

4. 解密(Decrypt)

输入 \(pk\)、私钥 \(sk_S\) 和密文 \(ct\)。若 \(S\) 满足 \(\mathbb{A}\),则输出明文 \(m\),否则输出 \(\bot\)

\[m \text{ 或 } \bot \leftarrow \mathrm{Decrypt}(pk, sk_S, ct) \]

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 对称):

  1. 初始化:挑战者运行 Setup,将 \(pk\) 发给敌手。
  2. 询问阶段1:敌手自适应地提交多个属性集合 \(S_1, S_2, \dots\) 请求私钥,挑战者返回对应的 \(sk_{S_i}\)
  3. 挑战:敌手提交两个等长消息 \(m_0, m_1\) 和一个挑战访问结构 \(\mathbb{A}^*\)。挑战者随机选 \(\beta \in \{0,1\}\),计算 \(ct^* \leftarrow \mathrm{Encrypt}(pk, m_\beta, \mathbb{A}^*)\) 并发送给敌手。
  4. 询问阶段2:敌手继续请求私钥,但限制:任何请求的 \(S_i\) 都不能满足 \(\mathbb{A}^*\)(否则游戏平凡)。
  5. 猜测:敌手输出 \(\beta'\)。若 \(\beta' = \beta\),则敌手获胜。

优势定义

\[\mathrm{Adv}_{\mathcal{A}} = \left| \Pr[\beta' = \beta] - \frac{1}{2} \right| \]

若所有多项式时间敌手的优势均可忽略,则称方案是 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(或单调张成方案)来表达任意单调访问结构。
posted @ 2026-06-24 15:48  lumiere_nebula  阅读(56)  评论(0)    收藏  举报