密码系统的安全性

 1,评估密码系统安全性主要有三种方法:

(1)无条件安全性
这种评价方法考虑的是假定攻击者拥有无限的计算资源,但仍然没法破译该密码系统。
(2)计算安全性
这种方法是指使用目前最好的方法攻破它所须要的计算远远超出攻击者的计算资源水平,则能够定义这个密码体制是安全的。
(3)可证实安全性
这种方法是将密码系统的安全性归结为某个通过深刻研究的数学难题(如大整数素因子分解、计算离散对数等),数学难题被证实求解困难。这种评估方法存在的问题是它只说明了这个密码方法的安全性与某个困难问题相关,没有彻底证实问题自己的安全性,并给出它们的等价性证实。算法

2,实际安全性

对于实际应用中的密码系统而言,因为至少存在一种破译方法,即强力攻击法,所以都不能知足无条件安全性,只提供计算安全性。密码系统要达到实际安全性,就要知足如下准则:
(1)破译该密码系统的实际计算量(包括计算时间或费用)十分巨大,以至于在其实是没法实现的。
(2)破译该密码系统所须要的计算时间超过被加密信息有用的生命周期。例如,战争中发起战斗攻击的做战命令只须要在战斗打响前须要保密;重要新闻消息在公开报道前须要保密的时间每每也只有几个小时。
(3)破译该密码系统的费用超过被加密信息自己的价值。
若是一个密码系统可以知足以上准则之一,就能够认为是知足实际安全性的。安全

3,可证实安全性

3.1 可证实安全性体系的三大要素

在可证实安全体系中,有三大要素:安全模型安全性定义困难性问题
安全模型分为安全目标和敌手能力。安全目标描述了安全模型要达到什么程度的安全,例如,对于加密算法的不可区分性(Indistinguishablity 简称 IND)、对于签名算法的存在性不可伪造(Existable Unforgeble 简称 EU)等。
函数

其中不可区分性(IND)也称为语义安全(Semantic scurity),其定义以下。敌手即便得到了密文,也不能获得其对应明文的任何信息,哪怕是 1bit 的信息。其形式化的表示方法为:已知 m0,m1以及 Cb=Enc(pk,mb),其中 m0是 m0或 m1中的任意一个,即 Cb是 m0、m1其中之一的密文,敌手没法有效判断加密过程当中 b 究竟是 0 仍是 1。ui

3.2 安全性定义

刻画敌手的能力,主要有四类,选择明文攻击(Chosen Plaintext Attacke 简称 CPA)、选择密文攻击(Chosen Ciphertext Attack 简称 CCA)、唯密文攻击(Ciphertext-Only Attack)、已知明文攻击(Known Plaintext Attack)。经常使用的刻画敌手能力是前面两类,选择明文攻击(CPA)是指由敌手选择明文而且能够获得对应的密文选择密文攻击(CCA)是指敌手不只能够选择明文得到密文,还能选择有限次的密文,得到对应的明文。CCA比 CPA 描述敌手的能力更强。加密

下面介绍一下经常使用的安全性定义。
spa

CPA 安全。咱们把选择明文攻击(CPA)描述成一个游戏以方便咱们更好的理解。首先声明一点,这个游戏的目的是在选择明文攻击的前提下攻破系统的不可区分性(Indistinguishablity),因此下面简称这个游戏为 IND-CPA。其次,还要定义两个角色挑战者 C 和敌手 A。挑战者(challenger)的任务至关裁判,主持游戏而且对敌手的行为进行反馈。敌手顾名思义,就是去攻击当前系统,并且对于这个游戏来讲是采用选择明文攻击的方法进行攻击。游戏的描述以下: .net

A. 初始化:挑战者 C 建立 IND-CPA 系统,而且将公钥发送给敌手 A。 3d

B. 敌手 A 选择两个长度相同的明文 m0,m1发送给挑战者 C。挑战者 C 随机选择 b∈{0,1},并将 mb加密记做 cb,而后将密文cb发送给敌手 Ablog

C. 敌手 A 猜想挑战者 C 上一步进行加密的明文是 m0仍是 m1,而且将猜想结果输出,输出结果记为 b‘。若 b‘=b,那么敌手攻击成功。生命周期

