10 | 怎么防止数据重放攻击?
为什么还要学习 CBC 模式?
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了数据重放攻击的防范方法,重点关注了CBC(Cipher Block Chaining)模式的加密原理和安全性。CBC模式通过使用初始化向量和前一次的密文分组进行异或运算,解决了数据重放攻击的问题。尽管CBC模式可能逐渐退出历史舞台,但仍有必要学习它的原因。了解其安全问题有助于解决现存项目的安全隐患,并为更高级的协议和更安全的算法打下基础。文章还强调了CBC模式中初始化向量的重要性,指出其唯一性对加密运算的安全性至关重要。此外,文章还讨论了异或运算在密码算法中的广泛应用以及密钥位数变化可能带来的影响。通过对CBC模式的原理和安全性进行深入讨论,读者可以更好地理解加密算法的安全问题,为应用程序的安全设计提供参考。文章还提出了思考题,引导读者通过实际操作来检验密码算法库的安全性,以及使用统计学方法来评估RSA实现的漏洞。这些内容丰富而实用,有助于读者深入理解密码算法的安全性和漏洞分析方法。
《实用密码学》,新⼈⾸单¥59
全部留言(17)
- 最新
- 精选
- 可怜大灰狼Timing Attack本地写了代码尝试,果然很神奇。java里的String的equals方法是按照字符一个个顺序匹配的,直到碰到不一样会返回。java.lang.String#equals碰到大量分批次有目的破解时,找到每轮中耗时最少出现次数最多的那个值。这样子依次就破解了每个字符。后来改用java.security.MessageDigest#isEqual,就破解不出来了。
作者回复: 赞!计算时间偏差和算力偏差,是一个很重要的概念。当我们比较含有秘密的信息的时候,不能使用String.equals()这样方法。如果你发现有人比较密钥、口令,使用了String.equals(), 就可以报个漏洞了。密码学是不是也很简单?!
2020-12-17312 - 天天有吃的问题4:如果我们一次只能观测一个字节,一次一位的改变需要 2^8 = 256 次,这样的攻击方式得逞,最多需要 255 * 16 = 4080 次的运算; 之前128次应该是128位每个位数设置为1试试,最多也就128次;但是这句有点不理解,一次改变一个字节byte是啥意思,256这个数值和4080这两个数字代表的是什么含义?
作者回复: 一次改变一个字节的意思就是攻击的时候,需要一个字节一个字节的尝试。256表示,一个字节有8位,如果每次改变这个字节的一位,需要256次,才能把这个字节所有的可能数值列举完。4080表示攻击一个数据分组需要的计算量,一个字节需要256次,由于尝试了255种可能性后,最后一种可能性就不需要再尝试了,所以不是256,是最多需要255次尝试。一个数据分组16个字节,255乘以16,就是需要的计算次数。
2020-12-1823 - HU RUONING老师你好,是CBC的什么安全问题导致它要退出历史?2018年有什么标志性事件让CBC需要退出历史舞台吗?
作者回复: CBC的安全问题就是我们这几个章节描述的问题。最有标志性的事件就是TLS 1.3协议彻底放弃的CBC算法。
2021-05-191 - tommyCmd讲的太好了,后面老师可以讲一些非对称密钥算法,密钥协商,密钥衍生等场景吗
作者回复: 很抱歉,这些内容现在的专栏里没有涉及。目前还不知道以后会不会有机会讲一讲非对称和协议部分。
2022-11-18归属地:美国 - Reol老师,关于CBC模式加密和解密的区别:解密时,每个分组的输入需要自己的密文和前一分组的密文,密文都是已知的,这么说每个分组的解密运算都是独立的,不依赖其他分组的解密结果。 那么CBC模式的解密运算是否可以 并行化 来提高效率?
作者回复: 解密需要前一个分组的密文,这就限制了并行的能力。如果分组的密文都已经知道了,就可以并行计算了;如果前面的密文有缺失,就要等待接收缺失的密文。所以,它的并行计算受限制的。
2021-08-20 - HU RUONING2018年后退出历史舞台,是因为“2018 年新发布的 TLS 协议,甚至完全抛弃了 CBC 模式”这个吗?
作者回复: 是因为CBC本身的问题,这个事件只是业界对待CBC问题的一个表现。
2021-05-19 - 明😁😁老师好,这次课上讲到,可以通过一次改变一位的方式 进行攻击。那么通过这种每次变一位的比较,是为了得到秘钥的值么。而且比较中是不是要用同一个初始化变量呢?还是说因为异或运算的归零性和恒等性,可以抹掉不同值初始化变量影响。学到这开始“恨爸妈少给我生一个脑子了”,可能问的毫无逻辑行😂😂
作者回复: 是为了得到明文。下面的问题,我们后面还会详细讲,所以这一节我也没有交代细节。
2020-12-30 - maver“如果我们一次改变一位数据的攻击方式得逞,最多需要 128 次的运算;” 老师,请问这种一次改变一位数据的攻击方式,有实际可行的攻击手段吗?还是说只是理论上存在可能性?
作者回复: 是已经实证的攻击方法。
2020-12-222 - 天天有吃的问题5:初始化向量不需要保密,是不是可以这么理解,他会随着第一个数组分组最为加密信息传下去,加密方式是保密的,初始化向量也会变成加密信息的一部分?
作者回复: 初始化向量不需要保密的意思,就是初始化向量可以公开,可以让攻击者知道。
2020-12-18 - 天天有吃的问题3:有点没法想象...噪音跟温度还能用来破解密码,硬件层面都能破解软件编写的程序吗,纯好奇这个场景是怎么样的?
作者回复: 软件使用过硬件运转的,比如如果计算复杂,CPU就会加快,温度会升高,风扇会加速,噪音也会加大,计算结果会延迟,这些都是外部可以观察到的结果。感兴趣细节的话,可以看看这篇报道,https://threatpost.com/side-channel-poc-attack-targets-encryption-software-glitch/136703/,以及https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-alam.pdf,还有这个https://www.cs.tau.ac.il/~tromer/papers/radioexp-20150227.pdf
2020-12-18