03|如何设置合适的安全强度?
困难要有多难?
- 深入了解
- 翻译
- 解释
- 总结
密码学中的安全强度是保障数据安全的重要指标。本文通过讨论单向散列函数的困难程度、安全强度的概念以及其变化情况,强调了密码学中安全强度的重要性和变化性。安全强度通常以“位”来表示,代表破解算法所需的运算次数。文章以MD5和SHA-1为例,说明了不同安全强度对破解难度的影响,并指出了安全强度并非固定不变,随着安全分析的进步,密码算法的安全强度会衰减。此外,文章还介绍了美国的NIST、德国的BSI和欧洲的ECRYPT-CSA等机构的安全强度推荐指标,并提出了对量子计算时代的担忧。总的来说,本文通过对安全强度的讨论,强调了密码学中安全强度的重要性和变化性,为读者提供了对密码算法安全强度的印象,并引发了对安全强度直观概念认知的思考。
《实用密码学》,新⼈⾸单¥59
全部留言(13)
- 最新
- 精选
- Litt1eQ按照目前我能找到的最快计算机(Fugaku)的数据来说是415530TFlops, 大约是每秒4.2*10^17次浮点运算,破解64位强度的话大约需要44s。80位的话大约需要2878395s也就是34天左右,如果是128位的话大约需要25691150168585年(注:此数据仅仅是我的一个估算,并不一定准确)
作者回复: 很好的的估算。不用准确,就是帮助自己建立一个关于安全强度的印象。以后,当碰到安全强度的说法时,自己有个感觉。这些数据很棒!
2020-11-277 - 枫中浪子老师有个问题,文章中说md5安全强度太低,已经不安全了,那么任意给定一个md5值,能在很短的时间内得到散列前的数据吗?比如4.34分钟(比如 MD5,我们说了,它的安全强度最多 18 位,也就是说,我们运算 2^18=262144 次就可以破解,按现在的计算机一毫秒一次运算的速度计算,需要 262144 毫秒,折合 4.34 分钟。)
作者回复: 不能得到原数据,但是能构造出另外一个具有相同散列值的数据。
2021-01-1234 - solidSpoon老师安全强度和攻击复杂度是两个不同的指标吗?有什么异同呢?
作者回复: 是同一个指标的两种不同的说法,一个从正面说,一个从反面说。我应该在文章里交代一下的,没意识到。
2020-11-274 - 雲至老师能讲一下要是怎么样一个破解的方法吗?
作者回复: 这个不适合在专栏里讲。有的破解为了保护现有信息系统也不会公开;有公开的,破解大部分都太难了。你要是感兴趣,可以在群里留言,我找找论文发给你。
2020-11-2743 - Jenniffer27安全强度是如何计算出来的?如MD5的安全强度为何是18位?通过什么规则或方式计算的?
作者回复: 这个很复杂,有一小部分是计算出来的,大部分都是攻击出来的。也就是说,最先进的攻击方案,需要多大的计算量才能得逞。所以,我们说MD5的安全强度是18位的时候,单单看MD5的算法本身是得不出这个结论的;要去看具体的攻击方案。每一个算法的的攻击方案都千奇百怪,这就很难说有一个固定的规则或者方式来计算安全强度。我们说安全强度会变化,也是相同的原因:攻击方案会变得越来越好。
2021-01-152 - godliness请问,有交流群吗?
作者回复: 找极客时间的客户要交流群的二维码。
2023-10-20归属地:湖北1 - Spring请问这些算法的安全强度的数据是从哪里获取的?似乎google了MD5 security strength 没找到相关信息
作者回复: 查找最新的算法推荐指南,通常就是文中提到的三个机构发布的指南: 美国的 NIST(国家标准技术研究所);德国的 BSI(联邦信息安全办公室);欧洲的 ECRYPT-CSA(欧洲卓越密码网络)。
2023-09-13归属地:广东 - chuan老师,请问:这两个结果怎么算的?我在mac上用md5算了一下 (venv_py3_study) ➜ /tmp md5 -s "4dc968ff 0ee35c20 9572d477 7b721587 d36fa7b2 1bdc56b7 4a3dc078 3e7b9518 afbfa202 a8284bf3 6e8e4b55 b35f4275 93d84967 6da0d1d5 5d8360fb 5f07fea2" MD5 ("4dc968ff 0ee35c20 9572d477 7b721587 d36fa7b2 1bdc56b7 4a3dc078 3e7b9518 afbfa202 a8284bf3 6e8e4b55 b35f4275 93d84967 6da0d1d5 5d8360fb 5f07fea2") = f14fc2d22c621080cdc53f76d5944579 (venv_py3_study) ➜ /tmp md5 -s "4dc968ff 0ee35c20 9572d477 7b721587 d36fa7b2 1bdc56b7 4a3dc078 3e7b9518 afbfa200 a8284bf3 6e8e4b55 b35f4275 93d84967 6da0d155 5d8360fb 5f07fea2" MD5 ("4dc968ff 0ee35c20 9572d477 7b721587 d36fa7b2 1bdc56b7 4a3dc078 3e7b9518 afbfa200 a8284bf3 6e8e4b55 b35f4275 93d84967 6da0d155 5d8360fb 5f07fea2") = 3f5a810ea38e0adca283fda55ef30a5e
作者回复: 要把base64和空格转换掉。
2022-01-303 - Wales老师,安全强度的位是不是比特位而不是字节位?因为文中指出,安全强度为N的算法,破解需要计算2^n次计算。
作者回复: 是的
2021-06-14 - Leo参考我的实现:https://github.com/leo18945/md5collisiondemo/blob/main/MD5CollisionDemo.java2022-02-092