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κ)pkK0Kb{0,1}(K1,ψ)Encap(pk)K:=KbK,ψreturn bbcompute 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 安全性。

CA/CA(pk,sk)Gen(1κ)pkpkK0,K1K0,K1Kb{0,1}ψEnc(pk,Kb)ψ(K1,ψ)A wins iff b=bbbcompute 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,ACPA(κ)=Pr[b=1b=1]Pr[b=1b=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) 定义如下:

CAKKm0,m1choose m0,m1cEnc(K,mb)creturn bbcompute 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κ)pkm0,m1choose m0,m1(ψ,c)Enc(pk,m)(ψ,c)return bbcompute 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κ)pkm0,m1choose m0,m1(K,ψ)KEM.Encap(pk)cDEM.Enc(K,m0)(ψ,c)return bbcompute 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κ)pkm0,m1choose m0,m1(K,ψ)KEM.Encap(pk)KKcDEM.Enc(K,m0)(ψ,c)return bbcompute 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κ)pkm0,m1choose m0,m1(K,ψ)KEM.Encap(pk)KKcDEM.Enc(K,m1)(ψ,c)return bbcompute 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κ)pkm0,m1choose m0,m1(K,ψ)KEM.Encap(pk)cDEM.Enc(K,m1)(ψ,c)return bbcompute 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 安全性。

CA/CA(pk,sk)Gen(1κ)pkpkm0,m1m0,m1choose m0,m1K0Kb{0,1}(K1,ψ)Encap(pk)K:=KbK,ψcEnc(K,m0)(ψ,c)bbcompute 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=1b=0]Pr[b=1b=1]= AdvKEM,ACPA(κ) 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_0m1m_1),直接调用即可,在这里略去过程。

于是,综上所述,

AdvPKE,ACPA(κ)=Pr[ExpPKE,ACPA-1(κ)=1]Pr[ExpPKE,ACPA-0(κ)=1]=i=24Pr[Game i=1]Pr[Game i1=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κ)pkm0,m1choose m0,m1b{0,1}(K,ψ)KEM.Encap(pk)cDEM.Enc(K,mb)(ψ,c)A wins iff b=bbcompute 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κ)pkm0,m1choose m0,m1b{0,1}(K,ψ)KEM.Encap(pk)KKcDEM.Enc(K,mb)(ψ,c)A wins iff b=bbcompute 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 安全性。

CA/CA(pk,sk)Gen(1κ)pkpkm0,m1choose m0,m1K0Kβ{0,1}(K1,ψ)Encap(pk)K:=KβK,ψb{0,1}cEnc(K,mb)(ψ,c)ββ:=1[b=b]bcompute 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]1212AdvDEMSEM(κ)|\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 安全性。

CA/CAKK(pk,sk)Gen(1κ)pkm0,m1m0,m1choose m0,m1b{0,1}cEnc(K,mb)c(K,ψ)=Encap(pk)(ψ,c)bbcompute 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]1212AdvDEMSEM(κ)\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]12Pr[Succ1]Pr[Succ2]+Pr[Succ2]12AdvKEMCPA(κ)+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**(κ)=maxAAdv*,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κ);xZq;y:=gx,xA(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κ);xZq;yZq;TA(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,cZq:(G,q,g,ga,gb,gc)}Yκ:={(G,q,g)GroupGen(1κ);a,bZq:(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: XcY\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:=xpkm0,m1choose m0,m1b{0,1}rZqc:=(c1:=gr,c2:=mbyr=mb(gr)x)cA wins iff b=bbcompute 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:=xpkm0,m1choose m0,m1b{0,1}rZq,rZqc:=(c1:=gr,c2:=mb(gr))cA wins iff b=bbcompute 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}

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

CA/CA(G,q,g)Gen(1κ)a,b,cZqg0:=gc,g1:=gabβ{0,1}(G,q,g),ga,gb,gβpk:=((G,q,g),ga)pkm0,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(p1)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:=xpkm0,m1choose m0QNRq,m1QRqb{0,1}rZqc:=(c1:=gr,c2:=mbyr=mbc1x)cA wins iff b=bbbCompute(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) 为:

  • yQRqy\in\mathbb{QR}_qc1QRqc_1\in\mathbb{QR}_q,那么 yr=c1x=gxrQRqy^r=c_1^x=g^{xr}\in\mathbb{QR}_q,因此 b=1mbQRqc2QRqb=1\Leftrightarrow m_b\in\mathbb{QR}_q \Leftrightarrow c_2\in\mathbb{QR}_q。即判断 c2QRqc_2\in\mathbb{QR}_q 是否成立,若成立返回 1,否则返回 0;
  • y,c1QNRqy,c_1\in\mathbb{QNR}_q,那么 yr=c1x=gxrQNRqy^r=c_1^x=g^{xr}\in\mathbb{QNR}_q,因此 b=0mbQRqc2QRqb=0\Leftrightarrow m_b\in\mathbb{QR}_q \Leftrightarrow c_2\in\mathbb{QR}_q。即判断 c2QRqc_2\in\mathbb{QR}_q 是否成立,若成立返回 0,否则返回 0。

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

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

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

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

AdvDDHnegl(κ)\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,qp,q,p',q' 均为素数,其中 p,qp',q' 长度为 κ\kappa 比特。 DCR 假设成立当且仅当对于任意 PPT 敌手 A\mathcal{A},在 xZN2,yZNx\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.