标识密码的Boneh-Franklin方案

传统的公钥基础设施(PKI)依赖证书将身份与公钥绑定,管理开销巨大。1984年,Shamir提出了标识密码(Identity-Based Cryptography, IBC) 的构想:用户的公钥直接由其唯一标识(如邮箱、手机号)决定,无需证书。

2001年,Boneh和Franklin才基于椭圆曲线上的双线性配对,给出了第一个实用且可证明安全的标识加密(IBE)方案,为IBC的落地奠定了数学基础。

双线性配对与BDH问题

1. 双线性配对

\(G\)\(G_T\) 是两个阶为大素数 \(p\) 的循环群,\(g\)\(G\) 的生成元。一个双线性映射 \(e: G \times G \rightarrow G_T\) 满足:

  • 双线性\(\forall u, v \in G, a, b \in \mathbb{Z}_p\),有 \(e(u^a, v^b) = e(u, v)^{ab}\)
  • 非退化性\(e(g, g) \neq 1_{G_T}\),即 \(e(g, g)\)\(G_T\) 的生成元。
  • 可计算性\(e\) 可在多项式时间内高效计算。

2. BDH 问题(Bilinear Diffie-Hellman)

给定 \((g, g^a, g^b, g^c) \in G^4\),计算 \(e(g, g)^{abc} \in G_T\),其中 \(a, b, c \in \mathbb{Z}_p^*\) 未知。Boneh-Franklin 方案的 IND-CPA 安全性直接归约到 BDH 问题的困难性。

Boneh-Franklin 方案构造

方案包含四个多项式时间算法,其中哈希函数 \(H_1, H_2\) 在安全性证明中被建模为随机谕言机(Random Oracle)。

1. 系统建立 (Setup)

  • 输入安全参数 \(\lambda\),生成双线性群 \(\mathrm{BP} = (G, G_T, g, p, e)\),设消息长度为 \(n\)
  • 随机选取主密钥 \(\mathrm{msk} = a \in \mathbb{Z}_p^*\),计算公钥 \(A = g^a\)
  • 选择哈希函数:

    \[H_1: \{0,1\}^* \rightarrow G,\quad H_2: G_T \rightarrow \{0,1\}^n \]

  • 公开参数:\(\mathrm{param} = (G, G_T, e, n, p, g, A, H_1, H_2)\),主密钥由 KGC 秘密保存。

2. 私钥提取 (Extract)

给定用户标识 \(\mathrm{ID} \in \{0,1\}^*\)

  • 计算 \(Q_{\mathrm{ID}} = H_1(\mathrm{ID}) \in G\)
  • 生成私钥:

    \[\mathrm{sk}_{\mathrm{ID}} = Q_{\mathrm{ID}}^a \]

    (讲义中可能简写,正确形式应包含 \(a\) 次幂,因为只有 KGC 知道 \(a\))。

3. 加密 (Encrypt)

发送者用接收者的标识 \(\mathrm{ID}\) 和公钥参数加密消息 \(M \in \{0,1\}^n\)

  • 计算 \(Q_{\mathrm{ID}} = H_1(\mathrm{ID})\)
  • 随机选取 \(r \in \mathbb{Z}_p^*\),计算密文:

    \[C_1 = g^r,\quad C_2 = M \oplus H_2\big(e(Q_{\mathrm{ID}}, A)^r\big) \]

    其中 \(A = g^a\),因此 \(e(Q_{\mathrm{ID}}, A)^r = e(Q_{\mathrm{ID}}, g^a)^r = e(Q_{\mathrm{ID}}, g)^{ar}\)
  • 输出密文 \(\mathrm{CT} = (C_1, C_2)\)

4. 解密 (Decrypt)

接收者用自己的私钥 \(\mathrm{sk}_{\mathrm{ID}}\) 解密密文:

  • 计算:

    \[M = H_2\big(e(C_1, \mathrm{sk}_{\mathrm{ID}})\big) \oplus C_2 \]

正确性验证

只需验证解密过程中的配对值是否与加密时的配对值一致:

\[e(C_1, \mathrm{sk}_{\mathrm{ID}}) = e(g^r, Q_{\mathrm{ID}}^a) = e(g, Q_{\mathrm{ID}})^{ra} = e(Q_{\mathrm{ID}}, g^a)^r = e(Q_{\mathrm{ID}}, A)^r \]

因此:

\[H_2(e(C_1, \mathrm{sk}_{\mathrm{ID}})) \oplus C_2 = H_2(e(Q_{\mathrm{ID}}, A)^r) \oplus M \oplus H_2(e(Q_{\mathrm{ID}}, A)^r) = M \]

加解密完美匹配。

安全性分析(IND-CPA)

Boneh-Franklin 方案在随机谕言机模型下被证明满足 IND-CPA 安全,其核心思路是将 BDH 困难问题嵌入到敌手的攻击中。

证明梗概(对应于讲义中的规约):

  1. 挑战设置:模拟器 \(S\) 拿到 BDH 实例 \((g, g^a, g^b, g^c)\),目标计算 \(e(g, g)^{abc}\)\(S\) 将公共参数中的 \(A\) 设为 \(g^a\)(此时 \(a\)\(S\) 也未知,但这正是 BDH 的输入)。
  2. 随机谕言机 \(H_1\) 的控制\(S\) 猜测敌手会针对挑战身份 \(\mathrm{ID}^*\) 发起 \(H_1\) 询问,并预设第 \(i^*\) 次询问返回 \(H_1(\mathrm{ID}^*) = g^b\)。对于其他身份的询问,\(S\) 随机选取 \(x_i\) 返回 \(g^{x_i}\)
  3. 私钥提取:只要敌手询问的不是 \(\mathrm{ID}^*\)\(S\) 都能通过 \(g^{x_i}\)\(a\) 次幂(虽然不知道 \(a\),但可以利用 \(g^a\)\(x_i\) 计算)生成合法私钥。
  4. 挑战密文:当敌手提交挑战身份 \(\mathrm{ID}^*\) 和消息 \(M_0, M_1\) 时,\(S\) 若发现正是预设的 \(i^*\),则构造密文:

    \[C_1^* = g^c,\quad C_2^* = R \ (\text{随机比特串}) \]

    从敌手视角,若 \(R\) 能正确解密,则敌手必然在 \(H_2\) 询问中查询过 \(e(H_1(\mathrm{ID}^*), A)^c = e(g^b, g^a)^c = e(g, g)^{abc}\)
  5. 解出 BDH\(S\) 监视 \(H_2\) 的询问列表,随机选取一个询问值作为 \(e(g, g)^{abc}\) 的输出。若敌手以不可忽略优势攻破方案,则 \(S\) 成功解决 BDH 的概率为 \(\epsilon / q_{H_2}\)(其中 \(q_{H_2}\)\(H_2\) 询问次数)。

由于 BDH 问题是困难的,因此任何多项式时间敌手攻破 BF 方案的优势都是可忽略的。

小结

Boneh-Franklin 方案将双线性配对的代数性质与 BDH 困难问题结合,构造了从“标识”到“私钥”的可计算映射(\(Q_{\mathrm{ID}} \mapsto Q_{\mathrm{ID}}^a\)

posted @ 2026-06-24 14:19  lumiere_nebula  阅读(23)  评论(0)    收藏  举报