零知识证明 Schnorr 流程
Schnorr 交互流程图
以下是使用 Mermaid 语法来描述上述公钥交换、Schnorr 签名生成和验证以及可选的消息加密流程的图表。你可以将这段代码复制到支持 Mermaid 的编辑器中,如 Markdown 编辑器或在线 Mermaid 工具,以可视化这个流程。
如何使用这个 Mermaid 图表
- 复制 这段 Mermaid 代码。
- 打开一个支持 Mermaid 的 Markdown 编辑器或在线工具,如 HackMD、Notion、或者 Mermaid Live Editor。
- 粘贴 代码到编辑器中,它应该自动渲染成流程图。
这个流程图展示了从密钥生成到公钥交换、签名的生成和验证,以及可选的消息加密和解密的步骤,是对 Schnorr 签名协议及其可能扩展的一个直观展示。
公钥交换和消息加密的完整流程图
下面是一个涉及公钥交换和消息加密的完整流程图,以 Schnorr 签名协议为例。这个流程图包括了密钥生成、签名生成、签名发送、以及签名验证的步骤。虽然 Schnorr 签名本身不涉及消息的加密,但它是一种常用于身份验证和数字签名的技术,可以和消息加密协议配合使用。
流程图
1. 密钥生成
- Alice:
- 生成私钥 。
- 计算公钥 。
- Bob:
- 生成私钥 。
- 计算公钥 。
2. 公钥交换
- Alice -> Bob:
- 发送 。
- Bob -> Alice:
- 发送 。
3. 签名生成
- Alice:
- 选择随机数 。
- 计算 。
- 发送 给 Bob。
- 接收来自 Bob 的挑战 。
- 计算响应 。
- 发送 给 Bob。
4. 签名验证
- Bob:
- 接收 和 。
- 验证 是否等于 。
5. 消息加密 (可选) /zkp/ecc-zk-authenticated_key_exchange
- Alice:
- 使用 Bob 的公钥 和自己的私钥 生成共享秘密。
- 使用共享秘密对消息进行加密。
- 发送加密消息给 Bob。
- Bob:
- 使用 Alice 的公钥 和自己的私钥 生成相同的共享秘密。
- 使用共享秘密解密消息。
总结
这个流程涵盖了从密钥生成到公钥交换、生成和验证 Schnorr 签名,以及可选的消息加密和解密步骤。在实际应用中,这些步骤可以通过安全的通信协议(如 TLS)进一步增强,以确保交换过程的安全性和完整性。