简介:开始是用来证明盲签名的不可伪造性,后面被用来证明通用签名的不可伪造性。
- 1 为什么使用分叉引理?
证明数字签名方案的安全性常用的一种模型是随机预言模型ROM。在随机预言模型中,数字签名方案使用的hash函数至少有一个需要被看做随机预言机。
在这种模型下,证明数字签名方案安全性的一个重要技术就是随机预言机重放技术,也就是通过重放hash值来破解一个困难问题。该技术的理论依据就是著名的分叉引理(Forking Lemma)。 - 2 什么是分叉引理?
2000年 , Pointcheval和 Stern提出了一般签名体制的概念 , 为了证明随机预言模型下数字签名方案的安全性而提出的。
令 Q i Q_i Qi代表敌手 A \mathcal A A发送的第 Q i Q_i Qi次随机预言询问, h i h_i hi表示挑战者 C \mathcal C C对第 i i i次随机预言询问返回的结果。分叉引理的示意图如图。
在安全性证明中,挑战者 C C C为了能够利用敌手 A \mathcal A A破解一个困难的问题,它需要运行两次挑战过程,使得第二次挑战过程的输出结果和第一次的输出结果在开始一段时间内都是相同的,但是在某处之后就会发生改变,从而挑战者 C \mathcal C C据此能够破解一个困难的问题,如大数分解问题或者离散对数问题。
Pointcheval20001提出的分叉引理
假设 ( K e y G e n , S i g n , V e r ) (KeyGen,Sign,Ver) (KeyGen,Sign,Ver)是一个安全参数为 k k k的数字签名方案, A \mathcal A A是一个输入仅是公开数据的概率多项式时间算法。令 Q \mathcal Q Q是 A \mathcal A A询问随机预言机的最大可能次数。如果 A \mathcal A A在时间 t t t内能够以概率 ε > 7 Q / 2 k \varepsilon > 7Q/2^k ε>7Q/2k生成一个有效的签
名 ( μ , σ 1 , h , σ 2 ) (\mu,\sigma _1,h,\sigma _2) (μ,σ1,h,σ2),则存在一个新的算法 B \mathcal B B,它通过控制算法 A \mathcal A A,能够在期望的时间 t ′ ≤ 84480 t Q / ε t' \le 84480tQ/\varepsilon t′≤84480tQ/ε内生成两个有效的签名 ( μ , σ 1 , h , σ 2 ) (\mu,\sigma _1,h,\sigma _2) (μ,σ1,h,σ2)和 ( μ , σ 1 , h ′ , σ 2 ′ ) (\mu,\sigma _1,h',\sigma _2') (μ,σ