General forking lemma(分叉引理)

文章目录

  • General forking lemma(分叉引理)
    • (一)、前言
      • 1、为什么使用分叉引理
      • 2、什么是分叉引理
    • (二)、基本内容
      • 1、随机算法AAA
      • 2、分叉算法FAF_AFA​
    • (三)、分叉引理应用于Schnorr签名
      • 1、Schnorr签名
      • 2、随机算法 AAA
      • 3、解决困难问题算法 DDD
    • (四)、分叉引理应用于Schnorr多签名
      • 1、Schnorr多签名
      • 2、AAA 函数(对敌手询问的回复)
      • 3、bad=truebad = truebad=true 的概率
  • 参考文献

(一)、前言

1、为什么使用分叉引理

  • 证明数字签名方案的安全性常用的一种模型是随机预言模型ROM。在随机预言模型中,数字签名方案使用的 hashhashhash 函数至少有一个需要被看做随机谕言机。
  • 在这种模型下,证明数字签名方案安全性的一个重要技术就是随机谕言机重放技术,也就是通过重放 hashhashhash 值来破解一个困难问题。该技术的理论依据就是著名的分叉引理(Forking Lemma)。1

2、什么是分叉引理

  • 令 QiQ_iQi​ 代表敌手AAA发送的第 iii 次随机预言询问,hih_ihi​ 表示挑战者CCC 对第 iii 次随机预言询问所返回的结果。分叉引理的示意图如图:

    在安全性证明中,挑战者 CCC 为了能够利用敌手破解一个困难的问题,它需要运行两次挑战过程,使得第二次挑战过程的输出结果和第一次的输出结果在开始一段时间内都是相同的,但是在某处之后就会发生改变,从而挑战者 CCC 据此能够破解一个困难的问题,如离散对数问题。

(二)、基本内容

1、随机算法AAA

  • A(x,h1,...,hq,ρ)A(x,h_1,...,h_q,ρ)A(x,h1​,...,hq​,ρ) denotes its output on inputs xxx, h1,...,hqh_1,...,h_qh1​,...,hq​, and coins ρρρ. Then xxx is a public key, h1,...,hqh_1,...,h_qh1​,...,hq​ are replies to queries to a random oracle, JJJ is an integer in the range 0,...,q0, . . . , q0,...,q and σ\sigmaσ is a side output( JJJ 是谕言机回答所对应的索引/指针,σ\sigmaσ 相当于部分签名,用来后面解决困难问题)
  • While means that we choose ρρρ at random and let (J,σ)=A(x,h1,...,hq,ρ)(J,\sigma) = A(x,h_1,...,h_q,ρ)(J,σ)=A(x,h1​,...,hq​,ρ) 相当于强调了敌手有随机选择的能力
  • The accepting probability of AAA, denoted accaccacc, is defined as the probability that J≥1J≥ 1J≥1 in the experiment,或者

2、分叉算法FAF_AFA​


或者

算法 AAA 相当于敌手伪造签名的算法,其中 I=0I=0I=0 表示伪造签名失败。分叉算法FAF_AFA​就是利用算法 AAA 输出同一个消息两个不同且有效签名的过程

  • frkfrkfrk is the probability that b=1b=1b=1

    或者

  • 概率 accaccacc 和概率 frkfrkfrk 具有如下关系:

    或者

    其中 qqq 是哈希询问次数,hhh 是 HHH 集合元素个数( h1,...hqh_1,...h_qh1​,...hq​ 是从 HHH 中随机选择),具体证明见参考文献2

  • 一般分叉引理关于 accaccacc 和 frkfrkfrk 的关系说明:如果存在一个敌手能够以概率accaccacc伪造一个数字签名方案的有效签名,则存在一个算法 FAF_AFA​ 通过利用敌手能够以 frk≥acc∗(accq−1h)frk \geq acc * (\frac{acc}{q} - \frac{1}{h})frk≥acc∗(qacc​−h1​) 的概率输出该签名方案两个有效且相关的不同签名。

(三)、分叉引理应用于Schnorr签名

1、Schnorr签名

