TCS Lec12总结
1. 私钥加密基础 (Private-Key Encryption)
1.1 场景设定
- 参与者:
- Alice(发送方)、Bob(接收方)共享秘密密钥 $k \in \{0,1\}^*$。
- Eve(敌手)窃听信道,但无法获取 $k$。
- 流程:
Alice 计算 $y = \text{Enc}_k(x)$ → 发送 $y$ → Bob 计算 $x = \text{Dec}_k(y)$。
1.2 有效性定义
- 定义:多项式时间算法对 $(\text{Enc}, \text{Dec})$ 是有效加密方案,当且仅当:
$$ \forall n, k \in \{0,1\}^n, x: \quad \text{Dec}(k, \text{Enc}(k, x)) = x. $$ - 密文长度限制(引理 1):
证明:假设存在 $x$ 使得 $|\text{Enc}_k(x)| < |x|$。由于 $\text{Dec}$ 是确定性算法,其输出仅依赖输入 $(k, y)$。若 $|y| < |x|$,则至多有 $2^{|y|}$ 个可能输出,但明文空间大小 $2^{|x|} > 2^{|y|}$,矛盾。故必有 $|y| \geq |x|$。
2. 完美保密性 (Perfect Secrecy)
2.1 定义
- 完美保密性:对任意 $n, x_0, x_1 \in \{0,1\}^{\ell(n)}$,分布 $Y_0 = \text{Enc}_k(x_0)$ 和 $Y_1 = \text{Enc}_k(x_1)$(密钥 $k \leftarrow \{0,1\}^n$)完全相同。
- 等价表述:在以下实验中,敌手 $\mathcal{A}$ 的成功概率为 $\frac{1}{2}$:
- 采样 $k \leftarrow \{0,1\}^n$.
- $\mathcal{A}(1^n)$ 输出 $x_0, x_1$.
- 随机选择 $b \leftarrow \{0,1\}$, 发送 $y = \text{Enc}_k(x_b)$ 给 $\mathcal{A}$.
- $\mathcal{A}$ 输出 $b'$.
实验输出 $1$ 当且仅当 $b' = b$.
- 等价表述是在说给定任何两个明文,加密后对方无法区分它们的密文。
- 等价表述:在以下实验中,敌手 $\mathcal{A}$ 的成功概率为 $\frac{1}{2}$:
2.2 完美保密性分析
- 关键证明:
$$ \Pr[\mathcal{A} \text{ 成功}] = \Pr[b' = b] = \frac{1}{2}. $$
推导:
由完美保密性,$\Pr[Y = y \mid b = 0] = \Pr[Y = y \mid b = 1] = p(y)$.
由全概率公式:
$$ \Pr[Y = y] = \Pr[b=0] \cdot p(y) + \Pr[b=1] \cdot p(y) = p(y). $$
故 $Y$ 与 $b$ 独立:
$$ \Pr[b=i \mid Y=y] = \frac{\Pr[b=i] \cdot p(y)}{p(y)} = \Pr[b=i] = \frac{1}{2}. $$
因此 $\mathcal{A}$ 无法从 $y$ 获取 $b$ 的信息。
2.3 一次性密码本 (OTP)
- 构造:
- $\text{Enc}_k(x) = k \oplus x$(要求 $|k| = |x| = n$)。
- $\text{Dec}_k(y) = k \oplus y$.
- 完美保密性证明:
对任意 $x_0, x_1, y$:
$$ \Pr[\text{Enc}_k(x_0) = y] = \Pr[k = x_0 \oplus y] = 2^{-n}, $$
$$ \Pr[\text{Enc}_k(x_1) = y] = \Pr[k = x_1 \oplus y] = 2^{-n}. $$
故分布相同。
2.4 密钥长度限制(定理 1)
- 定理:对任意完美保密加密方案,有 $\ell_p(n) \leq n$(明文长度 $\leq$ 密钥长度)。
- 证明:
固定 $n$,设 $\ell = \ell_p(n)$。- 取 $x_0 = 0^\ell$,其密文分布 $Y_0$ 的支撑集 $S_0$ 满足 $|S_0| \leq 2^n$(因密钥仅 $2^n$ 种)。
- 由完美保密性,对任意 $x_1$ 和 $k$,$\text{Enc}_k(x_1) \in S_0$。
- 对固定 $k$,集合 $I_k = \{ y \mid y = \text{Enc}_k(x) \text{ for some } x \}$ 的大小至少为 $2^\ell$(因明文空间大小为 $2^\ell$)。
- 因 $I_k \subseteq S_0$,故 $2^\ell \leq |S_0| \leq 2^n$,即 $\ell \leq n$.
3. 计算保密性与伪随机生成器 (PRG)
3.1 计算保密性定义
- 实验(敌手为 PPT 算法 $\mathcal{A}$):
- 采样 $k \leftarrow \{0,1\}^n$.
- $\mathcal{A}(1^n)$ 输出等长明文 $x_0, x_1$.
- 随机选择 $b \leftarrow \{0,1\}$,发送 $y = \text{Enc}_k(x_b)$ 给 $\mathcal{A}$.
- $\mathcal{A}$ 输出 $b'$.
实验输出 $1$ 当且仅当 $b' = b$.
- 定义:方案是计算保密的,若 $\forall$ PPT $\mathcal{A}$,$\exists$ 可忽略函数 $\text{negl}$ 使得:
$$ \Pr[\mathcal{A} \text{ 成功}] \leq \frac{1}{2} + \text{negl}(n). $$
3.2 伪随机生成器 (PRG)
- 定义:多项式时间函数 $G: \{0,1\}^n \to \{0,1\}^{\ell(n)}$ 是 PRG,若:
- $\forall s \in \{0,1\}^n: |G(s)| = \ell(n)$.
- $\forall$ PPT 区分器 $\mathcal{D}$,有:
$$ \left| \Pr_{s \leftarrow \{0,1\}^n} [\mathcal{D}(G(s)) = 1] - \Pr_{r \leftarrow \{0,1\}^{\ell(n)}} [\mathcal{D}(r) = 1] \right| \leq \text{negl}(n). $$
- 密码学 PRG 猜想:存在 PRG 满足 $\ell(n) = n^a$($\forall a \in \mathbb{N}$).
3.3 基于 PRG 的加密方案
- 构造:
- $\text{Enc}_k(x) = x \oplus G(k)$(要求 $|G(k)| = |x|$)。
- $\text{Dec}_k(y) = y \oplus G(k)$.
- 安全性证明(定理 2):
假设 PRG 安全。归约:若存在 PPT 敌手 $\mathcal{A}$ 攻破加密方案(即 $\Pr[\mathcal{A} \text{成功}] \geq \frac{1}{2} + \frac{1}{\text{poly}(n)}$),则构造区分器 $\mathcal{D}_{\text{PRG}}$ 攻破 PRG:- $\mathcal{D}_{\text{PRG}}(w)$:
- 运行 $\mathcal{A}(1^n)$ 获得 $x_0, x_1$.
- 随机选 $b \leftarrow \{0,1\}$,计算 $y = w \oplus x_b$.
- 发送 $y$ 给 $\mathcal{A}$,获其输出 $b'$.
- 若 $b' = b$ 输出 $1$,否则输出 $0$.
分析:
- 若 $w \leftarrow \{0,1\}^{\ell(n)}$(真随机):则 $y$ 是 $x_b$ 的 OTP 密文,故 $\Pr[\mathcal{D}_{\text{PRG}} \text{ 输出 } 1] = \Pr[\mathcal{A} \text{ 成功}] = \frac{1}{2}$.
- 若 $w = G(s)$(PRG 输出):则 $\Pr[\mathcal{D}_{\text{PRG}} \text{ 输出 } 1] = \Pr[\mathcal{A} \text{ 成功}] \geq \frac{1}{2} + \frac{1}{\text{poly}(n)}$.
矛盾:区分优势为 $\frac{1}{\text{poly}(n)}$(非可忽略),与 PRG 安全假设矛盾。
- $\mathcal{D}_{\text{PRG}}(w)$:
4. CPA 安全与伪随机函数 (PRF)
4.1 CPA 安全定义
- 实验(敌手可访问加密预言机):
实验参与者
- 挑战者(Challenger):持有密钥 $k$,执行加密操作。
- 敌手 $\mathcal{A}$:PPT 算法,可访问加密预言机。
实验步骤
初始化(Setup):
- 挑战者生成密钥 $k \leftarrow \{0,1\}^n$(安全参数 $n$)。
预言机访问阶段(Oracle Access Phase):
- $\mathcal{A}$ 输入 $1^n$,获得对加密预言机 $\text{Enc}_k(\cdot)$ 的自适应访问权。
- $\mathcal{A}$ 可提交任意明文 $x$,预言机返回密文 $y = \text{Enc}_k(x)$。
- 关键:敌手可基于之前的查询结果动态选择后续查询(例如:根据 $y_1$ 决定 $x_2$)。
挑战阶段(Challenge Phase):
- $\mathcal{A}$ 输出一对等长明文 $x_0, x_1$(相同长度 $\ell$)。
- 挑战者随机选择 $b \leftarrow \{0,1\}$,计算挑战密文 $y^* = \text{Enc}_k(x_b)$ 并发送给 $\mathcal{A}$。
继续访问阶段(Continued Oracle Access):
- $\mathcal{A}$ 仍可访问 $\text{Enc}_k(\cdot)$,但禁止查询 $x_0$ 或 $x_1$(避免直接比较)。
- 敌手可加密其他任意明文(如 $x_2 \neq x_0, x_1$)。
猜测阶段(Guess Phase):
- $\mathcal{A}$ 输出比特 $b' \in \{0,1\}$,猜测 $y^*$ 对应 $x_0$ 或 $x_1$。
实验结果:
- 若 $b' = b$,输出 1(敌手成功);否则输出 0(敌手失败)。
- 实验设计思路
- 敌手(如网络窃听者)可能通过合法或非法手段获取部分明文的加密结果
- 希望即使敌手能观察任意明文的密文,也应无法破解从未见过的挑战密文(Challenge Ciphertext)的机密性。
- 定义:方案是 CPA 安全的,若 $\forall$ PPT $\mathcal{A}$,$\exists$ $\text{negl}$ 使得:
$$ \Pr[\mathcal{A} \text{ 成功}] \leq \frac{1}{2} + \text{negl}(n). $$
4.2 伪随机函数 (PRF)
- 定义:函数族 $F_k: \{0,1\}^n \to \{0,1\}^n$ 是 PRF,若 $\forall$ PPT 区分器 $\mathcal{D}$,有:
$$ \left| \Pr_{k \leftarrow \{0,1\}^n} \left[ \mathcal{D}^{F_k(\cdot)}(1^n) = 1 \right] - \Pr_{f \leftarrow \text{Rand}(n)} \left[ \mathcal{D}^{f(\cdot)}(1^n) = 1 \right] \right| \leq \text{negl}(n), $$
其中 $\text{Rand}(n)$ 是所有函数 $\{0,1\}^n \to \{0,1\}^n$ 的集合。
4.3 基于 PRF 的 CPA 安全加密
- 构造(随机 IV 模式):
- $\text{Enc}_k(x)$:
- 随机选 $r \leftarrow \{0,1\}^n$.
- 计算 $s = F_k(r) \oplus x$.
- 输出密文 $y = \langle r, s \rangle$.
- $\text{Dec}_k(\langle r, s \rangle)$:输出 $x = F_k(r) \oplus s$.
- $\text{Enc}_k(x)$:
4.4 CPA 安全性证明
步骤 1:分析真随机函数方案 $\widetilde{\Pi}$
设敌手 $\mathcal{A}$ 在 CPA 实验中做 $q(n)$ 次加密查询,使用随机数 $r_1, \dots, r_q$。- 事件 Repeat:挑战密文中的 $r_c$ 在 $\{r_1, \dots, r_q\}$ 中出现。
$$ \Pr[\text{Repeat}] \leq \frac{q(n)}{2^n}. $$ - 事件 No Repeat:此时 $F_k(r_c)$ 对敌手完全随机(因 $f$ 是真随机函数),故:
$$ \Pr[\mathcal{A} \text{ 成功} \mid \text{No Repeat}] = \frac{1}{2}. $$ - 总成功概率:
$$ \Pr[\mathcal{A}_{\widetilde{\Pi}} \text{ 成功}] \leq \Pr[\text{Repeat}] + \Pr[\mathcal{A} \text{ 成功} \mid \text{No Repeat}] \leq \frac{q(n)}{2^n} + \frac{1}{2}. $$
- 事件 Repeat:挑战密文中的 $r_c$ 在 $\{r_1, \dots, r_q\}$ 中出现。
步骤 2:归约到 PRF 安全
构造区分器 $\mathcal{D}$:- $\mathcal{D}^{\mathcal{O}(\cdot)}(1^n)$:
- 模拟 $\mathcal{A}$ 的 CPA 实验:
- 当 $\mathcal{A}$ 查询 $\text{Enc}(x)$:
选 $r \leftarrow \{0,1\}^n$,查询 $s' = \mathcal{O}(r)$,返回 $\langle r, s' \oplus x \rangle$. - 当 $\mathcal{A}$ 输出挑战明文 $x_0, x_1$:
选 $b \leftarrow \{0,1\}, r_c \leftarrow \{0,1\}^n$,查询 $s' = \mathcal{O}(r_c)$,返回 $\langle r_c, s' \oplus x_b \rangle$.
- 当 $\mathcal{A}$ 查询 $\text{Enc}(x)$:
- 若 $\mathcal{A}$ 输出 $b' = b$,则输出 $1$;否则输出 $0$.
分析:
- 模拟 $\mathcal{A}$ 的 CPA 实验:
- 若 $\mathcal{O} = F_k$(伪随机函数):则 $\mathcal{A}$ 的视图与方案 $\Pi$ 中相同,故:
$$ \Pr[\mathcal{D}^{F_k(\cdot)} = 1] = \Pr[\mathcal{A}_{\Pi} \text{ 成功}]. $$ - 若 $\mathcal{O} = f$(真随机函数):则 $\mathcal{A}$ 的视图与方案 $\widetilde{\Pi}$ 中相同,故:
$$ \Pr[\mathcal{D}^{f(\cdot)} = 1] = \Pr[\mathcal{A}_{\widetilde{\Pi}} \text{ 成功}] \leq \frac{1}{2} + \frac{q(n)}{2^n}. $$
矛盾:若 $\mathcal{A}_{\Pi}$ 成功概率显著 $> \frac{1}{2}$,则:
$$ \left| \Pr[\mathcal{D}^{f(\cdot)} = 1] - \Pr[\mathcal{D}^{F_k(\cdot)} = 1] \right| \geq \frac{1}{\text{poly}(n)}, $$
与 PRF 安全假设矛盾。
- $\mathcal{D}^{\mathcal{O}(\cdot)}(1^n)$:
TCS Lec12总结
https://blog.xiaoaojianghu.fun/posts/c3643c00.html