CBC 反转字节攻击

1

前言

暑假刷安全牛的课,看视频时间长了有点头疼,想做点题,想着看这么长时间视频了,去做题应该不至于一脸蒙蔽吧,看着实验吧题少点,就想着直接刷完,自信的选择了实验吧,结果上来就整懵了

第一道 web 题,牵扯到了 CBC 反转字节攻击,密码学!?查阅资料,学习一下

2

CBC加解密

之前这篇文章还写过,依稀记得点,但是之前看的那点不详细,只是知道了有这么个东西

CBC 模式中会先将明文分组与前一个密文分组进行 XOR 运算,然后再进行加密。

当然,对第一个明文分组来说,是没有前一个密文分组的,那么就需要一个初始化向量(简称IV)

CBC加解密图示:

3

异或的概念

当两个数的二进制表示进行异或运算时,当前位的两个二进制表示不同则为 1,相同则为 0。该方法被广泛推广用来统计一个数的 1 的位数

参与运算的两个值,如果两个相应 bit 位相同,则结果为 0,否则为 1。

即:

0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 1 ^ 1 = 0

按位异或的 3 个特点:

(1) 0 ^ 0 = 0,0 ^ 1 = 1 即 0 异或任何数=任何数

(2) 1 ^ 0 = 1,1 ^ 1 = 0 即 1 异或任何数 = 任何数取反

(3) 任何数异或自己=把自己置 0

4

CBC反转字节攻击

精髓在于:通过损坏密文字节来改变明文字节

假设 A、B、C、D 分别含义如下:

A 为密文分组 2 B 为明文分组 3 C 为经过解密但还没进行异或的密文分组3 D 为我们经过攻击反转要得到的明文

在整个过程中,明文、密文我们都是知道的,但是加解密的密钥是不知道的,所以我们不能直接改变信息,要通过下面的方法进行反转字节攻击

方便查看:

A 为密文分组 2

B 为明文分组 3

C 为经过解密但还没进行异或的密文分组 3(就简称为密文分组 3 了)

D 为我们经过攻击反转要得到的明文。

B = A ^ C(解密时)

解释:明文分组 3 = 密文分组 2 ^ 解密后的密文分组 3(解密时)

C = A ^ B(加密时)

解释:密文分组 3 = 密文分组 2 ^ 明文分组 3(加密时)

会发现:

B ^ A ^ C = 0

解释:明文分组 3 ^ 密文分组 2 ^ 密文分组 3 = 密文分组 3 ^ 密文分组 3 = 0

此时如果:

A ^ B ^ C ^ D = D

解释:明文分组 3 ^ 密文分组 2 ^ 密文分组 3 ^ 任意值 = 密文分组 3 ^ 密文分组 3 ^ 任意值 = 0 ^ 任意值 = 任意值

也就是说我们如果改变了密文为 A = A ^ B ^ D,就可以使解密后的明文成为:D

5

总结

公式可以总结为下:原本的密文改为:原本的密文 ^ 原本对应的明文 ^ 希望变成的值

以后有时间再更新一下实例

本文分享自微信公众号 - 陈冠男的游戏人生(CGN-115),作者:yichen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 密码学技术03

    在之前讨论的 DES、AES 都属于分组密码,他们只能加固固定长度的明文。如果要加密任意长度的明文,就需要对分组密码进行迭代,迭代的方法称为模式。

    yichen
  • 智能合约:Ethernaut题解(一)

    Ethernaut 是一个部署在 Ropsten 测试网络上面的智能合约代码审计类题目,网址:

    yichen
  • 【Vulnhub】Play XML Entities

    给了一个 iso 文件,打开就是登录的状态,可以直接 ifconfig 去看 ip 地址

    yichen
  • 首位带公民身份的机器人诞生!马斯克发出警告,或带来严重后果

    这几天索菲亚这个名字出现在世界各大媒体上,那么,索菲亚是谁?答案是,索菲亚是沙特公民。 但这位沙特公民索菲亚并不是人类,索菲亚(Sophia)是由Hanson ...

    企鹅号小编
  • 进化的竞争:机器与人谁淘汰谁?

    大数据文摘
  • Object类详解

    在Java的定义之中,除了Object类之外,所有的类实际上都存在继承关系,即:如果现在定义了一个类,没有默认继承任何一个父类的话,则默认将继承Object类,...

    葆宁
  • Laravel的Auth验证Token验证使用自定义Redis的例子

    项目用户量逐渐增大,接口调用次数越来越多,所以决定使用Redis存token,缓解数据库压力

    砸漏
  • FTP文件上传下载

    FTP的数据端口顾名思义就是用来进行数据操作的端口。其又分为两种模式:主动模式与 被动模式 。

    汐楓
  • springboot集成ftp

    庞小明

扫码关注云+社区

领取腾讯云代金券