可证明安全性理论(1-3)
前言
可证明安全性理论主要使用计算复杂性理论:规约
密码算法(要抵抗攻击者的攻击)的安全性需要证明
不是所有算法都能用可证明安全性理论来证明,比如RSA,但是RSA—OAEP可用该理论证明
可证明安全性理论将密码算法和基于的困难问题进行挂钩
安全证明需要考虑攻击强度
-
攻击者收集数据(交互)的方法:
窃听网络数据
利用密文获得明文
……
攻击者收集数据方式越灵活,获得信息就越多,攻击成功率就越高,攻击能力就越强
-
公钥加密的主要攻击类型
选择明文攻击CPA(chosen plaintext attack)
- 攻击者自己选择明文,通过某种手段,获得相应密文,进行分析,实施攻击
选择密文攻击CCA(chosen ciphertext attack)
- 攻击者自己选择密文,通过某种手段,获得相应明文
自适应选择密文攻击CCA2(adaptive chosen ciphertext attack)
安全证明需要考虑攻击目的
最常见的攻击目的:区分(密文是由哪条明文产生的)
-
不可区分性:IND(indistinguishability)
攻击者成功找到密文对应哪条明文的概率是可忽略的,则公钥加密方案满足不可区分性
公钥加密抵抗的最常见的攻击目的:IND
公钥加密三种安全性
IND-CPA:攻击者发动选择明文攻击是白搭的
IND-CCA:攻击者发动选择密文攻击是白搭的
IND-CCA2
强度:IND-CCA2>IND-CCA>IND-CPA
如何证明一个公钥机密方案满足哪种安全性
- 建立安全模型:攻击者能干那些事,攻击者的攻击目的
- 每个安全模型都会包含几个阶段,在不同的阶段,攻击者A和挑战者C都可以干不同的事情
- 一般都包含setup阶段:挑战者把公钥等一些参数发送给攻击者
- 例:IND-CPA安全模型:
- 挑战者将参数传给攻击者
- 攻击者向挑战者发送两条消息
- 挑战者选择一条进行加密后发送给攻击者
- 攻击者找出是哪一条消息对应的密文,将编号发送给挑战者