0%

公钥密码算法可证明安全理论:第一讲

1 引入

1.1 柯克霍夫原则 Kerckhoffs’s Principle

  • def 即使密码系统的任何细节已为人悉知,只要密钥或未泄漏,它也应是安全的

  • 加密系统的安全性不应依赖于算法的保密性,而应基于加密密钥的保密性

1.2 公钥密码学 Public-key Cryptography

  • def

    • 每个用户都有一对密钥:私钥和公钥
    • 公钥是公开已知的,但私钥是保密的
    • 给定公钥,推断出私钥在计算上是不可行的
  • 分类

    • 公钥加密:允许双方通过不安全的通道交换消息,提供了保密性
    • 数字签名:允许双方对电子文档进行签名,提供了不可伪造性

1.3 安全

  • 过去的验证方式:搜索攻击(search for attacks),存在问题:

    • 永远无法确定攻击不存在
    • 安全性最多只能被视为启发式的,不能排除存在未知攻击方式的可能性

1.3.1 可证明安全

  • def 旨在将方案的安全性与困难问题联系起来,先指定攻击者能力和方案的安全目标,再将破坏方案安全目标的敌手转变为针对该方案所基于的困难问题的安全目标的敌手。

  • 分类

    • 基于游戏的证明 Game-based Proof
      • 安全规约:若存在敌手 AA 能破坏方案,则存在有效算法 BB 借助 AA 解决困难问题。
      • Game Hopping:在特定攻击环境中运行的攻击者具有未知的成功概率,改变攻击环境直到可以计算出攻击者的成功概率
    • 基于模拟的证明 Simulation-based Proof

1.3.2 渐近安全与具体安全

  • 渐近安全:使用多项式时间可归约性对计算问题的难度进行分类

  • 具体安全:实际上由于需要实例化安全参数,需确切知道减少的效率,参数化敌手可用的所有资源

  • def 若对手可以在时间 tt 中以至少 εΣε_Σ 的概率打破方案 ΣΣ,则存在敌手可以在时间 tt' 内以至少 εΠε_Π 的概率打破困难问题 ΠΠ,其中 ttt≈t^′εΣεΠε_Σ ≈ε_Π

  • 安全参数 λλ 的选取:εΠ=2λγε_Π=2^{-λ}-γ

2 概念、定义和模型

2.1 常用符号及定义

2.2 数字签名

2.2.1 数字签名的算法定义

  • Setup(1λ)paramsSetup(1^λ )→params

  • KeyGen(1λ,params)(SK,PK)KeyGen(1^λ,params)→(SK,PK)

  • Sign(M,SK,params)σSign(M,SK,params)→σ

  • Verify(M,σ,PK,params)0/1Verify(M,σ,PK,params)→0/1

2.2.2 数字签名的安全模型

def 安全模型:定义敌手所知道的内容,不同安全模型破坏方案的难度不同

1. 针对选择消息攻击的存在不可伪造性 EU-CMA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)paramsSetup(1^λ )→params,并将 paramsparams 返回给 AA

  • KeyGenKeyGenCC 运行 KeyGen(1λparams)(SKPK)KeyGen(1^λ,params)→(SK,PK),并将 PKPK 返回给 AA

  • QueryQuery

    • 动态地提交消息 MiM_i
    • CC 运行 Sign(MiSKparams)σiSign(M_i,SK,params)→σ_i,并将 σiσ_i 返回给 AA
      • 其中 i={1,2,qS}i=\{1,2,⋯, q_S\}
      • 设消息 M={M1,,MqS}M=\{M_1, ⋯, M_{q_S }\}
      • Q={(M1,σ1),,(Mqs,σqs)}Q=\{(M_1, σ_1 ), ⋯, (M_{q_s}, σ_{q_s } )\}
  • ForgeryForgeryAA 在消息 MM^∗ 上输出签名 σσ^∗。满足下述情况则 AA 将赢得游戏:

    • Verify(M,σ,PK,params)1Verify(M^∗, σ^∗, PK, params)→1
    • MMM^∗∉M

定义
如果不存在任何敌手 AA 在进行 𝑞𝑠𝑞_𝑠 次签名查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则签名方案在 EU-CMA 安全模型中是 (𝑇,𝑞𝑠,ϵ(λ))(𝑇,𝑞_𝑠,ϵ(λ))- 安全的,即

Pr[Verify(M,σ,PK,params)1MM)]<ϵ(λ)Pr[Verify(M^∗,\sigma ^∗,PK,params) \to 1 | M^∗ \notin M)]<\epsilon(λ)

2. 针对选择消息攻击的强不可伪造性 SU-CMA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)paramsSetup(1^λ )→params,并将 paramsparams 返回给 AA

  • KeyGenKeyGenCC 运行 KeyGen(1λparams)(SKPK)KeyGen(1^λ,params)→(SK,PK),并将 PKPK 返回给 AA

  • QueryQuery

    • 动态地提交消息 MiM_i
    • CC 运行 Sign(MiSKparams)σiSign(M_i,SK,params)→σ_i,并将 σiσ_i 返回给 AA
      • 其中 i={1,2,qS}i=\{1,2,⋯, q_S\}
      • 设消息 M={M1,,MqS}M=\{M_1, ⋯, M_{q_S }\}
      • Q={(M1,σ1),,(Mqs,σqs)}Q=\{(M_1, σ_1 ), ⋯, (M_{q_s}, σ_{q_s } )\}
  • ForgeryForgeryAA 在消息 MM^∗ 上输出签名 σσ^∗。满足下述情况则 AA 将赢得游戏:

    • Verify(M,σ,PK,params)1Verify(M^∗, σ^∗, PK, params)→1
    • (M,σ)Q(M^∗, σ^∗)∉QAA 可以询问关于 MM^∗ 的签名,但输出一个不同的签名即可

定义

如果不存在任何敌手 AA 在进行 𝑞𝑠𝑞_𝑠 次签名查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则签名方案在 SU-CMA 安全模型中是 (𝑇,𝑞S,ϵ(λ))(𝑇,𝑞_S,ϵ(λ))- 安全的,即

Pr[Verify(M,σ,PK,params)1(M,σ)Q)]<ϵ(λ)Pr[Verify(M^∗,\sigma ^∗,PK,params) \to 1 | (M^∗, \sigma ^∗)\notin Q)]<\epsilon(λ)

2.3 公钥加密

2.3.1 公钥加密的算法定义

  • Setup(1λ)paramsSetup(1^λ )→params

  • KeyGen(1λ,params)(SK,PK)KeyGen(1^λ,params)→(SK,PK)

  • Enc(M,PK,params)CTEnc(M,PK,params)→CT

  • Dec(CT,SK,params)M/Dec(CT,SK,params)→M/⊥

2.3.2 公钥加密的安全模型

1. 针对选择明文攻击的不可区分性 IND-CPA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)paramsSetup(1^λ )→params,并将 paramsparams 返回给 AA

  • KeyGenKeyGenCC 运行 KeyGen(1λparams)(SKPK)KeyGen(1^λ,params)→(SK,PK),并将 PKPK 返回给 AA

  • ChallengeChallenge

    • AA 提交两条消息 M0M_0M1M_1
    • CC 掷出一枚无偏硬币,得到比特 b{0,1}b∈ \{0,1\}
    • CC 运行 Enc(Mb,PK,params)CTEnc(M_b, PK, params)→CT^∗,并返回 CTCT^∗AA
  • OutputOutputAAbb 上输出其猜测 bb',如果 b=bb^′=b ,则 AA 赢得游戏

定义

如果不存在可以赢得上述游戏的敌手 AA,则公钥加密方案在 IND-CPA 安全模型中是 (𝑇,ϵ(λ))(𝑇,ϵ(λ))- 安全的,即

Pr[b=b]12<ϵ(λ)|Pr[b^′=b]-\frac{1}{2}|<\epsilon(λ)

2. 针对(两阶段)选择密文攻击的不可区分性 IND-CCA2

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)paramsSetup(1^λ )→params,并将 paramsparams 返回给 AA

  • KeyGenKeyGenCC 运行 KeyGen(1λparams)(SKPK)KeyGen(1^λ,params)→(SK,PK),并将 PKPK 返回给 AA

  • PhasePhase I:

    • AA 动态地提交密文 CTiCT_i,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 Dec(CTi,SK,params)MiDec(CT_i,SK,params)→M_i,并将 MiM_i 返回给 AA
  • ChallengeChallenge

    • AA 提交两条消息 M0M_0M1M_1
    • CC 掷出一枚无偏硬币,得到比特 b{0,1}b∈ \{0,1\}
    • CC 运行 Enc(Mb,PK,params)CTEnc(M_b, PK, params)→CT^∗,并返回 CTCT^∗AA
  • PhasePhase II:

    • AA 动态地提交密文 CTjCT_j,但有以下限制条件:
      • CT CTjCT^∗ ≠  CT_j ,其中 j=1,2,,q2j=1,2,⋯,q_2
      • CC 运行 Dec(CTj,SK,params)MjDec(CT_j,SK,params)→M_j, 并将 MjM_j 返回给 AA
      • qD=q1+q2q_D=q_1+q_2
  • OutputOutputAAbb 上输出其猜测 bb',如果 b=bb^′=b ,则 AA 赢得游戏

定义

如果不存在可以赢得上述游戏的敌手 AA,则公钥加密方案在 IND-CCA2 安全模型中是 (𝑇,ϵ(λ))(𝑇,ϵ(λ))- 安全的,即

Pr[b=b]12<ϵ(λ)|Pr[b^′=b]-\frac{1}{2}|<\epsilon(λ)

2.4 基于身份加密

2.4.1 基于身份加密的算法定义

  • Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params):多输出一个主私钥 MSKMSK

  • KeyGen(ID,MSK,params)SKIDKeyGen(ID,MSK,params)→SK_{ID}:输入身份标识 ID{0,1}ID∈\{0,1\}^∗ 而非安全参数 1λ1^λ

  • Enc(M,ID,params)CTEnc(M,ID,params)→CT

  • Dec(CT,SKID,params)M/Dec(CT,SK_{ID},params)→M/⊥

2.4.2 基于身份加密的安全模型

1. 针对(两阶段)选择明文攻击的不可区分性 IND-ID-CPA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • PhasePhase I:

    • AA 动态地提交身份标识 ID{0,1}ID∈\{0,1\} ^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
  • ChallengeChallenge

    • AA 提交一个身份标识 ID{0,1}ID^∗∈\{0,1\}^∗ID{ID1,ID2,,IDq1}ID^∗∉\{ID_1,ID_2,⋯,ID_{q_1 }\})和两条长度相等的消息 M0M_0M1M_1
    • CC 掷出一枚无偏硬币,得到比特 b{0,1}b∈ \{0,1\}
    • CC 运行 Enc(Mb,ID,params)CTEnc(M_b, ID^*, params)→CT^∗,并返回 CTCT^∗AA
  • PhasePhase II:

    • AA 动态地提交身份标识 IDjID_j,限制 IDjIDID_j≠ID^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
    • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j,MSK,params)→SK_{ID_j},并将 SKIDjSK_{ID_j} 返回给 AA
    • qK=q1+q2q_K=q_1+q_2
  • OutputOutputAAbb 上输出其猜测 bb',如果 b=bb^′=b ,则 AA 赢得游戏

定义

如果不存在任何敌手 AA 在进行 𝑞k𝑞_k 次密钥查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-ID-CPA 安全模型中是 (𝑇,𝑞k,ϵ(λ))(𝑇,𝑞_k,ϵ(λ))- 安全的,即

Pr[b=b]12<ϵ(λ)|Pr[b^′=b]-\frac{1}{2}|<\epsilon(λ)

