现代密码学 考点汇总(上)

  • 写在最前面
  • 考试范围
  • 一、给一个简单的方案,判断是否cca安全
  • 二、随机预言机模型之下的简单应用
  • 0. 规约证明
  • 一个规约法证明PRG(伪随机生成器)的例子
  • 定长加密方案,并证明不可区分加密方案
  • CCA安全加密方案
  • 补充
  • 1. 对称加密
  • CPA安全实验、预言机访问(oracle access)
  • 操作模式
  • 伪随机函数PRF
  • PRF例题:一个固定长度的一次一密方案是一个PRF吗?
  • 从PRF到CPA安全的证明
  • 伪随机排列PRP
  • CCA安全加密方案
  • 补充
  • 填充预言机Padding-Oracle攻击真实案例


写在最前面

字数超了,只能分为为两部分
很好,完美避开所有考点

考试范围

一、给一个简单的方案,判断是否cca安全

判断方式:要么证明是cca安全(通过规约),要么找一个攻击方式去攻击

一样一个题
1、对称加密、
2、消息认证码MAC
3、哈希函数、
4、非对称的多样加密的方案
【数字签名不考,因为和mac功能和证明方式、实验都类似】

二、随机预言机模型之下的简单应用

随机预言机性质、随机预言机模型之下的简单应用
性质之下构造函数的性质


笔记汇总

0. 规约证明

现代密码学 考点汇总(上)_生成器

  1. 规约证明
  • 我们现在站在敌手的角色来思考,希望解决“破解”加密方案这个问题,并且在此之前我们已经知道有个一“假设”问题是不可解决的;
  • 为了证明一个加密方案现代密码学 考点汇总(上)_密码学_02在假设现代密码学 考点汇总(上)_网络安全_03下是安全的,就是证明“破解”问题不可解。
  • 将解决“假设”现代密码学 考点汇总(上)_网络安全_03问题的算法现代密码学 考点汇总(上)_生成器_05规约到“破解”现代密码学 考点汇总(上)_密码学_02的算法现代密码学 考点汇总(上)_生成器_07。如果加密方案可以被破解,则假设问题也可以解决。然而,由于假设问题是难以解决的,这导致矛盾,说明加密方案不可以被破解。
  • 先令一个概率多项式时间的算法现代密码学 考点汇总(上)_生成器_07能够以概率现代密码学 考点汇总(上)_网络安全_09破解现代密码学 考点汇总(上)_密码学_02
  • 假设:一个问题现代密码学 考点汇总(上)_网络安全_03是难以解决的,即不存在多项式时间算法来解决现代密码学 考点汇总(上)_网络安全_03现代密码学 考点汇总(上)_生成器_05是一个解决现代密码学 考点汇总(上)_网络安全_03的概率算法;
  • 规约:解决假设问题现代密码学 考点汇总(上)_网络安全_03可以通过破解加密方案现代密码学 考点汇总(上)_密码学_02,即将现代密码学 考点汇总(上)_生成器_05规约到现代密码学 考点汇总(上)_生成器_07现代密码学 考点汇总(上)_生成器_05通过以现代密码学 考点汇总(上)_生成器_07作为子函数可以以概率现代密码学 考点汇总(上)_密码学_21有效地解决问题现代密码学 考点汇总(上)_网络安全_03
  • 矛盾:若加密方案可以被有效破解,即现代密码学 考点汇总(上)_网络安全_09是不可忽略的,则现代密码学 考点汇总(上)_生成器_05可以以不可忽略的概率现代密码学 考点汇总(上)_笔记_25解决问题现代密码学 考点汇总(上)_网络安全_03,这与假设矛盾,因而现代密码学 考点汇总(上)_网络安全_09一定是可忽略的。

一个规约法证明PRG(伪随机生成器)的例子

  1. 一个规约法证明PRG的例子
  • 假设现代密码学 考点汇总(上)_笔记_28是PRG,证明现代密码学 考点汇总(上)_密码学_29也是PRG。
  • 问题A:如何区分现代密码学 考点汇总(上)_笔记_28;问题B:如何区分现代密码学 考点汇总(上)_密码学_29
  • 从A规约到B:区分现代密码学 考点汇总(上)_笔记_28的算法输入按位取反后作为区分现代密码学 考点汇总(上)_密码学_29的算法输入,区分现代密码学 考点汇总(上)_密码学_29的算法输出作为区分现代密码学 考点汇总(上)_笔记_28的算法输出。
  • 现代密码学 考点汇总(上)_密码学_36


  • 现代密码学 考点汇总(上)_笔记_37

  • 由此,建立了不可区分定义中概率的联系。

