密码协议学习笔记(8.15):知识证据详解
在开始前,先回顾以下的知识点:
离散对数问题(Discrete logarithm Problem,DLP)难解性猜想:
给定以大素数
Diffie-Hellman的计算难解性(Computational Diffie-Hellman,CDH)猜想:
已知
Diffie-Hellman的判定难解性(Decisional Diffie-Hellman,DDH)猜想
已知
以不可忽略的正确概率进行区分,在计算上是不可行的.
考虑如下的问题:
在以大素数
思路:如果
该方案需要使用一个Hash函数,记为
- 选取一个随机数
- 计算
- 计算
- 计算
- 将
作为知识证据发送
Bob在收到知识证据后,计算
然后判断
实际上
那么显然有
注意,两个生成元
问题来了,如何让Bob在不知道
下面看一个知识证据在PVSS(回顾密码协议学习笔记(8.1):秘密分享 - Isakovsky - 博客园 (cnblogs.com))里的应用:
在此方案中,验证者只需要认可加密的函数值(即
给定大质数分发者Deliver做如下工作,以加密的秘密碎片形式分发秘密碎片:
- 选取形如
的随机多项式,其中 - 计算出
- 计算
,其中 - 使用参与者的公钥
计算并公开加密的秘密碎片 ,其中
为了达到加密的秘密碎片的公开可验证,Deliver需要进行以下操作:
- 计算并公开多项式
的每个系数 分别对应的公共承诺 ,其中 - 通过公共承诺计算出对每个成员
的私人承诺 ,其中 但私人承诺可以不必直接公开,实际上,公共承诺与私人承诺是等价的,因为任何人都可以通过公开的公共承诺,计算对某个成员的私人承诺. - 选取随机数
- 计算
,其中 - 计算
,其中 - 计算公共质询值
- 计算对成员
的应答 ,其中 - 将
作为知识证据公开
获得Deliver的公开信息后,任何人想验证加密的秘密碎片
在既不知道
- 使用公共承诺自行计算出所有的私人承诺
- 观察
,因为 的底数 均是已知的,只需要比较它们的指数是否相同,但由于离散对数问题的难解性,进行这样的比较需要借助知识证据 ,并且绕几个弯:- 计算所有的
-
然后计算
如果
,则接受Deliver的所有输出为有效.不考虑哈希碰撞,显然
当且仅当Deliver正确运行了协议.
- 计算所有的
如此,验证者便对所有的
而实际上,
之后其他参与者
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!