MD5介绍及安全建设防范

目录

一、MD5介绍

二、甲方安全建设中MD5的典型应用与风险

A. 仍在使用MD5的场景(需立即整改)

1. 密码存储(高危)

2. 文件完整性校验(中危)

3. 数字签名/证书(极高危)

B. 可接受使用MD5的场景(有限条件)

1. 非安全标识符

2. 数据去重(需隔离)

三、对甲方安全建设的具体影响

1. 合规与审计风险

2. 安全开发生命周期(SDL)要求

3. 资产发现与风险管理

4. 应急预案

四、关键建议

总结


一、MD5介绍

MD5不是加密算法,而是密码散列函数(哈希函数)。 这是甲方安全建设中必须明确的基础概念,混淆可能导致严重的安全误判。

特性 加密(如AES) MD5(哈希) 对甲方安全的影响
可逆性 ✅ 双向可逆(加解密) ❌ 单向不可逆 若误用于密码保护,无法合规审计原始数据
目的 保护数据机密性 验证数据完整性 用错场景将导致安全目标失败
密钥 必需 MD5无密钥管理要求,但也不提供保密性
碰撞风险 低(依赖算法强度) 极高(已知攻击) 可能被绕过完整性检查

二、甲方安全建设中MD5的典型应用与风险

A. 仍在使用MD5的场景(需立即整改)

1. 密码存储(高危)
# ❌ 错误示例(仍在许多遗留系统中存在)
def store_password(user, password):
    hashed = hashlib.md5(password.encode()).hexdigest()
    db.execute("UPDATE users SET password_md5=? WHERE user=?", hashed, user)

风险:

  • 彩虹表攻击:秒级破解常见密码

  • 撞库攻击:用户在其他网站泄露的MD5密码可直接登录

  • 合规违规:违反等保2.0、通用数据保护条例GDPR、支付卡数据安全标准PCI DSS等标准

甲方整改方案:

# ✅ 正确方案(密码专用算法)
import bcrypt
# 或使用 passlib 库的 Argon2
​
def store_password_secure(user, password):
    # bcrypt 自动加盐、可调成本
    hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt(rounds=12))
    db.execute("UPDATE users SET password_bcrypt=? WHERE user=?", hashed, user)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KP_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值