1.Bob应用怎么做
假设Bob使用安全规约构造了一个方案。在规约过程中,Bob证明如果存在一个敌手可以在多项式时间内以不可忽略的概率打破方案,那么就可以构造一个模拟器在多项式时间内以不可忽略的概率破解一个底层困难问题。因此,Bob展示由于困难问题无法被打破,所以不存在一个敌手可以攻破他提出的方案。提出一个问题:
- Bob如何让别人相信它的安全规约是正确的?
验证其安全规约正确性的最简单的方法,就是展示该安全规约过程,会输出一个困难问题的解。非常妙。
但是,Bob无法验证,因为一个成功的验证需要以成功的攻击为前提,而这个攻击表示所提方案是不安全的。
另一种方式是Bob分析其安全规约的正确性。但是安全规约的正确性分析是公钥密码学安全证明中最困难的一部分。
2.理解安全规约
为了证明一个方案的安全性,有以下四个重要的观点:
- 安全证明开始前,假定一个敌手可以打破所提方案。确切的说,当敌手遵循相关安全模型与一个真实方案进行交互时,敌手能够打破这个方案。
- 假设敌手能够破坏任何遵循安全模型的给定方案,前提是该方案在交互过程中表现得像一个真实方案。
- 在安全归约中,敌手与一个给定的模拟方案进行交互。我们需要使敌手确信该方案是真实方案并试图攻破它。最终,敌手的攻击行为将被归约为求解一个底层困难问题。
- 无法确定当敌手知道给定的方案不是真实方案时,敌手打破模拟方案与打破真实方案的优势是否相同。更不知道当给定的方案看起来像真实方案时,敌手如何打破这个模拟方案。
安全规约的困难性在于如何确保敌手接受模拟方案作为真实方案 以及如何确保敌手攻击可以被归约到解决底层困难问题。
3.成功模拟与不可区分模拟
这是两个不同的概念,区别如下:
- 成功模拟。从模拟器的视图来看,如果说模拟器在与敌手交互的过程中没有发生中断(abort),这个模拟就是成功的。模拟器根据规约算法决定是否中断模拟。一般情况下假设敌手在模拟完成前无法中断攻击。
- 不可区分模拟。若攻击者无法区分模拟方案与实际方案,则成功的模拟将与真实攻击不可区分。而一个不成功的模拟与真实攻击可以区分。模拟是否可以区分由敌手进行判定。不可区分的模拟是理想的,尤其当我们希望敌手以破解假设同样的优势攻破模拟方案时。
即使使用正确的安全规约方法,模拟过程仍然可能以一定的概率失败。书中 成功的模拟仅仅是指模拟器在运行过程中未发生中断。也就是说在成功模拟时,模拟器回应给敌手的问询可能是不正确的。但是为了简化证明,如果来自敌手的问询不是正确的答复,那么规约算法应该告诉模拟器中断。例如,在对一个数字签名方案的规约中,如果模拟器不能计算针对敌手问询的有效签名,那么模拟器必须中断。
一个成功的模拟并不意味着模拟与真实攻击是不可区分的。这个在后面博客中将会有讨论,先插个眼。
4.失败攻击与成功攻击
使用标题中的两种攻击方式来明确敌手对模拟方案的攻击。
- 失败攻击。如果在安全模型下的攻击者无法打破模拟方案,那么敌手的攻击是失败的。来自敌手的任何输出(如错误符号⊥\perp⊥,一个随机字符串,一个错误的答案,或者攻击者的中止行为)均当作失败攻击。
- 成功攻击。如果攻击者按照安全模型可以打破模拟方案,该攻击就是成功的。
通过定义攻击的两种类型来简化规约过程的描述,特别是在模拟结束时,不存在来自敌手的中断行为。任何不成功的攻击均被当作失败攻击。模拟器可能在模拟过程中因无法生成有效攻击而中断。敌手发起的攻击要么失败,要么成功。如果敌手返回一个失败攻击等价于敌手以概率0返回一个成功攻击。因此,在模拟结束时,敌手将会以特定概率发起成功攻击。
5.有效攻击与无效攻击
假定敌手被给予一个模拟方案,敌手对模拟方案的攻击可以分为两种类型:
- 无效攻击。该攻击不能被归约到解决一个底层困难问题。
- 有效攻击。该攻击可以被归约到解决一个底层困难问题。
所以敌手发起的对模拟方案的攻击要么是有效的,要么是无效的。需要强调的是一个失败的攻击可以是有效攻击,一个成功的攻击也可以是无效的攻击,这取决于密码系统、所提方案、以及它的安全规约。
6.模拟攻击
把模拟情况分为三种类型(成功模拟,可区分模拟,不可区分模拟),把攻击分为四种类型(失败攻击,成功攻击,有效攻击,无效攻击)在第九篇博客将会解释他们之间的关系。
- 在成功模拟结束时发起的攻击既可能是失败的也可能是成功的,这取决于该成功模拟是否具有可区分性。
- 在可区分模拟结束时发起的攻击既可能是失败攻击,也可能是成功攻击。换言之,敌手可以自主决定发起何种攻击。这与打破假设并不矛盾。
- 在不可区分模拟最后发起的攻击,其成功概率由打破假设定义。然而,对模拟方案的攻击既可能是有用攻击,也可能是无用攻击。需要强调的是,不可区分模拟无法在安全归约中保证攻击的有用性。
模拟的不可区分性分析在所有安全性归约中至关重要 。然而,并非整个模拟过程都需要编程一个不可区分模拟。对于基于判定型困难假设的加密方案,若命题ZZZ为假,则模拟过程必须具有可区分性;对于基于计算型困难假设的加密方案(参见第4.11节),我们仅要求敌手向随机预言机发起特定哈希查询前,模拟过程保持不可区分即可。
7.成功且正确的安全规约
成功的安全规约与正确的安全规约概念是不同的。
- 成功的安全规约。如果模拟是成功的且在模拟过程中敌手的攻击是有效的,我们就说该规约是成功的。
- 正确的安全规约。当且仅当在破解假设成立的条件下,如果利用敌手的攻击解决一个底层困难问题的优势在多项式时间内是不可忽略的,那么该规约就是一个正确的规约。
为了获得正确的安全归约,需要实现成功的安全归约。具体而言,当安全归约能够在多项式时间内以不可忽略的优势解决底层困难问题时,该归约即为正确。
安全证明的组成部分
基于规约的安全证明有以下组成部分,用来证明所提方案是安全的。
- 模拟。规约算法应该展示模拟器如何产生一个模拟方案,以及如何与敌手进行交互。
- 求解。规约算法应该通过以下方式证明模拟器如何解决底层困难问题:在敌手对模拟方案发起攻击的帮助下,返回问题实例的解。
- 分析。经过模拟和求解之后,应该通过分析展示如果打破假设成立,那么解决底层困难问题的优势应该是不可忽略的。
上述三个组成部分对于证明安全归约的正确性至关重要,即所提方案在对应安全模型的基础困难性假设下确实具有安全性。
这三个组件的具体细节因加密系统、所提方案、底层困难问题及归约方法的不同而存在显著差异。