12 | 怎么利用加密端攻击?
怎么利用加密端攻击?
攻击面应该怎么选?
- 深入了解
- 翻译
- 解释
- 总结
CBC模式是一种对称密钥分组算法,虽然已经被提出退休,但在实际应用中仍然广泛存在。本文讨论了针对加密端的攻击方案,主要通过异或运算展开。攻击者可以构造明文分组,调用加密运算,观测加密运算后的密文分组,从而破解目标明文分组的具体数据。虽然完整破解一个16字节的明文分组不可行,但攻击者可以逐个破解字节,尤其对于敏感数据如手机验证码,攻击者只需进行有限次计算即可破解。这种攻击技术被称为BEAST,曾在2011年引起广泛关注。由于其严重性,CBC模式已经开始逐渐退出加密算法的主流应用,新的协议或应用不应再使用CBC模式,现有的协议或应用也需要采取措施防范BEAST攻击。 为了防范BEAST攻击,可以在初始化向量上做文章。一种改进的办法是继续使用上一次加密运算的最后一个密文分组,同时把每一次运算的初始化向量当做第一个明文分组来处理。这样的好处是解密端不需要知道加密端选择的初始化向量,就可以执行解密运算。然而,解密端需要丢掉初始化向量这一段数据,不能把它当做应用数据来处理。另一种替代方案是每一次加密运算都使用不同的初始化向量,但这会带来初始化向量同步的问题。 对于已经使用CBC模式的标准协议,如果不能修改协议以每次加密运算都使用不同的初始化向量,是否还有办法修复协议的漏洞,使得修复后的协议实现仍能与旧的协议实现通信,而没有明显的兼容性和互操作性问题?这是一个具有挑战性的问题,业界尝试了多年也未找到理想的解决方案。BEAST攻击的出现简化了攻击方案,使得CBC加密端的攻击成为现实。最后的解决方案是在每次加密运算都使用不同的初始化向量,但这会带来初始化向量同步的问题。 总之,CBC模式存在BEAST攻击,防范措施包括使用不同的初始化向量和在每次加密运算都使用不同的初始化向量。对于已经使用CBC模式的标准协议,修复协议的漏洞需要克服兼容性和互操作性问题。
《实用密码学》,新⼈⾸单¥59
全部留言(11)
- 最新
- 精选
- 可怜大灰狼一开始的公式推导费劲看了两遍才看懂,其中Pj是自己构建的本次明文分组,Cj-1是自己构建的上次密文分组。 关于思考题,我想破解者拥有完整明文加密后的完整密文,我们是不是可以在加密前先对明文做拆分,然后对拆分的每段填充点字节。
作者回复: 你的想法是在正确的方向上,思路就是拆分明文。难点在于怎么处理兼容性问题。
2020-12-213 - 彩色的沙漠如果攻击者可以使用加密接口,攻击者就可以构造明文分组,然后调用加密运算,观测加密运算后的密文分组。 大部分应用的加密接口是不知道,也就无法攻击。特别是客户端发起的数据,是有客户端加密。
作者回复: 在黑客的眼里,知不知道加密接口,和能不能用加密接口,是两个事情。
2021-01-261 - godliness老师,原文这个:“BEAST 攻击起作用的关键,就是要使用上一次加密运算的最后一个密文分组”,这个是说这个攻击是:已知最后的分组密文,然后通过穷举尝试明文字节的数值,观察构造的明文加密后是否和原密文的值是一样的? 然后与倒数第3张图,最后密文作为初始 IV 没有理解到呢?
作者回复: "然后通过穷举尝试明文字节的数值",这一点的表述和实际的攻击差别很大。你再看看原文。 “最后密文作为初始 IV 没有理解到呢”,再看看上一节的CBC模式。
2023-11-02归属地:湖北 - 极客喵为什么一个数字只需要9次运算呢?0到9的数字的密文,理论上是对应255个可能的任意一种吧
作者回复: 可以考虑下两个数的情况,比如一个数不是一就是二,如果不是一,那它就是二,如果不是二,那它就是一。你只需要算一次,就知道这个事是一还是二了。十进制,如果一个数不是一,不是二,不是三,不是四,不是五,不是六,不是七,不是八,你是九,那它一定就是零了,你最多只需要算九次,就知道这个数字了。 幸运的话,一次运算就可以了,比如说,哎,这个数字是三,那它就是三了,不会是四或者五。
2021-02-16 - LXX老师好,关于思考题,我想着既然是需要爆破的,那控制攻击者爆破的次数是不是可以?
作者回复: 不总是可以,但是也有可以的场景。
2021-01-25 - LXX老师,所以这个攻击是已知最后的分组密文,然后通过爆破尝试明文字节的数值,来对比自己构造的明文加密后是否和真正的明文加密后的值是一样的,来获取明文信息么?
作者回复: 是的。
2021-01-25 - EclipsePj = Pi ^ Ci-1 ^ Cj-1 Tj = Pj ^ Cj-1= Pi ^ Ci-1 ^ Cj-1 ^ Cj-1= Pi ^ Ci-1= Ti =>Ek(Tj)= Ek(Ti)=>Cj = Ci(此处加密运算的密文相同,我们就猜对了明文?) Tj ^ Ci-1 = Ti ^ Ci-1 = Pi ^ Ci-1 ^ Ci-1 = Pi Pi = Tj ^ Ci-1 = Pj ^ Cj-1 ^ Ci-1 这些等式的意义是干什么呢,从一个假设的明文Pj,推导出真正的明文Pi?
作者回复: 是的
2020-12-26 - Eclipse为什么“手机验证码的第一个字节(某未知字节)”要求是明文数据分组的最后一个字节,这个未知的字节位于明文数据分组的其他位置可以不?
作者回复: 没什么不可以的,你的攻击点在哪里,就放在哪里。放在最后的攻击方案可能最简单。
2020-12-26 - 25ma感觉已经跟不上了,需要去把基础知识补一补,老师有推荐的资料吗?
作者回复: 先看看《应用密码学》?虽然算法过时了,基础知识这一块儿还能用。
2020-12-22 - Litt1eQ感觉文章的难度上来了 希望老师可以补充一些相关的文献 之前我是没了解过存在BEAST这种攻击方式的 通过本文的学习使我认识到了密码攻击者会利用尽可能多的方式来破坏密码的安全性
作者回复: 如果想了解BEASR攻击的细节,可以搜索“BEAST attack”试试看,有很多分析的文章。
2020-12-21