最近看到几篇ID-based的论文有利用forking lemma进行概率推导的,所以先写写这个。
why,what,how
- 为什么使用分叉引理?
证明数字签名方案的安全性常用的一种模型是随机预言模型ROM。在随机预言模型中,数字签名方案使用的hash函数至少有一个需要被看做随机预言机。在这种模型下,证明数字签名方案安全性的一个重要技术就是随机预言机重放技术,也就是通过重放hash值来破解一个困难问题。该技术的理论依据就是著名的分叉引理(Forking Lemma)。
- 什么是分叉引理?
2000年 , Pointcheval和 Stern提出了一般签名体制的概念 , 为了证明随机预言模型下数字签名方案的安全性而提出的。
令
Qi?代表敌手
A发送的第
Qi?次随机预言询问,
hi?表示挑战者
C对第
i次随机预言询问返回的结果。分叉引理的示意图如图。
在安全性证明中,挑战者
C为了能够利用敌手
A破解一个困难的问题,它需要运行两次挑战过程,使得第二次挑战过程的输出结果和第一次的输出结果在开始一段时间内都是相同的,但是在某处之后就会发生改变,从而挑战者
C据此能够破解一个困难的问题,如大数分解问题或者离散对数问题。
Pointcheval2000提出的分叉引理
假设
(KeyGen,Sign,Ver)是一个安全参数为
k的数字签名方案,
A是一个输入仅是公开数据的概率多项式时间算法。令
Q是
A询问随机预言机的最大可能次数。如果
A在时间
t内能够以概率
ε>7Q/2k生成一个有效的签
名
(μ,σ1?,h,σ2?),则存在一个新的算法
B,它通过控制算法
A,能够在期望的时间
t′≤84480tQ/ε内生成两个有效的签名
(μ,σ1?,h,σ2?)和
(μ,σ1?,h′,σ2′?),使得
h??=h′。
原式在该篇论文的通用forking lemma中。
Pointcheval和Stern提出的上述分叉引理仅仅适用于普通的数字签名方案,而对于其他具有某些特殊性质的数字签名算法来说,上述分叉引理是不适用的(除盲签名,Schnorr,El Gamal签名)。为了将Pointcheval-Stern分叉引理的基本思想扩展到更多其他类型的数字签名方案中,设计适用于所有签名方案的分叉引理,Bellare2006给出了下面的一般分叉引理(General Forking Lemma)。
引理(一般分叉引理).设
q是一个正整数,
H是一个具有
h>2个元素的集合。令
IG是参数生成算法,
B是一个随机算法,算法
B的输入是
{x,h1?,…,hq?},输出是
(J,σ),其中
x∈{0,?,q},hi?∈H(i∈[q])。
令算法
B的接受概率
acc为试验
EXP=[x←IG;h1?,?,hq?←H;(J,σ)←B(x,h1?,?,hq?)]中
J≥1的概率。
令与
B相关的分叉算法
FB?表述如下。
1.算法
FB?输入
x:
2‘随机选择
ρ∈{0,1},
3.从集合
H中随机选择
h1?,?,hq?,
4.
(I,σ)←B(x,h1?,?,hq?;ρ),
5.如果
I=0,则返回
(0,ε,ε),
6.从集合
H中随机选择
h1′?,?,hq′?,
7:
(I′,σ′)←B(x,h1?,?,hI?1?,hI′?,?,hq′?;ρ),
8.如果
I=I′并且
h??=h′,则输出
(1,σ,σ′);否则输出
(0,ε,ε),
设
frk=Pr[b=1:x←IG;(b,σ,σ′)←FB?(x)],则我们有
frk?acc?(qacc??h1?)
这里我们简单地对上述一般分叉引理进行一些直观的解释。首先,我们可以将实验
EXP=[x←IG;h1?,?,hq?←H;(J,σ)←B(x,h1?,?,hq?)]看做是敌手
A伪造签名的过程,其中算法
B就是敌手
A用来伪造签名的算法。因此我们可以容易地知道,概率
acc实际上就是敌手
A成功伪造签名的概率。其次,分叉算法实际上可以看做是利用算法
B输出两个签名的过程,所以概率
frk是指分叉算法
FB?能够输出两个有效且不同签名的概率(需要满足
hI?=hI′?)。
综合可得,一般分叉引理关于
acc和
frk的关系说明,如果存在一个敌手
A能够以概率
acc伪造一个数字签名方案的有效签名,则存在一个算法
FB?通过利用敌手
A能够以概率
frk?acc?(qacc??h1?)输出该签名方案两个有效且相关的不同签名。