CBC安全问题

安全问题

CBC比特翻转攻击
  • 已知明文攻击
  • 如果我们有一组明密文,就可以做到通过修改密文,使密文解密出来的特定位置字符变成我们想要的字符.
  • 经常和web一起出
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述
  • 加密流程简述:f()为加密函数,g()为解密函数
    ①:明文1^iv=C1
    ②:f(C1)=密文1
    ③:密文1^明文2=C2
    ④:f(C2)=密文2
  • 攻击流程简述:
    在这里插入图片描述

①:g(密文2)=C2
②:C2^密文1=明文1
③:明文1->所需明文a
④:f(明文a^密文1)=所需密文a
由于CBC中每一组明文都是按位异或和加密.故可选取对应位进行操作.

CBC选择密文攻击
  • 通过CBC的选择密文攻击,可以很快的恢复出IV
  • 明文每次加密前会和IV异或.IV每组会更新为上一组的密文.
  • 待解密的密文为:C|C时:
    • 密文C^C=明文1
    • 密文C^IV=M0
    • 联立,密文CC密文IV=M1M0
    • IV=M1M0C
  • 故若能够得到两组相同的密文就可以得到IV
padding oracle攻击(CBC填充攻击)
  • 常出现在web题目中
  • 分组密码CBC模式的padding oracle攻击
    需要满足一下特定条件:
    • 加密是采用了PKCS5的填充;(填充的数值时填充字符的个数)
      填充规则为:
快长度填充字节
008 08 08 08 08 08 08 08
107 07 07 07 07 07 07
206 06 06 06 06 06
305 05 05 05 05
404 04 04 04
503 03 03
  • 攻击者可以和服务器进行交互,可以提交密文,服务器会以某种返回信息告知客户端的padding是否正常.
  • 攻击效果时在不清楚key和iv的时候解密任意给定的密文.
  • Padding oracle攻击的原理主要是利用服务器再对padding进行检查的时候不同回显进行的,这是一种侧信道攻击.利用服务器对padding的检查,可以从末尾开始逐位爆破明文
    如果接收端发现填充数字不符合长度要求,则不反悔,而符合成功就有返回,返回内容分别为应用层数据出错或返回执行成功,则攻击者可以构造一个R为密文,使得填充长度正确.
oracle
  • 对某一个blok C2的解密
  • M2=D(C2)^C1
  • 可以在C2前拼接一共我们构造的F,向服务器发送F|C2解密,爆破最后一位明文的流程如下:
    • 枚举M2最后以为X;
    • 构造F的最后一位为x^1;
    • 发送并观察padding的判断结果是否正确,错误返回1
Feistel结构
  • 一种简单的题点
  • 如果F函数是线性的->实现已知明文攻击
  • F()->^Ki
  • L,R
  • R,LRK1
  • LRK1,LK1K2
  • LK1K2,RK2K3
  • ……
  • 每一轮都是可推理的,且每个的内容均为LR固定的常数
  • 只要知道一组明密文对,就可以解密所有密文
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值