20个回答

假如有一种未破译灭绝语言,有关于这种语言的一亿本书,能不能用超级计算机把这门语言用套的方式破译出来?

YoungGod
16个点赞 👍

当然不能……因为你不知道这门语言的语法,而自然语言的语法可以有无穷多种。

即使你可以枚举出所有的语法,然后穷搜,你也不能保证结果收敛到一个点上啊。

甚至,别说一亿本书,即使你有无穷多的样本,你也不能保证它收敛啊。

不过,这里我们可以提一个有趣的问题:如何构造一门这样的语言,可以在多项式时间内被接受,而攻击者(概率上)无法在多项式时间内达成攻击?

在密码学上有个概念叫indistinguishibility,直译过来叫不可区分性。比如说,有两个分布系综 E_1=\{X_i\}_{i\in\mathbb{N}}E_2=\{Y_i\}_{i\in\mathbb{N}} ,你在这两个集合上跑任何验证算法 A:\{0,1\}^n\to\{0,1\} , 对某个给定的 n 都有 \left| Pr[A(X_n)=1]-Pr[A(Y_n)=1] \right| \le \epsilon(n) ,那么 E_1E_2 就是计算上不可区分的。也就是说对于所有长度为 n 的字符串而言,这俩集合上跑任何验证算法得到的结果都是差不多的。

基于这个概念,我们可以搞一个不可区分混淆算法,简单地说,一个pp(概率多项式时间)的算法 iO ,长度为 m 的密码分布系综 \{C_i\}_{i\in\mathbb{N}} 满足:

  1. \forall c \in C_m,x \in X_n,Pr[c(x) = iO(c)(x)]=1
  2. \forall c_1,c_2 \in {C_m}, |Pr[A(iO(c_1))=1]-Pr[A(iO(c_2))=1]| < \epsilon(n)

由2,iO(c) 不可区分,所以理论上判死刑,不可能(在多项式时间内)攻击 c

那你可能要问了,这么厉害的东西为什么我们不用呢?因为首先,我们还不知道有没有这种 iO 算法存在,其次,就算知道了,你得搞一个实际能用的pp算法出来……

发布于 2024-05-06 02:04・IP 属地浙江
知乎用户
自由评论 (0)
分享
Copyright © 2022 GreatFire.org