Cryptology Academy · 课时

Sigma 协议与 Schnorr 识别

实现 Sigma 协议,并跟踪 Schnorr 证明的工作过程

第 2 / 4 课13 个步骤

Sigma 协议与 Schnorr 识别 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

西格玛协议结构

西格玛协议包含 3 条消息:(1) 承诺:证明者发送对随机值的承诺。(2) 挑战:验证者发送一个随机挑战。(3) 响应:证明者发送根据挑战和秘密计算出的响应。验证者接受或拒绝。

Schnorr 身份识别

证明者知道秘密 x(私钥);公钥 = g^x mod p(或者在椭圆曲线上,点 X = x*G)。目标是在不泄露 x 的情况下证明知晓 x。这是一个离散对数知识证明。

Schnorr 协议步骤

(1) 证明者随机选择 r,发送承诺 R = r*G。(2) 验证者发送挑战 c(随机整数)。(3) 证明者发送响应 s = r + c*x。(4) 验证者检查 s*G == R + c*X。若结果为真,则接受。证明者知道 x;只有知道 x 才能计算响应 s。

安全性分析

完备性:诚实的证明者始终满足 s*G = r*G + c*x*G = R + c*X。可靠性:对于具有相同 R 但挑战 c、c' 不同的两份交互记录,可以得到 s、s',并据此恢复 x = (s-s')/(c-c')——因此作弊者无法针对同一个 R 生成两个有效响应。

Schnorr 的零知识性

模拟器(不知道 x):随机选择 s 和 c,设置 R = s*G - c*X。这样的 (R, c, s) 服从有效交互记录的分布。验证者无法区分真实交互记录和模拟交互记录——Schnorr 是诚实验证者零知识协议。

Fiat-Shamir 变换

将 Schnorr 变为非交互式:用 c = 哈希(R || 消息) 替换验证者的挑战。证明者自行计算 c 并作出响应。结果是一个包含两个元素 (R, s) 的证明,任何人都可以验证。这就是 Schnorr 签名方案。

Schnorr 签名

签名(x, m):r ← 随机值;R = r*G;c = 哈希(R||m);s = r + c*x。签名 = (R, s)。验证:s*G == R + 哈希(R||m)*X。结构紧凑(P-256 为 64 字节),可批量验证,并且在 ROM 中具有可证明的安全性。已被 Bitcoin Taproot 采用(BIP-340)。

Pedersen 承诺

C = r*G + v*H,其中 H 是第二个独立生成元。使用随机数 r 对值 v 作出承诺。绑定性:无法将其打开为不同的 v(离散对数难题)。隐藏性:C 服从均匀分布。用于基于 Schnorr 的范围证明和 Bulletproofs。

组合:AND 证明

同时证明知晓 x1 AND x2:使用相同的挑战运行两个 Schnorr 协议(通过 Fiat-Shamir 共享挑战)。验证者仅在两个子证明都有效时接受。这样可以在一次交互中证明多个陈述。

组合:OR 证明

在不透露知晓哪一个的情况下,证明知晓 x1 OR x2:使用其中一个分支的模拟器来计算伪造交互记录,然后将挑战拆分给两个分支。验证者看到的是两份看似有效、相加等于真实挑战的交互记录。这称为“环签名”。

应用

Schnorr 身份认证:电子护照(PACE 协议)。Schnorr 签名:Bitcoin Taproot、Monero(RingCT 使用 Schnorr OR 证明)、Signal 协议(X3DH 密钥协商)。Pedersen 承诺:机密交易、Bulletproofs、Zcash Sapling 票据加密。

快速检查

在 Schnorr 身份识别协议中,验证者在最后一步检查什么?

回顾

西格玛协议:承诺-挑战-响应。Schnorr 证明知晓离散对数。Fiat-Shamir 将其变为非交互式(Schnorr 签名)。下一步:用于简洁非交互式证明的 zk-SNARK。

免费开始

用 AI 导师学习 Cryptology Academy — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
67
课程
261

常见问题解答

「Sigma 协议与 Schnorr 识别」课时是免费的吗?

是的 — 「Sigma 协议与 Schnorr 识别」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「Sigma 协议与 Schnorr 识别」这节课中我会学到什么?

实现 Sigma 协议,并跟踪 Schnorr 证明的工作过程 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Sigma 协议与 Schnorr 识别」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. ZKP 直觉:阿里巴巴洞穴
  2. Sigma 协议与 Schnorr 识别
  3. zk-SNARK:简洁非交互式论证
  4. ZKP 应用:ZK Rollup 与隐私币
← 返回 Cryptology Academy