身份基加密方案的安全性证明

本文详细探讨了身份基加密方案的安全性,尤其是BasicIdent如何抵抗CPA攻击。通过将BasicIdent归约到BasicPub,进一步归约到BDH问题,证明了其在CPA下的安全性。同时,文章指出了BasicIdent在CCA攻击下的不安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一篇博客中,介绍了Boneh-Franklin的基于身份的加密方案,准确地说,是介绍了Boneh-Franklin论文[1]中最基础的方案——BasicIdent。在这篇博客中,主要论述BasicIdent可以抵抗选择明文攻击(chosen plaintext attacks, CPA),但不可以抵抗选择密文攻击(chosen ciphertext attacks)。

上篇博客地址

前置知识

归约

存在两个问题 P 1 P1 P1 P 2 P2 P2,算法 M 1 M1 M1可以解决问题 P 1 P1 P1。如果能构造出另一个算法 M 2 M2 M2用来解决问题 P 2 P2 P2,其中 M 1 M1 M1 M 2 M2 M2的子程序。这时 P 1 P1 P1归约到了 P 2 P2 P2[2]

例如对方案1进行安全性证明:

  • 将方案1归约到方案2
  • 假设:存在攻击者 A \mathcal{A} A可以攻破方案1
  • 因此存在攻击者 B \mathcal{B} B可以攻破方案2
  • 方案2是已证明安全的方案,或者是困难问题,或者是一密码本源
  • 存在矛盾,假设不成立,方案1是安全的。

注意:reduction的中文翻译应该是“归约”而不是“规约”。

Bilinear Diffie-Hellman (BDH)问题

e e e是一个双线性映射: G 1 × G 1 ⟶ G 2 G_1 \times G_1 \longrightarrow G_2 G1×G1G2 P P P G 1 G_1 G1的生成元, e ( P , P ) e(P,P) e(P,P) G 2 G_2 G2的生成元, G 1 G_1 G1 G 2 G_2 G2的阶都为 p p p。给定一个元组 < P , a P , b P , c P > <P,aP,bP,cP> <P,aP,bP,cP>,其中 a , b , c a,b,c a,b,c是从 Z p ∗ Z_p^* Zp中随机选取的元素。计算 e ( P , P ) a b c e(P,P)^{abc} e(P,P)abc就是BDH问题。

攻击者 A \mathcal{A} A解决BDH问题的优势定义如下:
A d v B D H ( A ) = P r [ A ( P , a P , b P , c P ) ⇒ e ( P , P ) a b c ] Adv^{BDH}(\mathcal{A}) = Pr[\mathcal{A}(P,aP,bP,cP) \Rightarrow e(P,P)^{abc}] AdvBDH(A)=Pr[A(P,aP,bP,cP)e(P,P)abc]
如果 A \mathcal{A} A t t t时间内, A d v B D H ( A ) < ϵ Adv^{BDH}(\mathcal{A}) < \epsilon AdvBDH(A)<ϵ,则称BDH问题是 ( ϵ , t ) (\epsilon,t) (ϵ,t)-困难。

CPA安全性证明

安全证明的整体思路就是,先将BasicIdent归约到一个非基于身份的加密方案BasicPub,再将BasicPub归约到BDH问题。

BasicPub方案

  • 产生密钥
    • 哈希函数 H 2 : G 2 → { 0 , 1 } n H_2:G_2 \rightarrow \{0,1\}^n H2:G2{ 0,1}n
    • P P P G 1 G_1 G1的一个生成元;
    • 随机选取 s ← R Z p ∗ s \xleftarrow{R} Z_p^* sR Zp,并计算 P p u b = s P P_{pub}=sP Ppub=sP
    • 随机选择 Q i d ← R G 1 ∗ Q_{id} \xleftarrow{R} G^*_1 QidR G1
    • 私钥 d i d = s Q i d d_{id}=sQ_{id} did=sQid,公钥 p k = < P , P p u b , Q i d , H 2 > pk=<P,P_{pub},Q_{id},H_2> pk=<P,Ppub,Qid,H2>
  • 加密
    • 明文 M ∈ { 0 , 1 } n M \in \{0,1\}^n M{ 0,1}n
    • 随机选取 r ← R Z p ∗ r \xleftarrow{R} Z^*_p rR Zp
    • U = r P , V = M ⊕ H 2 ( e ( Q i d , P p u b ) r ) U=rP, \quad V=M \oplus H_2(e(Q_{id},P_{pub})^r) U=rP,V=MH2(e(Qid,Ppub)r),密文 C = < U , V > C=<U,V> C=<U,V>
  • 解密
    • V ⊕ H 2 ( e ( d i d , U ) ) = M V \oplus H_2(e(d_{id},U))=M VH2(e(did,U))=M

可以看出BasicPub方案与BasicIdent方案的不同之处在于,公钥 Q i d Q_{id} Qid的选取方式不同。在BasicPub方案中, Q i d Q_{id} Qid是从 G 1 ∗ G_1^* G1中随机选取的元素,因此没有了与 i d id id之间的联系。

非形式化的证明

首先很容易看出BasicIdent方案是概率性的加密方案,这是公钥加密方案满足CPA安全性的必要条件[3]

A 1 \mathcal{A}_1 A1是BasicIdent方案中IND-ID-CPA的攻击者; A 2 \mathcal{A}_2 A2是BasicPub方案中IND-CPA的攻击者; B \mathcal{B} B是用来解决给定BDH问题的算法。

规约过程总共分两步:第一步,定义Game1, A 1 \mathcal{A}_1 A1被用来构造 A 2 \mathcal{A}_2 A2;第二步,定义Game2, A 2 \mathcal{A}_2 A2被用来构造 B \mathcal{B} B。如果 A 1 \mathcal{A}_1 A1对于攻破BasicIdent有不可忽略的优势,那么 B \mathcal{B} B对于解决BDH问题有不可忽略的优势。然而BDH问题是计算困难问题,因此不存在这样的 B \mathcal{B} B以及 A 1 \mathcal{A}_1 A1 A 2 \mathcal{A}_2 A2

在Game2中, B \mathcal{B} B是受挑战者, A 2 \mathcal{A}_2 A2攻击者。 B \mathcal{B} B运行BasicPub的密钥生成算法,将 p k = < P , P p u b , Q i d , H 2 > pk=<P,P_{pub},Q_{id},H_2> pk=<P,Ppub,Qid,H2> A 2 \mathcal{A}_2

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值