密码_ 现代密码安全建模:怎么证明算法计算是安全的?

从安全计算的起点到终点:

能够证明安全的核心思想是“约定”( reducer )。 我们需要将复杂的加密算法和协议安全性问题归纳为(或若干)极小的原件、安全方案或协议的最基本的部分或模块。 密码学家只需分析这些极微小的原件的安全性。 我们可以把这些极少的原本的安全性称为“起点”,把最终的加密算法和协议的安全性称为“终点”。 密码算法或协议的贡献取决于“起点”和“终点”之间的距离。 “起点”越低,“终点”越高,其贡献和价值就越大。

如何定义起点

加密算法或协议的起始点可以是未假定的或者一个或多个假定,但是基于任何假定的加密算法或协议通常是低效率的。 现实中,人们宁愿妥协,接受一些假设,以追求更高的效率。 例如,如果世界上没有符合制约条件的敌人的话,就能打破极少的原本。 那么,解读是什么呢?我们必须明确敌人的目标。 如果敌人达到了制约条件下指定的目标,那么这一小部分的书被认为是被打破了。 大多数情况下,我们的假设都要得到证实。 可伪证的假设都可以作为游戏来设计。 在这个游戏中,根据给定的安全参数,挑战者和敌人对话,游戏结束时敌人发出输出。 如果输出满足预定,则认为敌人战胜了挑战者。 也就是说,这个假设不成立,这个极少的原本被打破了。 我们必须以游戏的形式表示对敌人的制约(敌人能做什么、不能做什么),在挑战者指定的计算步骤数以内输出。 该方法被称为基于游戏的安全定义。

如何定义终点?

加密算法和协议的安全性也是基于游戏定义的。 通常需要将密码算法和协议的安全描述细分为多个属性,分别给各个属性以游戏为基础的定义,需要分别进行证明。 例如,“承诺”( commitment )是一个非常重要的加密工具。定义承诺结构的安全性通常需要两个属性:“绑定”( binding )和“隐藏”( hiding )。 团结性是指承诺人承诺后,不能改变承诺的内容。 在游戏中,挑战者在约定后要求作为两个不同的信息公开,也被称为双重公开进行了验证。 隐性是指在承诺者公开内容之前,不能从看到的信息中推测出承诺的内容。 游戏中,挑战者首先发出两条长度相同的信息,随机向挑战者选择其中一条信息作出承诺。 挑战者看看来自挑战者的承诺信息,推测哪个信息已经被承诺了。 有趣的是,这种无法区分的方式使挑战者无法获得有关明文的信息,这是密码学家经过数十年的研究而广泛承认的安全性定义。

另一方面,基于游戏的定义也有自己的局限性。 其中最重要的特征是,一般来说只是模拟协议在孤立环境中单独运行的安全性,不能对复杂的同时环境的安全性进行模型化。 近15年来,密码协议的安全性定义和安全分析工作有了很大发展。 在此期间,由自然核心( Ran Canetti )提供并主导推广的通用可组合安全模型广泛接受于密码学界,并且广泛应用于密码协议的安全模型中。 通用的可组合安全模型是基于仿真的定义。 设计者通过定义f来模拟对目标口令协议的所有功能要求和安全要求。 该密码协议的安全强弱完全取决于f的具体定义。 环境机械的目的是区别现实世界和理想世界,在运行中向协议参加者提供协议输入,读取协议输出的同时,环境机能实时与攻击者进行通信。 如果攻击者能够在理想世界中模拟攻击现实世界协议带来的影响,环境机器就无法区别现实/理想世界。 该密码协议的安全性至少被认为和理想的计算差不多安全。

大家都在看

相关专题