Lecture 3. Efficient PKE with Security


密钥封装机制 (Key Encryption Mechanism, KEM).

目的:双方在公开信道上交换共享密钥 KK,于是可以用交换的密钥进行对称加密通信。

正确性:∀κ,∀(pk,sk)←Gen(1κ),∀(K,ψ)←Encap(pk),Decap(sk,ψ)=K\forall \kappa,\forall (pk,sk)\leftarrow \text{Gen}(1^\kappa),\forall (K,\psi)\leftarrow\text{Encap}(pk), \text{Decap}(sk,\psi)=K.

💡
KEM 的 CPA 安全性:敌手根据所有公开信息 (pk,ψ)(pk, \psi) 计算的密钥与随机数不可区分。
AdvKEM,ACPA(κ)=∣Pr[ExpKEM,ACPA-1(κ)=1]−Pr[ExpKEM,ACPA-0(κ)=1]∣=negl(κ)\begin{aligned}\textbf{Adv}_{\text{KEM},\mathcal{A}}^\text{CPA}(\kappa)=\left|\text{Pr}[\textbf{Exp}_{\text{KEM},\mathcal{A}}^\text{CPA-1}(\kappa)=1]-\text{Pr}[\textbf{Exp}_{\text{KEM},\mathcal{A}}^\text{CPA-0}(\kappa)=1]\right| = \text{negl}(\kappa)\end{aligned}

其中,0 实验发送均匀随机密钥给敌手,1 实验发送封装内部的密钥给敌手。敌手的目标:根据 pk,ψpk,\psi 判断提供的密钥 KK 是随机数(0)还是用于封装的密钥(1)。

CA(pk,sk)←Gen(1κ)⟶pkK0∗←Kb←{0,1}(K1∗,ψ∗)←Encap(pk)K∗:=Kb∗⟶K∗,ψ∗return b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk) \leftarrow\text{Gen}(1^\kappa) &\stackrel{pk}{\longrightarrow} \\K_0^*\leftarrow\mathcal{K}\\b\leftarrow\{0,1\}\\(K_1^*,\psi^*)\leftarrow\text{Encap}(pk) \\K^*:=K_b^*& \stackrel{K^*,\psi^*}{\longrightarrow}\\\text{return }b'& \stackrel{b'}{\longleftarrow}& \text{compute } b'\end{matrix}

b=0b=0 即为 0 实验,b=1b=1 即为 1 实验。


通过 PKE 构造 KEM.

💡
Theorem. 若 PKE 是 CPA 安全的,则这样的 KEM 也是 CPA 安全的。

【证明】安全规约。反证,存在敌手 A\mathcal{A} 打破了这个 KEM 的 CPA 安全性,则可以构造敌手 A′\mathcal{A}' 打破 PKE 的 CPA 安全性。

C′A′/CA(pk,sk)←Gen(1κ)⟶pk⟶pk⟵K0,K1K0,K1←Kb←{0,1}ψ←Enc(pk,Kb)⟶ψ⟶(K1,ψ)A′ wins iff b′=b⟵b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C'} & & \mathcal{A'}/\mathcal{C} & & \mathcal{A}\\ (pk,sk) \leftarrow\text{Gen}(1^\kappa) &\stackrel{pk}{\longrightarrow} & &\stackrel{pk}{\longrightarrow}\\ &\stackrel{K_0,K_1}{\longleftarrow}&K_0,K_1\leftarrow\mathcal{K} \\ b\leftarrow\{0,1\}\\ \psi \leftarrow \text{Enc}(pk,K_b) & \stackrel{\psi}{\longrightarrow} & & \stackrel{(K_1,\psi)}{\longrightarrow} \\ \mathcal{A}' \text{ wins iff }b'=b& \stackrel{b'}{\longleftarrow}& & \stackrel{b'}{\longleftarrow}& \text{compute }b'\end{matrix}

那么,

