密码学学习笔记(四):Authenticated Encryption - 认证加密

加密数据的最新方法是使用一种称为一体式结构的认证加密算法,该算法也称为有附加数据的认证加密。从之前的博客中,我们看到在特定的操作模式中使用的分组密码,如CBC、OFB、CFB、CTR,提供了IND-CPA安全性。

但是IND-CCA安全性呢?

不可篡改性/不可延展性 - Non-Malleability

可篡改性:给定密文C,可以为相关消息生成C'(不知道消息)

  • 例如,给定M的C,生成M+1的C'
  • IND-CCA意味着不可延展性

事实上IND-CCA ≡ NM-CCA,NM就是Non-Malleability。

那么OFB是IND-CCA吗?

对于未知 𝑀1来说𝐶 = (𝐶0, 𝐶1)

  • 对于𝑀1′= 𝑀1 ⊕ Δ来说,𝐶′= (𝐶0, 𝐶1 ⊕ Δ)是一个有效的密文

事实上,CBC, OFB, CFB, CTR都不属于IND-CCA安全。

那么该如何实现IND-CCA安全呢?

  • 为了避免Malleability,我们需要确保如果任何密文被更改,它们都会无效
  • 即我们需要保护密文的完整性/真实性
  • 针对早期版本IPSec的实际攻击表明了这一点

加密-and-MAC

输入:

消息𝑀, 钥匙(𝐾1.𝐾2)

输出:

密文𝐶, 𝑇

这样不安全,因为MAC标签𝑇 可以泄露有关的信息𝑀。

  • MAC不提供任何保密保证
  • 适用于SSH
  • 通过修改,SSH版本可以变得安全

先MAC再加密

MAC消息,然后加密消息标签对

输入:

消息𝑀, 钥匙(𝐾1.𝐾2)

输出:

密文C

总体上不安全

  • 在TLS中使用,TLS版本显示为安全的
  • WEP使用了类似的想法(CRC,然后是流密码加密),但被打破了

先加密再MAC

对消息进行加密,然后对生成的密文进行MAC处理。

输入:

消息𝑀, 钥匙(𝐾1.𝐾2)

输出:

密文(C,T)

如果底层加密是IND-CPA安全的,而MAC是UF-CMA安全的,则生成的加密是IND-CCA安全的。

  • 用于IPSec

认证加密

在实践中,我们可以直接设计认证加密方案
经过身份验证的加密方案保证:

  • 保密性:密文与随机密文无法区分
  • 不可伪造性:密文不可伪造 

这被称为AE安全

AE安全性比IND-CCA安全性更强,因为:

  • 如果Enc_{K}𝑀1) 与随机无法区分,并且Enc_{K}(𝑀2) 也无法与随机区分,那么Enc_{K}(𝑀1) 将无法与区分Enc_{K}(𝑀2)
  • 密文的不可扩展性意味着对手将无法使用解密查询,因为它甚至无法生成新的密文。

Galois Counter Mode(GCM) - 伽罗瓦计数器模式

在实践中,使用先加密然后MAC比直接构造(如GCM)慢。

  • 上半部分类似于CTR,下半部分正在动态生成MAC标签
  • GCM提供AE安全
  • 另一种方案是偏移代码簿模式 - Offset Codebook Mode(OCB)

总结:

  • CCA下的不可延展性等同于CCA中的不可区分性,它们要求保护密文的完整性。
  • CBC, OFB, CFB, CTR只能实现IND-CPA安全不能实现IND-CCA安全。
  • 当组合对称加密和MAC以实现IND-CCA时,先加密然后MAC是首选解决方案。
  • 身份验证加密可以通过某些操作模式实现,如GCM和OCB。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值