先区分命题与见证
公开命题描述需要确认的性质,见证则是支撑这个命题的秘密信息。例如,证明者希望说明自己知道某个公开值对应的秘密,而不直接发送秘密本身。
“证明命题为真”与“证明知道见证”是不同要求。知识证明还需要形式化的知识提取性质,不能仅凭交互看起来合理就认定成立。
三个条件,三个观察角度
- 完备性:当命题为真且双方诚实执行协议时,验证者能够接受。
- 可靠性:对错误命题,作弊证明者难以让验证者接受;不同定义对对手资源与误差有不同限制。
- 零知识:验证者从交互中获得的信息,可以由不持有秘密见证的模拟器产生,精确形式取决于定义。
“没有直接发送秘密”还不够
一个协议即使从不发送见证,也可能通过响应泄露见证的一部分。零知识要求论证这种泄露不存在,而不仅是查看消息中有没有明文秘密。
阅读零知识协议时,把公开输入、秘密见证、交互消息、验证条件分开记录。
本文只提供概念入口;具体构造还需要说明交互模型、初始化假设及面对何种验证者的安全性。