AdvPKE,A′CPA(κ)=∣Pr[b′=1∣b=1]−Pr[b′=1∣b=0]∣=∣Pr[ExpKEM,ACPA-1(κ)=1]−Pr[ExpKEM,ACPA-0(κ)=1]∣=AdvKEM,ACPA(κ)\begin{aligned}\textbf{Adv}_{\text{PKE},\mathcal{A}'}^\text{CPA}(\kappa)&= \left|\text{Pr}[b'=1|b=1]-\text{Pr}[b'=1|b=0]\right|\\ &=\left|\text{Pr}[\textbf{Exp}_{\text{KEM},\mathcal{A}}^\text{CPA-1}(\kappa)=1]-\text{Pr}[\textbf{Exp}_{\text{KEM},\mathcal{A}}^\text{CPA-0}(\kappa)=1]\right|\\ &=\textbf{Adv}_{\text{KEM},\mathcal{A}}^\text{CPA}(\kappa)\end{aligned}

从而,若 PKE 是 CPA 安全的,则这样构造的 KEM 也是 CPA 安全的。


数据加密机制 (Data Encryption Mechanism, DEM).(对称加密机制),包含 DEM.Enc/Dec.

DEM 的语义安全性 (semantic secure). ∀\forall PPT 敌手 A\mathcal{A},

AdvDEM,ASEM(κ)=∣Pr[ExpDEM,ASEM-1(κ)=1]−Pr[ExpDEM,ASEM-0(κ)=1]∣=negl(κ)\begin{aligned}\textbf{Adv}_{\text{DEM},\mathcal{A}}^\text{SEM}(\kappa)=\left|\text{Pr}[\textbf{Exp}_{\text{DEM},\mathcal{A}}^\text{SEM-1}(\kappa)=1]-\text{Pr}[\textbf{Exp}_{\text{DEM},\mathcal{A}}^\text{SEM-0}(\kappa)=1]\right| = \text{negl}(\kappa)\end{aligned}

其中,bb 实验 ExpDEM,ASEM-b(κ)\textbf{Exp}_{\text{DEM},\mathcal{A}}^\text{SEM-b}(\kappa) 定义如下:

CAK←K⟵m0,m1choose m0,m1c←Enc(K,mb)⟶creturn b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ K\leftarrow\mathcal{K}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ c\leftarrow\text{Enc}(K,m_b) & \stackrel{c}{\longrightarrow} \\\text{return }b' &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

KEM + DEM 混合加密体制 (KEM + DEM Hybrid Encryption). 构造一个混合加密体制 PKE’,由 KEM 和 DEM 构成,包含:

混合加密体制 PKE’ 的 CPA 安全性.

AdvPKE′,ACPA(κ)=∣Pr[ExpPKE′,ACPA-1(κ)=1]−Pr[ExpPKE′,ACPA-0(κ)=1]∣=negl(κ)\begin{aligned}\textbf{Adv}_{\text{PKE}',\mathcal{A}}^\text{CPA}(\kappa)=\left|\text{Pr}[\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-1}(\kappa)=1]-\text{Pr}[\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-0}(\kappa)=1]\right| = \text{negl}(\kappa)\end{aligned}

其中,bb 实验 ExpPKE′,ACPA-b(κ)=1\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-b}(\kappa)=1 定义如下:

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1(ψ,c)←Enc′(pk,m)⟶(ψ,c)return b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\(\psi,c)\leftarrow\text{Enc}'(pk,m) & \stackrel{(\psi,c)}{\longrightarrow} \\\text{return }b' &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}
💡
Theorem. 如果 KEM 是 CPA 安全的,DEM 是语义安全的,那么 PKE’ 就是 CPA 安全的。

【证明 1】从 advantage 入手,利用中间状态完成从 0 实验 ExpPKE′,ACPA-0(κ)\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-0}(\kappa) 到 1 实验 ExpPKE′,ACPA-1(κ)\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-1}(\kappa) 的转化。

Game 1: ExpPKE′,ACPA-0(κ)\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-0}(\kappa).

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1(K∗,ψ∗)←KEM.Encap(pk)c∗←DEM.Enc(K∗,m0)⟶(ψ∗,c∗)return b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ (K^*,\psi^*)\leftarrow\text{KEM.Encap}(pk)\\c^*\leftarrow\text{DEM.Enc}(K^*,m_0) & \stackrel{(\psi^*,c^*)}{\longrightarrow} \\\text{return }b' &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

Game 2:

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1(K∗,ψ∗)←KEM.Encap(pk)K←Kc∗←DEM.Enc(K,m0)⟶(ψ∗,c∗)return b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ (K^*,\psi^*)\leftarrow\text{KEM.Encap}(pk)\\ {\color{red}K \leftarrow\mathcal{K}}\\c^*\leftarrow\text{DEM.Enc}({\color{red} K},m_0) & \stackrel{(\psi^*,c^*)}{\longrightarrow} \\\text{return }b' &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

Game 3.

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1(K∗,ψ∗)←KEM.Encap(pk)K←Kc∗←DEM.Enc(K,m1)⟶(ψ∗,c∗)return b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ (K^*,\psi^*)\leftarrow\text{KEM.Encap}(pk)\\ K \leftarrow\mathcal{K}\\c^*\leftarrow\text{DEM.Enc}(K,{\color{red}m_1}) & \stackrel{(\psi^*,c^*)}{\longrightarrow} \\\text{return }b' &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