敌手攻击的优点能够定义为以下函数: 

 其中 w 是加密方案密钥的长度。由于随机猜想就有 1/2 的几率赢得 IND-CPA 游戏。因此

才是敌手通过努力获得的优点。若是对任何多项式时间的敌手 A,存在一个可忽略的优点σ,使得

 

那么就称这个加密算法在选择明文攻击下具备不可区分性,或者称为 IND-CPA 安全。

 3.3 困难问题

有了安全模型和安全性定义,一般使用规约到困难问题的方法来进行安全性证实。密码学中经常使用的困难问题有离散对数困难问题(discrete logarithm problem,简称 DLP)、CDH 问题(Computational Diffie-Hellman) 、DDH 问题(Decisional Diffie-Hellman)以及 BDH 问题(Bilinear Diffie-Hellman)。 

3.4 可证实安全性理论

有了前面叙述了安全模型,安全性定义,困难性问题,可证有了前面叙述了安全模型,安全性定义,困难性问题,可证实安全体系也变得可行。可证实安全性是指利用“规约”的方法,将攻击密码算法或安全协议的方法规约到一个攻击困难问题上。首先肯定加密体制的安全目标,如签名体制的安全目标是签名的不可伪造性(Existable Unforgeble),加密体制的安全目标是信息的不可区分性(Indistinguishablity)。而后根据安全性定义肯定敌手的能力构建一个安全性模型。

规约是复杂性理论中的概念, 一个问题P1规约到问题P2是指,已知解决问题 P1的算法 M1,咱们能构造另外一算法 M2,M2能够以 M1做为子程序,用来解决问题 P2。

将规约的方法应用在密码算法或安全协议的安全性证实上,例如,能够将敌手对密码算法或安全协议(P1)的攻击规约到一些已经获得深刻研究的困难问题(P2)。即若敌手可以对算法或协议发起有效的攻击,就能够利用敌手构建一个算法来攻破困难问题,然而困难问题是已经被证实没法攻破的,这样就出现矛盾。根据反证法,敌手能够攻破算法或协议假设不成立,证实完毕。

通常来讲,为了证实方案 1 的安全性,咱们能够将方案 1 规约到方案 2,即若是敌手 A 能够攻破方案 1,那么敌手 B 一样也能够攻击方案 2,而方案 2 已经被证实是安全的,或者是一个难题。

证实过程经过一个思惟游戏来描述。首先,挑战者建立方案2,B 表示方案 2 中的敌手,A 表示方案 1 中的敌手。B 为了攻破方案 2,利用 A 做为子程序来攻击方案 1。B 想要利用 A,就须要对 A 进行训练,因此 B 模拟了 A 的挑战者。

例如,若是要对加密算法进行安全性证实,那么方案 1 就是具 体 的 加 密 算 法 。 假 设 安 全 目 标 是 信 息 的 不 可 区 分 性(Indistinguishablity),敌手 A 的能力是能够选择明文攻击,即 CPA。敌手 B 模拟敌手 A 的挑战者,与 A 进行 IND-CPA 游戏。在游戏过程当中,B 为了实现本身的目的利用 A。若是 A 没法判断本身是与 B 仍是与挑战者作游戏,那么称 B 的模拟是完备的。 

对于其余加密算法或加密协议,咱们必须首先肯定它想要实现的安全目标,例如签名方案的不可伪造性,而后根据安全性定义肯定敌手的能力构建一个安全性模型,再把对加密算法或加密协议的攻击规约到已被证实的困难问题上。 这就是可证实安全性。

结语:可证实安全性理论是密码学理论与计算复杂性理论的一次完美结合,也是现代密码学的基石。在过去的 30 年终,现代密码学最大的突破就是把密码学体系创建在计算复杂理论上,这使得密码学从一门艺术发展成为一门严谨的学科。

 

https://blog.csdn.net/wangtingyao1990/article/details/79475842?utm_source=blogxgwz5

《浅谈现代密码学与可证实安全性理论 》--刘言培

相关文章
相关标签/搜索