定长加密方案,并证明不可区分加密方案

  1. 一个安全的定长加密方案
  • 现代密码学 考点汇总(上)_生成器_38, 现代密码学 考点汇总(上)_笔记_39, 一个PRG以长度为现代密码学 考点汇总(上)_生成器_40的密钥作为种子,输出与明文相同长度的pad;
  • 现代密码学 考点汇总(上)_网络安全_41: 现代密码学 考点汇总(上)_生成器_42,密钥作为种子,长度小于明文长度;
  • 现代密码学 考点汇总(上)_密码学_43: 现代密码学 考点汇总(上)_安全加密_44,加密方法和一次一密一样;
  • 现代密码学 考点汇总(上)_生成器_45: 现代密码学 考点汇总(上)_网络安全_46,解密也是;
  • 定理:该定长加密方案是窃听下不可区分的。
  • 直觉上,这个方案和一次一密是类似的,除了密钥更短并且用伪随机生成器生成的比特串来与明文异或。因为伪随机对于任何敌手都可以认为是真随机,所以对于敌手而言,该方案与一次一密是一样的。由此,我们得到了一个安全的加密方案,同时避免了一次一密的最大局限性——密钥过长。
  1. 证明不可区分加密方案
  • 思路:区分伪随机性为难题假设,破解加密方案为规约的子函数。针对伪随机生成器现代密码学 考点汇总(上)_笔记_47的区分器现代密码学 考点汇总(上)_生成器_48现代密码学 考点汇总(上)_生成器_07为子函数,使得当现代密码学 考点汇总(上)_生成器_07破解了现代密码学 考点汇总(上)_密码学_02现代密码学 考点汇总(上)_生成器_48可以区分出现代密码学 考点汇总(上)_笔记_47,与现代密码学 考点汇总(上)_笔记_47的伪随机性矛盾。注意这里我们用了符号现代密码学 考点汇总(上)_笔记_55来表示现代密码学 考点汇总(上)_密码学_02的一个变体,来刻画加密方案中可能使用了真随机串来加密;
  • 回顾针对伪随机生成器的区分器现代密码学 考点汇总(上)_生成器_48的问题是,输入一个串现代密码学 考点汇总(上)_笔记_58,输出一个比特;这里关键问题是输出的比特从何而来?
  • 现代密码学 考点汇总(上)_生成器_48规约到现代密码学 考点汇总(上)_生成器_07。回顾窃听者不可区分实验中,现代密码学 考点汇总(上)_生成器_07与一个挑战者进行3轮交互:
  1. 现代密码学 考点汇总(上)_生成器_62选择两个不同明文现代密码学 考点汇总(上)_网络安全_63,并发送给挑战者;
  2. 挑战者生成密钥,并随机挑选一个明文现代密码学 考点汇总(上)_笔记_64加密后得到挑战密文现代密码学 考点汇总(上)_生成器_65,并发送给现代密码学 考点汇总(上)_生成器_62
  3. 现代密码学 考点汇总(上)_生成器_62输出对所加密明文的猜测现代密码学 考点汇总(上)_安全加密_68,若现代密码学 考点汇总(上)_生成器_69,则现代密码学 考点汇总(上)_生成器_62成功;否则,失败;
  • 区分器现代密码学 考点汇总(上)_生成器_48成为窃听不可区分实验中的挑战者,特别之处在于:在第2步,不需要生成密钥,而是直接以输入串现代密码学 考点汇总(上)_笔记_58作为pad来加密,现代密码学 考点汇总(上)_笔记_73;根据现代密码学 考点汇总(上)_笔记_58的两种可能,分两种情况:
  • 现代密码学 考点汇总(上)_安全加密_75是由现代密码学 考点汇总(上)_安全加密_76生成的,即伪随机串,则现代密码学 考点汇总(上)_生成器_65就是加密方案现代密码学 考点汇总(上)_生成器_78中密文,现代密码学 考点汇总(上)_生成器_62面对的就是现代密码学 考点汇总(上)_生成器_78
  • 现代密码学 考点汇总(上)_安全加密_75是真随机串,则现代密码学 考点汇总(上)_生成器_65不同于加密方案现代密码学 考点汇总(上)_生成器_78中密文,而与一次一密中一样,现代密码学 考点汇总(上)_生成器_62面对的就是现代密码学 考点汇总(上)_生成器_85一次一密;
  • 回答前面关于现代密码学 考点汇总(上)_生成器_48输出什么的问题:破解加密方案的现代密码学 考点汇总(上)_生成器_07成功时,现代密码学 考点汇总(上)_生成器_48输出1;否则,现代密码学 考点汇总(上)_生成器_48输出0。
  1. 证明不可区分加密方案(续)
  • 规约完毕,证明现代密码学 考点汇总(上)_生成器_07在实验中成功的概率是可忽略的
  • 现代密码学 考点汇总(上)_安全加密_75为真随机串现代密码学 考点汇总(上)_笔记_92,就是一次一密,现代密码学 考点汇总(上)_笔记_93
  • 现代密码学 考点汇总(上)_安全加密_75为伪随机串现代密码学 考点汇总(上)_安全加密_95现代密码学 考点汇总(上)_笔记_96
  • 根据伪随机生成器定义,上下两个公式相减,现代密码学 考点汇总(上)_笔记_97
  • 所以现代密码学 考点汇总(上)_生成器_98是可忽略的,即现代密码学 考点汇总(上)_生成器_78是窃听者不可区分的。
  • 小结:通过规约将现代密码学 考点汇总(上)_生成器_07的不可区分实验成功的概率与现代密码学 考点汇总(上)_生成器_48的区分器实验输出1的概率建立等式;分析输入真随机串时现代密码学 考点汇总(上)_生成器_48输出1的概率(即不可区分实验成功概率)是1/2;根据PRG的定义,输入伪随机串时现代密码学 考点汇总(上)_生成器_48输出1的概率(1/2+现代密码学 考点汇总(上)_网络安全_09)与输入真随机串时现代密码学 考点汇总(上)_生成器_48输出1的概率(1/2)的差异时可忽略的。