Game 4. ExpPKE′,ACPA-1(κ)\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-1}(\kappa).

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1(K∗,ψ∗)←KEM.Encap(pk)c∗←DEM.Enc(K∗,m1)⟶(ψ∗,c∗)return b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ (K^*,\psi^*)\leftarrow\text{KEM.Encap}(pk)\\c^*\leftarrow\text{DEM.Enc}(K^*,m_1) & \stackrel{(\psi^*,c^*)}{\longrightarrow} \\\text{return }b' &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

首先,我们说明 ∣Pr[Game 2=1]−Pr[Game 1=1]∣≤AdvKEMCPA(κ)\left|\text{Pr}[\textbf{Game 2}=1]-\text{Pr}[\textbf{Game 1}=1]\right| \leq \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa)。也就是说,我们可以通过区分 Game 1 和 Game 2 的敌手(返回 1 的概率不可忽略的不同)来打破 CPA 安全性。

C′A′/CA(pk,sk)←Gen(1κ)⟶pk⟶pk⟵m0,m1⟵m0,m1choose m0,m1K0∗←Kb←{0,1}(K1∗,ψ∗)←Encap(pk)K∗:=Kb∗⟶K∗,ψ∗c∗←Enc(K∗,m0)⟶(ψ∗,c∗)⟵b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C'} & & \mathcal{A'}/\mathcal{C} & & \mathcal{A}\\ (pk,sk) \leftarrow\text{Gen}(1^\kappa) &\stackrel{pk}{\longrightarrow} & &\stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow}& & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\K_0^*\leftarrow\mathcal{K}\\b\leftarrow\{0,1\}\\(K_1^*,\psi^*)\leftarrow\text{Encap}(pk) \\K^*:=K_b^* & \stackrel{K^*,\psi^*}{\longrightarrow} & c^* \leftarrow\text{Enc}(K^*,m_0) &\stackrel{(\psi^*,c^*)}{\longrightarrow}\\ &\stackrel{b'}{\longleftarrow} & & \stackrel{b'}{\longleftarrow}& \text{compute }b' \end{matrix}

当 b=0b=0,进行 Game 2;当 b=1b=1,进行 Game 1;于是

∣Pr[Game 2=1]−Pr[Game 1=1]∣= ∣Pr[b′=1∣b=0]−Pr[b′=1∣b=1]∣= AdvKEM,A′CPA(κ)≤ AdvKEMCPA(κ)\begin{aligned}&\left|\text{Pr}[\textbf{Game 2}=1]-\text{Pr}[\textbf{Game 1}=1]\right| \\ =\ &\left|\text{Pr}[b'=1|b=0]-\text{Pr}[b'=1|b=1]\right| \\=\ & \textbf{Adv}_{\text{KEM},\mathcal{A}'}^\text{CPA}(\kappa)\\ \leq\ & \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa)\end{aligned}

同理

∣Pr[Game 4=1]−Pr[Game 3=1]∣≤AdvKEMCPA(κ)\left|\text{Pr}[\textbf{Game 4}=1]-\text{Pr}[\textbf{Game 3}=1]\right| \leq \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa)

那么接下来我们考虑说明 ∣Pr[Game 3=1]−Pr[Game 2=1]∣≤AdvDEMSEM(κ)\left|\text{Pr}[\textbf{Game 3}=1]-\text{Pr}[\textbf{Game 2}=1]\right| \leq \textbf{Adv}_{\text{DEM}}^\text{SEM}(\kappa)。也就是说,我们可以通过区分 Game 2 和 Game 3 的敌手(返回 1 的概率不可忽略的不同)来突破 DEM 的 SEM 安全性。这个规约是简单的(都是区别 m0m_0 和 m1m_1),直接调用即可,在这里略去过程。

于是,综上所述,

AdvPKE′,ACPA(κ)=∣Pr[ExpPKE′,ACPA-1(κ)=1]−Pr[ExpPKE′,ACPA-0(κ)=1]∣=∑i=24∣Pr[Game i=1]−Pr[Game i−1=1]∣≤AdvKEMCPA(κ)+AdvKEMCPA(κ)+AdvDEMSEM(κ)=2AdvKEMCPA(κ)+AdvDEMSEM(κ)=3negl(κ)=negl(κ)\begin{aligned}\textbf{Adv}_{\text{PKE}',\mathcal{A}}^\text{CPA}(\kappa) &=\left|\text{Pr}[\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-1}(\kappa)=1]-\text{Pr}[\textbf{Exp}_{\text{PKE}',\mathcal{A}}^\text{CPA-0}(\kappa)=1]\right| \\ &= \sum_{i=2}^4 |\text{Pr}[\textbf{Game }i=1]-\text{Pr}[\textbf{Game }i-1=1]| \\ &\leq \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa) + \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa) + \textbf{Adv}_{\text{DEM}}^\text{SEM}(\kappa) \\ &= 2\textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa) + \textbf{Adv}_{\text{DEM}}^\text{SEM}(\kappa)\\ &= 3\text{negl}(\kappa)\\ &= \text{negl}(\kappa)\end{aligned}

