《Introduction to Modern Cryptography》Sign with RO 小结
关于随机谕言机的两个关键问题:
随机谕言机在现实中保证了什么?
学术界当前还难以明确的回答,随机谕言机在现实中保证了什么,个人觉得,最简单来说,在现实中,我们不能假设敌手询问的次数是qH()次的,理论上我们可以假设敌手做多项式时间内的询问,但是现实中,这并不能保证询问的概率是可以忽略的,如果敌手运气非常好,那么并不要多项式时间内的询问。最为重要的一点是,随机谕言机在现实中并不存在。
随机谕言机在规约中保证了什么?
在安全规约中,我们往往把困难问题的实例嵌入随机预言机的询问中,如果敌手能够询问到该困难问题实例,并且发出一个有效的攻击,那么正好我们将敌手的攻击规约到了困难问题实例上。但是值得注意的点是,如果敌手没有询问到这个困难问题实例,那么根据随机谕言机编程结果,返回给敌手的内容是随机且独立的,即是返回的是一个随机的结果,与困难问题没有任何关系,相当于在某种程度上拒绝了敌手的询问,屏蔽了敌手发起的无用的攻击,从这一点来看,随机谕言机的可编程设计,其实具备非常强的前置条件,用一种几乎由模拟者控制的严格方式,捕获了其他的可能安全风险与敌手发起的不能攻破困难问题的攻击,此时,我们可以看出这样要求的随机谕言机难以具体的对应现实中的攻击。仅仅只能证明,关键信息是固有安全的。
RSA-FDH 在随机谕言机模型下安全
方案构造:
1 秘钥生成算法,由RSA秘钥生成算法完成,并选择全域哈希函数H
2 签名生成算法,对待签名消息进行哈希,使用私钥对其进行签名。
3 验证算法,使用公钥对其签名进行验证。
“no-message attack”:
无消息攻击,即为敌手不能够请求签名,但是可以做哈希请求。
这个证明是非常简单的,规约算法描述如下:
1. 模拟者随机挑选RSA困难问题实例(N,e, y)
2. 模拟者初始化随机谕言机列表,初始化一个上述条目。
3. 模拟者允许敌手进行哈希询问(x)返回y.
如果x 被询问过,则返回列表中存在的y值。
如果x 没有被询问过,则返回一个随机的值。
4. 在某个时刻,敌手输出对于选择的消息的仿造签名,这签名时之前询问过哈希值的伪造签名。
如果敌手能够仿造一个合法的签名,那么敌手应该能够对y, 进行e次开方运算,但是这是困难的。
敌手的视图和发起真实“无消息攻击”的视图不可区分,因为随机谕言机返回的值是随机且独立的。
所以敌手攻破这个困难问题并仿造成功的概率是1/q, 一共可进行q次询问,如果敌手解决RSA困难实例的问题的优势是A,则攻破这个方案的优势就是A/q 。但是,RSA问题实例是困难的,所以这个优势是可以忽略的。
“chosen-message attack”:
需要注意的几个限制:
1. 模拟者是不掌握私钥的。
2. 模拟者给出的签名实例,必须是可模拟的。
3. 敌手所仿造的签名实例,必须是可规约的。
定理描述如下:
证明:
首先,敌手赢得这个实验的表达式如下:
该实验描述如下:
1. 选择随机函数
2. 生成系统参数,敌手可以获得公钥,并且允许进行哈希访问与签名访问。
3. 最终,敌手输出一个没有请求过的m消息的签名。验证成功输出1,验证失败输出0。
形式化证明的三个条件:
(1)敌手不会请求同一个消息两次
(2)如果敌手请求一个消息m的签名,那么一定首先请求过哈希结果。
(3) 如果敌手输出签名,那么一定请求过消息的哈希结果。
1. 模拟者选定序号,这将意味着在序号次请求放入困难问题实例。
2. 运行敌手子程序,敌手获得公钥。初始化列表,初始为空。当敌手进行哈希请求时,随机谕言机做如下回复:
(1)如果正是第i =j 次,预言机返回RSA实例 y*。
(2)否则随机选择签名结果,并计算这个结果的e次方作为哈希结果返回给敌手作为哈希结果。
(此时,我们发现,这里的这个签名时可模拟的,在不需要私钥的情况下也能计算得到签名)
当敌手请求一个消息m的签名时,模拟者回复如下:
(1)如果这并不是第j次请求,那么如果列表中存在签名,则直接返回。
(2)如果这正好是第j次请求, 那么模拟者终止这次实验。
(敌手不能请求困难问题实例的这次消息签名)
3. 敌手输出一个仿造签名,如果敌手正好仿造除了设定的第j次签名,那么输出签名,模拟结束。
安全分析:
上述整个规约算法运行在多项式时间内,模拟者首先生成RSA参数,随机选择y, 这个索引需要由模拟者选择,作为对敌手对应此次请求为最终请求的猜测。(假设会在此次敌手发动有效攻击)当这次的猜测如果成立,敌手在RSA实验和这次签名实验的视图将是同分布的。也就是说,随机谕言机对敌手的回复是随机的值。
(1)第J次的RSA实例,用y*回复是随机选择的。
(2)第非J次的回复,模拟计算得到的y也是随机的,与RSA同分布的。
并且,在这个规约算法中要求敌手不能够请求对应第J次的签名请求。
如果模拟者猜测正确,那么模拟者可利用仿造的签名解决这个RSA问题实例,又因为模拟者猜测正确的概率是1/q. 所以可得:
因为RSA问题是关于GenRSA苦难的,存在一个可忽略函数如下:
因为q是多项式的,而整个概率是可忽略的,所以敌手的优势就是可忽略的。