Fiat-Shamir
https://www.cnblogs.com/zhuowangy2k/p/12246575.html
只要Alice和Bob同时在线,Sigma协议能快速的完成Alice向Bob证明的任务。Alice向Bob发送承诺,Bob返回一个挑战,最后Alice给出一个回应。不幸的是,没有进一步的修改,Sigma协议实际上不是零知识的:它们仅仅是诚实验证者零知识的。
Fiat-Shamir变换是一种可以将Sigma协议变成非交互证明的技术。这不仅仅会让Alice可以通过给Bob发送邮件完成证明(Bob可以稍后阅读邮件而不必返回一个挑战),而且它能把任何一个Simga协议变成一个数字签名,签名的含义就是“知道这个Sigma协议的秘密的人已经签署了这个消息”。Alice能够创造一个签名一次然后无数次的进行分发,验证者可以不必联系Alice。同时零知识也变得容易了,因为Bob或者其它读者不能做任何事情。
尽管菲亚特和沙米尔在1986年的论文中解释了这种技术,但过去几位著名的密码学家曾指出,这种技术实际上是布鲁姆在更早的著作中提出的,尽管我们还没有能够追踪到这一点。
一个Sigma协议能够通过四个算法实现:“承诺”,“挑战”,“回应”,“验证”。下面给出了解释:
Alice Bob
----- -----
co,st = Commit(secret,public)
---------- co --------->
c = Challenge()
<--------- c ----------
r = Respond(st,c)
---------- r --------->
Check(co,c,r)
Fait-Shamir变换中,Alice选择了哈希函数𝐻H,然后使用它创造挑战:
Alice World
----- -----
co, st = Commit(secret,public)
c = H(public,co)
r = Respond(st,c)
------ co,r ----------->
c = H(public,co)
Check(co,c,r)
如果Alice想要签署一个消息m,她需要让c = H(public, co, m)
,然后把(m, co, r)
公布出去作为消息。
为什么这个方法工作,因为𝐻H是一个随机函数,挑战是均匀随机的被选择,独立于Alice的公开信息和承诺的。安全分析认为Alice不能访问𝐻H内部的代码,只能把𝐻H当作一个oracle。在这种情况下,Alice在不遵循协议的情况下做出正确响应的概率(特别是当她不知道必要的秘密时)与𝐻H的范围的大小成反比。假设𝐻H的定义域和值域分别是𝑋X和𝑌Y,Alice为了伪造进行了𝑞q次调用。那么Alice获得正确𝑟r的值的概率是𝑞/|𝑌|q/|Y|。典型的𝑌=2𝑛Y=2n,所以整个概率是可以忽略的。
有些人会告诉你,这种模式的安全分析被叫做随机oracle模型是有严重缺陷的,因为那有一个反例--在随机oracle模型中安全但是在任何人工hash函数都是不安全的。这个反例表明,如果你努力想要做一个愚蠢的方案,你就会得到一个愚蠢的方案。实际上,Fiat-Shamir早在1986年就已为人所知,并在若干实际应用中得到应用,至今仍完好无损(如果处理得当)。没有人已经提出了一个可行的攻击针对经过Fiat-Shamir转换的Sigma协议的方案(不是故意设计为愚蠢的方案),这用于相当多的密码方案。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2021-10-26 https://github.com/ReadyTalk/avian
2020-10-26 thesis eprint