《Introduction to Security Reduction》加密方案的安全证明在计算困难假设 内容小结
密码学可证明安全推荐书目(系列博客内容为这两本书学习笔记与内容小结):
《密码学中的可证明安全性》杨波 :清华大学出版社
《Introduction to Security Reduction》Fuchun Guo;Willy Susilo;Yi Mu :Springer
思考一:
在加密方案上,根据困难问题的设计不同,证明策略的区别是非常大的,对于一个区分性困难性假设来说,采用的就是上一篇博客的的策略,将区分困难性假设放入挑战密文中,模拟者可以使用敌手的猜测结果去攻破困难问题。模拟者需要保证的是,安全规约的设计合理性,必须要考虑正确挑战密文和错误挑战密文的分别的情况,然后逐步的将敌手攻击规约到困难问题上。
特别是,在计算性困难性假设上,往往采用随机谕言机模型,为什么?因为可以直接把困难问题放入哈希请求中,借助随机谕言机的随机与独立属性,通过对随机谕言机的编程,构造可模拟结果与可规约结果,最终构建成功的安全规约。核心思想是:“对于敌手而言H(x)是随机且未知的”。
思考二:
在随机谕言机下,安全规约的构建中,哈希请求是其中的关键因素。在哈希请求之前,敌手对随机谕言机的所有内容是完全不知道的,对于敌手而言,在不询问随机谕言机的情况下,这就是一次一密的,成功概率为二分之一。在敌手请求哈希请求之后,敌手获得了哈希请求,并且我们假设了敌手具有无限的计算能力,所以敌手就可以直接发动攻击潜在困难问题的攻击。
思考三:
在区分困难性假设的条件下,模拟者希望使用敌手输出的猜测比特来解决困难问题。
在计算性困难假设的条件下,模拟者希望使用哈希询问列表中的结果来解决困难问题。
思考四:
模拟者使用哈希请求列表中的相关结果解决潜在的困难问题,由于我们设定了挑战请求只存在一次,则模拟者随机选取哈希列表中的一对元素解决困难问题的概率即为1/qH。
思考五:
模拟者因为并不知道H(x)中的x值,所以模拟者必须使用一个随机值来替代加密的结果,但是实质上,随机值并不是两个挑战明文中的任意一个的加密结果,这是可以被发现的,因为在真实的协议中,敌手获得挑战密文应该是由任意的挑战明文生成真正的挑战密文,但是在模拟的过程中,模拟者使用的是一个随机的元素来作为挑战密文的构成。但是,我们并不关心这会不会导致什么问题,因为敌手拿到哈希请求以后,其实就会发动攻破困难问题的攻击。在随机谕言机列表中,已经记录下了攻破困难问题实例的条目。
证明结构
模拟阶段:
在设计模拟算法的阶段,至少首先要保证模拟不能中断,如果模拟中断,则规约失败。
困难问题解决阶段:
在这个阶段,我们需要指出那个哈希询问是挑战询问,在模拟阶段,如何从所有的哈希请求中寻找到挑战哈希请求,如何用哈希请求去解决困难问题。
分析阶段:
1. 模拟过程是不可区分的对真实与模拟,在没有挑战哈希询问时,因为只有挑战哈希询问会导致可规约的结果,而其他时候的哈希询问,最终都导致的是可模拟的结果。
2. 成功模拟的概率。
3. 在没有挑战哈希询问的情况下,敌手不能攻破方案,即可模拟的结果绝对不可攻破方案的,所以说可模拟的结果往往是任何人都能计算的。
4. 从哈希列表中发现能够正确解决困难问题的概率。
5. 解决困难问题的优势。
6. 解决潜在问题的时间花费。
规约需要保证的几个条件
(1)所有的模拟回复都是正确的。
(2)挑战密文是正确的,从敌手的角度来看,的确是由算法生成的。
(3)参数的随机性可以一直保持。
(4)在这种安全规约中,挑战密文没有正确与错误的说法,因为挑战密文本身就是一个随机的困难问题实例。
哈希询问定理
这个定理实质上描述了一个非常现实的“现实”,随机谕言机模型对安全性证明的帮助到底有多大,也即是,随机谕言机在多大的程度上维护了这个规约的“合法性”。经过证明推导,得到的结果是,在其他条件都满足的情况下,随机谕言机询问实质上就是给敌手了一个发动攻击的“窗口”,除过这个窗口时间的其他时机,实质上是因为我们的主动编程规约过程,将这些时间排除在外了。
最终,随机谕言机模型下敌手解决潜在计算困难问题的优势为:
【敌手优势 = 模拟成功概率 * 敌手优势 * 从随机谕言机列表中找出解决困难问题条目概率】
随机谕言机模型下,模拟者首先将一次询问设置为挑战询问,然后,模拟者需要能够从这次挑战询问的交互中,提取出能够解决困难问题的实例,如果说模拟者不能区分出那次询问能够解决困难问题,那么模拟者在最后需要随机的从哈希询问列表中选择一个能够解决潜在困难问题的哈希请求。如果是计算容易的问题转换成区分性假设,1/qH 将是没有规约损失的,因为模拟者可以一个接一个的测试哈希请求条目,直到找到挑战哈希请求,然而,如果这个变体区分性困难问题是困难的,那么规约损失几乎是不可避免的。
思考六:
挑战询问和现实条件下不可区分,但是不能保证敌手就没有优势攻破挑战密文。
思考七:
关于解密的要求,首先,要求解密模拟与真实协议不可区分,为了实现如此,任何接受密文与拒绝密文的动作都应该与真实协议相同。第二点,我们要求解密模拟不能够帮助敌手区分挑战密文是模拟产生的还是真实协议产生的,为了实现如此,我们可以编程规约算法,要求所有的错误密文都会被拒绝并且只有由敌手产生的密文是正确的,在这种情况下任何对挑战密文的修改都会被判定为错误密文。(对挑战密文的修改不是敌手产生的,而是修改得来的,可以判定为错误密文)
随机谕言机模型这里的核心是:设定一种方法能够确定的一个敌手发送来的解密请求是正确的密文还是错误的密文,这种方法根据协议的不同而不同,尚无通用方法。