【证明 2】从原始定义入手(与 1/2 的差可忽略)

Game 1. (即为 PKE‘ 的 CPA game)定义赢了 Game 1 为 Succ1\text{Succ}_1,即 Pr[Succ1]=Pr[b′=b in Game 1]\text{Pr}[\text{Succ}_1]=\text{Pr}[b'=b\text{ in Game 1}]。

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1b←{0,1}(K∗,ψ∗)←KEM.Encap(pk)c∗←DEM.Enc(K∗,mb)⟶(ψ∗,c∗)A wins iff b′=b⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\b \leftarrow \{0,1\}\\ (K^*,\psi^*)\leftarrow\text{KEM.Encap}(pk)\\c^*\leftarrow\text{DEM.Enc}(K^*,m_b) & \stackrel{(\psi^*,c^*)}{\longrightarrow} \\\mathcal{A}\text{ wins iff }b' =b &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

Game 2. 如下,定义赢了 Game 1 为 Succ2\text{Succ}_2,即 Pr[Succ2]=Pr[b′=b in Game 2]\text{Pr}[\text{Succ}_2]=\text{Pr}[b'=b\text{ in Game 2}]

CA(pk,sk)←Gen′(1κ)⟶pk⟵m0,m1choose m0,m1b←{0,1}(K∗,ψ∗)←KEM.Encap(pk)K←Kc∗←DEM.Enc(K,mb)⟶(ψ∗,c∗)A wins iff b′=b⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}'(1^\kappa) & \stackrel{pk}{\longrightarrow}\\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\b \leftarrow \{0,1\}\\ (K^*,\psi^*)\leftarrow\text{KEM.Encap}(pk)\\{\color{red}K\leftarrow \mathcal{K}} \\c^*\leftarrow\text{DEM.Enc}({\color{red}K},m_b) & \stackrel{(\psi^*,c^*)}{\longrightarrow} \\\mathcal{A}\text{ wins iff }b' =b &\stackrel{b'}{\longleftarrow} & \text{compute }b'\end{matrix}

类似地,我们说明 ∣Pr[Succ2]−Pr[Succ1]∣≤AdvKEMCPA(κ)|\text{Pr}[\text{Succ}_2]-\text{Pr}[\text{Succ}_1]| \leq \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa)。也就是说,我们可以通过一个在 Game 1 和 Game 2 中赢的概率不同的敌手来打破 KEM 的 CPA 安全性。

C′A′/CA(pk,sk)←Gen(1κ)⟶pk⟶pk⟵m0,m1choose m0,m1K0∗←Kβ←{0,1}(K1∗,ψ∗)←Encap(pk)K∗:=Kβ∗⟶K∗,ψ∗b←{0,1}c∗←Enc(K∗,mb)⟶(ψ∗,c∗)⟵β′β′:=1[b′=b]⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C'} & & \mathcal{A'}/\mathcal{C} & & \mathcal{A}\\ (pk,sk) \leftarrow\text{Gen}(1^\kappa) &\stackrel{pk}{\longrightarrow} & &\stackrel{pk}{\longrightarrow}\\ & & & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\K_0^*\leftarrow\mathcal{K}\\\beta\leftarrow\{0,1\}\\(K_1^*,\psi^*)\leftarrow\text{Encap}(pk) \\K^*:=K_\beta^* & \stackrel{K^*,\psi^*}{\longrightarrow}& b\leftarrow\{0,1\}\\ & &c^* \leftarrow\text{Enc}(K^*,m_b)&\stackrel{(\psi^*,c^*)}{\longrightarrow}\\ &\stackrel{\beta'}{\longleftarrow} & \beta' := \mathbf{1}[b'=b]& \stackrel{b'}{\longleftarrow}& \text{compute }b' \end{matrix}

在上面的规约中,我们在中间再抛一次币。如果左边抛币的结果 β=0\beta = 0,那么相当于给有能力的敌手模拟了 Game 2;如果左边抛币的结果 β=1\beta = 1,那么相当于给有能力的敌手模拟了 Game 1,由于该有能力的敌手赢 Game 1 和 Game 2 的概率显著不同,即

Pr[β′=1∣β=1]=Pr[A wins Game 1]=Pr[Succ1]Pr[β′=1∣β=0]=Pr[A wins Game 2]=Pr[Succ2]\text{Pr}[\beta'=1|\beta = 1]=\text{Pr}[\mathcal{A} \text{ wins Game 1}] = \text{Pr}[\text{Succ}_1] \\ \text{Pr}[\beta'=1|\beta = 0]=\text{Pr}[\mathcal{A} \text{ wins Game 2}] = \text{Pr}[\text{Succ}_2]

从而,

∣Pr[Succ1]−Pr[Succ2]∣=∣Pr[β′=1∣β=1]−Pr[β′=1∣β=0]∣≤AdvKEMCPA(κ)\begin{aligned}\left|\text{Pr}[\text{Succ}_1]-\text{Pr}[\text{Succ}_2]\right|&=\left|\text{Pr}[\beta'=1|\beta = 1]-\text{Pr}[\beta'=1|\beta = 0]\right| \\&\leq \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa)\end{aligned}

