ETHSHANGHAI

活动 12 / 调研补充与独立分析

密码学深读:证明什么、隐藏什么,还要信任谁

以完整成年证明为主线,分清签名、ZK、FHE与PSI的能力边界,以及终端信任和抗量子的不同问题。

本篇内容导航数字签名不是给交易加密ZK证明约束成立,不把假输入变成真材料完整案例:只向商家证明已经成年FHE保护计算中的输入,不自动保证答案正确PSI隐藏非交集,却不能让允许的输出失忆本地证明与抗量子,分别检查另外两条边界我的分析:最小披露,比收集后承诺保密更稳健可验证清单资料与延伸阅读

01数字签名不是给交易加密

活动12讨论转账与年龄证明。以下是独立补充,不是产品实测。NIST签名标准关注发现未经授权的修改与验证签署者;加密则让没有解密权限的人不能读出内容。[1][3]

钱包签名确认密钥授权,不隐藏收款人或金额。现实身份依赖密钥与人的绑定,余额和执行条件由交易系统另查。用户受骗签下无限额度授权,验签仍可能通过:数学正确不等于人的真实意愿。

02ZK证明约束成立,不把假输入变成真材料

零知识证明允许证明者隐藏某些输入,同时说服验证者约定关系成立。若电路只检查“输入年龄大于十八”,未成年人也能填入三十。要证明真实资格,关系中还要验证可信发行者对生日等字段的签名,并约束所比较的数据确实来自那份凭证。[2]

W3C指出可验证不等于断言真实,仍须决定信任哪个发行者及适用范围。不同ZK机制的能力不同:选择性披露、不可关联展示与范围证明,不能凭一个“支持ZK”标志互相替代。[2]

03完整案例:只向商家证明已经成年

教学设计如下,并非已部署报告:发行机构核验身份后签发含生日、有效期和持有人密钥承诺的凭证。用户保存资料,商家预先认可发行者公钥和证明系统,不能临时接受用户自建机构的签名。[2]

商家要求在2026年9月24日已满十八岁,提供本次唯一挑战值和商家域名。公开条件是生日不晚于2008年9月24日、凭证有效、展示绑定本次商家与挑战;隐藏输入包括生日、发行者签名、凭证状态见证以及持有人秘密。年龄按日历规则比较,而不是简单用十八乘以三百六十五天。

本机证明程序同时证明:签名有效;生日和密钥承诺确属这份凭证;生日满足门槛;凭证未过期且符合约定的撤销状态;自己知道对应持有人秘密;展示绑定指定挑战和接收方。商家检查证明、认可的发行者、状态时效及挑战未被使用,再把挑战标为已用。原始生日与证件号码不必传给商家。[2]

反例也要跑通:篡改生日应破坏签名关系,复制旧证明应被挑战检查拒绝,借来凭证但没有绑定秘密应失败。然而本人主动借出秘密、终端被盗或发行者错误核验,仍需额外处置。普通VC格式本身不提供上述完整电路;具体签名、范围证明和撤销方案必须兼容,不能把BBS选择性披露直接说成已经实现年龄比较。[2]

04FHE保护计算中的输入,不自动保证答案正确

全同态加密允许密文求值,结果由有解密权限的一方读出。例如服务端可将加密支出相加而不持有密钥。同态库Microsoft SEAL说明了密文膨胀、计算开销与算法改写代价,CKKS还涉及近似误差;同态库不是任意程序的即插即用运行器。[3]

“能够正确计算”与“恶意服务端确实按指定程序计算”必须分开。服务端可能返回旧结果或别的密文;SEAL安全说明明确其密文没有自动的真实性认证。需要完整性、来源认证或可验证计算时,须额外设计协议,例如对绑定了输入和程序的计算生成证明,不能只签一个输出就证明整段计算正确。[4]

解密出口也要保护:该库警告,反复向不可信方暴露某些解密结果或密钥相关信息可能泄漏密钥。威胁模型必须覆盖输入、运算、输出与反馈。[4]

05PSI隐藏非交集,却不能让允许的输出失忆

私有集合求交可以让两方找到共同成员,而不直接交出全部明文集合;不同变体也可能只输出交集大小或统计值。Google的Private Join and Compute就返回交集规模与关联数值之和,并明确标注诚实但好奇的安全模型、虚假输入风险以及小交集和重复查询的泄露问题。[5]

例如通讯录匹配服务允许用户任意提交单个号码,交集非空便回答这个人是否注册。攻击者轮换候选号码,可能把隐私接口变成枚举接口;即使协议没有泄露非交集明文,合法输出仍在泄露成员关系。小候选集合尤其容易穷举,不能简单以“电话号码已经哈希”抵挡。

控制方法包括输入资格核验、查询额度与重复查询约束;聚合场景还可评估最低规模、异常值处理和差分隐私。但它们各有可用性代价,也不能被概括成“PSI已解决所有泄露”。Google文档列出的多项缓解措施并未在该库自动实现。[5]

06本地证明与抗量子,分别检查另外两条边界

本地生成证明有助于不把完整证件交给证明服务器,但手机上的相机、App、依赖库、操作系统及备份仍会接触原始材料。W3C专门讨论软件信任边界:持有人期待钱包只在同意后披露数据,审计功能则应让这种期待可以检查。开源提供检查机会,不自动证明安装包等于已审代码,也不证明它从不上传。[2]

抗量子是密码假设能否抵抗量子攻击的另一维度,不是ZK、FHE或PSI的统称。NIST公布的ML-KEM用于密钥封装,ML-DSA与SLH-DSA用于数字签名。一个系统即使隐藏输入,也可能仍依赖不抗量子的签名或证明假设;应逐个组件核查,而非把“用了新密码学”当成整体抗量子认证。[6]

07我的分析:最小披露,比收集后承诺保密更稳健

我的分析:成年证明应让商家少收集资料,而非多拿一份可信个人档案。仍须检查发行者、状态时效、终端诚实性与跨次关联风险。

只需年龄门槛就不索取姓名地址,只需共同联系人就不返回完整名单。密码学可以收窄信任,但不能删除责任与治理。

08可验证清单

对每种技术都要求列出保护对象、公开输出、攻击者能力与未覆盖项。

  • 成年证明反例:测试伪造发行者、改生日、过期或撤销凭证、换商家、重放挑战及不掌握持有人秘密的情况。[2]
  • 密文与集合边界:检验错误计算是否会被发现;用受控小集合与重复查询测输出泄露,区分半诚实模型和恶意安全保证。[4][5]
  • 终端与算法清单:核验发布包、网络行为、密钥备份和原始数据删除;单独列出签名、加密、证明所用算法及抗量子假设。[2][6]

资料与延伸阅读

下列资料支持技术与制度背景;分析、方案设计和示例推演由本篇作者给出,并非对现场发言的逐句复述。

  1. FIPS 186-5: Digital Signature StandardNIST
  2. Verifiable Credentials Data Model v2.0W3C
  3. Microsoft SEAL:同态加密概念与工程限制Microsoft
  4. Correct Use of Microsoft SEAL / Ciphertext AuthenticityMicrosoft
  5. Private Join and Compute:安全模型与输出泄露Google Research
  6. NIST Releases First 3 Finalized Post-Quantum Encryption StandardsNIST