2、随机算法 AAA

  • 其中 BBB is a forging algorithm that (t,qS,qH,ϵ)−(t, q_S, q_H, \epsilon)-(t,qS​,qH​,ϵ)−breaks the Schnorr signature scheme
  • 算法 AAA 调用伪造签名算法 BBB ,在敌手的视角算法 AAA 扮演挑战者 CCC 的角色,回答敌手关于哈希和签名的询问
  • 解释 IfT[R∥m]≠⊥thenbad←trueIf \enspace T[R \| m] \neq \bot \enspace then \enspace bad \leftarrow trueIfT[R∥m]​=⊥thenbad←true :
    这个判断条件的意思是说,如果签名查询阶段的消息在哈希查询阶段被询问过,则bad←truebad \leftarrow truebad←true
    为什么签名查询的消息不能在哈希查询阶段被询问?原因:生成签名的顺序是先将消息进行哈希,再产生签名。而在敌手进行签名查询时,算法 AAA 是先随机选择一个 sss ,然后构造 RRR ,相当于先构造了签名,此时需要对消息的哈希进行更改,使之成为与 sss和RRR 配对的消息哈希,即要修改 T[R∥m]T[R \| m]T[R∥m] 的取值为hctr′h_{ctr}^{'}hctr′​;而如果一开始敌手就在对消息进行哈希查询时碰巧选择了算法 AAA精心构造的 RRR(当敌手查询 R∥mR \| mR∥m 的哈希值时,算法 AAA 会选择一个随机数 hctrh_{ctr}hctr​ 赋给T[R∥m]T[R \| m]T[R∥m] ),此时在签名查询阶段更改后的 T[R∥m]T[R \| m]T[R∥m](其取值为hctr′h_{ctr}^{'}hctr′​) 就会和之前的 T[R∥m]T[R \| m]T[R∥m] (其取值为hctrh_{ctr}hctr​)产生碰撞(哈希同样的消息,产生不同的哈希值)。如果产生了碰撞,敌手就可以区分这不是一个真正随机谕言机,从而中止游戏,所以要避免这样的情况发生,就要规定签名查询的消息不能在哈希查询阶段被询问过。
  • 如果敌手伪造的不是一个合法的签名,或者挑战签名之前被询问过,或者 badbadbad 为 truetruetrue ,则算法 AAA 输出为0(也就是I=0I=0I=0),运行失败。
  • 概率 accaccacc

    badbadbad 为 truetruetrue 的概率:一次签名查询中的T[R∥m]T[R \| m]T[R∥m] 和哈希询问中所有 T[R∥m]T[R \| m]T[R∥m] 中某一个T[R∥m]T[R \| m]T[R∥m]产生冲突的概率时 qH+qS+12k\frac{q_H + q_S +1}{2^k}2kqH​+qS​+1​,一共有 qSq_SqS​ 次签名查询,就再乘以qSq_SqS​即可。

3、解决困难问题算法 DDD

  • Algorithm DDD : (t′,ϵ′t^{'}, \epsilon^{'}t′,ϵ′)-solves the discrete logarithm problem

    FAF_AFA​ 是与 算法AAA 关联的分叉算法,算法 DDD 利用分叉算法FAF_AFA​输出的两个不同签名解决困难问题。
  • 图中注释 等号 两侧 RRR 一样。是因为分叉引理中两个分支中的哈希查询的内容都一样,只是在哈希结果中产生分叉。即产生相同消息的不同签名。

(四)、分叉引理应用于Schnorr多签名

1、Schnorr多签名


2、AAA 函数(对敌手询问的回复)


3、bad=truebad = truebad=true 的概率


要想使 bad2=truebad_2 = truebad2​=true,则敌手询问过 H1(X∥R∥L∥m)H_1(X\|R\|L\|m)H1​(X∥R∥L∥m),可以分为敌手是否知道 RRR 的取值这两种情况。
第一种,敌手知道 RRR 的取值,并故意询问H1(X∥R∥L∥m)H_1(X\|R\|L\|m)H1​(X∥R∥L∥m)。已知R←∏i=1nRiR\leftarrow {\prod_{i=1}^n}\,R_iR←∏i=1n​Ri​,R1R_1R1​ 由算法 AAA 精心构造,与敌手独立,R2,...,RnR_2,...,R_nR2​,...,Rn​ 敌手知道,所以如果敌手知道 RRR ,则必然知道 R1R_1R1​ ,则曾经询问过 H0(R1)H_0(R_1)H0​(R1​),所以敌手知道 RRR 的概率就是敌手曾询问过 H0(R1)H_0(R_1)H0​(R1​) 的概率:qS(qH+nmaxqS)p\frac{q_S(q_H+n_{max}q_S)}{p}pqS​(qH​+nmax​qS​)​ (其中 ppp 为群的阶,即群中元素个数;参与任何签名查询或伪造的集合 LLL 中的公钥数最多为nmaxn_{max}nmax​ )。
第二种,敌手不知道RRR 的取值,只是碰巧询问过 H1(X∥R∥L∥m)H_1(X\|R\|L\|m)H1​(X∥R∥L∥m) ,所以易知第二种的概率为 qS(qH+qS)p\frac{q_S(q_H+q_S)}{p}pqS​(qH​+qS​)​ 。

参考文献


  1. https://blog.csdn.net/qq_44775134/article/details/107833717 ↩︎

  2. General Forking Lemma ↩︎