另一方面,我们想要说明 ∣Pr[Succ2]−12∣≤12AdvDEMSEM(κ)|\text{Pr}[\text{Succ}_2]-\frac{1}{2}| \leq \frac{1}{2}\textbf{Adv}_{\text{DEM}}^\text{SEM}(\kappa)。也就是说,我们可以通过一个在 Game 2 赢的概率和 1/2 不可忽略地不同的敌手来打破 DEM 的 SEM 安全性。

C′A′/CAK←K(pk,sk)←Gen(1κ)⟶pk⟵m0,m1⟵m0,m1choose m0,m1b←{0,1}c←Enc(K,mb)⟶c(K∗,ψ∗)=Encap(pk)⟶(ψ∗,c)⟵b′⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C'} & & \mathcal{A'}/\mathcal{C} & & \mathcal{A}\\ K\leftarrow \mathcal{K} \\ & & (pk,sk)\leftarrow\text{Gen}(1^\kappa) & \stackrel{pk}{\longrightarrow}\\& \stackrel{m_0,m_1}{\longleftarrow}& & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1\\b\leftarrow\{0,1\}\\c \leftarrow \text{Enc}(K,m_b) & \stackrel{c}{\longrightarrow} &(K^*,\psi^*)=\text{Encap}(pk) & \stackrel{(\psi^*,c)}{\longrightarrow}\\&\stackrel{b'}{\longleftarrow} && \stackrel{b'}{\longleftarrow}& \text{compute }b' \end{matrix}
∣Pr[Succ2]−12∣=∣Pr[b′=b]−12∣=∣Pr[C′ wins]−12∣≤12AdvDEMSEM(κ)\left|\text{Pr}[\text{Succ}_2]-\frac{1}{2}\right| = \left|\text{Pr}[b'=b]-\frac{1}{2}\right|=\left|\text{Pr}[\mathcal{C'}\text{ wins}]-\frac{1}{2}\right|\leq \frac{1}{2}\textbf{Adv}_{\text{DEM}}^\text{SEM}(\kappa)

综上所述,

∣Pr[Succ1]−12∣=∣Pr[Succ1]−Pr[Succ2]+Pr[Succ2]−12∣≤∣Pr[Succ1]−Pr[Succ2]∣+∣Pr[Succ2]−12∣≤AdvKEMCPA(κ)+12AdvDEMSEM(κ)=32negl(κ)=negl(κ)\begin{aligned}\left|\text{Pr}[\text{Succ}_1]-\frac{1}{2}\right|&=\left|\text{Pr}[\text{Succ}_1]-\text{Pr}[\text{Succ}_2]+\text{Pr}[\text{Succ}_2]-\frac{1}{2}\right| \\ &\le \left|\text{Pr}[\text{Succ}_1]-\text{Pr}[\text{Succ}_2]\right| +\left|\text{Pr}[\text{Succ}_2]-\frac{1}{2}\right| \\ &\leq \textbf{Adv}_{\text{KEM}}^\text{CPA}(\kappa) +\frac{1}{2} \textbf{Adv}_{\text{DEM}}^\text{SEM}(\kappa) \\ &= \frac{3}{2}\text{negl}(\kappa)\\ &= \text{negl}(\kappa)\end{aligned}

Game 1 即为 PKE‘ 的 CPA game,于是我们知道,对于任意敌手,其赢得 PKE‘ 的 CPA game 的概率与 1/2 都没有显著差别,于是 PKE‘ 是 CPA 安全的。

🔑
在上述证明中,我们使用了
Adv**(κ)=max⁡AAdv*,A*(κ)\textbf{Adv}_{\text{*}}^\text{*}(\kappa) = \max_\mathcal{A} \textbf{Adv}_{\text{*},\mathcal{A}}^\text{*}(\kappa)

ElGamal 加密模式:Efficient PKE

令 GroupGen(1κ)\text{GroupGen}(1^\kappa) 为一个循环群生成算法,输出循环群 G\mathbb{G}、其阶数 qq 和生成元 gg。

正确性. c2=yrm=gxrm=c1xmc_2 = y^rm = g^{xr}m = c_1^xm.

