I3Chic

\[\newcommand{\b}{\boldsymbol} \newcommand{\R}{\mathbb R} \newcommand{\Z}{\mathbb Z} \newcommand{\cur}[1]{\left\{#1\right\}} \newcommand{\ip}[1]{\left<#1\right>} \newcommand{\mat}[1]{\begin{matrix}#1\end{matrix}} \newcommand{\c}{\mathcal} \newcommand{\t}{\text} \newcommand{\vare}{\varepsilon} \newcommand{\eps}{\epsilon} \]

Lattice。

ML。

Program Obfuscation “代码混淆”:希望代码可读性下降。是 advanced crypto 的一部分。【事实上,其 implies advanced crypto】


什么是 lattice?

对于 \(k\) 个线性无关向量 \(\b b_1,\dots,\b b_k\in\R^n\),其生成的 lattice 为其所有整系数线性组合的结果,即

\[L(\b b_1,\dots,\b b_k)=\cur{\sum x_i\b b_i\mid x_i\in\Z} \]

例如,\(\Z^2\)\(\cur{(0,1),(1,0)}\) 生成的 lattice;但是,例如 \(\cur{(1,2),(2,3)}\) 也可以生成同样的 lattice。事实上,一个 lattice 可以由无数组这样的 (basis) 生成。

e.g.:sphere packing:在 \(\R^n\) 中如何放置最多的等半径 \(n\)-维球面?

找到放置方式不算困难【易发现:这个放置方式可以用 lattice 描述,即为 lattice packing】,但是如何证明其之最优性?直到两千年才有对某些 \(n\) 的严格证明。更多的 \(n\) 是难以证明的。

Kissing number:一个 \(n\)-D 球周围最多可以放多少个不交 \(n\)-D 球?与 sphere packing 关系很大,且同样困难。

shortest vector problem (SVP):找到 lattice 中模长最小的非零向量。

这个问题在 \(n\) 维空间下的效率只有 \(2^{O(n)}\),且其是 NP-Hard 的。【事实上,不仅是经典算法,量子算法同理】

\(\gamma\)-近似 SVP 呢?LLL 算法给出了 \(2^n\)-近似 SVP 的多项式解法。显然,这个近似不尽人意。

与 SVP 类似的是求仿射 lattice 中的相应向量。closest vector problem (CVP):找到 lattice 中最贴近某个目标向量的向量。同理是 NP-Hard。

SVP 和 CVP 都是 decisional problem。因此有相应的判定问题 GapSVP、GapCVP:判定贴近距离是否超过阈值 \(d\)。这两个问题同样是 NP-hard 的。

事实上,GapCVP 就算允许某些略大于常数的近似,仍然是 NP-hard 的。

列出了随着允许的 approximation factor 逐渐宽松,SVP 和 CVP 逐渐由 NP-hard 变成 P。但是,在 \(2^{(\log n)^{1/2-\epsilon}}\) 下,SVP 仍然是 NP Hard 的;在 \(n^{1/\log \log n}\) 下,CVP 仍然是 NP-Hard 的。

多项式近似的 GapSVP 可以被用于建立优秀的加密系统。

一些 lattice problem 不弱于 factorization。例如,vector counting problem:给定 lattice 的基,对(Euclidean)模长(平方)为 \(N\) 的向量计数。

定理:如果存在大于等于 \(8\) 维空间下的 VCP,则存在 factoring 的多项式算法。


至少与 SVP 多项式近似等难的问题:SIS、LWE。

对于可逆矩阵 \(A\in\Z^{n\times n}\)、向量 \(\b b\in\Z^n\),寻求向量 \(\b x\in\Q^n\) 满足 \(A\b x=\b b\)。显然,这只需要求逆即可。

如果 \(A\) 是扁胖 \(\in\Z^{n\times m}\) 但仍然是满行秩的矩阵呢?仍然消元。

但是这样就有了自由度。因此,我们可以尝试寻求 \(\b x\in\Z^m\) 的解了。

如何对敌?答曰:辗转相除。因为 \(A\b x\) 本质是 \(A\) 的全体列向量构成的 lattice,而因为 \(A\) 扁胖所以 \(A\) 的列并非描述这个 lattice 的最简描述。把列之间辗转相除即可压缩该 lattice。

(Inhomogeneous) Short Integer Solution (ISIS) Problem: 给定 \(A\in\Z_q^{n\times m}\) 且 rank \(n\)\(\b b\in\Z^n\),寻求 \(x\in\Z^m\) 满足 \(A\b x=\b b\bmod q\)\(0<|\b x|_2<B\)。常见 parameter:\(q=O(n^2),B=O(n),m=n\log q\)

SIS:满足 \(A\b x=\b0\bmod q\)\(0<|\b x|_2<B\)

如果存在 SIS 的高效解法,则存在 SVP 的高效解法。

为什么 lattice 问题重要?因为 SAT 等问题难以构建 OWF。例如,难以 sample 一个 average 难度的 SAT。

Learning With Errors (LWE):隐秘向量 \(s\);给定神谕机 \(O_s(\cdot)\),每次调用返回该向量的所有项的一个随机整系数线性组合,再加上一个随机的小噪音(可正可负),且对某个质数取模的结果。线性组合的系数和组合结果都会被公布。目标:还原隐秘向量。

方程是 \(A\b x+\b e=\b b\),其中 \(\b e\) 是误差。如果假设 \(\b e\in\cur{-1,1}^n\),则可以作多次测试,在每次测试中对 \(A\) 求逆然后取平均。

……但是这个做法对于“取模”这个场合不是好主意。取完模后的系数可能会跑到到处都是,因此求平均的结果会被污染。

正确的做法:如果 \(\sum a_ix_i=b+e\),其中 \(e\in\cur{-1,1}\),则 \((\sum a_ix_i-b)^2=1\),因此展开平方后,可以看做一个以 \(x_i^2,x_ix_j,x_i\)(把它们看成独立元)为变量的方程,找 \(n^2\) 个式子解方程,然后验证这组解是否相容即可。

在误差取值是常数级别集合 \(S\) 的场合,因为有 \(\sum a_ix_i-b\in S\),所以令 \(x=\sum a_ix_i-b\),则 \(x\) 必然是 \(\prod\limits_{a\in S}(x-a)=:f(x)\) 的解。于是 \(f(\sum a_ix_i-b)=0\) 就可以作为一个 \(n^{|S|}\) 元的方程。总复杂度是 poly \(n^{|S|}\)


除了某些高维信息分析的场合,Machine Learning 几乎对密码学没有任何作用。

有些人尝试用 ML 解决 LWE。还有些人尝试用 LWE 的困难性证明某些 ML task 的困难行。

Learning Parity with Noise: 结果模 \(2\)。显然,此时噪声应该采用一些其它手段生成,例如 Bernoulli Distribution。


Program Obfuscation:使得程序可以被当作难以破译的黑盒。即,给定输入算法 P,给出输出 P*,使得 P* 具有和 P 完全相同的功能,但是隐藏了相关信息。

如何 formalize 这个过程?Virtual-black-box: 一个足够好的 obfuscation 与 oracle 相等……但是是 impossible to achieve。一个更弱的定义是 indistinguishability Obfuscation,如果两个算法的 Input-Output 操作均相同,则它们经过 obfuscation 后的结果仍相同。

例如,如果 P1 总是输出 0,P2 在输入等于某个密码时输出 0,其它时候仍然输出 0。这两个算法是不可区分的,但是我们有理由对 P2 进行混淆(不然就暴露密码了)

IO 使得 deniable encryption 成立:它使得一个虚假的 key 可以被提供。


Private-Key Encryption = Symmetric-Key Encryption = Secret-Key Encryption (SKE).

存在一个明文空间 \(\c M\)、一个私钥空间 \(\c K\),和算法

  • \(\t{Gen}\to k\) 以某种手法从私钥空间中生成私钥 \(k\)。如果没有特别约定,则默认是均匀独立随机。
  • \(\t{Enc}_k(m)\to c\)
  • \(\t{Dec}_k(c)\to m\)

\(\t{Gen,Enc,Dec}\) 都可以有随机性。因此我们需要保证关于上述三者随机时,仍有 \(\Pr[\t{Gen}\to k,\t{Dec}_k(\t{Enc}_k(m))=m]=1\)

Kerchoff's Principle: 除了生成的私钥 \(k\) 外其他的东西都可以公开。

如何定义安全性?

  • 从密文中不能学习任何关于私钥的信息?太弱了,直接原封不动地令密文等于明文即可。
  • 从密文中不能学习任何关于明文的信息?太强了,例如 One-time Pad 至少需要私钥长度长于明文。
  • 因此,我们声称:给定先验信息,无法获知任何额外信息。

Shannon Secrecy: 对于某个特定的 \(m'\),当从分布 \(D\) 中采样 \(d\) 并获知 \(\t{Enc}_k(m)\) 时,该信息不能帮助我们更好地确定 \(m=m'\)。即,\(\t{Enc}_k(m)\) 的后验信息不能为我们先验拥有的 distribution \(D\) 产生影响。

Perfect Secrecy:对于任两个 \(m_1,m_2\),它们加密后得到同一个密文 \(c\) 的概率相同。【即,二者加密后的密文分布是同一个分布】

One-Time Pad。「One-Time Pad is like toilet paper: it can only be used once.」


p.p.t 和 n.u.p.p.t。二者在某些场合下会有区别:

  • 我们试图建立一个 collision-resistent hashing algorithm。对于某个 \(n\),其是类似 \(\cur{0,1}^n\to\cur{0,1}^{n/2}\) 的方程。我们希望找到 \(x_1\neq x_2\) 但是 \(H_n(x_1)=H_n(x_2)\) 的概率 negligible。假如是 n.u.p.p.t,则因为它的长度可变,所以存在一个 Adversary,其在尝试破译 \(H_n\) 时,对应的 \(A_n\) 可以硬编码一组 \(H_n\) 的 collision(而 p.p.t 因为 description 长度有限所以不能这么干)。
  • 当然,可以通过让 hash function 接受一组 key 作为额外输入,此时 n.u.p.p.t 不能对所有 key 都硬编码一组 collision。

Fermat's Algorithm:假如能找到 non-trivial 的 \(a^2=b^2\),则 \((a+b)(a-b)=0\pmod N\)。但是并不是很牛!

很优的分解算法:Lenstra 椭圆曲线法,复杂度 \(\exp(k^{1/2}(\log k)^{1/2})\),其中 \(k\)\(N\) 最小质因数的 bit-length。

最优的方法:number field sieve,方法是优化的 Fermat 法。复杂度 \(\exp(n^{1/3}(\log n)^{2/3})\)

一个数是 \(B\)-smooth 的,如果其所有质因子都不超过 \(B\)

\(S(x,y)\)\(\leq x\)\(y\)-smooth 数集合。令 \(\psi(x,y)=|S(x,y)|\)

smooth 数密度有一个非平凡的界。\(\psi(N,\log(N)^A)=N^{1-1/A+O(1/\log\log N)}\)。更紧的界是 \(\psi(N,y)=N/u^{u+o(u)}\),其中 \(u\leq y^{1-\varepsilon}\)


RSA 公钥加密:公钥是 \(N,e\),然后 \(\t{Enc}_{pk}(m)=m^e\pmod N\)

这并非是安全公钥加密:因为如果要加密某些特定的输入(例如 \(1\) 加密后仍是 \(1\))就可能被破译;同理,如果连发两条消息,则这两条消息会被暴露相等。

使用 factoring oracle 可以破解 RSA;反之呢?目前尚无定论!


其它相关问题:找到多项式模意义下的根。Coppersmith 算法:只能找到小的根。

给定 \(y\),寻找 \(x\)\(e>2\),满足 \(x^e=y\pmod N\)

  • 目前仍然是 open。这显然强于 RSA,被称作 strong-RSA assumption。

求二次剩余和质因数分解等难!


Diffie-Hellman:给定 \(g^a,g^b\),计算 \(g^{ab}\)

\(\Phi(q-1)\) 是 smooth 时,D-H 是和 DL 等难的;其它场合是 open 的。

Merkle 1976:一个 key-agreement,有 key 时平方可解,无 key 时立方可解。不牛!

\(F_q\) 的乘法群、椭圆曲线裙等都难以计算 DL。

Group with infeasible inversion:算逆元困难,但是算加法是简单的裙。假如存在这样的裙,那么就存在 efficient broadcast 的一种方式。


OWF -> PR Gen -> SKE

一个 distribution \(\c X\) 常常是分布列 \(\c X=\cur{\c X_n}\)

  1. Perfectly Ind。就是指两个分布列完全相同。记作 \(\c X^0=\c X^1\)。例如 \(U(\cur{0,1}^n)\)\(U\operatorname{xor} U\)

  2. Statistically Ind。两个分布 \(\c X_n^0,\c X_n^1\)(注意下标限定了长度)的统计距离

    \[\Delta(\c X_n^0,\c X_n^1)=\sum_{s\in\cur{0,1}^n}\dfrac12\left|\Pr_{x\sim\c X_n^0}[x=s]-\Pr_{x\sim\c X_n^1}[x=s]\right| \]

    \(\c X_n^0\approx_S\c X_n^1\) 如果 \(\Delta\) negligible。例如随机串和非全零随机串,二者的统计距离是 \(2^{-n}-4^{-n}\)

  3. Computationally Ind。\(\c X_n^0\approx_C\c X_n^1\)。一切 nuppt 都无法 distinguish。
    对于一切 nuppt adversary \(\t{Adv}\),存在 neg \(\vare(n)\) 满足对于一切 \(n\) 都有

    \[\left|\Pr_{x\sim\c X_n^0}[\t{Adv}(1^n,x,r)=1]-\Pr_{x\sim\c X_n^1}[\t{Adv}(1^n,x,r)=1]\right|<\vare(n) \]

    其中 \(r\) 是 nuppt 的随机串,(服从 nuppt 的随机串分布)。\(1^n\) 标记 \(x\) 的长度,方便 nuppt 知道自己应该用哪个分布。

另一种理解是,不存在能有效预测归属的 adversary。

Game master 均匀随机 \(b\in\cur{0,1}\) 然后从 \(\c X_n^b\) 中 sample。Adv 不能有效预测 \(b'=b\)

\[\Pr_{\mat{b\in\cur{0,1}\\x\gets\c X_n^b\\r}}[\t{Adv}(1^n,x,r)=b]<\dfrac12+\vare(n) \]

sta 比 comp 强:sta 等效于一切 comp-bound 的 adv 都不可分辨。

一个 comp 但非 sta 的例子:分布 \(g^a\mid a\in[0,p/2]\)\(g^a\mid a\in[p/1+2,p-1]\)。它们必然是 sta 的(统计距离恒为 \(1\)),且如果是 comp 的则可以通过二分解决离散对数。


PRG。\(G:\cur{0,1}^n\to\cur{0,1}^m\)\(G\) 是 PRG,如果 \(G(U(\cur{0,1}^n))\approx_CU(\cur{0,1}^m)\)。我们希望 \(G\) 是一个多项式可计算的确定性函数,且有 \(m\)\(n\) 的多项式。


recap:indistinguishability。

\[\left|\Pr_{\mat{x\gets\cur{0,1}^n\\\t{Adv is random}}}[\t{Adv}(1^n,G(x))=1]-\Pr_{\mat{y\gets\cur{0,1}^n\\\t{Adv is random}}}[\t{Adv}(1^n,y)=1]\right|<\epsilon(n) \]

造一个 PRG:对于 \(a\in[0,q/2]\),令 \(F(a)=g^a\bmod q\)

如果存在将 \(g^a\)\(U\)\(\delta=p_1(n)-p_2(n)\) 区分的 \(A\),则存在 \(B\) 判定是否有 \(a'<a/2\)

我们的目标是:在更弱的假设(例如,存在 OWF 比 RSA 假设弱)下,建立 PRG;最终目标则是,存在 OWF 则可以用之构造 PRG。[HILL99]

先看看反过来。假设存在 PRG,如何用其构建 OWF?

因为 PRG 必然有集合扩张(\(m>n\)),所以至少有一半的 \(\cur{0,1}^m\) 没有原像。

现在假设 PRG 存在逆,则若要分辨 \(y=G(x)\) 还是 \(y=U(\cur{0,1}^m)\),则对 \(y\) 求逆。如果求逆成功则声称其属于 \(G\),否则其属于 \(U\)

显然,对于一半的 \(y\),它被正确分辨为 \(U\) 了。

PRG 的另一种定义(next-bit prediction):对于一切 nuppt Adv,存在 negligible \(\eps\) 使得对于一切 \(j\in[2,\dots,m]\),都有

\[\Pr_{\mat{y=G(x)\\x\gets\cur{0,1}^n}}[\t{Adv}(1^n,y[1,\dots,j-1])=y_j]<\dfrac12+\eps(n) \]

即,PRG 拥有 next-bit unpredictability。

如果存在在某位上预测下一位的 PRG,则如果要判定 \(y=G(x)\) 还是 \(y=U(\cur{0,1}^n)\),则用预测器预测一下即可。

……但是注意,考试时不能写得这么简陋!

反之……

[Yao82]Hybrid Distributions。如果 \(X_0\)\(X_1\) 是 distinguishable 的,则可以构建一批分布列,使得第一个为 \(X_0\)、最后一个是 \(X_1\),则其中至少有一对是 distinguishable 的。

如果 \(G(x)\)\(U\) distinguishable,则令 \(H_0=G(x)\),则每次将 \(H_i\) 的倒数第 \(i\) 位由 \(H_{i-1}\) 改成纯随机,则必然存在一位是 distinguishable,此时这位即有 predictor。

另一种方式是,令 \(H_k\) 是后 \(k\) 位以一半概率被反转的分布。


尝试使用 OWP 构建 PRG。

Hardcore Function: 已知 \(f(x)\) 不能帮助 adversary 预测 \(h(x)\)

假设存在一个拥有 Hb (Hardcore bit) \(h\) 的 OWP \(f\),则 \(\bigcirc h(f^i(x))\) 即是一个好的 PRG。

如何寻找 Hb?

Proposal:对于任意 OWP \(f\),总存在某个序列 \(i_n\),令 \(h_n(x)\) 等于 \(x\) 的第 \(i_n\) 位,其是 Hb。

错误!可以对于 non-negligible 的一部分固定、剩下作 permutation。这样仍然剩下 overwhelming 的部分可供搭建对于 non-negligible 不可逆的 OWP。

总结:不存在一个确定性 one-bit \(H(x)\) 是全体 \(f(x)\) 的 OWP(Unversal Hardcore bit 不存在)。

原因:若 \(f(x)\) 是 OWF,则 \(f'(x)=f(x)\circ H(x)\) 仍是 OWF。则 \(H(x)\) 对于 \(f'(x)\) 并非 Hb。

考虑让 \(H(x)\) 非确定。令 \(H(x,r)=\lang x,r\rang\pmod 2\),即 \(x\) 与随机 \(r\) 的内积,则就算 Adversary 能看到 \(r\),也是 Hb。形式地,有

定理:

\[\Pr_{\mat{x\in\cur{0,1}^n\\r\in\cur{0,1}^n}}[\t{Adv}(1^n,f(x),r)=\lang x,r\rang\pmod 2]<\dfrac12+\vare(n) \]

使用这个扩展的 Hb,有 \(G:(x,r)\to(f(x),r,\lang x,r\rang)\) 是一个 one-bit extension PRG。

这也可以被看做,\((x,r)\to(f(x),r)\) 是一个特殊的 OWF,而 \(\lang x,r\rang\) 则是一个特殊的 Hb。

每一个 OWP 都有 Hb 吗?未知。


OWP 可以得到 PRG。OWF 可以通过复杂的推理得到 PRG。一个 正则 (regular,每个像集元素恰有 \(r\) 个原像) OWF 可以通过不那么复杂的推理得到 PRG。

从 OWF 到 PKE 的构造不能以 black box 形式给出(即,对于一个 black box 中的 OWF,不能用其构建 PKE;但是从黑盒 OWP 到 PRG 的构造是可行的)

Pseudo Random Function。其是一个函数族,每个均接受 \(n\) bit 的输入但是只输出 \(1\) bit,依靠一个 key 来决定选用哪个函数族。希望看不到 key 的 Adv 认为其与一个 TrueRand 的函数不可区分。

TrueRand 是一个 \(2^n\) 的真值表,真值表中的每一项都是自 \(\cur{0,1}\) 中随机的,但是一旦随机完毕后接下来其就是一个确定性的真值表了。

Formally,有

\[F=\Bigg\{F_n=\Big\{f_{k_n}:\cur{0,1}^n\to\cur{0,1}\Big\}_{k_n\in\cur{0,1}^{\text{poly}(n)}}\Bigg\}_{n\in\N} \]

需要有对于一切 nuppt \(\t{Adv}\),都有

\[\Bigg|\Pr_k[\t{Adv}^{f_k(\cdot)}(1^n)=1]-\Pr[\t{Adv}^{\t{TrueRand}}(1^n)=1]\Bigg|<\eps(n) \]

其中 \(\t{Adv}^{\text{something}}\) 是拥有 \(\text{something}\) 作为 oracle 的 nuppt。\(f_k(\cdot)\) 的效果是,从 \(F_n\) 中 sample 一个 \(f_{k_n}\) 然后返回 \(f_k(\cdot)\),在算法的全过程中,random seed \(k\) 就是 fixed 的。

求证:存在 OWP \(g\),使得 \(F_{k_1,k_2}(x)=g(x\oplus k_1)\oplus k_2\) 不是 PRF。

证明:存在保证第一位 conserve 的 \(g\)。则全体 \(0x_1\)\(0x_2\) 的第一位全同,这显然不太像一个 TrueRand。

求证:存在 OWP \(g\),使得 \(F_{k_1}=\lang g(x),k_1\rang\) 不是 OWF。

证明:\(g(x)\) 是公开的。

求证:\(F_{k_1,k_2}=\lang g(x\oplus k_1),k_2\rang\) 不是 OWF。

证明:存在 OWF 使得前 \(n/2\) 位原样输出、后 \(n/2\) 位是 OWF \(g_R\)。于是只要能找到 \(k_2\) 在前半截为 \(0\) 的某一位,则仅在这一位上不同的两个 \(x\),它们的输出应该相同。

Open Question:Sample 一个大小为多项式的随机电路,这是 PRF 吗?

求证:\(F_{M,k_2}(x)=\lang g(Mx),k_2\rang\)

证明:存在 \(g\) 使得 \(g\) 的首位是输入的所有位的 xor。则 flip \(x\) 的某一位,会对 \(Mx\) 造成一个固定的影响。因此固定这一位然后 flip 检查影响是否固定即可。

NC:AND、OR gate。NCd\(\log^d(n)\) 层的 circuit。


Pseudorandom Functions Cont'd.

OWF<->PRG<->PRF<->SKE。这与其内部结构无关。

PKE 需要更强的假设:需要与 OWF 等的特定结构 (structure) 有关,例如只能从 RSA、DisLog 等出发构建 PKE。

Recap:

\[F=\Bigg\{F_n=\Big\{f_{n,k}:\cur{0,1}^n\to\cur{0,1}\Big\}_{k\in\cur{0,1}^{\text{poly}(n)}}\Bigg\}_{n\in\N} \]

Construction (?):令 \(g_n:\cur{0,1}^n\to\cur{0,1}^n\) 是 OWF。则对于满秩矩阵 \(M\) 和任意 \(k\),都有 \(f_{M,k}(x)=\ip{g(Mx),k}\)

另一个 candidate:\(g_n\)\(\cur{0,1}^n\to\cur{0,1}^m\) 的 PRG。

break:假设 \(g_n(0)=0\),则 \(f_{M,k}(x)=0\),而 TrueRand 不具有这种性质。(直接检测 \(0\)\(f_{M,k}\) 百分百输出 \(0\),而 TrueRand \(1/2\) 输出 \(0\)

更强的 break:如果输出中的每一位都依赖于不超过 \(\log\) 位,则可以随机 \(\log+1\) 个线性无关元素,其乘以满秩的 \(M\) 后仍然线性无关,则将其张成线性空间中的 \(2n\) 个元素全都询问然后将结果异或。则如果每一位都依赖于不超过 \(\log\) 位,则异或的结果关于依赖的 \(\log\) 位的全体线性组合的出现次数讨论,则必然有每一位为零。

Remark:从 RSA 或 DLOG 等更具体的东西可能更简单?

提议:从 PRG 到 PRF 的构造。

先考虑一个更简单的问题:如何从 PRF 构造 PRG?

propose:假设要有 \(G:\cur{0,1}^n\to\cur{0,1}^m\),则令 \(G(k)=f_k(0)|f_k(1)|\dots|f_k(m-1)\)。它应该和 \(R(0)|R(1)|\dots|R(m-1)\) 不可区分。

Goldreich, Goldwasser, Micali (GGM84):

Two things to young researcher:

  • Find the thing that you think that it is your favourite;
  • Find a best friend that you do it together!

Use randomness & trees (?)

How to work? Use a tree!!!

假设有一个 \(n\) 层的满二叉树。从根节点出发,每一步根据 key 决定向左走还是向右走。

有两个 OWF \(f_0,f_1\)

\(x_0\):输入。

\(x_1\)\(f_{k_1}(x_0)\)

\(x_2\)\(f_{k_2}(x_1)\)

……

则每个 key 对应从根到叶子的路径。

是否有误?首先需要假设 \(f_0,f_1\) 不一样。一个策略是二者分别是长度倍增 PRG 的左一半和右一半。

但是,如果 \(f_0,f_1\) 的第一位都保持输入不变,那么最终输出的第一位都与 \(x\) 的第一位相同?

propose:希望 \(f_0(x),f_1(x)\approx_C f_0(r_0),f_1(r_1)\)?这个性质是否与其是 PRG 的两半等价?

性质(?):对于固定的 \(k\),令 \(g(x)=f_{k_n}\circ\dots\circ f_{k_1}(x)\) 是 OWF。

这种构造被叉了!\(f_0,f_1\) 都可以强制 \(0\mapsto0\),这样合成的东西仍然 \(0\mapsto0\)

PRF:几乎等价于固定多项式量级的 \(x\),取遍所有的 \(k\),则 \(k\to f_k(x)\) 几乎是随机向量?但是鉴于 adaptive 性,所以这不一定充分。

另一种构造:使用 \(x\) 作为寻路器?其使用 \(x\) 的每一位去修改 \(k\)

另两种构造:每一层使用不同的 OWF。使用 \(n\to2n^2\) 的 PRG 的截断处理每一层。【但是这个没必要!】

假设 \(G\)\(n\to2n\)。令 \(G^0(x)\)\(G\) 的左半边、\(G^1(x)\)\(G\) 的右半边。

则有 \(F_k(x)=G^{x_n}\circ G^{x_{n-1}}\circ\dots\circ G^{x_1}(k)\)。[Arora-Barak Complexity Book, Chapter.9]

假设 Adv 询问 \(0,1,r\) 三个位置。

首先证明 \(0\) 的输出是随机的。不断使用 Hybrid Lemma 更新二叉树上每一位即可。

如何处理 adaptive 的场合?看 Book。

if \(X\approx_CY\),则 \(f(X)\approx_Cf(Y)\),其中 \(f\) 需要是公开且 poly 可计算。

OWF:对于随机的输入,找不到反例。

PRG:对于随机的输入,无法和随机串区分。

PRF:对于 指定 的输入,仍然无法区分!

Open Questions:

实际应用的 PRF 是 Advanced Encryption Standard(中国:SM3)。PRG 也有标准。c++ 中使用的不是 PRG 而是尽量随机的生成器。

我们在意的是易于实现、高效的 PRG、PRF,即 PRG、PRG in low-depth。我们希望 boolean circuit 深度越浅越好。

PRG from OWF 的深度也很高。

GGM construction 的深度至少为 \(n\)

PRG/PRF 所需最小的 circuit depth/size 是多少?

open question:构建 \(n\to n^{1+\eps}\) 的 PRG construction,且属于 NC0,即常深度电路。目前唯一的候选人是 Goldreich's PRG。【难以 break!】

存在一些 non-trivial 的伸长一位的构造;但是伸长这么多是困难的。

不存在 NC0 的 PRF。AC0[p] class 中不存在很强的 PRF。AC0[p,q] 有 PRF 的 candidate。i2 dark matter:AC0 [3,6]?

task:构建深度尽可能低的 PRF?


Probablistic Encryption:我们不想要 one-time pad,这太蠢了!

首先先来看 Prob 的 PKE 罢!\(\t{PKE}=(\t{Gen},\t{Enc},\t{Dec})\)\(\t{Gen}(1^n)\to(pk,sk)\)\(\t{Enc}(pk,m)\to ct;\t{Dec}(sk,ct)\to m/\perp\)。其正确性要求考虑 Gen、Enc、Dec 三者的随机性后,仍是 overwhelming 的。其安全性呢?

Proposal:对于随机明文,将其关于 Gen、Enc 两者的随机性后得到某密文后,看到密文和公钥的 Adv 逆向明文的概率是 negligible?

一个满足该定义但没有用的 Encypter:把 \(m\) 切成两半然后仅加密左一半。

Proposal:对于一切 Adv,对于任两明文,区分概率 negligible?正解![Goldwasser, Micali]。这也被称作 semantic security:任两密文在语义上不可区分。

为了避免 adversary 亲自试试看加密(在区分明文的场合,adversary 知道 pk 和 m,唯独不知道提供的密文是哪个的),所以 encryptor 必须是随机的。


只要能加密一位,则一位位地加密即可处理任意多位。

Proposal:随机生成 \(p,q\) 质数作为 sk,然后公布 \(N=pq\)\(1\sim\varphi(N)\) 中的随机 \(a\) 作为 pk,然后可以预处理出来满足对于一切 \(x\) 都有 \(x^{ab}=x\pmod N\)\(b\) 同样作为 sk。Encryptor 是对于 \(m\in\cur{0,1}\),令 \(m^*=m\cdot N/2+\text{random}\),然后输出 \((m^*)^a\);decryptor 是输出 \(c^b\)

Proposal:令 \(h\)\(f\) 的 hardcore bit,则要 encode \(m\) 时,对于随机的 \(r\),令加密为 \((f(r),h(r)\oplus m)\) 对。\(f\) 需要是一个 trapdoor one-way(例如 RSA),这样可以令 sk 为 trapdoor 然后用其解密。


Decisional Diffie-Hellman:\(g,g^a,g^r,g^{ar}\approx g,g^a,g^r,g^u\)。因此,可以用 \(g^a\) 作为 gen 的随机量,\(g^r\) 作为 gen 的随机量,\(g^u\) 作为输出构建 El-Gamel 加密。

此外,还有 Computational Diffie-Hellman:不存在给定 \(g,g^a,g^b\) 并破译 \(g^{ab}\) 的模式。

对比离散对数:给定 \(g,g^a\) 破译 \(a\)


未 知 领 域

Secret Key Encryption (SKE)。与 PKE 完全相同,唯一区别是没有公钥。因此,其较之 PKE 更容易构建(吗?)

SKE:(Gen,Enc,Dec)。Message Space \(M\)

  • \(\t{Gen}\to sk\)
  • \(\t{Enc}_{sk}(m)\to ct\)
  • \(\t{Dec}_{sk}(ct)\to m/\perp\)

正确性:对于一切 \(m\),关于 Gen、Enc、Dec 三者的随机性成功率 overwhelming。

安全性:\(m_1\)\(m_2\) 的密文不可区分?但是多次通讯就寄了(注意到 one-time pad 满足这个条件)

另一种统计上更强劲的安全性尝试:对于一切密文,任两个明文被加密到其的概率差异 negligible。可能太强了,以至于和 perfect secrecy 没啥区别?

为什么 PKE 支持使用密文不可区分的定义?因为加密时使用同一个公开的公钥,这个公钥是可以被 adversary 使用的,所以在 PKE 的场合这个定义更强:它直接禁止了确定性的 encoder。

因此我们有必要增强安全性。具体而言,在定义的场合即考虑多次通讯:对于一切多项式级别长度的 \(m_0^{(i)}\)\(m_1^{(i)}\) 数列,看到二者密文后的 adversary 均无法区分……

虽然它是一种 secrecy (多次通讯 secrecy),但是更好的还是:

SKE secure against chosen plaintext attack (CPA):

Challenger 生成了 \(sk\)。Adversary 多次向其询问 \(m_i\) 并得到其加密。在此之后,进入 challenge phase:Adversary 提供 \(m_0,m_1\),而 challenger 随机选一个加密并回传。这之后,重新进入多次询问得到加密的状态。最后,adversary 猜测 challenger 加密了哪一个。希望猜测成功的概率是 \(1/2\)+negligible。

显然,此处仍然需要 encoder 是随机的。

为什么我们只给它提供 encoder 接口不给它提供 decoder 接口?This lead to another definition:Chosen Cyphertext Attack (CCA),更强。在 CPA 的基础上,还可以调用 decoder 接口。不同的是,CCA1 模式要求在 \(m_0,m_1\) 被提供并拿到回传信息后禁用 decoder 接口,而 CCA2 模式要求在回传后仅禁止询问回传的加密信息。

存在一种将 CPA 加强为 CCA 的构造。

建立一个 CPA secure 的 SKE。

Attempt:使用一个 \(\cur{0,1}^n\to\cur{0,1}^n\) 的 PRF,Gen 生成它的 key \(k\)。Enc 生成随机 \(r\) 然后返回 \((F_k(r)\oplus m,r)\)。Dec 把它 xor 掉即可。

证明使用 Hybrid。把所有 \(F_k(r^{(i)})\) 都换成 TrulyRandom 的 \(R^{(i)}\),由 PRF 性不可区分。

这么做对 adaptive 对么?需要仔细分析!

然后,\(R^{(i)}\oplus m\) 和 TR 的 \(\bar R^{(i)}\) 又不可分。于是询问 \(m^0,m^1\) 得到的 \(\bar R^*\) 没有揭露任何信息。

上述只是 sketch。要想变成严谨的证明还是要仔细写!

假设存在 nuppt Adv \(A\) 区分 real 和替换后的 \(R^{(i)}\)(Hybrid1),则存在 \(F_k\) 与 PRF 的 distinguisher \(B\)

\(A\) 询问 \(m^{(1)}\) 时,\(B\) 选择它自己的 \(r^{(1)}\gets\cur{0,1}^n\) 并询问它自己的 oracle,得到回复 \(y^{(1)}\),然后发送 \((y^{(1)}\oplus m^{(1)},r^{(1)})\)\(A\)

全部执行完后,考虑 \(A\) 的输出 \(b'\);如果 \(b'=b\) 则输出 \(1\),否则输出 \(0\)

则如果 \(B\) 拿到的 oracle 是 PRF,则其是 real;拿到的是 TRF,则其是 Hybrid1。Hybrid1 与 \(\bar R^{(i)}\) 的 Hybrid2 identical,因此如果是 Hybrid1,则 \(B\) 成功率恰为 \(1/2\);如果是 real 且 \(A\) 存在 adv,则 \(B\) 的成功率至少为 \(1/2+\eps\)

但是,注意到 PRF 的输入仅仅是随机串 \(r^{(i)}\)。因此这里的 PRF 可以仅仅是所谓的 weak-PRF,即在随机输入下与 TRF 不可区分的函数。因此,我们可以直接有 weak PRF -> SKE。

总:OWF->PRG->PRF->SKE。前三个都可以反向。不过我们可以直接一步到位:CPA-SKE implies OWF!


Digital Signature:

Message \(M\), secret key for the signer \(SK\). Sign algorithm: \(\t{sign}(m,sk)\to\sigma\); verification algorithm \((m,\sigma)\to0/1\).

形式化地,有:

  • DS=(Gen,Sign,Verify)
  • \(\t{Gen}(1^n)\to(sk,vk)\),其中 \(sk\) 是私有的 signing key,\(vk\) 是公开的 verification key。
  • \(\t{Sign}(sk,m)\to\sigma\)
  • \(\t{Verify}(vk,m,\sigma)=1/0(\text{valid/invalid})\)

正确性:对于某个固定的 \(n\),对于任意 \(m\in\c M(n)=\cur{0,1}^{p(n)}\),关于 Gen,Sign,Verify 三者的随机性,被判定为 valid 的概率 overwhelming。

安全性?

  • Proposal:在 query phase,Challenger 为 Adv 提供 \(vk\),Adv 多次询问 \(m_i\) 并得到 \(\sigma_i=\t{Sign}(sk,m_i)\)。最后的 forge phase,Adv 向 Chal 提供 \((m^*,\sigma^*)\) 二元组,如果 \(\t{Verify}(vk,m^*,\sigma^*)=1\)\(m^*\) 尚未被询问过,则 Adv 获胜。此乃 forgery game

Proposal:RSA,对于 \(N=pq\),找到 \(ed\equiv 1\pmod{\phi(N)}\),然后 \(vk=N,e\)\(sk=d\)\(\t{Sign}(d,m)=m^d\pmod N\)\(\t{Verify}(m,\sigma,N,e)=[\sigma^e\equiv m]\)

Attack:问 \(m_1\) 得到 \(\sigma_1\)\(m_2\) 得到 \(\sigma_2\) 然后 \(m^*=m_1m_2,\sigma^*=\sigma_1\sigma_2\)

虽然这个 proposal 被叉掉了,但是它并非一无是处:它是 homomorphic signature。

Proposal:令传输信息 \(m\) 的值域只有 \(\cur{0,1}^{n/2}\),则在 \(m\) 的高位上拼上 \(\cur{0,1}^{n/2}\) 个随机 bit,得到 \(m'\in\cur{0,1}^n\) 然后加密。解密时,解出 \(m'\) 后对比它的低 \(n/2\) 位。

Attack:只要保证 \(m_1m_2<2^{n/2}\) 即可。

Proposal:把 \(m\) 塞在 \(0,3,6,\dots\) 位,然后随机 \(r\),把它复制两份后塞在 \(1,2;4,5;\dots\)


forgery 中的随机性可以被 maliciously forge:没有人规定你给它提供的东西不是随机的。


对于输入 \(m\),套一个 OWF。即,令 \(m'=f(m)\),然后 \(\sigma=m'^d\),解密时验证 \(\sigma^e=f(m)\)。但是,这里的 OWF 需要比较特殊(不然会有 \(f(0)=0\)……?)


存在直接由 blackbox OWF 得到 DS 的方法 [Rompel90]。但是还是来整点 practicable 的东西罢。

考虑 random oracle 假设:存在一个公开的 Hash Function(例如 SHA256)。这是一个 “model”,因为它理论上做不到,但是却很有用,所以我们假装它做得到。它的作用是,对于某个输入 \(x\),输出一个随机的 \(r\)。【你问这个随机性哪来的?我也不知道!但是这个算法是确定性算法。这听起来很怪,但是这就是我们“理论上做不到”的模型。你们有没有这样的模型呵我想问问。】

总结:有 ROM,存在简单构造;没有 ROM,存在理论构造。


使用 RSA + Random Oracle 搓一个签名出来!

考虑存在一个 \(\cur{0,1}^*\to\cur{0,1}^n\) 的公开 hash 函数 \(h\)。则令 \(\t{Gen}(1^n)\to N,e\),它们是 PK;找到满足 \(ed\equiv 1\pmod{\phi(n)}\)\(d\) 作为 SK;然后 \(\t{Sign}(sk,m):\sigma=h(m)^d\)\(\t{Verify}(m,\sigma,N,e,h)\) 检查是否有 \(h(m)=\sigma^e\)

但是,\(h\) 需要什么性质呢?

(Bellare-Rogaway 93):Random Oracle Model。

Real World:hash 函数 \(h\) 是公开的,所有人都可以 evaluate,就像 SHA256 一样;但是在理论证明时,只能作为 oracle 对其询问,然后看做生成了一个随机串。在理论上,这玩意就和一个 TRF 一样;但是实际上,我们显然造不出来 TRF,因此理论和实际是有分野的。

现在证明其安全性。如果有 adv 可以在 forgery game 中取胜,则它可以破解 RSA。

考虑 \(A\) 多次询问 \(m_i\) 得到 \(h(m_i)^d=\sigma_i\) 然后返回了 \(m^*,\sigma^*\) 满足 \(h(m^*)=(\sigma^*)^e\)

现在,考虑 challenger 已经被 RSA adv \(B\) 托管了,此时在 \(A\) 企图调用 \(h(m^*)\) 时,RSA adv 直接给它返回 \(y\),并期望得到满足 \(y=x^e\)\(x\)。【还可以令 \(h(m_i)=y\cdot x_i^e\),把 \(y\) 夹带进去,此时可以 enable \(m^*\) 等于之前问过的东西】

但是这要求前面的询问不能 reveal RSA 的信息。这是因为,\(m_1,h(m_1)^d\) 统计等价于 \(m_1,r_1^d\) 统计等价于 \(m_1,R_1\),因此确实没有 reveal。

核心:\(A\) 无法区分给它接口的,是一个正常的 challenger,还是 \(B\) 伪装的一个 challenger!

然后回到原始模型,此时可以把 \(h\) 换成 PRF,RSA 换成任何一个 trapdoor OWP(虽然目前只有 RSA)

\(h\) 的作用?

  • 让其看起来像是随机的。
  • 压缩。

T-OWP 的作用?

  • 让其难以求逆。
  • 让其易于验证。

Cryptograplic Hash Function:\(H=\cur{h_k:\cur{0,1}^*\to\cur{0,1}^n}_{n\in\N}\),其中 key \(k\) 是公开的,此处与 PRF 有分别。

此外,它还要满足额外的条件:

  • 抗碰撞 (collision resistance):给定 \(k\),难以找到两个不等的 \(x_1,x_2\) 但是却有 \(f_k(x_1)=f_k(x_2)\)

    具体而言,对于一切 nuppt Adv,

    \[\Pr_{k\gets K}[\t{Adv}(1^n,k)\to x_1,x_2:h_k(x_1)=h_k(x_2),x_1\neq x_2]<\eps(n) \]

    这是 CHF 的必要性质。

    建了另外一种模式:\(H=(\t{Gen},\t{Eval})\)\(\t{Gen}(1^n)\to ek,\t{Eval}(ek,x\in\cur{0,1}^*)=h_k(x)\)

如何建造 Collision Resistance Hash Function?首先,如果它是 non-trivial 的,则其必须是 length-shrinking 的。

首先,length-shrinking PRF 不行,因为存在硬编码两个下标令其映到相同值的 PRF。

CRHF 必须是一个 OWF 吗?显然,这与 shrinking 有关。

  • \(\cur{0,1}^{2n}\to\cur{0,1}^n\) 的场合,它必然是 strongly one-way 的。

  • 而如果只 shrink 一位,它必然是 weak 的。

    证明:对于像集中的 \(y\),令 \(d(y)\) 为其原像数目。如果存在逆向 adv \(A\),则构建碰撞 adv \(B\)

    \(B\) 从定义域中随机选 \(x\),令 \(y=h_k(x)\),对其求逆得到 \(x'\)\(B\) 输出 \((x,x')\)

    假设 \(A\) 成功的概率是 noticeable 的 \(\delta\),则 \(B\) 成功的概率,\(\geq\Pr[h_k(x')-h_k(x)]-\Pr[x'=x]\geq\delta-\dfrac{|Y|}{|X|}\),则如果 shrink 一半,\(|Y|-|X|\) negligible,它必然是 strong 的;就算只 shrink 一位,\(\delta\) 只要是 \(1/2\)+noticeable 的,\(B\) 就成功,因此它是 weak 的。

此外,只 shrink 一位的场合,易通过让 noticeable 的部分映到一个独立的集合,构建一个非 strong 的例子。

如何构造?在 GGM PRF 中,将输入 \(x\) 延长到 \(2n\) 位,即对于 key \(k\) 连续过 \(2n\) 个 PRG,然后输出结果?首先,存在文献证明,GGM 在给定 \(k\) 时,其是 weak OWF 但不是 strong;也存在文献证明,在给定 \(k\) 时,可以构建一个每层的 PRG 都不同的反例,它连 weak 都不是。

OWP 干掉最后一位?显然不行,因为可以构建 \(x\mid 0\mapsto f(x)\mid 0,x\mid 1\mapsto f(x)\mid 1\) 的反例。

另解?把 OWP \(f(x)\) 左乘一个 \((n-1)\times n\) 的矩阵 \(A\) 然后输出?似乎也不是。

总结:OWP -> PKE 没有 blackbox 的方式;OWP -> OWP 同样没有;RandomOracle->PKE 没有;CRHF->PKE 没有;OWF -> CRHF, OWP-> CRHF 没有。除了 PKE 以外,这些问题都被认为可以使用 structuralless 的方法构造,但是 PKE 被认为必须使用 structural hard problems。……但为什么 CRHF 是 structuralless 的呢?因为现实中的 Hash Function,如 SHA256,被认为是这样的,所以 CRHF 和 RO 都被这么认为。

另解?取满足 \(d=\gcd(p-1,q-1)\leq\t{poly}(n)\)(随机取 \(p,q\) 即可),令 \(N=pq\),取 \(\Z_p,\Z_q\) 分别的生成元 \(g_1,g_2\),使用 CRT 解出 \(g\equiv g_1\pmod p,\equiv g_2\pmod q\)\(g\),然后令 \(ek=N,g\)\(h_{ek}(x)=g^x\bmod N\)

如果存在 \(g^{x_1}\equiv g^{x_2}\),则有 \(g^{x_1-x_2}\equiv 1\),于是有 \(\dfrac{\phi(N)}d\mid x_1-x_2\),于是可以 \(O(d)\) 破解 factoring。这个确实是对的。


一个关系 \(R:\cur{0,1}^*\times\cur{0,1}^n\to\cur{0,1}\) 被称作是 sparse 的,如果对于所有的 \(x\),随机一个 \(y\)\(R(x,y)=1\) 的概率是 negligible 的。

一个 CRHF \(H\) 被称作 correlation intractable 的,如果对于所有 sparse relation \(R\)(可以是易于计算的,也可以不是),对于所有 nuppt adv,都存在一个 negligible 的 \(\vare\) 满足

\[\Pr_{ek\gets\t{Gen},\t{Adv.Rand}}[\t{Adv}(1^n,ek)\to x\t{ s.t. }R(x,h_k(x))=1]<\vare(n) \]

也即,我们希望 CRHF \(H\) 不满足任何非常罕见的关系。

假设 \(H\) 是一个 CIHF,则令 \(R(x,y)=1\) 如果 \(y=h_x(x)\),则 \(R\) 是 sparse 的,且 \(\t{Adv}(1^n,ek)=ek\) 即可。因此,CIHF 是无法构造的,现在大家都更喜欢用 \(R:\cur{0,1}^m\times\cur{0,1}^n\to\cur{0,1}\) 的说法,即禁止输入的 \(x\) 任意长,此时直接令 \(h_x(x)\) 不行(\(ek\) 的数目远小于 \(x\)


还有高手?

使用 LWE 建立 PKE。

首先 formulate LWE。\(n\) 是维数,也是 security parameter。\(q\) 是模数,认为有 \(n^2<q\leq\t{poly}(n)\)。有一个随机 secret key \(s\) 的 oracle \(O_{s\in\Z_q^n}(\cdot)\),在按下按钮后,不需要任何输入,并给出 \(a_i\gets U(\Z_q^n),y_i=\ip{a_i,s}+e_i\pmod q\),其中 \(e_i\gets D_{\Z,\sigma}\),是权重为 \(\sigma\) 的离散 Gaussian。具体而言,有

\[D_{\Z,\sigma}(x)=\dfrac1{Z_\sigma}\exp^{-\pi\tfrac{x^2}{\sigma^2}} \]

\(\sigma>\sqrt n\) 时,有 \(Z_\sigma=\sigma\pm\dfrac1{2^{\Omega(n)}}\)。它是一个可以取到全体整数的分布,但是只要满足 \(\sigma<\dfrac q{\sqrt n}\),取模后的分布即与原分布接近。

这个能 sample 吗?通过一些技巧,例如取连续 Gaussian 并舍入,得到的分布与原分布是 statistically close 的。

一个 adv. 获得 \(m=\t{poly}(n)\) 个采样,LWE 寻求找到满足条件的 \(s\)

为什么要求误差是 Gaussian?据说是因为它在 Fourier Transform 后还是 Gaussian。

如果找到 \(s\),如何验证?答曰:只需要判断从输出中剔除 \(\ip{a_i,s}\) 后的结果是否像一个 Gaussian(比如说,认为差不超过 \(\sigma<\sqrt n\))即可。

我们的方程是 \(y=A^Ts+e\)。只需要确保左侧的参数数目远大于右侧的即可。因此,当满足 \(q^m>q^n\cdot(\sigma\sqrt n)^m\) 时,这样的 \(s\) 可以被认为是唯一的。


以上是 search version 的 LWE。考虑 decision version 的 LWE:希望区分 LWE sample 和纯随机 sample。

注意到,search version 的 LWE 在 \(m\) 小时是容易找到某个合条件的 \(s\) 的;但是,decision version 的 LWE 无论 \(m\) 大小看起来都是等难的。因此,我们有必要默认 \(m\gg n\)

之后,证明 DV 的 oracle 可以被用于解决 SV。事实上,它们是等价的。

一个 S-to-D reduction 的通用方法是,确定每一位。

\(y_i=a_{i,1}s_1+\dots+a_{i,n}s_n\)。令 \(b_i\)\(a_i\) 扔掉第一位的结果。如果 \(s_1\)\(0\) 的话,那么直接把 \((B,y)\) 丢给 DLWE 应该能发现它仍然是一个 LWE sample;如果 \(s_1\) 非零,也可以试 \(q\)\(s_1\),每次猜一个值并把它减去即可。但是这要求 \(q\) 是质数:如果 \(q\) 不是质数,在第一位乘上 \(q\) 的因子后,它就不再是均匀分布的了(必须是因子的倍数),很容易和纯随机区分。

但是,如果 DLWE 并非百分百成功呢?毕竟我们要问 \(q\) 次才能猜对一位。例如,我们假设 DLWE 以 1/2+noticable 的概率成功。不过,可以提高 \(m\) 的数目,将 \(A\) 分块,一块一块扔进去即可。

如果关于 \(s\) 不均匀咋办?随机生成一个 \(s^*\) 然后把它掺进去(\(y'=y+\ip{a,s^*}\))即可。


搭 PKE。

对于 Gen,令 \(sk=s\)\(pk=(A,y=A^Ts+e)\)

对于 Enc?随机 \(x\in\cur{0,1}^m\),然后令 \(c_1=Ax,c_2=y^Tx+b\cdot\dfrac q2\),其中 \(b\in\cur{0,1}\) 是待加密的 bit。

\(\t{Dec}(s,c_1,c_2)\):考虑 \(c_2-s^Tc_1=e^Tx+b\cdot\dfrac q2\)。注意到 \(e\) 很小,所以有 \(|e^Tx|<\sigma\sqrt m\sqrt m\)。当 \(m=n\log n\) 时,这不是很大,因此可以与 \(q/2\) 区分开来。

这个效率很差:首先是 \(pk\) 太大,其次是密文太长。

如何证明?idea 是,就算在已知公钥的前提下,密文也是 statistically close to 纯随机的。这建立于 DLWE 上。


FHE:对于 \(c_1=\t{Enc}_{pk}(m_1),c_2=\t{Enc}_{pk}(m_2)\),容易求出 \(\t{Enc}_{pk}(m_1+m_2),\t{Enc}_{pk}(m_1\cdot m_2)\)

\(\t{FHE}=(\t{Gen,Enc,Dec,Eval}^{+,\times})\)\(\t{Gen}\to pk,sk\)\(\t{Enc}_{pk}(m)=ct_m\)\(\t{Dec}_{sk}(ct_m)=m\)\(\t{Eval}^+(pk,ct_{m_1},ct_{m_2})=ct_{m_1+m_2}\)\(\t{Eval}^\times(pk,ct_{m_1},ct_{m_2})=ct_{m_1\times m_2}\)。安全性:要求关于 \(pk\) 加密出后的分布 indistinguishable。


Interactive Proof & Zero-Knowledge Proof (Goldwaser, Micali, Radoff 85').

有一个 Prover 和一个 Verifier。Prover 有一个 statement \(x\),且它试图说服 Verifier。二者都可以是随机的Verifier 至少要是 Poly 的,但是 Prover 可以不一定是。

IP 的意义:证明一些 beyond NP 的东西。但是首先要 formalize。

考虑 Prover 说了 \(\alpha_1\),Verifier 说了 \(\beta_1\),然后 \(\alpha_2,\beta_2\)……把这些东西记作 conversation \(\tau\)

  • 则 Prover 知道 \(\cur{x,\tau}\);Verifier 同样知道 \(\cur{x,\tau}\)

这是 IP 的 syntax 的定义。

IP 是 complete 的,如果对于某个语言中的全体 \(x\),都有 \(V(x,\tau)=1\) w.p. \(1\)。这里的 w.p. 是 over Prover 和 Verifier 的 randomness 的。

是 sound 的,如果对于不在语言中的 \(x\),就算 Prover 作弊了(运行时间可以无限),即换成 cheating prover \(P^*\) 仍有 \(V(x,\tau)=1\) w.p. \(<1/2\)

  • 为什么要求一个是 \(1\) 一个 \(<1/2\)?事实上,二者只要有 gap 即可,可以 boosting。

使用 IP 证明 Graph Non-Isomorphism。直接令 Verifier 每次随机选图然后随机重标号,扔给 Prover(这里的 Prover 理应是一个计算力无限的黑盒子),要求 Prover 判断是哪张。如果 Prover 百分百成功,则如果两张图同构则 Prover 会随机输出,否则 Prover 总是正确。

Verify 的目标是,同时 知道 Prover 有没有能力分辨(且这不依赖于 Prover 的行为:Verifier 可以验证 Prover 究竟有没有在说谎),以及 让自己也有相同的能力

ZKP:在不泄露额外信息的情况下,表明自己拥有证明的能力。

Andrew Yao:ZKP 是一种「启示 (revelation)」。

ZKP 要证明的东西仍然属于 NP,即希望有 poly 的 witness。

此时,Prover 拥有一个额外的 witness \(w\),它可以用来验证 statement \(x\);Verifier 除了 statement \(x\) 以外,还可以有一个辅助输入 auxiliary input \(z\)

Completeness 需求 \(\forall x\in L\)\(V(x,z,\tau)=1\) w.p. \(1\)

Soundness 需求对于 \(\forall x\notin L\),对于 Cheating (Unbounded) 的 \(P^*\)(此时因为 \(x\notin L\),没有 witness),则 \(V(x,z,\tau)=1\) w.p. \(<1/2\)

ZK 需求对于一切 p.p.t Simulator \(S(x,z)\to\tau^s\) s.t. \(\tau^s\approx\tau^\t{real}\)。即,对于一切 \(V^*\),都存在 p.p.t. Simulator \(S\),使得有

\[\cur{x,t,(P(x,w)\leftrightarrow V^*(x,z)):=\tau^\t{real}}\approx\cur{x,z,S(x,z):=\tau^s} \]

即,交互记录可以使用与 \(w\) 无关的东西伪造(没有泄露关于 \(w\) 的任何信息)

图同构的 ZKP:

  • 公开信息是两张图 \(x=G_0,G_1\)
  • witness 是 \(\pi\),满足 \(\pi(G_0)=G_1\)

Algorithm:

  • Prover 发送 \(G_0\) 的随机重排 \(G_2\)
  • Verifier 发送随机的 \(b\in\cur{0,1}\).
  • Prover 发送使得 \(\sigma(G_b)=G_2\)\(\sigma\)

对于 NP 的 ZKP。

三分图判定。

Prover 有三分图的染色。Verify 知道图。

Prover 为随机为图重染色后,为每个节点上放一个非透明的 cup。(即,相当于提供一个加密的图)Verifier 随机提供一条边,Prover 打开这两个杯子(即,相当于提供访问两者的密钥——必须要这样做以防止作弊)并提供相应颜色。Verifier 只需验证两者是否同色即可。

Completeness 显然。Soundness 呢?多次执行即可。至于 ZK?对于 \(V^*\)\(S\) 每次随机给两个数即可。

如何实现放 cup?需要一个 Commitment 的工具。它有两个成员:

  • \(\t{commit}(m,r)\to c\),接受信息 \(m\) 和随机钥 \(r\),得到 commit \(c\)。【这个 \(r\) 有什么意义?如果 \(m\) 太短——例如本例中的颜色只有三种,得到 \(c\) 后 Verifier 可以手动枚举之!因此,必须补一个 \(r\) 增加随机位数】
  • \(\t{open}(c,m,r)\to m,r\)

这需要两个条件:

  • hiding:信息被 cup 掩盖。\(\t{commit}(m_0,r_0)\approx_C\t{commit}(m_1,r_1)\),over commitment 的随机性。【不泄露 \(c\) 的信息】
  • binding:对于一切 \(m_0,m_1,r_0,r_1\),只要 \(m_0\neq m_1\),就要有 \(c_0=\t{commit}(m_0,r_0)\neq\t{commit}(m_1,r_1)=c_1\)。【即,一旦承认,不可更改】

存在奇怪的 commitment,例如 DL commitment:\(\t{commit}(m\in\cur{0,1},r)=g^{2^nm+r}\)。显然,有 \(g^{2^n+r}\approx g^r\),因此有 hiding;有 \(g^{2^n+r}\neq g^r\),因此有 binding。

不过最好的还得是我们的 SHA256。

OWF -> Commitment。


使用 commitment 替换简陋的“cup”。

Prover:随机为颜色重排后,将所有点的 \(\t{commit}(m_i,r_i)\) 发给 Verifier。\(r_i\) 仍然是为了扩充加密域。

Verifier:发一条边。

Prover:给边对应的 \(m_i,r_i\)

Verifier:验证。

前两个都好说,但是,ZK 如何证明?

答曰:选一条随机边,令其两边异色,然后将 commit 发给 Verifier。Verifier 如果随到了该随机边,则成功模拟,否则再随。

  • 注意到,Soundness 要重复 poly 次才能实现。但是,Simulator 似乎要在 poly 轮内 全部成功 才能成功模拟?
  • 实则不然。Simulator 在成功一次后,可以储存,再进行下一个采样,此后只要把所有采样全合并即可。因此,两个 poly 是乘在一起而非幂在一起。
posted @ 2025-05-02 14:37  Troverld  阅读(106)  评论(2)    收藏  举报