zoukankan      html  css  js  c++  java
  • 第四十七个知识点:什么是Fiat-Shamir变换?

    第四十七个知识点:什么是Fiat-Shamir变换?

    只要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|)。典型的(Y = 2^n),所以整个概率是可以忽略的。

    有些人会告诉你,这种模式的安全分析被叫做随机oracle模型是有严重缺陷的,因为那有一个反例--在随机oracle模型中安全但是在任何人工hash函数都是不安全的。这个反例表明,如果你努力想要做一个愚蠢的方案,你就会得到一个愚蠢的方案。实际上,Fiat-Shamir早在1986年就已为人所知,并在若干实际应用中得到应用,至今仍完好无损(如果处理得当)。没有人已经提出了一个可行的攻击针对经过Fiat-Shamir转换的Sigma协议的方案(不是故意设计为愚蠢的方案),这用于相当多的密码方案。

  • 相关阅读:
    window.parent ,window.top,window.self 详解及parent和opener的区别
    jQuery $.extend()用法总结
    JQuery中each()的使用方法说明
    jQuery.isPlainObject()的作用
    change和onchange、click和onclick的区别
    zabbix客户端一键安装脚本(主动模式监控)
    jumpserver在centos 7上的部署
    用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    GitLab的安装及使用教程
    一个客户端一键安装环境和服务的shell脚本
  • 原文地址:https://www.cnblogs.com/zhuowangy2k/p/12246575.html
Copyright © 2011-2022 走看看