Skip to content

第1章:安全目标与攻击模型

正确性与安全性

加密方案包含密钥生成、加密和解密算法。正确性要求合法加密得到的密文能恢复原消息;安全性则问攻击者在指定能力下还能学到什么或伪造什么。把消息还原正确,不代表攻击者看不到内容。

机密性保护内容,完整性防止未经授权的修改被接受,认证关联消息与某种身份或密钥。可用性、终端被攻陷后的行为、流量大小和时序通常不由一个加密算法自动解决。

功能持有什么密钥主要结果
对称加密通信双方共享秘密对不持密钥者隐藏内容
消息认证码生成与验证共享秘密拒绝没有合法认证的消息
公钥加密加密用公钥,解密用私钥让不持共享秘密的人发送机密消息
数字签名签名用私钥,验证用公钥让第三方验证消息与签名密钥的关系
密钥交换长期或临时秘密及公开交换材料建立供后续协议使用的共享密钥

协议组合这些功能。例如安全连接先认证身份并建立密钥,再用认证加密保护后续记录。证书解决公钥与身份的绑定,序列号解决消息顺序和重放;不能把这些责任全部交给一个分组密码。

不可区分实验

选择明文攻击下的常见实验允许攻击者请求加密,然后提交两个等长消息 m0,m1m_0,m_1。挑战者随机选择 bb,返回 Enck(mb)Enc_k(m_b);攻击者输出猜测 bb'。其优势可定义为

Adv=P[b=b]12.\operatorname{Adv}=\left|P[b'=b]-\frac12\right|.

等长要求承认方案可能泄露长度。若长度不同,攻击者只看密文长度就可能获胜,这不是实验想排除的长度泄露。

计算安全要求有效攻击者的优势随安全参数增长可忽略。可忽略函数最终小于任意多项式倒数;固定很小常数与渐近可忽略并非同一概念。

攻击能力决定定义

CPA 允许选择明文,CCA 进一步允许请求解密其他密文,并禁止直接请求解密挑战密文等平凡行为。现实服务若把解密失败类型暴露给攻击者,可能形成解密预言机。

安全定义不是越强越无需条件。nonce 型方案还要求同一密钥下遵守 nonce 使用规则;多用户、多消息和密钥泄露场景也需要对应模型。

归约怎样使用攻击者

若能把任何成功攻击方案 A 的程序转成攻击假设 B 的程序,就把 A 的安全性归约到 B。证明要给出模拟过程、回答查询的方法及成功概率损失,不能仅说“依赖某个难题”。

若归约只保证 B 的攻击优势至少为 A 的优势除以 qq,实际参数就要考虑 qq 的大小。渐近多项式损失在具体安全估计中可能非常昂贵。

练习

  1. 确定性加密为何通常不能满足允许加密查询的标准多消息 CPA 安全?
  2. 一个方案保密但允许攻击者翻转明文某一位,违反了什么目标?
  3. 为什么挑战消息需要限制为等长?

上次更新: