1 引入
1.1 柯克霍夫原则 Kerckhoffs’s Principle
1.2 公钥密码学 Public-key Cryptography
-
def
- 每个用户都有一对密钥:私钥和公钥
- 公钥是公开已知的,但私钥是保密的
- 给定公钥,推断出私钥在计算上是不可行的
-
分类
- 公钥加密:允许双方通过不安全的通道交换消息,提供了保密性
- 数字签名:允许双方对电子文档进行签名,提供了不可伪造性
1.3 安全
1.3.1 可证明安全
1.3.2 渐近安全与具体安全
-
渐近安全:使用多项式时间可归约性对计算问题的难度进行分类
-
具体安全:实际上由于需要实例化安全参数,需确切知道减少的效率,参数化敌手可用的所有资源
-
def 若对手可以在时间 t 中以至少 εΣ 的概率打破方案 Σ,则存在敌手可以在时间 t′ 内以至少 εΠ 的概率打破困难问题 Π,其中 t≈t′, εΣ≈εΠ
-
安全参数 λ 的选取:εΠ=2−λ−γ
2 概念、定义和模型
2.1 常用符号及定义
![]()
2.2 数字签名
2.2.1 数字签名的算法定义
-
Setup(1λ)→params
-
KeyGen(1λ,params)→(SK,PK)
-
Sign(M,SK,params)→σ
-
Verify(M,σ,PK,params)→0/1
2.2.2 数字签名的安全模型
def 安全模型:定义敌手所知道的内容,不同安全模型破坏方案的难度不同
1. 针对选择消息攻击的存在不可伪造性 EU-CMA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→params,并将 params 返回给 A
-
KeyGen:C 运行 KeyGen(1λ,params)→(SK,PK),并将 PK 返回给 A
-
Query:
- 动态地提交消息 Mi
- C 运行 Sign(Mi,SK,params)→σi,并将 σi 返回给 A
- 其中 i={1,2,⋯,qS}
- 设消息 M={M1,⋯,MqS}
- 设Q={(M1,σ1),⋯,(Mqs,σqs)}
-
Forgery:A 在消息 M∗ 上输出签名 σ∗。满足下述情况则 A 将赢得游戏:
- Verify(M∗,σ∗,PK,params)→1
- M∗∈/M
定义
如果不存在任何敌手 A 在进行 qs 次签名查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则签名方案在 EU-CMA 安全模型中是 (T,qs,ϵ(λ))- 安全的,即
Pr[Verify(M∗,σ∗,PK,params)→1∣M∗∈/M)]<ϵ(λ)
2. 针对选择消息攻击的强不可伪造性 SU-CMA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→params,并将 params 返回给 A
-
KeyGen:C 运行 KeyGen(1λ,params)→(SK,PK),并将 PK 返回给 A
-
Query:
- 动态地提交消息 Mi
- C 运行 Sign(Mi,SK,params)→σi,并将 σi 返回给 A
- 其中 i={1,2,⋯,qS}
- 设消息 M={M1,⋯,MqS}
- 设Q={(M1,σ1),⋯,(Mqs,σqs)}
-
Forgery:A 在消息 M∗ 上输出签名 σ∗。满足下述情况则 A 将赢得游戏:
- Verify(M∗,σ∗,PK,params)→1
- (M∗,σ∗)∈/Q:A 可以询问关于 M∗ 的签名,但输出一个不同的签名即可
定义
如果不存在任何敌手 A 在进行 qs 次签名查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则签名方案在 SU-CMA 安全模型中是 (T,qS,ϵ(λ))- 安全的,即
Pr[Verify(M∗,σ∗,PK,params)→1∣(M∗,σ∗)∈/Q)]<ϵ(λ)
2.3 公钥加密
2.3.1 公钥加密的算法定义
-
Setup(1λ)→params
-
KeyGen(1λ,params)→(SK,PK)
-
Enc(M,PK,params)→CT
-
Dec(CT,SK,params)→M/⊥
2.3.2 公钥加密的安全模型
1. 针对选择明文攻击的不可区分性 IND-CPA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→params,并将 params 返回给 A
-
KeyGen:C 运行 KeyGen(1λ,params)→(SK,PK),并将 PK 返回给 A
-
Challenge:
- A 提交两条消息 M0 和 M1
- C 掷出一枚无偏硬币,得到比特 b∈{0,1}
- C 运行 Enc(Mb,PK,params)→CT∗,并返回 CT∗ 给 A
-
Output:A 在 b 上输出其猜测 b′,如果 b′=b ,则 A 赢得游戏
定义
如果不存在可以赢得上述游戏的敌手 A,则公钥加密方案在 IND-CPA 安全模型中是 (T,ϵ(λ))- 安全的,即
∣Pr[b′=b]−21∣<ϵ(λ)
2. 针对(两阶段)选择密文攻击的不可区分性 IND-CCA2
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→params,并将 params 返回给 A
-
KeyGen:C 运行 KeyGen(1λ,params)→(SK,PK),并将 PK 返回给 A
-
Phase I:
- A 动态地提交密文 CTi,其中 i=1,2,⋯,q1
- C 运行 Dec(CTi,SK,params)→Mi,并将 Mi 返回给 A
-
Challenge:
- A 提交两条消息 M0 和 M1
- C 掷出一枚无偏硬币,得到比特 b∈{0,1}
- C 运行 Enc(Mb,PK,params)→CT∗,并返回 CT∗ 给 A
-
Phase II:
- A 动态地提交密文 CTj,但有以下限制条件:
- CT∗= CTj ,其中 j=1,2,⋯,q2
- C 运行 Dec(CTj,SK,params)→Mj, 并将 Mj 返回给 A
- qD=q1+q2
-
Output:A 在 b 上输出其猜测 b′,如果 b′=b ,则 A 赢得游戏
定义
如果不存在可以赢得上述游戏的敌手 A,则公钥加密方案在 IND-CCA2 安全模型中是 (T,ϵ(λ))- 安全的,即
∣Pr[b′=b]−21∣<ϵ(λ)
2.4 基于身份加密
2.4.1 基于身份加密的算法定义
-
Setup(1λ)→(MSK,params):多输出一个主私钥 MSK
-
KeyGen(ID,MSK,params)→SKID:输入身份标识 ID∈{0,1}∗ 而非安全参数 1λ
-
Enc(M,ID,params)→CT
-
Dec(CT,SKID,params)→M/⊥
2.4.2 基于身份加密的安全模型
1. 针对(两阶段)选择明文攻击的不可区分性 IND-ID-CPA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
Phase I:
- A 动态地提交身份标识 ID∈{0,1}∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
-
Challenge:
- A 提交一个身份标识ID∗∈{0,1}∗(ID∗∈/{ID1,ID2,⋯,IDq1})和两条长度相等的消息 M0 和 M1
- C 掷出一枚无偏硬币,得到比特 b∈{0,1}
- C 运行 Enc(Mb,ID∗,params)→CT∗,并返回 CT∗ 给 A
-
Phase II:
- A 动态地提交身份标识 IDj,限制 IDj=ID∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj,MSK,params)→SKIDj,并将 SKIDj 返回给 A
- qK=q1+q2
-
Output:A 在 b 上输出其猜测 b′,如果 b′=b ,则 A 赢得游戏
定义
如果不存在任何敌手 A 在进行 qk 次密钥查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-ID-CPA 安全模型中是 (T,qk,ϵ(λ))- 安全的,即
∣Pr[b′=b]−21∣<ϵ(λ)
2. 针对两阶段选择性 ID 的选择明文攻击的不可区分性 IND-sID-CPA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Inititialization:A 提前提交一个身份标识 ID∗∈{0,1}∗
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
Phase I:
- A 动态地提交身份标识 IDi∈{0,1}∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
-
Challenge:
- A 提交两条长度相等的消息 M0 和 M1
- C 掷出一枚无偏硬币,得到比特 b∈{0,1}
- C 运行 Enc(Mb,ID∗,params)→CT∗,并返回 CT∗ 给 A
-
Phase II:
- A 动态地提交身份标识 IDj,限制 IDj=ID∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj,MSK,params)→SKIDj,并将 SKIDj 返回给 A
- 令qK=q1+q2
-
Output:A 在 b 上输出其猜测 b′,如果 b′=b ,则 A 赢得游戏
定义
如果不存在任何敌手 A 在进行 qk 次密钥查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-sID-CPA 安全模型中是 (T,qk,ϵ(λ))- 安全的,即
∣Pr[b′=b]−21∣<ϵ(λ)
3. 针对(两阶段)选择密文攻击的不可区分性 IND-ID-CCA2
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
Phase I:
- KeyGen Query:
- A 动态地提交身份标识 IDi∈{0,1}∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
- Decryption Query:
- A 动态地提交密文 (IDk,CTk),其中 k=1,2,⋯,q1′
- C 运行 KeyGen(IDk,MSK,params)→SKIDk和 Dec(CTk,SKIDk,params)→Mk,并将 Mk 返回给 A
-
Challenge:
- A 提交一个身份标识ID∗∈{0,1}∗(ID∗∈/{ID1,ID2,⋯,IDq1})和提交两条长度相等的消息 M0 和 M1
- C 掷出一枚无偏硬币,得到比特 b∈{0,1}
- C 运行 Enc(Mb,PK,params)→CT∗,并返回 CT∗ 给 A
-
Phase II:
- KeyGen Query:
- A 动态地提交身份标识 IDj,限制 IDj=ID∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj,MSK,params)→SKIDj,并将 SKIDj 返回给 A
- Decryption Query:
- A 动态地提交密文 (IDl,CTl),限制 (IDl,CTl)=(ID∗,CT∗),其中 l=1,2,⋯,q2′
- C 运行 KeyGen(IDl,MSK,params)→SKIDl和 Dec(CTl,SKIDl,params)→Ml,并将 Ml 返回给 A
- 令qK=q1+q2,qD′=q1′+q2′
-
Output:A 在 b 上输出其猜测 b′,如果 b′=b ,则 A 赢得游戏
定义
如果不存在任何敌手 A 在进行 qK 密钥生成查询和 qD 次解密查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-ID-CCA2 安全模型中是 (T,qK,qD,ϵ(λ))- 安全的,即
∣Pr[b′=b]−21∣<ϵ(λ)
4. 针对两阶段选择性 ID 的选择密文攻击的不可区分性 IND-sID-CCA2
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Inititialization:A 提前提交一个身份标识 ID∗∈{0,1}∗
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
Phase I:
- KeyGen Query:
- A 动态地提交身份标识 IDi∈{0,1}∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
- Decryption Query:
- A 动态地提交密文 (IDk,CTk),其中 k=1,2,⋯,q1′
- C 运行 KeyGen(IDk,MSK,params)→SKIDk和 Dec(CTk,SKIDk,params)→Mk,并将 Mk 返回给 A
-
Challenge:
- A 提交两条长度相等的消息 M0 和 M1
- C 掷出一枚无偏硬币,得到比特 b∈{0,1}
- C 运行 Enc(Mb,PK,params)→CT∗,并返回 CT∗ 给 A
-
Phase II:
- KeyGen Query:
- A 动态地提交身份标识 IDj,限制 IDj=ID∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj,MSK,params)→SKIDj,并将 SKIDj 返回给 A
- Decryption Query:
- A 动态地提交密文 (IDl,CTl),限制 (IDl,CTl)=(ID∗,CT∗),其中 l=1,2,⋯,q2′
- C 运行 KeyGen(IDl,MSK,params)→SKIDl和 Dec(CTl,SKIDl,params)→Ml,并将 Ml 返回给 A
- 令qK=q1+q2,qD′=q1′+q2′
-
Output:A 在 b 上输出其猜测 b′,如果 b′=b ,则 A 赢得游戏
定义
如果不存在任何敌手 A 在进行 qK 密钥生成查询和 qD 次解密查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份加密方案在 IND-sID-CCA2 安全模型中是 (T,qK,qD,ϵ(λ))- 安全的,即
∣Pr[b′=b]−21∣<ϵ(λ)
2.5 基于身份签名
2.5.1 基于身份签名的算法定义
-
Setup(1λ)→(MSK,params):多输出一个主私钥 MSK
-
KeyGen(ID,MSK,params)→SKID:输入身份标识 ID∈{0,1}∗ 而非安全参数 1λ
-
Sign(M,SKID,params)→σ
-
Verify(M,σ,ID,params)→0/1
2.5.2 基于身份签名的安全模型
1. 针对选择消息攻击的存在不可伪造性 EU-ID-CMA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
KeyGen Query:
- A 动态地提交身份标识 IDi∈{0,1}∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
- 令QK={ID1,⋯,IDq1}
-
Signing Query:
- A 提交身份标识 IDj′∈{0,1}∗和消息 Mj∈{0,1}∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj′,MSK,params)→SKIDj′和 Sign(Mj′,SK,params)→σj′,
- 将 σj′ 返回给 A,令QS=(ID1′,M1),⋯(IDq2′,Mq2)
-
Forgery:A 输出 (ID∗,M∗,σ∗)。下述情况 A 将赢得游戏:
- Verify(M∗,σ∗,ID∗,params)→1
- ID∗∈/QK
- (ID∗,M∗)∈/QS
定义
如果不存在任何敌手 A 在进行 q1 次密钥查询和 q2 次签名查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 EU-ID-CMA 安全模型中是 (T,q1,q2,ϵ(λ))- 安全的,即
Pr[Verify(M∗,σ∗,ID∗,params)→1]<ϵ(λ)
2. 针对选择性 ID 的选择消息攻击的存在不可伪造性 EU-sID-CMA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Inititialization:A 提前提交一个身份标识 ID∗∈{0,1}∗
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
KeyGen Query:
- A 动态地提交身份标识 IDi∈{0,1}∗,限制为IDi=ID∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
- 令QK={ID1,⋯,IDq1}
-
Signing Query:
- A 提交身份标识 IDj′∈{0,1}∗和消息 Mj∈{0,1}∗,IDj=ID∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj′,MSK,params)→SKIDj′和 Sign(Mj′,SK,params)→σj′,
- 将 σj′ 返回给 A,令QS=(ID1′,M1),⋯(IDq2′,Mq2)
-
Forgery:A 输出 (ID∗,M∗,σ∗)。下述情况 A 将赢得游戏:
- Verify(M∗,σ∗,ID∗,params)→1
定义
如果不存在任何敌手 A 在进行 q1 次密钥查询和 q2 次签名查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 EU-sID-CMA 安全模型中是 (T,q1,q2,ϵ(λ))- 安全的,即
Pr[Verify(M∗,σ∗,ID∗,params)→1]<ϵ(λ)
3. 针对选择消息攻击的强不可伪造性 SEU-ID-CMA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
KeyGen Query:
- A 动态地提交身份标识 IDi∈{0,1}∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
- 令QK={ID1,⋯,IDq1}
-
Signing Query:
- A 提交身份标识 IDj′∈{0,1}∗和消息 Mj∈{0,1}∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj′,MSK,params)→SKIDj′和 Sign(Mj′,SK,params)→σj′,
- 将 σj′ 返回给 A,令QS=(ID1′,M1),⋯(IDq2′,Mq2),Qσ={σ1,⋯,σq2}
-
Forgery:A 输出 (ID∗,M∗,σ∗)。下述情况 A 将赢得游戏:
- Verify(M∗,σ∗,ID∗,params)→1
- ID∗∈/QK
- (ID∗,M∗)∈/QS 或 (ID∗,M∗)∈QS(σ∗∈/Qσ)
定义
如果不存在任何敌手 A 在进行 q1 次密钥查询和 q2 次签名查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 SEU-ID-CMA 安全模型中是 (T,q1,q2,ϵ(λ))- 安全的,即
Pr[Verify(M∗,σ∗,ID∗,params)→1]<ϵ(λ)
4. 针对选择性 ID 的选择消息攻击的强不可伪造性 SEU-sID-CMA
游戏在挑战者 C 和敌手 A 之间的执行过程:
-
Inititialization:A 提前提交一个身份标识 ID∗∈{0,1}∗
-
Setup:C 运行 Setup(1λ)→(MSK,params),并将 params 返回给 A
-
KeyGen Query:
- A 动态地提交身份标识 IDi∈{0,1}∗,限制为IDi=ID∗,其中 i=1,2,⋯,q1
- C 运行 KeyGen(IDi,MSK,params)→SKIDi,并将 SKIDi 返回给 A
- 令QK={ID1,⋯,IDq1}
-
Signing Query:
- A 提交身份标识 IDj′∈{0,1}∗和消息 Mj∈{0,1}∗,IDj=ID∗,其中j=1,2,⋯,q2
- C 运行 KeyGen(IDj′,MSK,params)→SKIDj′和 Sign(Mj′,SK,params)→σj′,
- 将 σj′ 返回给 A,令QS=(ID1′,M1),⋯(IDq2′,Mq2),Qσ={σ1,⋯,σq2}
-
Forgery:A 输出 (ID∗,M∗,σ∗)。下述情况 A 将赢得游戏:
- Verify(M∗,σ∗,ID∗,params)→1
- ID∗∈/QK
- (ID∗,M∗)∈/QS 或 (ID∗,M∗)∈QS(σ∗∈/Qσ)
定义
如果不存在任何敌手 A 在进行 q1 次密钥查询和 q2 次签名查询后,能在时间 T 内以至少 ϵ(λ) 的优势赢得上述游戏,则基于身份签名方案在 SEU-sID-CMA 安全模型中是 (T,q1,q2,ϵ(λ))- 安全的,即
Pr[Verify(M∗,σ∗,ID∗,params)→1]<ϵϵ(λ)
参考资料:
[1] 安全规约导论,郭富春