CCA安全加密方案

  1. 选择密文攻击 Chosen-Ciphertext Attacks (CCA)
  • CCA不可区分实验 现代密码学 考点汇总(上)_密码学_106:
  1. 挑战者生成密钥 现代密码学 考点汇总(上)_生成器_107;(为了下一步的预言机)
  2. 现代密码学 考点汇总(上)_生成器_62 被给予输入 现代密码学 考点汇总(上)_网络安全_109 和对加密函数 现代密码学 考点汇总(上)_网络安全_110和解密函数现代密码学 考点汇总(上)_生成器_111预言机访问(oracle access) 现代密码学 考点汇总(上)_生成器_112现代密码学 考点汇总(上)_密码学_113,输出相同长度 现代密码学 考点汇总(上)_网络安全_63
  3. 挑战者生成随机比特 现代密码学 考点汇总(上)_笔记_115,将挑战密文 现代密码学 考点汇总(上)_笔记_116 发送给 现代密码学 考点汇总(上)_生成器_62
  4. 现代密码学 考点汇总(上)_生成器_62 继续对除了挑战密文现代密码学 考点汇总(上)_生成器_65之外的预言机的访问,输出现代密码学 考点汇总(上)_安全加密_68;如果现代密码学 考点汇总(上)_笔记_121,则现代密码学 考点汇总(上)_生成器_62成功现代密码学 考点汇总(上)_密码学_123,否则 0。

定义:一个加密方案是CCA安全的,如果实验成功的概率与1/2的差异是可忽略的。

  1. 理解CCA安全
  • 在现实世界中,敌手可以通过影响被解密的内容来实施CCA。如果通信没有认证,那么敌手可以以通信参与方的身份来发送特定密文。
  • CCA安全性意味着“non-malleability”(不可锻造性,即改变但不毁坏),不能修改密文来获得新的有效密文。
  • 之前的方案中没有CCA安全,因为都不是不可锻造。
  • 对基于PRF的CPA安全加密方案的CCA攻击:
  • 现代密码学 考点汇总(上)_笔记_124 获得挑战密文 现代密码学 考点汇总(上)_生成器_125,并且查询与现代密码学 考点汇总(上)_密码学_126只相差了一个翻转的比特的密文现代密码学 考点汇总(上)_密码学_127,那么
    现代密码学 考点汇总(上)_密码学_128 应该与 现代密码学 考点汇总(上)_安全加密_129
  • 问题:上述操作模式也不是CCA安全的(作业)
  • 由此,可以总结出CCA下敌手的常用策略:
  • 修改挑战密文现代密码学 考点汇总(上)_生成器_65现代密码学 考点汇总(上)_笔记_131,并查询解密预言机得到现代密码学 考点汇总(上)_密码学_132
  • 根据关系,由现代密码学 考点汇总(上)_密码学_132来猜测被加密明文现代密码学 考点汇总(上)_笔记_64

补充

在这个情况下,现代密码学 考点汇总(上)_笔记_135 获得了挑战密文 现代密码学 考点汇总(上)_安全加密_136 并查询了一个只在一个比特上与 现代密码学 考点汇总(上)_密码学_137 不同的密文 现代密码学 考点汇总(上)_生成器_138。我们来分析一下 现代密码学 考点汇总(上)_生成器_139现代密码学 考点汇总(上)_网络安全_140

首先,我们明确 现代密码学 考点汇总(上)_密码学_137

  • 现代密码学 考点汇总(上)_安全加密_142 包含两个部分:一个随机数 现代密码学 考点汇总(上)_安全加密_143 和使用密钥 现代密码学 考点汇总(上)_网络安全_144 的函数 现代密码学 考点汇总(上)_安全加密_145 与明文 现代密码学 考点汇总(上)_安全加密_146
  • 因此,现代密码学 考点汇总(上)_安全加密_147

现在,如果 现代密码学 考点汇总(上)_笔记_135 查询了一个与 现代密码学 考点汇总(上)_密码学_137 只在一个比特上不同的密文 现代密码学 考点汇总(上)_生成器_138,那么 现代密码学 考点汇总(上)_生成器_138 也可以写成两部分,但其中一部分与 现代密码学 考点汇总(上)_密码学_137 有一个比特的差异。这个差异可以在 现代密码学 考点汇总(上)_密码学_153 部分,也可以在 现代密码学 考点汇总(上)_笔记_154

现代密码学 考点汇总(上)_笔记_135 计算 现代密码学 考点汇总(上)_生成器_139 时,他们实际上是在解开 现代密码学 考点汇总(上)_笔记_154 的异或操作。这是因为异或操作是可逆的,且当两次使用相同的值时会取消彼此的效果(即 现代密码学 考点汇总(上)_网络安全_158)。

因此,如果 现代密码学 考点汇总(上)_生成器_138 的变化发生在 现代密码学 考点汇总(上)_笔记_160 部分,则 现代密码学 考点汇总(上)_安全加密_161 将与 现代密码学 考点汇总(上)_网络安全_140 完全相同,因为 现代密码学 考点汇总(上)_笔记_160 部分的变化被异或操作取消了。但如果变化发生在 现代密码学 考点汇总(上)_密码学_153 部分,则这个变化不会影响到 现代密码学 考点汇总(上)_笔记_154 部分,因此 现代密码学 考点汇总(上)_安全加密_161 将与 现代密码学 考点汇总(上)_网络安全_140

综上所述,现代密码学 考点汇总(上)_安全加密_161现代密码学 考点汇总(上)_网络安全_140

  • 如果变化发生在 现代密码学 考点汇总(上)_安全加密_145 部分,那么 现代密码学 考点汇总(上)_生成器_171现代密码学 考点汇总(上)_安全加密_146
  • 如果变化发生在 现代密码学 考点汇总(上)_安全加密_143 部分,那么 现代密码学 考点汇总(上)_生成器_171现代密码学 考点汇总(上)_安全加密_146

