-
Notifications
You must be signed in to change notification settings - Fork 421
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug Report]MD5 哈希算法用于缓存的漏洞 #995
Comments
感谢建议,当时选择MD5不选择SHA256是出于性能考虑。确实会有MD5碰撞问题,不过我们认为目前的碰撞几率带来的安全、数据一致性风险是可接受的,所以目前并没有替换成SHA-256等碰撞几率更低的哈希算法的计划哈。 |
但是md5可能会导致安全问题,而sha256的计算速度已经很快了。
…---原始邮件---
发件人: ***@***.***>
发送时间: 2024年12月10日(周二) 晚上7:26
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [Tencent/cherry-markdown] [Bug Report]MD5 哈希算法用于缓存的漏洞 (Issue #995)
感谢建议,当时选择MD5不选择SHA256是出于性能考虑。确实会有MD5碰撞问题,不过我们认为目前的碰撞几率带来的安全、数据一致性风险是可接受的,所以目前并没有替换成SHA-256等碰撞几率更低的哈希算法的计划哈。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
收到,我们近期会再次评估下两种哈希算法的性能差异哈。 |
我下面有一个在浏览器环境下使用crypto-js的md5和sha256测时数据,下面所有的数据都是重复1000次的结果: String Length: 16MD5 Average Time: 0.0065 ms String Length: 256MD5 Average Time: 0.0096 ms String Length: 10000MD5 Average Time: 0.2621 ms String Length: 100000MD5 Average Time: 3.2312 ms 代码如下:
|
震惊了,没想到sha256性能比md5还要好!我们这就安排替换,感谢建议哈 |
Prerequisites
There isn't an existing issue that reports the same bug to avoid duplicates.
The provided information offers a minimal reproducible example of the bug, (Why create a Minimal).
For Q&A, please open a GitHub Discussion instead.
Version
all
Reproduction Link
No response
Describe the Bug
1.描述
在当前的 Cherry Markdown 引擎代码中,MD5 哈希算法被用于生成字符串的唯一标识符,主要用于缓存机制和大文本数据缓存。
MD5 是一种广泛使用的哈希算法,但由于其设计上的缺陷,已经不再被推荐用于安全性要求较高的场景。
2. MD5 哈希碰撞的风险
MD5 哈希算法的主要问题在于其存在哈希碰撞的风险。哈希碰撞指的是两个不同的输入数据生成相同的哈希值。尽管 MD5 的哈希值长度为 128 位,但在实际应用中,由于其算法设计的缺陷,攻击者可以通过构造特定的输入数据,生成相同的 MD5 哈希值。
2.1 碰撞攻击的可能性
实际应用中的风险:在 Cherry Markdown 引擎中,MD5 被用于生成缓存键和大文本数据的标识符。如果攻击者能够构造出具有相同 MD5 哈希值的不同输入数据,可能会导致以下问题:
缓存污染:攻击者可以通过构造碰撞数据,使得缓存机制返回错误的结果,从而影响系统的正确性。
数据篡改:如果大文本数据的标识符被攻击者利用碰撞攻击篡改,可能会导致数据完整性问题,进而影响系统的安全性。
例如使用该引擎的页面包含文章主题和评论区,那么将会允许攻击者通过评论纂改文章主题。
2.2 潜在的安全隐患
缓存机制的漏洞:如果攻击者能够构造出具有相同 MD5 哈希值的不同输入数据,可能会导致缓存机制返回错误的结果,从而影响系统的正确性。
大文本数据的安全性:大文本数据的标识符依赖于 MD5 哈希值,如果攻击者能够利用碰撞攻击篡改这些数据,可能会导致数据完整性问题,进而影响系统的安全性。
3. 建议的解决方案
为了降低 MD5 哈希碰撞带来的风险,建议采取以下措施:
替换 MD5 算法
使用更安全的哈希算法:建议将 MD5 替换为更安全的哈希算法,如 SHA-256 或 SHA-3。这些算法在设计上更加安全,能够有效避免哈希碰撞问题。
System Information
No response
Contributing
None
The text was updated successfully, but these errors were encountered: