可证明安全理论
公钥加密算法的安全性定义
基本概念
-
安全参数与多项式时间
安全参数 λ(Security Parameter):衡量攻击者破解密码方案的难度。λ越大,系统越安全。
例子 :λ=128时,攻击者至少需要2¹²⁸步操作才能破解(相当于宇宙中原子总数的量级)。
安全参数的两种类型 :
- 计算安全参数 :破解所需的计算量。例如分解大整数n的难度≈2logn,若n是2048位,计算量≈21024。
- 统计安全参数 :攻击成功的概率。例如暴力破解128位密钥的概率是21281,几乎为0。
λ的多项式大小:存在常数c和某个λ’,当λ足够大时,任何多项式函数poly(λ) ≤ λᶜ。
例如,poly(λ)=λ1.5 或$ 4λ^{10}+λ^3+1$,它们最终都会被某个λᶜ(如λ¹¹)超过。
在密码学中,多项式增长(即λ^n)被视为“可接受”,指数增长(如2^λ)则不可接受。
多项式时间算法:算法运行时间是输入长度 的多项式,而非输入数值 的多项式。
输入长度 :例如输入是数字x,其二进制位数是log₂|x|(即输入长度)。
例子 :
- 若输入是n位二进制数,算法运行时间是O(n³),则属于多项式时间。
- 若运行时间是O(2ⁿ),则是指数时间(不可行)。
多项式时间算法的两种类型 :
- 确定性多项式时间(DPT) :算法每一步确定,无随机性。例如计算哈希值。
- 概率性多项式时间(PPT) :算法可抛硬币(随机选择),但运行时间仍是多项式。例如生成随机密钥。
很好的类比:
- 安全参数λ :像保险箱的密码位数。位数越多(λ越大),小偷试遍所有组合(2^λ次)越难。
- 计算安全 :小偷需要撬开保险箱的时间(计算量)。
- 统计安全 :小偷蒙对密码的概率(1/2^λ)。
- 多项式时间 :快递员送n个包裹,时间与n²成正比(可接受);若时间与2ⁿ成正比(n=100时比宇宙年龄还长),则不可接受。
-
可忽略概率和压倒性概率
可忽略概率(Negligible Probability):一种“小到可以忽略不计”的概率,记作negl(λ)。当安全参数λ增大时,它下降的速度比任何多项式函数的倒数都快。
即对任意多项式poly(λ),存在某个λ’,当λ足够大时,negl(λ) ≤ 1/poly(λ)。
- negl(λ) = 2−λ:λ=128时,概率是1/2¹²⁸(比地球上的沙子总数分之一还小)。
- negl(λ) = λ−λ:当λ=100时,概率是1/100¹⁰⁰(比宇宙中的原子数分之一还小)。
密码学中,攻击成功的概率如果是可忽略的,就认为方案是安全的。比如破解密钥的概率是2⁻¹²⁸,相当于“不可能”。
压倒性概率(Overwhelming Probability):压倒性概率是可忽略概率的补集,即 overwhelm(λ) = 1 - negl(λ)
。当λ足够大时,它无限接近1。
overwhelm(λ) =$ 1 - 2^{-\lambda}$:当λ=256时,概率是1 - 1/2²⁵⁶,小数点后76个9。
密码学中,协议成功的概率如果是压倒性的,就认为它“几乎总是有效”。比如密钥协商成功的概率是1 - 2⁻¹²⁸。
非可忽略概率(Non-Negligible):如果存在某个多项式poly(λ),使得概率 > 1/poly(λ),则称为非可忽略概率。
它虽然可能很小,但下降速度不够快,实际中可能被攻击者利用。就像“买彩票中头奖”的概率。虽然很小(比如1/1亿),但如果攻击者尝试1亿次,可能成功一次。
-
布尔不等式
设 E1, …,Ep 为 p 个事件(它们之间可以任意相关), 则Pr[ E1 ∨ … ∨ Ep ] ≤ Pr[ E1 ] + … + Pr[ Ep ] 。
想象你有多个可能发生的事件(比如抛硬币正面、下雨等),不管它们之间有没有关联,其中至少一个事件发生的概率,不会超过每个事件单独发生概率的总和。例如,事件A有10%的概率,事件B有20%的概率,那么至少发生A或B的概率最多是30%(实际可能更低,比如两者有重叠时)。
- **推论1(多次小概率事件):**假设你重复做某件事多项式次(比如λ²次,λ是安全参数),每次失败的概率都极低(可忽略,比如1/2^λ)。那么,即使尝试很多次,至少失败一次的概率仍然极低。
- **推论2(多次高概率事件):**如果某件事每次成功的概率极高(压倒性概率,比如1 - 1/2^λ),那么重复多项式次后,所有次都成功的概率仍然极高。
-
全概率公式
若事件 A1, A2, … , 𝐴𝑛 构成一个完备事件组, 即它们两两互不相容,且其和为全集, 且都有正概率,则对任意一个事件 B, 有如下公式成立:𝑃(𝐵) = 𝑃 (𝐵 ∧ 𝐴1) + 𝑃 (𝐵 ∧ 𝐴2) + ⋯ + 𝑃 (𝐵 ∧ 𝐴𝑛)= 𝑃 (𝐵 |𝐴1) 𝑃 (𝐴1) + 𝑃 (𝐵 |𝐴2) 𝑃 (𝐴2) + ⋯ + 𝑃 (𝐵 |𝐴𝑛) 𝑃(𝐴𝑛)此公式即为全概率公式。
特别地,对于任意两随机事件A和B, 有如下成立: 𝑃 (𝐵) = 𝑃 (𝐵|𝐴) 𝑃(𝐴) + 𝑃 (𝐵|¬𝐴) P(¬𝐴)其中A和¬𝐴为对立事件。
贝叶斯公式:设 A、 B为两个事件,则𝑃 (A⋀𝐵) = 𝑃 (A|𝐵) 𝑃(B)
-
可证明安全性
通俗解释:
想象你要设计一个防盗保险箱,你必须先明确:(精确刻画攻击者(敌手)的能力)
- 小偷能拿到什么信息? (比如保险箱的外观、锁的类型,对应密码学中的“公开参数”或“公钥”)。
- 小偷有什么工具? (比如他只能用普通电钻,不能带激光切割机;对应密码学中“敌手只能在多项式时间内计算”,即不能暴力穷举)。
- 小偷能怎么动手? (比如只能偷看保险箱周围,不能直接撬锁;对应“被动攻击”或“主动攻击”等安全模型)。
明确你要保护什么,比如:(精确刻画安全目标)
- 保险箱里的东西绝对保密 (对应加密算法的“保密性”)。
- 保险箱不能被伪造 (对应数字签名的“不可伪造性”)。
公钥加密算法
通过公钥加密算法进行信息传输的流程:
⼀个公钥加密算法 (public-key encryption) PKE 包含三个PPT(概率多项式时间)算法 (Gen, Enc, Dec):
- 密钥⽣成算法 (PK, SK) ← Gen(1λ): ⼀般为概率性算法,生成钥匙的过程可能需要随机性
- 加密算法 C ← Enc(PK, M): M ∈ M ,其中 M 为消息空间
- 解密算法 M’← Dec(SK, C):⼀般为确定性算法(同一把私钥和密文,结果永远一致), M’ ∈ M ∪ {⊥},其中 ⊥ 代表解密失败
正确性要求 (correctness):
对于 ∀ (PK, SK) ← Gen(1λ), ∀ M ∈ M, ∀ C ← Enc(PK, M), ⼀定有Dec(SK, C) = M
按照密码算法/协议 ∏ 的X-Y安全定义模板来分析公钥加密算法:
-
敌⼿攻击能力 (以被动攻击的敌⼿为例)
-
运行时间:概率多项式时间
-
输入:公钥PK和在公开信道中传输的密文C
-
攻击方式:被动攻击
-
安全目标(刻画不希望该密码算法被攻破目标)
- SK-hiding (SKH) 安全目标:如果 output = SK,则攻破该⽬标
- Plaintext-hiding(PH ) 安全⽬标: 即如果 output = M , 则攻破该⽬标
- Plaintext- first- bit- hiding ( PFbH)安全⽬标: 即如果 output = M[1](密文的第一bit信息) , 则攻破该⽬标
公钥加密算法的 SKH/PH/PFbH-PA安全性 定义:任意概率多项式时间敌⼿在PA安全模型中攻破SKH/PH/PFbH安全⽬标的概率是可忽略的。
しかし、即使加密算法满足了上述三种安全目标也并不能真正保证加密的安全性:
-
加密算法Enc(PK, M) =M:
从 (PK, C) 中难以恢复出 SK, 因此该算法满⾜SKH-PA安全性定义。但是该加密算法显然是不安全的,因为得到的密文和明文一致
-
Enc(PK, M) = (C, M[1]):
从 (PK, C) 中难以恢复出整个 M , 因此该算法满⾜PH-PA安全性定义。但是该加密算法泄漏了 M的第⼀⽐特 M[1] , 显然是不安全的。
-
Enc(PK, M) = (C, M[2]):
从 (PK, C) 中难以恢复出 M[1], 因此该算法满⾜PFbH-PA安全性定义。但是该加密算法泄漏了 M的第⼆⽐特 M[2] , 显然是不安全的。
下面介绍能够衡量公钥加密算法安全的方式:IND-CPA安全性
公钥加密算法IND-CPA安全性
首先,挑战者通过密钥生成算法生成公私钥,并将公钥提供给敌手;然后敌手提供两个已知明文M0和M1给挑战者用于加密;挑战者会随机选取M0或者是M1去加密(这里用b的取值来表示选哪个),将得到的密文C*提供给敌手;最后敌手根据C*和公钥判断挑战者加密的到底是M0还是M1。
-
敌手的CPA攻击能力(选择明文攻击)
- 运行时间:概率多项式时间
- 输入:公钥PK和在公开信道中传输的密文C*
- 攻击方式:选择明文攻击,即敌手可以提供/决定/影响加密使用的明文
-
IND安全目标(不可区分性)
敌手无法区分密文C*到底是由M0还是M1加密而来,即如果 output = b, 则攻破该⽬标。
-
公钥加密算法的 IND-CPA安全性定义 :
任意概率多项式时间敌⼿在CPA安全模型中攻破 IND 安全⽬标的优势(advantage) 是可忽略的,也即∣Pr[output=b]−21∣=negl(𝜆)。这是因为敌手如果随便猜一个那猜中的概率也是21,所以要考虑优势这一块。
-
等价定义:
任意概率多项式时间敌⼿在CPA安全模型中攻破IND安全⽬标的优势
∣Pr[output=∗∣b=0]−Pr[output=∗∣b=1]∣,其中*可取1或0
是可忽略的。
-
可以通过反证法证明公钥加密算法的 IND-CPA安全性 ⇒ SKH-PA安全性、PH-PA安全性、PFbH-PA安全性。IND-CPA是公钥加密算法的基本安全性要求,其安全性可以保证公钥PK和密⽂C隐藏:私钥SK,明⽂M ,明⽂ M的第⼀⽐特M[1],明⽂M的任⼀⽐特M[i], 明⽂M的校验值 M[1] ⊕ M[2] ⊕ … ⊕ M[n], …
公钥加密算法的IND-mCPA安全性
-
敌手的mCPA攻击能力(多挑战-选择明文攻击)
- 运行时间:概率多项式时间
- 输入:公钥PK和在公开信道中传输的多项式个密文C(j)∗
- 攻击方式:选择明文攻击,即敌手可以提供/决定/影响加密使用的多项式个明文
-
IND安全目标(不可区分性)
敌手无法区分密文C(j)∗到底是由M0(j)还是M1(j)加密而来,即如果 output = b, 则攻破该⽬标。
-
公钥加密算法的 IND-mCPA安全性定义 :
任意概率多项式时间敌⼿在mCPA安全模型中攻破 IND 安全⽬标的优势(advantage) 是可忽略的,也即∣Pr[output=b]−21∣=negl(𝜆)。
IND-mCPA实际上与IND-CPA等价,由IND-mCPA⇒IND-CPA是显然的,下面采用混合论证来说明IND-CPA⇒IND-mCPA
首先,
ElGamal 加密算法的安全性证明
离散对数问题
**定义:**对于a∈G和b∈〈a〉,若b = aˣ,则x称为b相对于a的离散对数,记为DLOGₐ(b)。
x的范围为{0, 1, …, ord(a)-1}。
数字签名算法的EUF-CMA安全
作业答案供参考
HM1
Solution1
解密步骤:
由 $$c_1^x = (g^y)^x = g^{xy}$$,则
- 若 $$c_1^x = c_2$$,则明文为 $$0$$(因为此时 $$c_2 = h^y = g^{xy}$$)。
- 若 $$c_1^x \neq c_2$$,则明文为 $$1$$(此时 $$c_2 = g^z$$,且 $$z$$ 独立于 $$y$$,故 $$g^z \neq g^{xy}$$ 的概率极高)。
正确性分析:
- 当 $$b = 0$$ 时,$$c_2 = h^y = g^{xy}$$,必然满足 $$c_1^x = c_2$$。
- 当 $$b = 1$$ 时,$$c_2 = g^z$$,若 $$z \neq xy \mod q$$(概率为 $$1 - \frac{1}{q}$$),则 $$c_1^x \neq c_2$$。由于 $$q$$ 为大素数,$$\frac{1}{q}$$ 可忽略。
CPA 安全性证明:
假设存在多项式时间敌手 $$\mathcal{A}$$ 能以不可忽略的优势 $$\epsilon$$ 攻破该加密方案的 CPA 安全性。
安全性证明步骤如下:
\mathcal{D}$$ 接收 DDH 实例 $$(g, g^a, g^b, T)$$,需判断 $$T = g^{ab}$$ 或 $$T = g^c$$(随机)。$$\mathcal{D}$$ 生成公钥 $$pk = (G, q, g, h = g^a)$$。私钥 $$x = a$$,但 $$\mathcal{D}$$ 并不知道 $$a$$。当 $$\mathcal{A}$$ 提交挑战比特 $$b_0 = 0$$ 和 $$b_1 = 1$$ 时,$$\mathcal{D}$$ 构造挑战密文为 $$(c_1, c_2) = (g^b, T)$$。$\mathcal{D}$ 将公钥 $pk$ 和挑战密文 $(c_1, c_2)$ 发送给 $\mathcal{A}$$。$$\mathcal{A}$ 输出猜测结果 $$b'$$(认为密文对应 $$b' \in \{0, 1\}$$)。
- 若 $$\mathcal{A}$$ 猜测 $$b' = 0$$,则 $$\mathcal{D}$$ 判定 $$T = g^{ab}$$(即 DDH 元组为真)。
- 若 $$\mathcal{A}$$ 猜测 $$b' = 1$$,则 $$\mathcal{D}$$ 判定 $$T = g^c$$(即随机元组)。
则
- 当 $$T = g^{ab}$$ 时,挑战密文为 $$(g^b, g^{ab}) = (g^b, h^b)$$,对应加密 $$b = 0$$。
- 当 $$T = g^c$$ 时,挑战密文为 $$(g^b, g^c)$$,对应加密 $$b = 1$$。
$$\mathcal{D}$$ 的成功概率与 $$\mathcal{A}$$ 的优势相同。若 $$\mathcal{A}$$ 的优势不可忽略,则 $$\mathcal{D}$$ 可破解 DDH 假设,矛盾。因此在 DDH 问题困难的假设下,该加密方案是 CPA 安全的。
### Solution2
**e次根问题困难$\Rightarrow$Plain RSA满足PH-PA安全**:
假设存在多项式时间敌手 $A$ 能以不可忽略概率 $\epsilon$ 攻破PH-PA安全,即:
\Pr[A(N, e, C) = M] = \epsilon
构造算法 $B$ 解决e次根问题:输入为$(N, e, C)$,其中 $C = M^e \mod N$,$M \xleftarrow{R} \mathbb{Z}_N^*$。随后调用 $A(N, e, C)$ 得到输出 $M'$。若 $M'^e \equiv C \mod N$,则返回 $M'$,否则失败。
若 $A$ 成功,则 $B$ 直接解决e次根问题。成功概率满足 $\Pr[B \text{ 成功}] = \Pr[A \text{ 成功}] = \epsilon$。根据e次根问题的困难性假设,$\epsilon$ 必为可忽略,矛盾。故Plain RSA满足PH-PA安全。
---
**Plain RSA满足PH-PA安全$\Rightarrow$e次根问题困难:**
假设存在多项式时间算法 $B$ 能以不可忽略概率 $\delta$ 解决e次根问题,即:
\Pr[B(N, e, C) = M] = \delta
构造敌手 $A$ 攻破PH-PA安全:输入为公钥 $(N, e)$ 和密文 $C = M^e \mod N$。随后调用 $B(N, e, C)$ 得到输出 $M'$。
若 $B$ 成功,则 $A$ 直接恢复明文 $M$。成功概率满足 $\Pr[A \text{ 成功}] = \Pr[B \text{ 成功}] = \delta$。根据PH-PA安全性假设,$\delta$ 必为可忽略,矛盾。故e次根问题困难。
### Solution3
构造一个多项式时间敌手 $A$ 如下:
+ 敌手 $A$ 选择两个不同明文 $m_0, m_1 \in \mathbb{Z}_N^*$,满足 $m_0 \neq m_1$,然后将 $(m_0, m_1)$ 提交给挑战者
+ 挑战者收到挑战密文 $c = Enc(pk, m_b) = m_b^e \mod N$,计算 $c_0 = m_0^e \mod N$。若 $c_0 = c$,输出 $b' = 0$;否则输出 $b' = 1$
对于该加密算法而言:
\Pr[b’ = b] =
\begin{cases}
1 & \text{若 } c = m_0^e \mod N \
1 & \text{若 } c = m_1^e \mod N
\end{cases}
因此敌手优势为:
\left| \Pr[\text{IND-CPA}(A) = 1] - \frac{1}{2} \right| = \left| 1 - \frac{1}{2} \right| = \frac{1}{2}
由于敌手 $A$ 具有不可忽略的优势 $\frac{1}{2}$,Plain RSA加密方案不满足IND-CPA安全。
### Solution4
假设存在一个公钥加密方案 $\Pi = (\text{Gen}, \text{Enc}, \text{Dec})$,满足:对任意PPT攻击者 $\mathcal{A}$,存在可忽略函数 $\text{negl}(\cdot)$,使得:
$$\left| \Pr[\text{CPA}_{\mathcal{A},\Pi}(1^\lambda) = 1] - \frac{1}{2} \right| \leq \text{negl}(\lambda)$$。且对于安全参数 $\lambda$,密文长度为 $k = O(\log \lambda)$。
对于攻击者 $\mathcal{A}$,其输入为公钥 $pk$,提交挑战明文 $m_0 = 0$ 和 $m_1 = 1$。请求加密 $m_0$ 多项式次(如 $T = \lambda^c$ 次),得到密文集 $\mathcal{C}_0 = \{\text{Enc}(pk, 0)\}_{i=1}^T$;请求加密 $m_1$ 同样次数,得到密文集 $\mathcal{C}_1 = \{\text{Enc}(pk, 1)\}_{i=1}^T$。
最后接收挑战密文 $c^* = \text{Enc}(pk, m_b)$,其中 $b \in \{0,1\}$。若 $c^* \in \mathcal{C}_0$,输出 $b' = 0$;否则,输出 $b' = 1$。
- 当 $b=0$ 时:$c^*$ 服从 $\mathcal{D}_0$,则 $c^* \in \mathcal{C}_0$ 的概率为:
$$\Pr[c^* \in \mathcal{C}_0 \mid b=0] \geq 1 - \left(1 - \frac{1}{\text{poly}(\lambda)}\right)^{\text{poly}(\lambda)} \approx 1 - e^{-1} \approx 0.63.
- 当 b=1 时:c∗ 服从 D1,若 D0 和 D1 的统计距离 Δ(D0,D1) 不可忽略,则存在某些 c 使得 c∈/C0 但 c∈C1,从而 Pr[c∗∈/C0∣b=1] 不可忽略。
攻击者优势:
Pr[b′=b]−21≥non-negl(λ),
这与 Π 的CPA安全性矛盾。由于假设密文长度 k=O(logλ) 导致攻击者优势不可忽略,因此原假设不成立。故密文长度必须满足 k=ω(logλ),即超对数。
HM2
Solution1
假设存在攻击者 A 能以不可忽略的概率 ϵ 破坏DSA的UI-PA安全性,则构造算法 B 利用 A 解决DL问题。
-
算法 B 接收DL问题实例 (p,q,g,y),为了找到 x 使得 y=gxmodp。B 将 (p,q,g,y) 作为公钥发送给 A。
-
当 A 请求观察 t 次合法交互时,B 生成合法记录 {(ri,ei,si)}i=1t。此时对每个 i,随机选择 si∈Zq∗ 和 ei∈Zq,由 ui=si−1modq,v1,i=ui⋅eimodq,v2,i=ui⋅rimodq,有
ri=(gv1,iyv2,imodp)modq
最后 A得到的是(ri,ei,si)。
-
B 运行 A 至其输出一次有效的冒充 (r,e,s)时,就重置 A 到某次挑战前的状态,替换挑战为 e′=e,重新运行 A 得到 (r,e′,s′)。
-
根据重置状态前后的两次响应,联立方程:
s=k−1(e+xr)modq,s′=k−1(e′+xr)modq
消去 k 后得到:
x=r⋅(s′−s)s⋅e′−s′⋅emodq
当s′=s 且 r=0时,B 的输出为 x。
若 A 的成功概率为 ϵ,则 B 的成功概率约为 ϵ2/q。若DL问题是困难的,则 ϵ 必须可忽略,从而DSA识别方案是UI-PA安全的。
Solution2
明文可以伪造
在这种攻击方式下,攻击者可以构造任意有效的签名 (r,s) 并生成对应的消息 M,无需知道私钥 x。
攻击者选择任意 s∈Zq∗ 和 r∈Zq∗,则有
M=sk−xrmodq
攻击者定义 M 为上述计算结果,则根据DSA验证方程:
uv1v2r′=s−1modq,=u⋅Mmodq,=u⋅rmodq,=(gv1yv2modp)modq
代入 M=sk−xr 后,验证方程恒成立:
r′=(gk⋅g−xr⋅yrmodp)modq=r
M 直接出现在签名方程中,使得攻击者可以自由选择 (r,s) 并构造对应的 M,这是不安全的。
私钥可被恢复
若攻击者能获取两个不同消息 M1,M2 的签名 (r,s1) 和 (r,s2),则
{s1=k−1(M1+xr)modqs2=k−1(M2+xr)modq
1式减去2式解得,k=s1−s2M1−M2modq
则
x=rs1k−M1modq
在本题中允许通过线性方程直接恢复私钥,这显然是不安全的。
Solution3
假设存在敌手 A 以不可忽略的优势 ϵ 攻破IND-CPA安全性,则构造算法 B 利用 A 解决e次根问题。
- 算法 B 接收e次根问题实例 (N,e,y),将公钥 (N,e) 发送给 A。
- B 维护表 HT 记录所有对 H 的查询 (r,h),其中 h∈{0,1}n 为随机值。
- 当 A 查询 H(r) 时,若 r 已在 HT 中,返回对应的 h;否则,随机生成 h←{0,1}n,将 (r,h) 存入 HT,返回 h。
- 在挑战阶段时,A 提交 M0,M1。B 设置 C1∗=y(即挑战密文的 r∗ 需满足 (r∗)e≡ymodN),随机选择 b∈{0,1} 和 h∗←{0,1}n,计算 C2∗=h∗⊕Mb,发送 (C1∗,C2∗) 给 A。
- 在猜测阶段时,A 输出 b′,若 b′=b,则 B 遍历 HT,寻找满足 re≡ymodN 的 r,输出 r 作为e次根的解。
若A 未查询过 r∗,由于 H 是随机预言机,A 对 H(r∗) 的值完全未知,C2∗=h∗⊕Mb 的分布与均匀随机串不可区分。因此,A 的优势 ϵ 可忽略。
若A 查询过 r∗,B 在 HT 中能找到 r∗,从而直接解决e次根问题。若 A 的优势 ϵ 不可忽略,则 B 成功概率至少为 ϵ/qH(qH 为哈希查询次数),与e次根问题困难性矛盾。
HM3
Solution1
对于点P(2,7),满足
72 mod 11=5(23+2+6) mod 11=5
则点P在椭圆曲线上。
对于点Q(5,2),满足
22 mod 11=453+5+6 mod 11=4
则点Q在椭圆曲线上。
则斜率为
m=5−22−7 mod 11=36=6⋅3−1=6⋅4 mod 11=2
则P+Q=(xR,yR)的坐标为:
xR=(22−2−5) mod 11=8yR=(2⋅(2−8)−7) mod 11=3
即P+Q=(8,3)。
Solution2
对于点P(3,2),满足
22 mod 5=4(33+3+4) mod 5=4
则点P在椭圆曲线上。
则斜率为
m=2⋅23⋅32+1 mod 5=43=3⋅4−1=3⋅4 mod 5=2
则2P=(xR,yR)的坐标为:
xR=(22−2⋅3) mod 5=3yR=(2⋅(3−3)−2) mod 5=3
验证2P在椭圆曲线上:
32 mod 5=4(33+3+4) mod 5=4
P的逆元−P为
−P=(3,−2) mod 5=(3,3)
故2P=−P,即3P=O,故P是椭圆曲线上的一个 3-torsion 点。
Solution3
由 x3+ax+b≡0(modp) 有三个不同的根,记为 r1,r2,r3∈Zp。则椭圆曲线上存在三个二阶点: $$P_1 = (r_1, 0), \quad P_2 = (r_2, 0), \quad P_3 = (r_3, 0),$$ 以及无穷远点 O。
对于集合H=O,P1,P2,P3,其是椭圆曲线群 (E,+) 的子群,证明如下:
- 封闭:对任意Pi,Pj∈H,有
- Pi+Pj=Pk (k=i,j)。因为连接$ P_i$ 和 Pj的直线垂直于x轴,与曲线交于第三个根对应的点 Pk。
- Pi+Pi=O
- 结合律和交换律:由于椭圆曲线群的加法满足交换律,故H是阿贝尔群。
群H与Z2×Z2同构,证明如下:
- H 的非单位元阶均为 2
- 运算规则满足: $$P_1 + P_2 = P_3, \quad P_1 + P_3 = P_2, \quad P_2 + P_3 = P_1,$$ 这与克莱因四元群 Z2×Z2 的结构一致,故 H≅Z2×Z2。
由于(E,+) 是循环群,则其所有子群也必须是循环群。但是Z2×Z2非循环群,而H与其同构,故H也不是循环群,这与H是(E,+)子群矛盾。因此(E,+) 不是循环群。
Solution4
若 P 的阶为 3,则 2P=−P。根据椭圆曲线点加法规则:
- 2P=(x3,y3),其中 x3=m2−2x1(modp),y3=m(x1−x3)−y1(modp),
- −P=(x1,−y1)。
由 2P=−P,得:
{x3=x1(modp),y3=−y1(modp).
斜率 m 为:
m=2y13x12+a(modp).
将 x3=x1 代入点加倍公式:
x1=m2−2x1(modp)⟹m2=3x1(modp).
将 m 的表达式代入:
(2y13x12+a)2=3x1(modp).
即
(3x12+a)2=12x1y12(modp).
代入椭圆曲线方程 y12≡x13+ax1+b(modp)得
(3x12+a)2=12x1(x13+ax1+b)(modp).
即
3x14+6ax12+12bx1−a2=0(modp).
对于曲线方程 3x4+6ax2+12bx−a2≡0(modp) ,其是 Fp 上的四次多项式方程,在域中最多有 4 个根。
对于每个根 x1,由椭圆曲线方程 y2≡x13+ax1+b(modp),若 x1 有效,则 y 有两个解(y 和 −y),除非 y=0。 但若 y=0,则 P=(x1,0) 的阶为 2(因 2P=O),与三阶矛盾。因此,每个 x1 对应两个非零 y。
因此三阶点总数为2⋅4=8个。
Solution5
由 g+h∈G1,则 e(g+h,g+h)=1。
由e(a+b,c+d)=e(a,c)⋅e(a,d)⋅e(b,c)⋅e(b,d),将 a=g, b=h, c=g, d=h 代入:
e(g+h,g+h)=e(g,g)⋅e(g,h)⋅e(h,g)⋅e(h,h).
由于 e(g,g)=1 和 e(h,h)=1,等式化简为:
1=1⋅e(g,h)⋅e(h,g)⋅1⟹e(g,h)⋅e(h,g)=1.
即在群 GT 中,若 e(g,h)⋅e(h,g)=1,则:
e(g,h)=e(h,g)−1.
Solution6
设 g1 为 G1 的生成元,h 为 G2 中给定元素,gT=e(g1,h)∈GT。则需要证明:给定 gt∈GT 和 h∈G2,找到 g∈G1 使得 e(g,h)=gt。
对任意 g∈G1,可表示为 g=g1x(x∈Z),则:
e(g,h)=e(g1x,h)=e(g1,h)x=gTx.
因此,配对反演问题等价于找到 x 使得:
gTx=gt.
若存在算法可解 GT 中的离散对数问题(即给定 gT,gt∈GT,找到 x 满足 gTx=gt),则直接应用该算法即可得到 x,进而计算 g=g1x。则配对反演问题可多项式时间归约到 GT 中的离散对数问题,因此其难度不超过后者。
Solution7
由双线性性得:
e(aP+bQ,cP+dQ)=e(aP,cP)⋅e(aP,dQ)⋅e(bQ,cP)⋅e(bQ,dQ)=e(P,cP)a⋅e(P,dQ)a⋅e(Q,cP)b⋅e(Q,dQ)b.
由交替性 e(P,P)=1 和 e(Q,Q)=1,得:
e(P,cP)=e(P,P)c=1c=1,e(Q,dQ)=e(Q,Q)d=1d=1.
由反对称性 e(Q,P)=e(P,Q)−1,得:
e(Q,cP)=e(Q,P)c=(e(P,Q)−1)c=e(P,Q)−c.
原式化简为:
e(aP+bQ,cP+dQ)=1a⋅e(P,dQ)a⋅e(P,Q)−c⋅b⋅1b=e(P,Q)ad⋅e(P,Q)−bc=e(P,Q)ad−bc=e(P,Q)acbdmodN
Solution8
对任意 G2 中的 DDH 实例 (P2,aP2,bP2,cP2),应用 ϕ 映射到 G1:
ϕ(P2)=P1,ϕ(aP2)=aP1,ϕ(bP2)=bP1,ϕ(cP2)=cP1.
下面判断 G1 中是否满足 cP1=abP1。
利用双线性配对 e,攻击者可以绕过同构直接验证:
e(ϕ(aP2),bP2)=e(aP1,bP2)=e(P1,P2)abe(ϕ(P2),cP2)=e(P1,cP2)=e(P1,P2)c
若 c≡ab(modN),则:
e(P1,P2)ab=e(P1,P2)c⟹ab≡c(modN).
由于 ϕ 和配对 e 均可高效计算,攻击者无需解决离散对数问题即可验证 c≡ab(modN),导致 DDH 问题在 G2 上不再是困难问题。
HM4
Solution1
假设存在一个EUF-CMA敌手A,成功概率为ϵ,则可构造算法B解决CDH问题。
B接收CDH输入(g,ga,gb),设置公钥pk=ga。维护一个哈希表HT,记录随机预言机H的查询与应答。随机选择一个索引k∈{1,2,…,QH},假设敌手在第k次哈希查询中询问m∗。
对第i次H(mi)查询:若i=k,设置H(mi)=gb(即ci=b),记录(mi,ci,hi)。否则,随机选择ci∈Zq,设置hi=gci,记录(mi,ci,hi)。
对消息mi的签名请求:若mi对应哈希查询i=k,则B中止(因无法计算gab)。否则,查询H(mi)得到hi=gci,计算签名σi=(ga)ci=gaci,返回σi。
伪造阶段:敌手A输出伪造(m∗,σ∗),且m∗∈/签名查询列表。若m∗对应的哈希查询不是第k次,则B失败。否则,σ∗=(ga)b=gab,B输出σ∗作为CDH解。
敌手A成功伪造签名,概率为ϵ。B正确猜测敌手在第k次哈希查询中选择了m∗,概率为QH1。故总成功概率:ϵ⋅QH1。若ϵ不可忽略,则B解决CDH问题的概率为ϵ/QH,仍不可忽略,与CDH问题的困难性假设矛盾。因此,BLS签名算法是EUF-CMA安全的。
Solution2
∥u∥=32+72=9+49=58
∥v∥=52+102=25+100=125=55
3u−2v=(9−10,21−20)=(−1,1),范数为:
∥3u−2v∥=(−1)2+12=2
是最短向量。
Solution3
u1=v1=111
计算v2在u1上的投影,并减去该投影:
μ21=12+12+121⋅1+2⋅1+3⋅1=2
u2=v2−μ21u1=123−2⋅111=−101
计算v3在u1和u2上的投影,并减去这些投影:
μ31=31⋅1+0⋅1+1⋅1
μ32=∥u2∥21⋅(−1)+0⋅0+1⋅1=0=0
u3=v3−μ31u1−μ32u2=101−32⋅111=31−3231
正交化后的基向量为:
u1=111,u2=−101,u3=31−3231
Solution4
设bi∗为Gram-Schmidt正交化向量,则:
det(L)=i=1∏n∥bi∗∥
LLL约简基满足对任意j<i:
∥bi∗∥2≥(δ−μi,j2)∥bj∗∥2
其中μi,j=∥bj∗∥2⟨bi,bj∗⟩,且∣μi,j∣≤1/2。取δ=3/4,可得:
∥bi∗∥2≥21∥bi−1∗∥2⇒∥bi∗∥≥2−(i−1)/2∥b1∗∥
det(L)=i=1∏n∥bi∗∥≥∥b1∗∥ni=1∏n2−(i−1)/2=∥b1∥n⋅2−n(n−1)/4
因此:
∥b1∥≤2(n−1)/4⋅det(L)1/n
定义投影算子π1:Rm→span(b1)⊥,则投影后的格L′=π1(L)是n−1维格,其行列式满足:
det(L′)=∥b1∥det(L)
在子格L′中,π1(b2),…,π1(bn)构成LLL-δ约简基,首向量满足:
∥π1(b2)∥≤2(n−2)/4⋅det(L′)1/(n−1)
由于∥b2∥≤∥π1(b2)∥2+μ2,12∥b1∥2≤∥π1(b2)∥+21∥b1∥,结合det(L′)=det(L)/∥b1∥,最终可得:
∥b2∥≤2n/4⋅(∥b1∥det(L))1/(n−1)
HM5
Solution1
假设存在区分器D能以优势ϵ区分Hi与Hi+1,则构造算法A,其输入为决策LWE挑战样本(a,b∗),需判断b∗=aTs+e或均匀随机。
随机选择i∈{0,…,t−1},生成s1,…,st←Zqn和e1,…,et←χ。对j≤i,设置bj为均匀随机;对j>i+1,设置bj=aTsj+ej(bi+1=b∗)。
不同sj和ej独立生成,保证混合分布中未被替换的bj仍为合法LWE样本。每一步仅替换一个bj,通过决策LWE的困难性保证不可区分性。若D的优势为ϵ,则A的优势为ϵ/t,在t为多项式时仍不可忽略。
若决策LWE是困难的,则ϵ必须可忽略,因此H0与Ht不可区分,即在决策LWE问题的困难性假设下,多秘密LWE分布与均匀随机分布计算不可区分。
Solution2
设安全参数为λ,定义以下参数:
- 维度:n=poly(λ)
- 模数:q=poly(λ)(通常取素数)
- 错误分布:χ为Zq上的离散高斯分布,标准差σ=αq(α∈(0,1))
- 消息空间:M={0,1}k(k为多比特长度)
密钥生成
输入:安全参数λ
输出:公钥pk,私钥sk
-
生成LWE矩阵:
A←Zqn×m,s←χn,e←χm
其中m=O(nlogq)。
-
计算公钥矩阵:
B=ATs+emodq∈Zqm
-
设置密钥:公钥:pk=(A,B);私钥:sk=s
加密
输入:公钥pk=(A,B),消息m∈{0,1}k
输出:密文(c0,c1,…,ck)
-
生成随机向量:
r←{0,1}m
-
计算基础密文分量:
c0=Armodq∈Zqn
-
计算消息加密分量:
∀i∈{1,…,k}:ci=BTr+⌊2q⌋mi+ei′modq∈Zq
其中ei′←χ为新增错误项。
解密
输入:私钥sk=s,密文(c0,c1,…,ck)
输出:消息m∈{0,1}k
-
计算中间量:
∀i∈{1,…,k}:di=ci−sTc0modq
-
解码消息比特:
mi={0,1,若 ∣di∣≤⌊4q⌋若 ∣di∣≥⌊43q⌋
对每个消息比特mi,解密时:
di=(BTr+⌊2q⌋mi+ei′)−sTArmodq
当总错误项绝对值<⌊4q⌋时,解密正确。
Solution3
Game0:挑战者生成真实公钥pk=(A,B),其中A←Zqn×m,s←χn,B=ATs+emodq(e←χm);敌手A选择消息m0,m1∈{0,1}k。
挑战者随机选择b←{0,1},生成密文:
c0=Armodq,ci=BTr+⌊q/2⌋mb,i+ei′modq
其中r←{0,1}m,ei′←χ。敌手输出猜测b′,若b′=b则获胜。
Game1:在Game0情况下,B←Zqm为均匀随机向量(而非B=ATs+e)。
Game2:在Game1情况下,c0←Zqn和ci←Zq均为均匀随机值。
证明Game0 ≈ Game1:假设存在敌手A能区分Game0与Game1,则可构造算法B解决决策LWE问题:
输入为决策LWE样本(A,B∗),需判断B∗=ATs+e或均匀随机。将A作为公钥矩阵,B∗作为公钥向量。当A提交m0,m1时,生成密文:
c0=Ar,ci=(B∗)Tr+⌊q/2⌋mb,i+ei′
若A正确区分,则B判定B∗为LWE样本;否则判定为均匀随机。
证明Game1 ≈ Game2:设A←Zqn×m为均匀随机矩阵,r←{0,1}m,则当m≥(n+ω(logλ))logq时,分布(A,Ar)与均匀分布(A,u)的统计距离可忽略。
对于密文分量c0=Ar:由LHL,(A,c0)与均匀分布(A,u)统计接近;对于密文分量ci=BTr+⌊q/2⌋mb,i+ei′:由于B均匀随机且r←{0,1}m,BTr接近均匀分布,加性错误ei′和消息项⌊q/2⌋mb,i不影响均匀性。因此在Game1中,密文(c0,c1,…,ck)与均匀随机分布计算不可区分。
因此在决策LWE问题的困难性假设和剩余哈希引理下,双重Regev多比特加密方案满足IND-CPA安全。
HM6
Solution1
假设存在不全为零的标量y0,y1,…,yd−1∈Q,使得:
i=0∑d−1yi⋅Σ(a⋅Xi)=0∈Qd
由于Σ是Q-线性同态,可将线性组合转化为多项式乘法后的嵌入:
Σ(a⋅i=0∑d−1yiXi)=0∈Qd
因为Σ是双射(作为Q-向量空间的同构),当且仅当对应的多项式为零:
a⋅(i=0∑d−1yiXi)=0∈K
由于K是域且a=0,则a在K中可逆。两边同乘a−1得:
i=0∑d−1yiXi=0∈K
在K中,{Xi}i=0d−1是Q-基,因此多项式∑i=0d−1yiXi=0当且仅当所有系数yi=0。 但这与假设(yi不全为零)矛盾。
Solution2
R作为Z-模是自由模,基为{1,X,X2,…,Xd−1},故rankZ(R)=d。系数嵌入Σ将多项式a=∑i=0d−1aiXi映射为向量(a0,a1,…,ad−1),是Z-模同构。
设I⊂R为非零理想,则存在非零元素a∈I。由理想对乘法的封闭性,对任意i∈{0,1,…,d−1},有a⋅Xi∈I。
根据前一问题的结论,{Σ(a⋅Xi)}i=0d−1在Qd中线性无关。由于a⋅Xi∈R,其系数为整数,故Σ(a⋅Xi)∈Zd。这d个向量在Zd中也是Z-线性无关的。
Σ(I)包含d个Z-线性无关的向量{Σ(a⋅Xi)}。作为Z-子模,Σ(I)的秩至少为d;但Σ(I)⊂Zd,而Zd的秩为d,故rankZ(Σ(I))=d。
Σ(I)是Zd的加法子群,自然在Rd中离散,秩为d的离散子群即为Rd中的格。
Solution3
定义元素si∈I为:
si=s⋅Xi−1对 1≤i≤d
由于I是理想且s∈I,根据理想对乘法的封闭性,si∈I。
设s=∑k=0d−1akXk,则其系数嵌入向量为Σ(s)=(a0,a1,…,ad−1),范数为:
∥Σ(s)∥=k=0∑d−1ak2
根据环结构Xd≡−1,s⋅Xi−1的系数是原系数的循环移位并伴随符号变化。
循环移位和符号变化不改变平方和,因此:
∥Σ(si)∥=k=0∑d−1ak2=∥Σ(s)∥
由K=Q[X]/(Xd+1)是域,非零元s∈I在K中可逆。根据前题结论,{Σ(s⋅Xi−1)}i=1d在Qd中线性无关,进而在Rd中线性无关。