1. 对称加密

CPA安全实验、预言机访问(oracle access)

  1. CPA安全实验
  • CPA不可区分实验 现代密码学 考点汇总(上)_生成器_176:
  1. 挑战者生成密钥 现代密码学 考点汇总(上)_生成器_107;(这里与窃听者不可区分实验相比,密钥的生成提前了,这是为了下一步提供加密预言机)
  2. 现代密码学 考点汇总(上)_生成器_62 被给予输入 现代密码学 考点汇总(上)_网络安全_109 和对加密函数 现代密码学 考点汇总(上)_网络安全_110预言机访问(oracle access) 现代密码学 考点汇总(上)_生成器_112 ,输出相同长度 现代密码学 考点汇总(上)_网络安全_63
  3. 挑战者生成随机比特 现代密码学 考点汇总(上)_笔记_115,将挑战密文 现代密码学 考点汇总(上)_笔记_116 发送给 现代密码学 考点汇总(上)_生成器_62
  4. 现代密码学 考点汇总(上)_生成器_62 继续对 现代密码学 考点汇总(上)_网络安全_110的预言机的访问,输出现代密码学 考点汇总(上)_安全加密_68;如果现代密码学 考点汇总(上)_笔记_121,则现代密码学 考点汇总(上)_生成器_62成功现代密码学 考点汇总(上)_安全加密_191,否则 0。
  • 敌手对加密函数预言机访问是指,敌手以任意明文作为输入,可以从预言机得到对应密文。此处,密钥是已经提前生成的,因此才能通过加密函数预研机得到密文,但仍对敌手保密。预言机是一个形象的比喻,它是一个黑盒,只接收输入并返回输出;访问者不需要了解其内部构造。
  • 该实验与窃听者不可区分实验的区别在于,敌手可访问加密预言机,在实验过程中始终可以,包括在产生两个明文阶段,以及在收到挑战密文后猜测被加密明文阶段,获得任意明文被同一密钥加密的密文;而且密文是逐个获得,可以根据之前的明文和密文对来“适应性地”构造新的查询。
  • CPA敌手比多重加密的敌手更“强大”,因为多重加密敌手是可以一次性地获得一组密文,而CPA敌手可以根据已经获得的明文和密文“多次适应性地”再次获得密文。
  1. CPA安全
  • 现代密码学 考点汇总(上)_密码学_192 是CPA不可区分加密方案 (CPA安全的),如果任意概率多项式时间算法现代密码学 考点汇总(上)_密码学_193,存在可忽略的函数现代密码学 考点汇总(上)_笔记_194使得,
    现代密码学 考点汇总(上)_密码学_195
  • 定理:CPA安全也是多重加密安全的。证明略。直觉上,CPA敌手比多重加密敌手更强大。
  • 之前的方案也难以实现CPA安全;
  • 多重加密安全意味着CPA安全?(作业)显然是否定的。那么,思考两种安全定义的区别成为解题的关键。

操作模式

伪随机函数PRF

  1. 伪随机函数(Pseudorandom Function)概念
  • 为了实现CPA安全,之前的PRG提供的随机性不够用了,需要新的数学工具为加密提供额外的随机性。为此引入伪随机函数(PRF),是对伪PRG的泛化:PRG从一个种子生成一个随机串,PRF从一个key生成一个函数;
  • 带密钥的函数Keyed function现代密码学 考点汇总(上)_密码学_196
  • 现代密码学 考点汇总(上)_笔记_197, 现代密码学 考点汇总(上)_生成器_198
  • 两个输入到一个输出,看上去像,但不是加密函数;输入key,得到一个一输入到一输出的函数;
  • 查表Look-up table现代密码学 考点汇总(上)_密码学_199: 现代密码学 考点汇总(上)_密码学_200 需要多少比特信息存储?
  • 查表是一个直接描述输入与输出间映射的表格,一个条目对应一个输入与一个输出;当该映射是随机产生的,是一个真随机函数;
  • 函数族Function family现代密码学 考点汇总(上)_密码学_201: 包含所有函数 现代密码学 考点汇总(上)_密码学_200. 现代密码学 考点汇总(上)_网络安全_203
  • 一个PRF是函数族中一个子集,key确定下的PRF是函数族中一个元素,一个查表是函数族中一个元素;
  • 长度保留Length Preserving: 现代密码学 考点汇总(上)_密码学_204;密钥长度与函数输入、输出长度相同为现代密码学 考点汇总(上)_生成器_40;没有特殊说明时,只讨论长度保留的函数;
  1. 伪随机函数定义
  • 直觉上,一个PRF生成的带密钥的函数与从函数族中随机选择的真随机函数(查表)之间是不可区分的;然而,一个真随机函数具有指数长度,无法“预先生成”,只能“on-the-fly”(边运行、边生成)的使用,引入一个对函数现代密码学 考点汇总(上)_网络安全_206的确定性的预言机访问(oracle access)现代密码学 考点汇总(上)_网络安全_207
  • 这里的预言机是一个抽象的函数。访问预言机,就是给出任意输入,得到该函数的输出。访问预言机的能力不包括了解正在访问的预言机具体内部构造。
  • 一个带密钥的函数是一个伪随机函数(PRF),对任意PPT区分器现代密码学 考点汇总(上)_生成器_48现代密码学 考点汇总(上)_网络安全_209,其中现代密码学 考点汇总(上)_密码学_199现代密码学 考点汇总(上)_密码学_201中随机函数。
  • 这里区分器现代密码学 考点汇总(上)_笔记_212是一个算法,可以访问预言机,但并不知道预言机背后是什么。
  • 这里不可区分性关键是,对真随机查表和伪随机函数,区分器输出相同结果概率的差异。区分器输出1或0本身没有,也无需,有特定语义。
  • PRF和PRG的关系在后面会学习,可以由PRG来构造PRF。
