零知识证明系统与相关证明机制解析
1. 身份识别方案概述
在身份识别方案中,以用户 Alice 为例,其身份由字符串 α 编码。她首先要均匀选择一个秘密字符串 s,计算 (i \stackrel{\text{def}}{=} I_s(\alpha)),接着请求可信第三方将记录 ((\alpha, i)) 放入公共文件,同时把字符串 s 妥善保存。
身份识别的可行性条件表明,Alice 可通过执行识别协议让 Bob 相信她的身份。具体操作是,Alice 调用程序 P 并将存储的字符串 s 作为辅助输入,Bob 则使用程序 V,确保公共输入是包含 α 的公共记录。
安全条件意味着,若一方仅拥有 Alice 的公共记录和一些无关的辅助信息(由辅助输入 z 表示),那么它几乎不可能冒充 Alice。然而,在许多应用场景中,这种安全条件可能并不足够。因为想要冒充 Alice 的用户可能会先让她向自己证明身份。完整的安全条件指出,即便 Alice 过去多次向 Carol 证明过自己的身份,Carol 也很难冒充 Alice。不过,前提是 Carol 不能同时与 Alice 和 Bob 进行交互,若不满足此条件,则无法保证安全性,此时 Carol 可通过将 Bob 的问题转给 Alice 并模仿其回答来轻易冒充。
2. 基于知识证明的身份识别方案
2.1 基于单向函数的身份识别方案
考虑一个函数 f,当输入身份 (\alpha \in {0, 1}^n) 时,信息生成算法会均匀选择一个字符串 (s \in {0, 1}^n) 并输出 (f(s))。((\alpha, f(s))) 即为用户 α 的公共记录。身份识别协议则是证明