多签名基础——General forking lemma(分叉引理)相关推荐

  1. 格密码学重要概念: 分叉引理Forking lemma

    简介:开始是用来证明盲签名的不可伪造性,后面被用来证明通用签名的不可伪造性. 1 为什么使用分叉引理? 证明数字签名方案的安全性常用的一种模型是随机预言模型ROM.在随机预言模型中,数字签名方案使用的 ...

  2. UA MATH523A 实分析1 集合论基础2 序关系与Zorn引理

    UA MATH523A 实分析1 集合论基础2 序关系与Zorn引理 偏序与全序 关于最大元的几个结论 选择公理 Hausdorff Maximal Principle与Zorn引理 良序原则 这一讲 ...

  3. Android反编译解包、重新打包、重新签名基础步骤自理文档

    反编译解包.重新打包.重新签名基础步骤自理文档   一.[反编译apk获取文件目录] 1.apktool是google的工具,需要下载https://code.google.com/p/android ...

  4. pumping lemma 泵引理

    正则语言的泵引理 上下文无关的泵引理 区别在于正则简单:w为足够长的串时,w=xyz的形式,则xy^kz仍属于L 上下文无关:w为足够长的串时,w=uvxyz的形式,则uv^kxy^kz仍属于L 可以 ...

  5. 加解密、签名基础理解一

    加密算法很容易理解,就是把明文变成人家看不懂的东西,然后送给自己想要的 送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如果密文给人家截获而泄密. 加密算法有俩大类,第一种是不 ...

  6. 【原创】flutter之发布插件包到pub.dev离线在线两套大法

    发布何种包? 首先 包分2种一种是纯dart包,不包含android. ios桥接代码, 另外一种 是 插件包,根据需求创建不同的包 (模块是另外一种,主要是用于安卓引用flutter模块的,是需要指 ...

  7. Compact Multi-Signatures for Smaller Blockchains学习笔记

    1. 引言 Boneh等人2018年论文<Compact Multi-Signatures for Smaller Blockchains> 在<Simple Schnorr Mul ...

  8. 论文中的定理(Theorem)、引理(Lemma)、推论(Corollary)

    Theorem:就是定理,比较重要的,简称是 Thm. Lemma:小小的定理,通常是为了证明后面的定理,如果证明的篇幅很长時,可能會把证明拆成几个部分來论述,虽然篇幅可能变多,但派络却很清楚. Co ...

  9. 区分定理(Theorem)、引理(Lemma)、推论(Corollary)等概念

    ZZ: http://blog.sina.com.cn/s/blog_a0e53bf70101jwv1.html Theorem:就是定理,比較重要的,簡寫是 Thm. Lemma:小小的定理,通常是 ...

最新文章

  1. 推荐15个国外使用 CSS3 制作的漂亮网站
  2. RAC 修改 DB 实例名 步骤
  3. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...
  4. Win64 驱动内核编程-1.环境搭建
  5. java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字
  6. setting virtualbox share folder in windows7 system
  7. Python类的结构及属性的获取机制
  8. bzoj4472: [Jsoi2015]salesman(树形dp)
  9. java pdf中文乱码_java转pdf(html转为pdf),解决中文乱码,标签不规范等问题
  10. Linux获取本机hostname函数,Linux下获得主机与域名-gethostbyname和gethostbyaddr
  11. BZOJ2286: [Sdoi2011]消耗战(虚树)
  12. c语言编程统计单词的个数,使用c语言如何统计单词个数
  13. 《Python程序设计基础》在亚马逊当当京东互动出版网淘宝等各大书店上架
  14. 设计模式 可复用面向对象软件的基础_面向对象的可复用设计模式之简单工厂模式(1/24)...
  15. 用Scheme写Scheme编译器(三):一元运算
  16. 企业为什么要做高端网站优化呢?
  17. 【重点】计算机二级公共基础重点
  18. 计算机辅助翻译与笔译的关系,机器翻译 vs 计算机辅助翻译:有什么区别?
  19. Android Beacon开发
  20. windows提升效率神器

热门文章

  1. 山西省2021年高考试成绩查询,山西省2021年普通高等学校招生体育专业考试成绩查询入口...
  2. 关于十六进制、asc码
  3. python pdf与图片互转
  4. 浪潮服务器安装windows2008系统,浪潮NF5280M3安装Windows Server 2008 R2注意事项
  5. 高德地图 scale
  6. lightroom 闪退_微信QQ一碰就闪退,别人永远看不了你的隐私~
  7. 农夫山泉基于SAP SMP移动应用案例分析
  8. M1 Mac使用photoshop液化、存储为web格式黑屏如何解决
  9. 成大事,赚大钱,都要有股永不服输的精神
  10. 用c语言实现作曲与播放教程~,原创哦~