实现正确的安全归约
从安全归约到正确的安全归约,需要分析解决底层困难问题的优势都是不可忽略的。
安全归约包含模拟算法和求解算法。模拟是敌手和模拟方案之间的交互,模拟方案是由问题实例生成并遵循模拟算法。如果模拟器在模拟过程中没有中止,则模拟成功;如果中止,则是因为它无法正确应答敌手的询问。
如果模拟是成功的,敌手就会对模拟方案发起攻击。该攻击有可能是成功攻击,具体取决于模拟和归约算法。如果模拟方案与真实方案不可区分,那么敌手应以攻破假设中的概率对模拟方案发起一次成功攻击。如果模拟方案和真实方案可区分,那么敌手将以恶意概率对模拟方案发起成功攻击。这个恶意概率取决于归约算法。
无论是成功攻击还是失败攻击,敌手的攻击都有可能是能解决底层困难问题的有用攻击。这取决于密码系统还是归约算法。只有有用攻击可以归约到解决困难问题。
最后,假设敌手可以在多项式时间内以不可忽略的优势攻破真实方案,如果解决底层困难问题的优势是不可忽略的,则安全归约是正确的。
反证法
我们利用反证法证明任何敌手在多项式时间无法以不可忽略的优势攻破所提方案。首先,有一个公认的困难问题;其次,我们假设存在一个可以攻破该方案的敌手,并通过安全归约将敌手的攻击归约到解决底层困难问题;最后,(由于该问题是困难的)我们得出该方案是安全的。其中的矛盾点在于,存在一个可以攻破该方案的敌手的假设成立意味着底层困难问题是一个简单问题,这显然不符合事实。