PRF例题:一个固定长度的一次一密方案是一个PRF吗?
  1. PRF例题
  • 问题一个固定长度的一次一密方案是一个PRF吗?
  • 对于一个PRF,在密钥保密和没有预言机访问时,给指定输入,能以不可忽略的概率猜测输出相关信息吗?
  • 如果是PRF,则给出该函数与查表的相似性;否则,给出一个区分器可以区分出该函数不是随机的。
  1. 以PRF实现CPA安全
  • 新随机串 现代密码学 考点汇总(上)_网络安全_213,每次新生成一个随机串;
  • 现代密码学 考点汇总(上)_安全加密_214: 现代密码学 考点汇总(上)_安全加密_215. 长度保留;
  • 现代密码学 考点汇总(上)_网络安全_41: 现代密码学 考点汇总(上)_生成器_42.
  • 现代密码学 考点汇总(上)_密码学_43: 现代密码学 考点汇总(上)_笔记_219, 现代密码学 考点汇总(上)_网络安全_220. 密文包括两部分新随机串,以及异或输出;
  • 现代密码学 考点汇总(上)_生成器_45: 现代密码学 考点汇总(上)_生成器_222.
  • 定理:上述方案是CPA安全的。
从PRF到CPA安全的证明
  1. 从PRF到CPA安全的证明
  • 思路:从PRF的区分器算法现代密码学 考点汇总(上)_网络安全_223规约到加密方案敌手算法现代密码学 考点汇总(上)_生成器_07,区分器现代密码学 考点汇总(上)_网络安全_223作为敌手现代密码学 考点汇总(上)_生成器_07的挑战者,敌手现代密码学 考点汇总(上)_生成器_07实验成功时区分器现代密码学 考点汇总(上)_网络安全_223输出1。分两种情况,当输入真随机函数现代密码学 考点汇总(上)_密码学_199时,相当于一次一密;当输入伪随机函数现代密码学 考点汇总(上)_生成器_230时,为加密方案。
  • 规约:现代密码学 考点汇总(上)_网络安全_223输入预言机,输出一个比特;现代密码学 考点汇总(上)_生成器_07的加密预言机访问通过现代密码学 考点汇总(上)_网络安全_223的预言机现代密码学 考点汇总(上)_网络安全_206来提供,现代密码学 考点汇总(上)_生成器_235现代密码学 考点汇总(上)_网络安全_223输出1,当现代密码学 考点汇总(上)_生成器_07在实验中成功。
  • 这里有两个预言机:现代密码学 考点汇总(上)_生成器_238访问的预言机现代密码学 考点汇总(上)_安全加密_239现代密码学 考点汇总(上)_生成器_62访问的加密预言机现代密码学 考点汇总(上)_安全加密_241,后者不能直接访问前者的预言机。
  1. 从PRF到CPA安全的证明(续)
  • 考虑真随机函数现代密码学 考点汇总(上)_安全加密_242的情况,分析不可区分实验成功概率现代密码学 考点汇总(上)_网络安全_243。敌手现代密码学 考点汇总(上)_密码学_193访问加密预言机可以获得多项式现代密码学 考点汇总(上)_密码学_245个明文与密文对的查询结果并得到随机串和pad现代密码学 考点汇总(上)_密码学_246;当收到挑战密文现代密码学 考点汇总(上)_密码学_247时,根据之前查询结果中随机串是否与挑战密文中随机串相同,分为两种情况:
  • 当有相同随机串时,根据现代密码学 考点汇总(上)_笔记_92可以得到现代密码学 考点汇总(上)_生成器_249现代密码学 考点汇总(上)_笔记_250,但这种情况发生的概率现代密码学 考点汇总(上)_密码学_251是可忽略的;
  • 当没有相同随机串时,输出是随机串,相当于一次一密,成功概率=1/2;
  • 现代密码学 考点汇总(上)_网络安全_252
  • 现代密码学 考点汇总(上)_安全加密_253
  • 现代密码学 考点汇总(上)_网络安全_254 根据伪随机函数定义,现代密码学 考点汇总(上)_笔记_255
  • 小结:通过规约将现代密码学 考点汇总(上)_密码学_193的不可区分实验成功的概率与现代密码学 考点汇总(上)_生成器_257的区分器实验输出1的概率建立等式;分析输入真随机函数预言机时现代密码学 考点汇总(上)_生成器_257输出1的概率(即不可区分实验成功概率)是1/2+一个可忽略函数;根据PRF的定义,输入伪随机函数预言机时现代密码学 考点汇总(上)_生成器_257输出1的概率(1/2+现代密码学 考点汇总(上)_笔记_255)与输入真随机函数预言机时现代密码学 考点汇总(上)_生成器_257输出1的概率(1/2)的差异时可忽略的。
  1. CPA安全例题
  • 现代密码学 考点汇总(上)_笔记_262, 现代密码学 考点汇总(上)_网络安全_213
  • 从PRF到CPA安全:变长消息
  • 对于任意长度消息 现代密码学 考点汇总(上)_网络安全_264现代密码学 考点汇总(上)_笔记_265
  • 推论:如果现代密码学 考点汇总(上)_网络安全_266是一个 PRF,那么 现代密码学 考点汇总(上)_密码学_02
  • 问题:这个方案有什么缺点?
  • 有效性: 现代密码学 考点汇总(上)_网络安全_268. 密文长度是明文长度的二倍,并且需要大量的真随机串。