2. 针对两阶段选择性 ID 的选择明文攻击的不可区分性 IND-sID-CPA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • InititializationInititializationAA 提前提交一个身份标识 ID{0,1}ID^∗∈\{0,1\}^∗

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • PhasePhase I:

    • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
  • ChallengeChallenge

    • AA 提交两条长度相等的消息 M0M_0M1M_1
    • CC 掷出一枚无偏硬币,得到比特 b{0,1}b∈ \{0,1\}
    • CC 运行 Enc(Mb,ID,params)CTEnc(M_b, ID^*, params)→CT^∗,并返回 CTCT^∗AA
  • PhasePhase II:

    • AA 动态地提交身份标识 IDjID_j,限制 IDjIDID_j≠ID^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
    • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j,MSK,params)→SK_{ID_j},并将 SKIDjSK_{ID_j} 返回给 AA
    • qK=q1+q2q_K=q_1+q_2
  • OutputOutputAAbb 上输出其猜测 bb',如果 b=bb^′=b ,则 AA 赢得游戏

定义

如果不存在任何敌手 AA 在进行 𝑞k𝑞_k 次密钥查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-sID-CPA 安全模型中是 (𝑇,𝑞k,ϵ(λ))(𝑇,𝑞_k,ϵ(λ))- 安全的,即

Pr[b=b]12<ϵ(λ)|Pr[b^′=b]-\frac{1}{2}|<\epsilon(λ)

3. 针对(两阶段)选择密文攻击的不可区分性 IND-ID-CCA2

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • PhasePhase I:

    • KeyGenKeyGen QueryQuery
      • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
      • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
    • DecryptionDecryption QueryQuery
      • AA 动态地提交密文 (IDk,CTk)(ID_k, CT_k),其中 k=1,2,,q1k=1, 2, ⋯, q_1'
      • CC 运行 KeyGen(IDk,MSK,params)SKIDkKeyGen(ID_k,MSK,params)→SK_{ID_k}Dec(CTk,SKIDk,params)MkDec(CT_k,SK_{ID_k},params)→M_k,并将 MkM_k 返回给 AA
  • ChallengeChallenge

    • AA 提交一个身份标识 ID{0,1}ID^∗∈\{0,1\}^∗ID{ID1,ID2,,IDq1}ID^∗∉\{ID_1,ID_2,⋯,ID_{q_1 }\})和提交两条长度相等的消息 M0M_0M1M_1
    • CC 掷出一枚无偏硬币,得到比特 b{0,1}b∈ \{0,1\}
    • CC 运行 Enc(Mb,PK,params)CTEnc(M_b, PK, params)→CT^∗,并返回 CTCT^∗AA
  • PhasePhase II:

    • KeyGenKeyGen QueryQuery
      • AA 动态地提交身份标识 IDjID_j,限制 IDjIDID_j≠ID^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
      • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j,MSK,params)→SK_{ID_j},并将 SKIDjSK_{ID_j} 返回给 AA
    • DecryptionDecryption QueryQuery
      • AA 动态地提交密文 (IDl,CTl)(ID_l, CT_l),限制 (IDl,CTl)(ID,CT)(ID_l, CT_l)≠(ID^∗, CT^∗),其中 l=1,2,,q2l=1, 2, ⋯, q_2'
      • CC 运行 KeyGen(IDl,MSK,params)SKIDlKeyGen(ID_l,MSK,params)→SK_{ID_l}Dec(CTl,SKIDl,params)MlDec(CT_l,SK_{ID_l},params)→M_l,并将 MlM_l 返回给 AA
      • qK=q1+q2q_K=q_1+q_2qD=q1+q2q_D'=q_1'+q_2'
  • OutputOutputAAbb 上输出其猜测 bb',如果 b=bb^′=b ,则 AA 赢得游戏

定义

如果不存在任何敌手 AA 在进行 qKq_K 密钥生成查询和 qDq_D 次解密查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-ID-CCA2 安全模型中是 (𝑇,𝑞K,qD,ϵ(λ))(𝑇,𝑞_K, q_D, ϵ(λ))- 安全的,即