🔑
离散对数问题/假设 (Discrete Logarithm, DL Problem/Assumption).
Pr[(G,q,g)←GroupGen(1κ);x←Zq;y:=gx,x′←A(G,q,g,y):x′=x]=negl(κ)\text{Pr}\left[\begin{matrix}(\mathbb{G},q,g)\leftarrow\text{GroupGen}(1^\kappa);x\leftarrow \mathbb{Z}_q;\\y:=g^x,x'\leftarrow\mathcal{A}(G,q,g,y)\end{matrix}:x'=x\right]=\text{negl}(\kappa)

Computational Diffie-Hellman, CDH Problem/Assumption.

Pr[(G,q,g)←GroupGen(1κ);x←Zq;y←Zq;T←A(G,q,g,gx,gy):T=gxy]=negl(κ)\text{Pr}\left[\begin{matrix}(\mathbb{G},q,g)\leftarrow\text{GroupGen}(1^\kappa);x\leftarrow \mathbb{Z}_q;y\leftarrow\mathbb{Z}_q;\\T\leftarrow\mathcal{A}(G,q,g,g^x,g^y)\end{matrix}:T=g^{xy}\right]=\text{negl}(\kappa)

Decisional Diffie-Hellman, DDH Problem/Assumption. 令 X={Xκ},Y={Yκ}\mathcal{X}=\{\mathcal{X}_\kappa\},\mathcal{Y}=\{\mathcal{Y}_\kappa\},且

Xκ:={(G,q,g)←GroupGen(1κ);a,b,c←Zq:(G,q,g,ga,gb,gc)}Yκ:={(G,q,g)←GroupGen(1κ);a,b←Zq:(G,q,g,ga,gb,gab)}\mathcal{X}_\kappa:=\{(\mathbb{G},q,g)\leftarrow\text{GroupGen}(1^\kappa);a,b,c\leftarrow\mathbb{Z}_q:(\mathbb{G},q,g,g^a,g^b,g^c)\} \\ \mathcal{Y}_\kappa:=\{(\mathbb{G},q,g)\leftarrow\text{GroupGen}(1^\kappa);a,b\leftarrow\mathbb{Z}_q:(\mathbb{G},q,g,g^a,g^b,g^{ab})\}

DDH assumption: X≈cY\mathcal{X}\approx_c \mathcal{Y},即多项式敌手无法区分 X,Y\mathcal{X},\mathcal{Y}。

🌟 问题难度:DL > CDH > DDH. ElGamal 基于 DDH 问题。


ElGamal 模式 CPA 安全. 如果生成的群满足 DDH assumption,那么 ElGamal 模式是 CPA 安全的。

Game 1. (CPA Game) Pr[Succ1]:=Pr[A wins in the Game 1]=Pr[b=b′ in Game 1]\text{Pr}[\text{Succ}_1] := \text{Pr}[\mathcal{A} \text{ wins in the Game 1}]=\text{Pr}[b=b' \text{ in Game 1}].

CA(pk,sk)←Gen(1κ)pk:=((G,q,g),y),sk:=x⟶pk⟵m0,m1choose m0,m1b←{0,1}r←Zqc:=(c1:=gr,c2:=mbyr=mb(gr)x)⟶cA wins iff b′=b⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}(1^\kappa) \\ pk:=((\mathbb{G},q,g),y),sk:=x & \stackrel{pk}{\longrightarrow} \\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ b\leftarrow\{0,1\} \\r\leftarrow\mathbb{Z}_q\\c:=(c_1:=g^r,c_2:={\color{red}m_by^r=m_b(g^r)^x}) & \stackrel{c}{\longrightarrow}\\ \mathcal{A}\text{ wins iff }b'=b & \stackrel{b'}{\longleftarrow}&\text{compute }b'\end{matrix}

Game 2. Pr[Succ2]:=Pr[A wins in the Game 2]=Pr[b=b′ in Game 2]\text{Pr}[\text{Succ}_2] := \text{Pr}[\mathcal{A} \text{ wins in the Game 2}]=\text{Pr}[b=b' \text{ in Game 2}]

CA(pk,sk)←Gen(1κ)pk:=((G,q,g),y),sk:=x⟶pk⟵m0,m1choose m0,m1b←{0,1}r←Zq,r′←Zqc:=(c1:=gr,c2:=mb(gr′))⟶cA wins iff b′=b⟵b′compute b′\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\text{Gen}(1^\kappa) \\ pk:=((\mathbb{G},q,g),y),sk:=x & \stackrel{pk}{\longrightarrow} \\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0,m_1 \\ b\leftarrow\{0,1\} \\r\leftarrow\mathbb{Z}_q,r'\leftarrow \mathbb{Z}_q\\c:=(c_1:=g^r,c_2:={\color{red}m_b(g^{r'})}) & \stackrel{c}{\longrightarrow}\\ \mathcal{A}\text{ wins iff }b'=b & \stackrel{b'}{\longleftarrow}&\text{compute }b'\end{matrix}
Pr[Succ2]=12\text{Pr}[\text{Succ}_2]=\frac{1}{2}

