非交互式电路证明与预处理下的非交互式完美零知识证明
在当今的密码学领域,零知识证明是一个备受关注的研究方向。它允许证明者在不向验证者透露额外信息的情况下,让验证者相信某个陈述是真实的。本文将详细介绍非交互式零知识证明系统,特别是针对电路可满足性问题的证明系统,以及基于碰撞难解哈希函数和离散对数的相关协议。
1. 引言
非交互式零知识证明系统是一种协议,证明者只需向验证者发送一条消息,就能让验证者相信某个陈述为真。证明者不能作弊,验证者除了知道陈述为真之外,不会从消息中获取其他额外信息。要实现这一点,证明者和验证者需要共享一个双方都信任其随机性的随机字符串。
早期的研究中,基于二次剩余假设(QRA)提出了针对 3 - SAT 问题的证明系统,后来又基于单向置换或单向陷门置换的假设,提出了针对图哈密顿性(GH)问题的证明系统。此外,还有一些关于带预处理的非交互式零知识证明的研究,如 [SMP] 和 [KMO]。
然而,现有的针对 NP 完全问题的非交互式零知识证明,无论是带预处理还是不带预处理的,大多只是计算零知识的。因为这些结果是在证明者可能拥有无限计算能力,而验证者是多项式有界的模型下证明的。在这个模型中,完美/统计零知识似乎需要被证明陈述的特殊性质。
本文提出了一种针对电路可满足性问题的非交互式零知识证明系统,该系统基于二次剩余问题,允许几乎无成本地处理异或(XOR)和非(NOT)门,比之前已知的非交互式证明系统更高效。此外,还提出了基于碰撞难解哈希函数的协议,用于任何 NP 陈述的带预处理的统计零知识非交互式论证。在认证离散对数假设下,该协议是完美零知识的。最后,提出了一种基于离散对数的完美零知识非交互式协议,可能无需预处理。
2. 符号和定义
本文所描述的协议发生在证明者 P 和验证者 V 之间,他们是概率图灵机。在不同的部分,证明者和验证者的计算能力有所不同。
在第 3 部分,假设共享随机字符串模型,即证明者和验证者都可以只读访问一个包含独立随机位的单向无限磁带,这个位串称为 a。证明者 P 试图让验证者 V 相信某个单词 w 属于 NP 语言 L。
通过 A(.) 表示运行概率算法 A 在输入 - 时得到的随机变量。因此,u = P(w, a) 是证明者 P 计算并发送给验证者 V 的证明。V(u, a) 要么接受,要么拒绝,证明系统相应地被称为接受或拒绝。
(P, V) 被称为 L 的证明系统,如果它是完备的:当 w 属于 L 时,Prob(V(w, a)) = 拒绝的概率在 |w| 上是超多项式小的;并且是可靠的:当 w 不属于 L 时,对于任何(可能具有无限计算能力的)证明者 P’,Prob(V(P’(a, w), a)) = 接受的概率在 |w| 上是超多项式小的。
(P, V) 被称为零知识的,如果存在一个概率多项式时间模拟器 M,它在输入 w 时只产生一个随机字符串和一个看起来与协议中实际使用的字符串完全一样的“证明”。更精确地说,M(w) 与 a, u 在多项式时间内是不可区分的。
在第 4 部分,改变了模型,验证者可能拥有无限计算能力,而证明者是多项式有界的。证明者 P 和验证者 V 现在是交互式图灵机,并且没有共享随机字符串。通过 (P, V)(w) 表示验证者在与证明者 P 就共同输入 w 进行交谈后的决策。
(P, V) 是 L 的证明系统的定义与上述类似,同时还要求该系统满足带预处理的要求,即协议可以分为一个交互式预处理阶段和一个后续的非交互式证明阶段。
3. 针对 SAT 问题的非交互式证明系统
本部分描述的非交互式证明在 [BSMP] 的意义上是有界的,证明者只能证明长度为 O(g) 的 1 个 SAT 实例,其中 I 是共享随机字符串的长度。不过,[BSMP] 中给出的方法可以将其协议转换为证明者可以证明任意大小的任意多个实例的协议,这些方法也适用于本文的协议,只需进行微小修改。
证明者和验证者的共同输入是一个单输出可满足的布尔电路 C。证明者可以被看作是一个多项式时间机器,它知道对输入线的位赋值,使得输出为 1。
证明将使用二次剩余假设(QRA),即对于一个由两个大素数乘积得到的 n,当给定一个雅可比符号为 1 的随机数 z 时,如果不知道 n 的因式分解,很难判断 z 是否是二次剩余。如果 z 的二次特征等于 b,则称 z 隐藏了位 b。
证明者算法
- 选择参数 :选择随机素数 p 和 q,使得 n = pq 的长度为 k 位,并选择一个随机非平方数 y。
- 证明 y 的性质 :从 a 的前 k³ 位生成一个证明,证明 y 是模 n 的非平方数,n 有两个不同的素因子,并且 n 不是完全平方数,具体方法与 [BSMP] 相同。
- 处理随机字符串 :将 a 剩余部分的前 264k³ 位分割成长度为 k 位的段,并将这些段视为 264k² 个整数。丢弃所有大于等于 n 或小于 n 但雅可比符号为 -1 的数。计算所有剩余数隐藏的位。
- 分组编码 :将得到的数字序列分成每组 3 个的组。如果真值表 T 有一行 b₁, b₂, b₃,使得对于 i = 1, 2, 3,xi 隐藏 bi,则称组 x₁, x₂, x₃ 编码了真值表 T 中的一行。
- 处理未编码组 :对序列中前 11k 个未使用的组重复以下操作:如果该组没有编码 Ti 中的一行,则通过打开组中的所有数字来证明这一点;否则,在证明中写入该组编码了 Ti 中的某一行的信息。最后,将分配给 Ti 的所有未打开的组分成 4 类,使得同一类中的所有组编码 Ti 中的同一行。对于属于同一类的每对组,通过显示组中相应数字乘积的平方根来证明这一点。
- 证明电路输出 :使用满足赋值作为输入在 C 中进行计算,会为每个 Ti 选择一行。现在在证明中包含一个指向编码该行的组的指针。对于 i = 1 到 k,如果某个 Tj 从 Ti 接收其第 t 个输入,则通过显示 √(z₁z₂) 来证明计算的一致性;如果 Ti 是输入门,其第 t 个输入位与门 Tj(j > i)的第 m 个输入位共享,则通过显示 √(z₁z₂) 来证明一致性;如果 Ti 是 C 的最终输出门,则通过打开 z₃i 来证明 C 输出 1。
验证者算法
- 验证 y 和 n 的性质 :与 [BSMP] 一样,验证 y 是模 n 的非平方数,n 有两个不同的素因子,并且 n 不是平方数的证明。
- 检查丢弃的数字 :检查证明者在步骤 3 中丢弃的所有数字是否大于等于 n 或雅可比符号为 -1。
- 检查打开的组 :对于 i = 1 到 k,检查证明者在步骤 5 中正确打开了所有被丢弃组中的数字,并且确实没有打开的组编码 Ti 的一行。
- 检查其他子证明 :检查证明者在步骤 5 中产生的所有其他子证明。检查分配给每个 Ti 的未打开的组是否已被分成 4 类。
- 检查平方根 :检查证明者在步骤 6 中产生的所有平方根。
定理证明
-
定理 1
:(P, V) 是 SAT 问题的非交互式证明系统。
- 完备性 :通过检查协议可以明显看出,证明者仅在步骤 6 之后提到的两种情况下失败,并且它们的概率在 k 上是指数级小的。
- 可靠性 :假设 C 是不可满足的,证明者 P* 成功说服验证者 V 的概率至多是可忽略的。
-
定理 2
:在 QRA 下,(P, V) 是零知识非交互式证明系统。
- 模拟器构造 :首先选择一个正确形式的模数 n 和一个随机平方数 y,然后产生一个模拟的“证明”,证明 y 是模 n 的非平方数,与 [BSMP] 中的方法相同。接着,选择足够数量的随机位,将它们分割成 k 位整数,标记出大于等于 n 或雅可比符号为 -1 的数为丢弃的数,其余整数都替换为模 n 的随机平方数。最后,模拟证明者的步骤 5 和 6。
通过以上的证明系统和定理证明,我们可以看到该非交互式证明系统在处理 SAT 问题时具有较高的效率和安全性。
下面是证明者和验证者算法的流程图:
graph TD;
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(选择随机素数 p, q 和非平方数 y):::process;
B --> C(从 a 的前 k³ 位证明 y 和 n 的性质):::process;
C --> D(处理 a 剩余部分的前 264k³ 位):::process;
D --> E(分组编码):::process;
E --> F{组是否编码 Ti 中的一行?}:::decision;
F -- 否 --> G(打开组中的所有数字):::process;
F -- 是 --> H(写入编码信息):::process;
H --> I(将未打开的组分类):::process;
I --> J(证明同一类组的一致性):::process;
J --> K(证明电路输出):::process;
K --> L([结束]):::startend;
M([开始]):::startend --> N(验证 y 和 n 的性质):::process;
N --> O(检查丢弃的数字):::process;
O --> P(检查打开的组):::process;
P --> Q(检查其他子证明):::process;
Q --> R(检查平方根):::process;
R --> S([结束]):::startend;
这个流程图清晰地展示了证明者和验证者的算法步骤,有助于更好地理解整个证明系统的工作流程。
综上所述,本文提出的非交互式零知识证明系统在处理电路可满足性问题方面具有显著的优势,为密码学领域的研究和应用提供了新的思路和方法。
非交互式电路证明与预处理下的非交互式完美零知识证明
4. 基于碰撞难解哈希函数的协议
在前面的基础上,我们考虑基于碰撞难解哈希函数的协议,以实现针对任何 NP 陈述的带预处理的统计零知识非交互式论证。
协议背景与动机
已知的非交互式零知识证明对于 NP 完全问题,大多只是计算零知识的。为了实现完美/统计零知识,我们考虑对偶模型,即验证者可能拥有无限计算能力,而证明者必须是多项式有界的。在这个模型下,我们基于碰撞难解哈希函数来构建协议。
协议流程
-
预处理阶段
- 证明者 P 和验证者 V 进行交互。在这个阶段,双方都不知道后续要证明的陈述 w。
- 由于碰撞难解哈希函数的存在,双方可以进行一些信息的交换和处理。具体来说,他们利用哈希函数的特性,对一些随机生成的信息进行哈希运算和交换。这个过程中,交互所需的信息长度与后续要证明的定理大小无关。
- 例如,双方可以各自生成一些随机数,然后对这些随机数进行哈希处理,将哈希结果进行交换。这样做的目的是为后续的非交互式证明阶段做好准备,建立一些共享的信息和状态。
-
非交互式证明阶段
- 证明者 P 得到陈述 w 和相关的见证信息 t。
- P 根据预处理阶段的交互结果和当前的 w、t,在多项式时间内计算出一个证明。这个证明的计算过程涉及到对哈希函数的多次应用和一些基于哈希值的运算。
- 证明者将证明发送给验证者 V。
- 验证者 V 只得到陈述 w,然后根据预处理阶段的对话和接收到的证明,对证明进行检查。检查过程同样依赖于碰撞难解哈希函数的性质,通过对哈希值的验证和比较来判断证明的有效性。如果证明通过检查,V 输出接受;否则,输出拒绝。
协议优势
与其他可能的协议相比,这个协议的一个重要优势是不需要假设存在不经意传输。而一些类似的协议,如从 [KMO] 或 [SP] 技术中推导出来的协议,需要一个不经意传输子协议,且不经意传输仅基于碰撞难解哈希函数可能无法实现。
5. 基于离散对数的完美零知识非交互式协议
最后,我们探讨基于离散对数的完美零知识非交互式协议,该协议有可能消除对预处理的需求。
问题提出
在共享字符串模型下构建针对 NP 完全问题的完美(或统计)零知识论证是一个具有挑战性的问题。之前的研究 [SP] 在一个修改后的场景中解决了这个问题,即除了共享随机字符串外,证明者还可以访问验证者广播的消息,该消息指定了在证明中使用的公钥。但在原始的共享字符串模型中,这个问题仍然是开放的。
协议构建
我们提出的基于离散对数的协议,在理论上具有完美零知识的特性。具体来说,协议基于离散对数问题的困难性。
1.
证明者操作
- 证明者利用离散对数的相关性质,结合共享随机字符串,对要证明的陈述进行编码和处理。
- 例如,证明者可以选择一个合适的离散对数群,根据陈述的内容和共享随机字符串,计算出一些与离散对数相关的值。这些值将作为证明的一部分。
2.
验证者操作
- 验证者接收到证明后,根据共享随机字符串和离散对数的性质,对证明进行验证。验证过程涉及到对离散对数的运算和比较,以判断证明的正确性。
3.
完美零知识证明
通过理论分析,可以证明该协议是完美零知识的。具体来说,存在一个概率多项式时间模拟器,它可以模拟证明者和验证者之间的交互过程,使得模拟的结果与真实的交互过程在多项式时间内不可区分。
6. 总结与展望
本文介绍了多种非交互式零知识证明系统和协议,涵盖了针对 SAT 问题的非交互式证明系统、基于碰撞难解哈希函数的带预处理协议以及基于离散对数的完美零知识非交互式协议。
| 协议类型 | 优势 | 适用场景 |
|---|---|---|
| 针对 SAT 问题的非交互式证明系统 | 基于二次剩余假设,可高效处理 XOR 和 NOT 门,比已知系统更高效 | 处理电路可满足性问题 |
| 基于碰撞难解哈希函数的带预处理协议 | 不需要假设不经意传输,预处理交互与定理大小无关 | 实现任何 NP 陈述的统计零知识非交互式论证 |
| 基于离散对数的完美零知识非交互式协议 | 可能消除对预处理的需求,具有完美零知识特性 | 在共享字符串模型下处理 NP 完全问题 |
这些协议为密码学领域提供了新的工具和方法,在数据隐私保护、身份验证等领域具有潜在的应用价值。未来的研究可以进一步优化这些协议的效率,探索它们在更多实际场景中的应用,以及研究如何在不同的计算模型和假设下构建更强大的零知识证明系统。
下面是基于碰撞难解哈希函数协议的流程图:
graph TD;
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始 - 预处理阶段]):::startend --> B(双方生成随机数):::process;
B --> C(对随机数进行哈希处理):::process;
C --> D(交换哈希结果):::process;
D --> E([结束 - 预处理阶段]):::startend;
E --> F([开始 - 非交互式证明阶段]):::startend;
F --> G(证明者得到 w 和 t):::process;
G --> H(证明者计算证明):::process;
H --> I(证明者发送证明给验证者):::process;
I --> J(验证者得到 w):::process;
J --> K(验证者检查证明):::process;
K --> L{证明是否通过检查?}:::decision;
L -- 是 --> M(验证者输出接受):::process;
L -- 否 --> N(验证者输出拒绝):::process;
M --> O([结束 - 非交互式证明阶段]):::startend;
N --> O;
这个流程图清晰地展示了基于碰撞难解哈希函数协议的两个阶段的具体流程,有助于理解协议的执行过程。
综上所述,这些非交互式零知识证明系统和协议在密码学领域具有重要的意义和价值,为解决各种安全和隐私问题提供了有效的手段。随着研究的不断深入,相信这些技术将在更多领域得到广泛应用。
6599

被折叠的 条评论
为什么被折叠?