Pr[b=b]12<ϵ(λ)|Pr[b^′=b]-\frac{1}{2}|<\epsilon(λ)

4. 针对两阶段选择性 ID 的选择密文攻击的不可区分性 IND-sID-CCA2

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • InititializationInititializationAA 提前提交一个身份标识 ID{0,1}ID^∗∈\{0,1\}^∗

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • PhasePhase I:

    • KeyGenKeyGen QueryQuery
      • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
      • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
    • DecryptionDecryption QueryQuery
      • AA 动态地提交密文 (IDk,CTk)(ID_k, CT_k),其中 k=1,2,,q1k=1, 2, ⋯, q_1'
      • CC 运行 KeyGen(IDk,MSK,params)SKIDkKeyGen(ID_k,MSK,params)→SK_{ID_k}Dec(CTk,SKIDk,params)MkDec(CT_k,SK_{ID_k},params)→M_k,并将 MkM_k 返回给 AA
  • ChallengeChallenge

    • AA 提交两条长度相等的消息 M0M_0M1M_1
    • CC 掷出一枚无偏硬币,得到比特 b{0,1}b∈ \{0,1\}
    • CC 运行 Enc(Mb,PK,params)CTEnc(M_b, PK, params)→CT^∗,并返回 CTCT^∗AA
  • PhasePhase II:

    • KeyGenKeyGen QueryQuery
      • AA 动态地提交身份标识 IDjID_j,限制 IDjIDID_j≠ID^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
      • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j,MSK,params)→SK_{ID_j},并将 SKIDjSK_{ID_j} 返回给 AA
    • DecryptionDecryption QueryQuery
      • AA 动态地提交密文 (IDl,CTl)(ID_l, CT_l),限制 (IDl,CTl)(ID,CT)(ID_l, CT_l)≠(ID^∗, CT^∗),其中 l=1,2,,q2l=1, 2, ⋯, q_2'
      • CC 运行 KeyGen(IDl,MSK,params)SKIDlKeyGen(ID_l,MSK,params)→SK_{ID_l}Dec(CTl,SKIDl,params)MlDec(CT_l,SK_{ID_l},params)→M_l,并将 MlM_l 返回给 AA
      • qK=q1+q2q_K=q_1+q_2qD=q1+q2q_D'=q_1'+q_2'
  • OutputOutputAAbb 上输出其猜测 bb',如果 b=bb^′=b ,则 AA 赢得游戏

定义

如果不存在任何敌手 AA 在进行 qKq_K 密钥生成查询和 qDq_D 次解密查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-sID-CCA2 安全模型中是 (𝑇,𝑞K,qD,ϵ(λ))(𝑇,𝑞_K, q_D, ϵ(λ))- 安全的,即

Pr[b=b]12<ϵ(λ)|Pr[b^′=b]-\frac{1}{2}|<\epsilon(λ)

2.5 基于身份签名

2.5.1 基于身份签名的算法定义

  • Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params):多输出一个主私钥 MSKMSK

  • KeyGen(ID,MSK,params)SKIDKeyGen(ID, MSK, params)→SK_{ID}:输入身份标识 ID{0,1}ID∈\{0,1\}^∗ 而非安全参数 1λ1^λ

  • Sign(M,SKID,params)σSign(M,SK_{ID},params)→σ

  • Verify(M,σ,ID,params)0/1Verify(M,σ,ID,params)→0/1

2.5.2 基于身份签名的安全模型