因此,我们可以通过证明如下命题来证明 ElGamal 的 CPA 安全性。

∣Pr[A wins]−12∣=∣Pr[Succ1]−Pr[Succ2]∣≤AdvDDH(κ)=negl(κ)\begin{aligned}\left|\text{Pr}[\mathcal{A}\text{ wins}]-\frac{1}{2}\right|={\color{red}\left|\text{Pr}[\text{Succ}_1]-\text{Pr}[\text{Succ}_2]\right| \leq \textbf{Adv}_\text{DDH}(\kappa)}=\text{negl}(\kappa)\end{aligned}

于是,我们可以写如下规约:

C′A′/CA(G,q,g)←Gen(1κ)a,b,c←Zqg0:=gc,g1:=gabβ←{0,1}⟶(G,q,g),ga,gb,gβpk:=((G,q,g),ga)⟶pk⟵m0,m1choose m0,m1γ←{0,1}c:=(gb,mγgβ)⟶c⟵β′β′=1[γ′=γ]⟵γ′compute γ′\color{darkblue}\begin{matrix}\mathcal{C'} & & \mathcal{A'}/\mathcal{C} & & \mathcal{A}\\ (\mathbb{G},q,g)\leftarrow \text{Gen}(1^\kappa)\\a,b,c\leftarrow \mathbb{Z}_q \\g_0:=g^c,g_1:=g^{ab} \\ \beta \leftarrow \{0,1\} & \stackrel{(\mathbb{G},q,g),g^a,g^b,g_\beta}{\longrightarrow} &pk:=((\mathbb{G},q,g),g^a) & \stackrel{pk}{\longrightarrow} &\\ & & & \stackrel{m_0,m_1}{\longleftarrow}& \text{choose }m_0,m_1\\ & & \gamma\leftarrow\{0,1\}\\& & c:=(g^b,m_\gamma g_\beta) & \stackrel{c}{\longrightarrow} \\ & \stackrel{\beta'}{\longleftarrow}& \beta'=\mathbf{1}[\gamma'=\gamma]& \stackrel{\gamma'}{\longleftarrow} & \text{compute }\gamma'\end{matrix}

当 β=0\beta=0 时,模拟的正好是 Game 2;当 β=1\beta=1 时,模拟的正好是 Game 1;因此

∣Pr[Succ1]−Pr[Succ2]∣=∣Pr[γ′=γ∣β=1]−Pr[γ′=γ∣β=0]∣=∣Pr[β′=1∣β=1]−Pr[β′=1∣β=0]∣=AdvDDH,A′(κ)≤AdvDDH(κ)\begin{aligned}\left|\text{Pr}[\text{Succ}_1]-\text{Pr}[\text{Succ}_2]\right|&=\left|\text{Pr}[\gamma'=\gamma|\beta=1]-\text{Pr}[\gamma'=\gamma|\beta=0]\right|\\&=\left|\text{Pr}[\beta'=1|\beta=1]-\text{Pr}[\beta'=1|\beta=0]\right|\\ &=\textbf{Adv}_{\text{DDH},\mathcal{A}'}(\kappa) \\&\leq\textbf{Adv}_\text{DDH}(\kappa)\end{aligned}

GroupGen 初始化问题.

  1. ✅ Gen\text{Gen}: 选择大素数 p,qp,q 满足 qq 有 κ\kappa 比特,且 q∣(p−1)q|(p-1)(一般可以令 q=2p+1q=2p+1,流程为:选择 qq,选好后判定 2q+12q+1 是否是素数,不是则重来),那么 G\mathbb{G} 是循环群 (Zp∗,⋅)(\mathbb{Z}_p^*,\cdot) 的子群(且该循环群一定有 qq 阶子群,选择 qq 阶子群作为 G\mathbb{G}),然后令 gg 为这个循环群的生成元。
  1. ❌ Genundefined\widetilde{\text{Gen}}: 直接选择 G=(Zq∗,⋅)\mathbb{G}=(\mathbb{Z}_q^*,\cdot) 作为循环群,其中 qq 为 κ\kappa 比特的素数。
💡
如果用第二种方法生成群,则 ElGamal 不是 CPA 安全的。我们可以构造敌手 A\mathcal{A}:
CA(pk,sk)←Genundefined(1κ)pk:=((G,q,g),y),sk:=x⟶pk⟵m0,m1choose m0∈QNRq,m1∈QRqb←{0,1}r←Zqc:=(c1:=gr,c2:=mbyr=mbc1x)⟶cA wins iff b′=b⟵b′b′←Compute(y,c1,c2)\color{darkblue}\begin{matrix}\mathcal{C} & & \mathcal{A} \\ (pk,sk)\leftarrow\widetilde{\text{Gen}}(1^\kappa) \\ pk:=((\mathbb{G},q,g),y),sk:=x & \stackrel{pk}{\longrightarrow} \\ & \stackrel{m_0,m_1}{\longleftarrow} & \text{choose }m_0\in\mathbb{QNR}_q,m_1\in\mathbb{QR}_q \\ b\leftarrow\{0,1\} \\r\leftarrow\mathbb{Z}_q\\c:=(c_1:=g^r,c_2:=m_by^r=m_bc_1^x) & \stackrel{c}{\longrightarrow}\\ \mathcal{A}\text{ wins iff }b'=b & \stackrel{b'}{\longleftarrow}&b'\leftarrow\text{Compute}(y,c_1,c_2)\end{matrix}

其中,判定过程 Compute(y,c1,c2)\text{Compute}(y,c_1,c_2) 为:

  • 若 y∈QRqy\in\mathbb{QR}_q 或 c1∈QRqc_1\in\mathbb{QR}_q,那么 yr=c1x=gxr∈QRqy^r=c_1^x=g^{xr}\in\mathbb{QR}_q,因此 b=1⇔mb∈QRq⇔c2∈QRqb=1\Leftrightarrow m_b\in\mathbb{QR}_q \Leftrightarrow c_2\in\mathbb{QR}_q。即判断 c2∈QRqc_2\in\mathbb{QR}_q 是否成立,若成立返回 1,否则返回 0;
  • 若 y,c1∈QNRqy,c_1\in\mathbb{QNR}_q,那么 yr=c1x=gxr∈QNRqy^r=c_1^x=g^{xr}\in\mathbb{QNR}_q,因此 b=0⇔mb∈QRq⇔c2∈QRqb=0\Leftrightarrow m_b\in\mathbb{QR}_q \Leftrightarrow c_2\in\mathbb{QR}_q。即判断 c2∈QRqc_2\in\mathbb{QR}_q 是否成立,若成立返回 0,否则返回 0。

那么,敌手 A\mathcal{A} 赢的概率是 100%。

🔑
在这个循环群中,判断是否二次剩余只需要看 gtg^t 的系数 tt 是否是奇数即可。
  • tt 为奇数 ⟺\Longleftrightarrow gt∈QNRqg^t\in\mathbb{QNR}_q;
  • tt 为偶数 ⟺gt∈QRq\Longleftrightarrow g^t\in\mathbb{QR}_q;

那这是否和我们证明的 CPA 安全性相悖呢?

如果以 Genundefined\widetilde{\text{Gen}} 构造群,那么判断 (g,ga,gb,T)(g,g^a,g^b,T),敌手只需要返回 1[T∈QRq]\mathbf{1}[T\in\mathbb{QR}_q]。对 DDH 问题中的 X\mathcal{X},敌手返回 1 的概率是 1/2;对 Y\mathcal{Y},敌手返回 1 的概率是 3/4。也就是说,在这种情况下,

AdvDDH≠negl(κ)\textbf{Adv}_\text{DDH}\ne\text{negl}(\kappa)

于是,自然这种情况下 ElGamal 也不是 CPA 安全的。


Decisional Composite Residuosity (DCR).

N=pq=(2p′+1)(2q′+1)N=pq=(2p'+1)(2q'+1) 且 p,q,p′,q′p,q,p',q' 均为素数,其中 p′,q′p',q' 长度为 κ\kappa 比特。 DCR 假设成立当且仅当对于任意 PPT 敌手 A\mathcal{A},在 x←ZN2∗,y←ZNx\leftarrow\mathbb{Z}_{N^2}^*,y\leftarrow\mathbb{Z}_N 下有

AdvDCR,A(κ)=∣Pr[A(N,xN)=1]−Pr[A(N,xN(1+N)y)=1]∣=negl(κ)\textbf{Adv}_{\text{DCR},\mathcal{A}}(\kappa)=\left|\text{Pr}[\mathcal{A}(N,x^N)=1]-\text{Pr}[\mathcal{A}(N,x^N(1+N)^y)=1]\right|=\text{negl}(\kappa)

该假设蕴含着

∣Pr[A(N,xN(1+N)a,a,b)=1]−Pr[A(N,xN(1+N)b,a,b)=1]∣=negl(κ)\left|\text{Pr}[\mathcal{A}(N,x^N(1+N)^a,a,b)=1]-\text{Pr}[\mathcal{A}(N,x^N(1+N)^b,a,b)=1]\right|=\text{negl}(\kappa)

Pallier 加密模式 (Pallier Encryption Scheme).

从 Enc 的过程可以看出,Pallier 的 CPA 安全性完全依赖于 DCR 假设。


TODO: theoretical foundations of Pallier Encryption Scheme.