伪随机排列PRP

  1. 伪随机排列(Pseudorandom Permutations
  • 为了提高对任意长度消息加密的效率,以及更高级的加密基础工具,学习伪随机排列PRP的概念;
  • 双射 Bijection: 现代密码学 考点汇总(上)_笔记_28
  • 排列 Permutation: 一个从一个集合到自身的双射函数;
  • 带密钥的排列 Keyed permutation: 现代密码学 考点汇总(上)_网络安全_270是排列;类似带密钥的函数;
  • 现代密码学 考点汇总(上)_笔记_28 是一个双射 现代密码学 考点汇总(上)_网络安全_272
  • 定义:一个有效的带密钥的排列 现代密码学 考点汇总(上)_笔记_28 是PRP,如果对于任意PPT的区分器现代密码学 考点汇总(上)_生成器_257
    现代密码学 考点汇总(上)_笔记_275
  • 问题:一个PRP也是一个PRF吗?
  1. PRP例题
  • 对1比特的PRP、PRF的分析;
  • 交换引理:如果 现代密码学 考点汇总(上)_网络安全_266 是一个 PRP 并且 现代密码学 考点汇总(上)_密码学_277,那么 现代密码学 考点汇总(上)_网络安全_266 也是一个 PRF。
  • 一个随机排列和一个查表是不可取分的,PRP和随机排列不可取分,因此,PRP和查表是不可取分的。
  1. 操作模式概念(Modes of Operation
  • 操作模式是使用PRP或PRF来加密任意长度消息的方法;
  • 操作模式是从PRP或PRF来构造一个PRG的方法;
  • 将一个消息分成若干等长的块(分组,block),每个块以相似方式处理;
  1. Electronic Code Book (ECB) 模式
  • 在窃听者出现时,是否是不可区分的?
  • 现代密码学 考点汇总(上)_网络安全_266
  1. 对ECB的攻击
  • 为什么仍然可以识别企鹅?
  1. Cipher Block Chaining (CBC) 模式
  • 现代密码学 考点汇总(上)_网络安全_280初始向量,一个新的随机串;
  • 是CPA的吗?可并行化吗?F可以是任意PRF吗?
  1. Output Feedback (OFB) Mode模式
  • 是CPA安全吗?可并行化吗?F可以是任意PRF吗?
  1. Counter (CTR) Mode模式
  • 现代密码学 考点汇总(上)_笔记_281是一个初始向量,并且逐一增加;
  • 是CPA安全吗?可并行化吗?F可以是任意PRF吗?
  1. CTR模式是CPA安全
  • 定理:如果现代密码学 考点汇总(上)_笔记_28是一个PRF,那么随机CTR模式是CPA安全的。
  • 证明:其安全性与之前基于PRF的CPA安全证明类似,从PRF的伪随机假设规约到CPA安全加密方案。其中,对现代密码学 考点汇总(上)_网络安全_283的安全性直觉在于,现代密码学 考点汇总(上)_网络安全_283也是在加密前不可预测的,且每个块所用现代密码学 考点汇总(上)_网络安全_283都是不同的;
  • 当加密预言机是由真随机查表构成时,敌手多次访问加密预言机得到的现代密码学 考点汇总(上)_网络安全_283序列与挑战密文的现代密码学 考点汇总(上)_网络安全_283序列之间有重叠的概率现代密码学 考点汇总(上)_密码学_288是可以忽略的;若没有重叠,则相当于一次一密;
  • 规约与之前证明基于PRF的CPA安全加密方案一样,证明过程也类似。
  1. 初始向量不应该可预测
  • 如果现代密码学 考点汇总(上)_网络安全_280是可预测的,那么CBC/OFB/CTR模式不是CPA安全的。
  • 为什么?(作业)
  • 在SSL/TLS 1.0中的漏洞:记录现代密码学 考点汇总(上)_笔记_290现代密码学 考点汇总(上)_网络安全_280是上一个记录现代密码学 考点汇总(上)_生成器_292的密文块。
  • OpenSSL中API:需要用户输入现代密码学 考点汇总(上)_网络安全_280,但现代密码学 考点汇总(上)_网络安全_280应在函数内实现。当现代密码学 考点汇总(上)_网络安全_280不充分随机时不安全。
  1. 非确定性加密
  • 有三种通用的实现CPA安全的非确定性加密方法:
  • 随机化的:现代密码学 考点汇总(上)_网络安全_213随机生成,如构造5;需要更多熵,长密文
  • 有状态的:现代密码学 考点汇总(上)_网络安全_213为计数器,如CTR模式;需要通信双方同步计数器
  • 基于Nonce的:现代密码学 考点汇总(上)_网络安全_213只用一次;需要保证只用一次,长密文

CCA安全加密方案

  1. 选择密文攻击 Chosen-Ciphertext Attacks (CCA)
  • CCA不可区分实验 现代密码学 考点汇总(上)_密码学_106:
  1. 挑战者生成密钥 现代密码学 考点汇总(上)_生成器_107;(为了下一步的预言机)
  2. 现代密码学 考点汇总(上)_生成器_62 被给予输入 现代密码学 考点汇总(上)_网络安全_109 和对加密函数 现代密码学 考点汇总(上)_网络安全_110和解密函数现代密码学 考点汇总(上)_生成器_111预言机访问(oracle access) 现代密码学 考点汇总(上)_生成器_112现代密码学 考点汇总(上)_密码学_113,输出相同长度 现代密码学 考点汇总(上)_网络安全_63
  3. 挑战者生成随机比特 现代密码学 考点汇总(上)_笔记_115,将挑战密文 现代密码学 考点汇总(上)_笔记_116 发送给 现代密码学 考点汇总(上)_生成器_62
  4. 现代密码学 考点汇总(上)_生成器_62 继续对除了挑战密文现代密码学 考点汇总(上)_生成器_65之外的预言机的访问,输出现代密码学 考点汇总(上)_安全加密_68;如果现代密码学 考点汇总(上)_笔记_121,则现代密码学 考点汇总(上)_生成器_62成功现代密码学 考点汇总(上)_密码学_123,否则 0。

定义:一个加密方案是CCA安全的,如果实验成功的概率与1/2的差异是可忽略的。

  1. 理解CCA安全
  • 在现实世界中,敌手可以通过影响被解密的内容来实施CCA。如果通信没有认证,那么敌手可以以通信参与方的身份来发送特定密文。下一页有具体真实案例。
  • CCA安全性意味着“non-malleability”(不可锻造性,即改变但不毁坏),不能修改密文来获得新的有效密文。
  • 之前的方案中没有CCA安全,因为都不是不可锻造。
  • 对基于PRF的CPA安全加密方案的CCA攻击:
  • 现代密码学 考点汇总(上)_笔记_124 获得挑战密文 现代密码学 考点汇总(上)_生成器_125,并且查询与现代密码学 考点汇总(上)_密码学_126只相差了一个翻转的比特的密文现代密码学 考点汇总(上)_密码学_127,那么
    现代密码学 考点汇总(上)_密码学_128 应该与 现代密码学 考点汇总(上)_安全加密_129
  • 问题:上述操作模式也不是CCA安全的(作业)
  • 由此,可以总结出CCA下敌手的常用策略:
  • 修改挑战密文现代密码学 考点汇总(上)_生成器_65现代密码学 考点汇总(上)_笔记_131,并查询解密预言机得到现代密码学 考点汇总(上)_密码学_132
  • 根据关系,由现代密码学 考点汇总(上)_密码学_132来猜测被加密明文现代密码学 考点汇总(上)_笔记_64

补充

在这个情况下,现代密码学 考点汇总(上)_笔记_135 获得了挑战密文 现代密码学 考点汇总(上)_安全加密_136 并查询了一个只在一个比特上与 现代密码学 考点汇总(上)_密码学_137 不同的密文 现代密码学 考点汇总(上)_生成器_138。我们来分析一下 现代密码学 考点汇总(上)_生成器_139现代密码学 考点汇总(上)_网络安全_140

首先,我们明确 现代密码学 考点汇总(上)_密码学_137

  • 现代密码学 考点汇总(上)_安全加密_142 包含两个部分:一个随机数 现代密码学 考点汇总(上)_安全加密_143 和使用密钥 现代密码学 考点汇总(上)_网络安全_144 的函数 现代密码学 考点汇总(上)_安全加密_145 与明文 现代密码学 考点汇总(上)_安全加密_146
  • 因此,现代密码学 考点汇总(上)_安全加密_147

现在,如果 现代密码学 考点汇总(上)_笔记_135 查询了一个与 现代密码学 考点汇总(上)_密码学_137 只在一个比特上不同的密文 现代密码学 考点汇总(上)_生成器_138,那么 现代密码学 考点汇总(上)_生成器_138 也可以写成两部分,但其中一部分与 现代密码学 考点汇总(上)_密码学_137 有一个比特的差异。这个差异可以在 现代密码学 考点汇总(上)_密码学_153 部分,也可以在 现代密码学 考点汇总(上)_笔记_154

现代密码学 考点汇总(上)_笔记_135 计算 现代密码学 考点汇总(上)_生成器_139 时,他们实际上是在解开 现代密码学 考点汇总(上)_笔记_154 的异或操作。这是因为异或操作是可逆的,且当两次使用相同的值时会取消彼此的效果(即 现代密码学 考点汇总(上)_网络安全_158)。

因此,如果 现代密码学 考点汇总(上)_生成器_138 的变化发生在 现代密码学 考点汇总(上)_笔记_160 部分,则 现代密码学 考点汇总(上)_安全加密_161 将与 现代密码学 考点汇总(上)_网络安全_140 完全相同,因为 现代密码学 考点汇总(上)_笔记_160 部分的变化被异或操作取消了。但如果变化发生在 现代密码学 考点汇总(上)_密码学_153 部分,则这个变化不会影响到 现代密码学 考点汇总(上)_笔记_154 部分,因此 现代密码学 考点汇总(上)_安全加密_161 将与 现代密码学 考点汇总(上)_网络安全_140

综上所述,现代密码学 考点汇总(上)_安全加密_161现代密码学 考点汇总(上)_网络安全_140

  • 如果变化发生在 现代密码学 考点汇总(上)_安全加密_145 部分,那么 现代密码学 考点汇总(上)_生成器_171现代密码学 考点汇总(上)_安全加密_146
  • 如果变化发生在 现代密码学 考点汇总(上)_安全加密_143 部分,那么 现代密码学 考点汇总(上)_生成器_171现代密码学 考点汇总(上)_安全加密_146

填充预言机Padding-Oracle攻击真实案例

  1. Padding-Oracle(填充预言机)攻击真实案例
  • CAPTCHA服务商为Web网站提供验证用户是否为人类的服务。为此,一个CAPTCHA服务器与Web服务器间事先共享一个密钥现代密码学 考点汇总(上)_密码学_369,服务工作原理如下:
  1. 当Web服务器验证用户是否为人类时,生成一个消息现代密码学 考点汇总(上)_安全加密_75并以现代密码学 考点汇总(上)_密码学_371加密,向用户发送一个密文现代密码学 考点汇总(上)_生成器_372
  2. 用户将密文现代密码学 考点汇总(上)_生成器_372转发给CAPTCHA服务器;(可实施填充预言机攻击)
  3. CAPTCHA服务器用密钥现代密码学 考点汇总(上)_密码学_371将密文解密,根据解密结果返回给用户信息:一个由现代密码学 考点汇总(上)_安全加密_75生成的图像,或者坏填充错误;
  4. 用户根据图像获得 现代密码学 考点汇总(上)_安全加密_75 并将 现代密码学 考点汇总(上)_安全加密_75
  • 在第2步,当恶意用户可以利用CAPTCHA服务器会返回给用户坏填充错误这一漏洞,来实施填充错误攻击。
  1. Padding-Oracle(填充预言机)攻击
  • 在PKCS #5 padding(填充)标准中,为了将一个消息的长度“填充”到块长度的整数倍,在最后一个块中填充现代密码学 考点汇总(上)_密码学_378个字节的现代密码学 考点汇总(上)_密码学_378;必要时,添加一个哑块(dummy block,不包含消息的一个填充块)。存在一种攻击手段:当填充错误时,解密服务器返回一个“坏填充错误”,这相当于提供了一个解密预言机,最终可以获得整个明文;
  • 具体攻击原理:
  • 更改密文(包含现代密码学 考点汇总(上)_密码学_380部分)并发送给解密服务器;
  • 一旦触发了“坏填充错误”,则说明对密文的更改导致了填充部分内容的更改;否则,对密文的更改导致了原明文部分的更改;
  • 通过仔细修改密文来控制填充部分,从而获得消息长度和内容。
  1. 填充预言机攻击:获得消息长度
  • 攻击的第一步判断消息是否为空:在单个块的CBC中,通过更改现代密码学 考点汇总(上)_网络安全_280的首个字节,攻击者能够获知是否现代密码学 考点汇总(上)_安全加密_382是否为空。因为如果现代密码学 考点汇总(上)_安全加密_382是空的话,更改现代密码学 考点汇总(上)_网络安全_280首个字节将更改解密出的填充内容,解密服务器就会返回坏填充错误(1比特信息),具体分析如下:
  • 如果现代密码学 考点汇总(上)_网络安全_385是空的,那么明文会添加一个哑块现代密码学 考点汇总(上)_密码学_386
  • PRP的输入为现代密码学 考点汇总(上)_网络安全_387;设现代密码学 考点汇总(上)_密码学_380的首个字节为现代密码学 考点汇总(上)_笔记_389,则PRP的输入为现代密码学 考点汇总(上)_安全加密_390
  • 现代密码学 考点汇总(上)_密码学_380的首个字节从现代密码学 考点汇总(上)_笔记_389改成现代密码学 考点汇总(上)_密码学_393变为 现代密码学 考点汇总(上)_网络安全_394,不改变现代密码学 考点汇总(上)_笔记_395解密得到的PRP的输入不会变,而解密出的明文会改变为 现代密码学 考点汇总(上)_笔记_396
  • 上述明文首个字节一定不是现代密码学 考点汇总(上)_网络安全_397,这是填充格式错误,会触发服务器返回错误;
  • 如果上面的尝试没有触发错误,那么说明消息非空;下一步,发现消息长度是否为1字节,方法与上一步一样,区别在于只改变现代密码学 考点汇总(上)_密码学_380的第2个字节;如此继续,获得消息的长度;(作业)
  1. 填充预言机攻击:获得消息内容
  • 一旦获得消息的长度,也就知道了填充的长度现代密码学 考点汇总(上)_密码学_378,采用下面的方法来获得消息的最后一个字节内容,进而获得整个消息;
  • 更改密文中倒数第二块,来获得消息的最后一个字节现代密码学 考点汇总(上)_密码学_400
  • 明文的最后一个块 现代密码学 考点汇总(上)_笔记_401,密文的倒数第二个块 现代密码学 考点汇总(上)_笔记_402
  • 最后一块的PRP输入为现代密码学 考点汇总(上)_密码学_403
  • 敌手更改 现代密码学 考点汇总(上)_密码学_404现代密码学 考点汇总(上)_密码学_405;其中,现代密码学 考点汇总(上)_密码学_406是敌手猜测的某个字节;
  • 解密获得最后一块明文现代密码学 考点汇总(上)_生成器_407
  • 如果没有返回坏填充错误,那么意味着填充了现代密码学 考点汇总(上)_安全加密_408个字节的现代密码学 考点汇总(上)_安全加密_408,所以 现代密码学 考点汇总(上)_安全加密_410 ,而 现代密码学 考点汇总(上)_安全加密_411
  1. 总结