1. 针对选择消息攻击的存在不可伪造性 EU-ID-CMA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • KeyGenKeyGen QueryQuery

    • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
    • QK={ID1,,IDq1}Q_K=\{ID_1, ⋯, ID_{q_1}\}
  • SigningSigning QueryQuery

    • AA 提交身份标识 IDj{0,1}ID_j'∈\{0,1\}^∗和消息 Mj{0,1}M_j∈\{0,1\}^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
    • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j',MSK,params)→SK_{ID_j'}Sign(Mj,SK,params)σjSign(M_j', SK, params)→σ_j'
    • σjσ_j' 返回给 AA,令 QS=(ID1,M1),(IDq2,Mq2)Q_S={(ID_1^′,M_1 ),⋯(ID_{q_2}^′,M_{q_2})}
  • ForgeryForgeryAA 输出 (ID,M,σ)(ID^∗, M^∗,σ^∗)。下述情况 AA 将赢得游戏:

    • Verify(M,σ,ID,params)1Verify(M^∗, σ^∗, ID^∗, params)→1
    • IDQKID^∗∉Q_K
    • (ID,M)QS(ID^∗,M^∗)∉Q_S

定义

如果不存在任何敌手 AA 在进行 𝑞1𝑞_1 次密钥查询和 q2q_2 次签名查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 EU-ID-CMA 安全模型中是 (𝑇,𝑞1,q2,ϵ(λ))(𝑇,𝑞_1,q_2,ϵ(λ))- 安全的,即

Pr[Verify(M,σ,ID,params)1]<ϵ(λ)Pr[Verify(M^∗,\sigma ^∗,ID ^∗,params) \to 1 ]< \epsilon(λ)

2. 针对选择性 ID 的选择消息攻击的存在不可伪造性 EU-sID-CMA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • InititializationInititializationAA 提前提交一个身份标识 ID{0,1}ID^∗∈\{0,1\}^∗

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • KeyGenKeyGen QueryQuery

    • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,限制为 IDiIDID_i≠ID^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
    • QK={ID1,,IDq1}Q_K=\{ID_1, ⋯, ID_{q_1}\}
  • SigningSigning QueryQuery

    • AA 提交身份标识 IDj{0,1}ID_j'∈\{0,1\}^∗和消息 Mj{0,1}M_j∈\{0,1\}^∗IDjIDID_j≠ID^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
    • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j',MSK,params)→SK_{ID_j'}Sign(Mj,SK,params)σjSign(M_j', SK, params)→σ_j'
    • σjσ_j' 返回给 AA,令 QS=(ID1,M1),(IDq2,Mq2)Q_S={(ID_1^′,M_1 ),⋯(ID_{q_2}^′,M_{q_2})}
  • ForgeryForgeryAA 输出 (ID,M,σ)(ID^∗, M^∗,σ^∗)。下述情况 AA 将赢得游戏:

    • Verify(M,σ,ID,params)1Verify(M^∗, σ^∗, ID^∗, params)→1

定义

如果不存在任何敌手 AA 在进行 𝑞1𝑞_1 次密钥查询和 q2q_2 次签名查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 EU-sID-CMA 安全模型中是 (𝑇,𝑞1,q2,ϵ(λ))(𝑇,𝑞_1,q_2,ϵ(λ))- 安全的,即

Pr[Verify(M,σ,ID,params)1]<ϵ(λ)Pr[Verify(M^∗,\sigma ^∗,ID ^∗,params) \to 1 ]< \epsilon (λ)

3. 针对选择消息攻击的强不可伪造性 SEU-ID-CMA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • KeyGenKeyGen QueryQuery

    • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
    • QK={ID1,,IDq1}Q_K=\{ID_1, ⋯, ID_{q_1}\}
  • SigningSigning QueryQuery

    • AA 提交身份标识 IDj{0,1}ID_j'∈\{0,1\}^∗和消息 Mj{0,1}M_j∈\{0,1\}^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
    • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j',MSK,params)→SK_{ID_j'}Sign(Mj,SK,params)σjSign(M_j', SK, params)→σ_j'
    • σjσ_j' 返回给 AA,令 QS=(ID1,M1),(IDq2,Mq2)Q_S={(ID_1^′,M_1 ),⋯(ID_{q_2}^′,M_{q_2})}Qσ={σ1,,σq2}Q_σ=\{σ_1,⋯,σ_{q_2 }\}
  • ForgeryForgeryAA 输出 (ID,M,σ)(ID^∗, M^∗,σ^∗)。下述情况 AA 将赢得游戏:

    • Verify(M,σ,ID,params)1Verify(M^∗, σ^∗, ID^∗, params)→1
    • IDQKID^∗∉Q_K
    • (ID,M)QS(ID^∗,M^∗)∉Q_S(ID,M)QS(σQσ)(ID^∗,M^∗)∈Q_S (σ^∗ ∉Q_σ)

定义

如果不存在任何敌手 AA 在进行 𝑞1𝑞_1 次密钥查询和 q2q_2 次签名查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 SEU-ID-CMA 安全模型中是 (𝑇,𝑞1,q2,ϵ(λ))(𝑇,𝑞_1,q_2,ϵ(λ))- 安全的,即

Pr[Verify(M,σ,ID,params)1]<ϵ(λ)Pr[Verify(M^∗,\sigma ^∗,ID ^∗,params) \to 1 ]< \epsilon (λ)

4. 针对选择性 ID 的选择消息攻击的强不可伪造性 SEU-sID-CMA

游戏在挑战者 CC 和敌手 AA 之间的执行过程:

  • InititializationInititializationAA 提前提交一个身份标识 ID{0,1}ID^∗∈\{0,1\}^∗

  • SetupSetupCC 运行 Setup(1λ)(MSK,params)Setup(1^λ )→(MSK,params),并将 paramsparams 返回给 AA

  • KeyGenKeyGen QueryQuery

    • AA 动态地提交身份标识 IDi{0,1}ID_i∈\{0,1\}^∗,限制为 IDiIDID_i≠ID^∗,其中 i=1,2,,q1i=1, 2, ⋯, q_1
    • CC 运行 KeyGen(IDi,MSK,params)SKIDiKeyGen(ID_i,MSK,params)→SK_{ID_i},并将 SKIDiSK_{ID_i} 返回给 AA
    • QK={ID1,,IDq1}Q_K=\{ID_1, ⋯, ID_{q_1}\}
  • SigningSigning QueryQuery

    • AA 提交身份标识 IDj{0,1}ID_j'∈\{0,1\}^∗和消息 Mj{0,1}M_j∈\{0,1\}^∗IDjIDID_j≠ID^∗,其中 j=1,2,,q2j=1,2,⋯,q_2
    • CC 运行 KeyGen(IDj,MSK,params)SKIDjKeyGen(ID_j',MSK,params)→SK_{ID_j'}Sign(Mj,SK,params)σjSign(M_j', SK, params)→σ_j'
    • σjσ_j' 返回给 AA,令 QS=(ID1,M1),(IDq2,Mq2)Q_S={(ID_1^′,M_1 ),⋯(ID_{q_2}^′,M_{q_2})}Qσ={σ1,,σq2}Q_σ=\{σ_1,⋯,σ_{q_2 }\}
  • ForgeryForgeryAA 输出 (ID,M,σ)(ID^∗, M^∗,σ^∗)。下述情况 AA 将赢得游戏:

    • Verify(M,σ,ID,params)1Verify(M^∗, σ^∗, ID^∗, params)→1
    • IDQKID^∗∉Q_K
    • (ID,M)QS(ID^∗,M^∗)∉Q_S(ID,M)QS(σQσ)(ID^∗,M^∗)∈Q_S (σ^∗ ∉Q_σ)

定义

如果不存在任何敌手 AA 在进行 𝑞1𝑞_1 次密钥查询和 q2q_2 次签名查询后,能在时间 𝑇𝑇 内以至少 ϵ(λ)ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 SEU-sID-CMA 安全模型中是 (𝑇,𝑞1,q2,ϵ(λ))(𝑇,𝑞_1,q_2,ϵ(λ))- 安全的,即

Pr[Verify(M,σ,ID,params)1]<ϵϵ(λ)Pr[Verify(M^∗,\sigma ^∗,ID ^∗,params) \to 1 ]<ϵ \epsilon (λ)



参考资料:

[1] 安全规约导论,郭富春