mcpField
I
implementing-zero-knowledge-proof-for-authentication

implementing-zero-knowledge-proof-for-authentication

github.com/mukul975安全35.2k49 次安装8 周前更新
代码仓库

关于 implementing-zero-knowledge-proof-for-authentication

用于在 Python 中实现和评估零知识认证的安全技能,涵盖 Schnorr 身份识别、Fiat–Shamir 非交互式证明和简化的密码证明协议,使服务器不接收密码。

主要功能

  1. 01Schnorr 身份识别协议
  2. 02Fiat–Shamir 非交互式证明
  3. 03简化的零知识密码证明
  4. 04完备性、可靠性与隐私检查
  5. 05与密码验证方式比较

适用场景

  1. 01构建密码认证原型
  2. 02测试证明的离线验证
  3. 03评估零知识认证属性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill implementing-zero-knowledge-proof-for-authentication

安装后在 Claude Code 中输入/implementing-zero-knowledge-proof-for-authentication确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py

详细介绍

为身份验证实现零知识证明

概述

零知识证明(ZKP)允许证明者在不泄露秘密本身的情况下,证明自己知道某个秘密(例如密码或私钥)。本技能使用离散对数问题实现了 Schnorr 身份识别协议和一个简化的 ZKPP(零知识密码证明),从而实现服务器永远不会获知用户密码的身份验证。

何时使用

  • 在环境中部署或配置为身份验证实现零知识证明的能力时
  • 在建立符合合规要求的安全控制时
  • 在为此领域构建或改进安全架构时
  • 在开展需要此实现的安全评估时

前提条件

  • 熟悉密码学概念和工具
  • 拥有用于安全执行的测试或实验环境
  • Python 3.8+ 并已安装所需依赖
  • 对任何测试活动拥有适当授权

目标

  • 为 ZKP 身份验证实现 Schnorr 身份识别协议
  • 使用 Fiat-Shamir 启发式构建非交互式 ZKP
  • 实现零知识密码证明(ZKPP)
  • 演示完备性、可靠性和零知识性质
  • 将 ZKP 身份验证与传统密码验证进行比较

关键概念

ZKP 性质
性质描述
完备性诚实的证明者总能说服诚实的验证者
可靠性不诚实的证明者无法说服验证者(除可忽略概率外)
零知识验证者除了陈述的真实性外学不到任何东西
Schnorr 协议
  1. 设置:公开生成元 g、素数 p、q(g 的阶)
  2. 注册:证明者计算 y = g^x mod p(由秘密 x 导出的公钥)
  3. 承诺:证明者发送 t = g^r mod p(随机 r)
  4. 挑战:验证者发送随机 c
  5. 响应:证明者发送 s = r + c*x mod q
  6. 验证:检查 g^s == t * y^c mod p

安全注意事项

  • 使用密码学安全的随机数生成器
  • 挑战必须不可预测(从验证者的角度来看)
  • 对于非交互式证明,使用带抗碰撞哈希的 Fiat-Shamir
  • ZKP 本身不提供前向保密;请与 TLS 结合使用

验证标准

  • 诚实的证明者总能成功验证(完备性)
  • 没有秘密的随机响应无法通过验证(可靠性)
  • 服务器永远不会收到秘密值
  • 非交互式证明可离线验证
  • 多次身份验证产生不同的记录
  • 协议能抵御重放攻击

评论

支持 Markdown