标识密码的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 \]
正确性验证
只需验证解密过程中的配对值是否与加密时的配对值一致:
因此:
加解密完美匹配。
安全性分析(IND-CPA)
Boneh-Franklin 方案在随机谕言机模型下被证明满足 IND-CPA 安全,其核心思路是将 BDH 困难问题嵌入到敌手的攻击中。
证明梗概(对应于讲义中的规约):
- 挑战设置:模拟器 \(S\) 拿到 BDH 实例 \((g, g^a, g^b, g^c)\),目标计算 \(e(g, g)^{abc}\)。\(S\) 将公共参数中的 \(A\) 设为 \(g^a\)(此时 \(a\) 对 \(S\) 也未知,但这正是 BDH 的输入)。
- 随机谕言机 \(H_1\) 的控制:\(S\) 猜测敌手会针对挑战身份 \(\mathrm{ID}^*\) 发起 \(H_1\) 询问,并预设第 \(i^*\) 次询问返回 \(H_1(\mathrm{ID}^*) = g^b\)。对于其他身份的询问,\(S\) 随机选取 \(x_i\) 返回 \(g^{x_i}\)。
- 私钥提取:只要敌手询问的不是 \(\mathrm{ID}^*\),\(S\) 都能通过 \(g^{x_i}\) 的 \(a\) 次幂(虽然不知道 \(a\),但可以利用 \(g^a\) 和 \(x_i\) 计算)生成合法私钥。
- 挑战密文:当敌手提交挑战身份 \(\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}\)。
- 解出 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\))

浙公网安备 33010602011771号