本文讨论:
- 在企业项目实践中会遇到的密码安全要求管理规定;
* 随着密码学的发展,下文所标记的安全算法也会变为不安全,博客更新较慢,大家谨慎看待。
密码学工具包
如果你不是密码学的专家,请不要创造或者修改加密算法。
| 类型 | 算法名称 |
|---|---|
| 对称加密 | AES、SM4 、模式优先选择 GCM(支持认证加密) |
| 非对称加密 | RSA、SM2 |
| 杂凑算法 | HASH(根据场景选择) |
| 认证加密 | HMAC-SHA256 |
哈希(杂凑) 不是加密:加密是可逆的(有加密和解密过程),哈希是单向的、不可逆的。这是一个关键区别。
选择合适的HASH算法:根据你的用途选择算法。
- 验证文件完整性可用SHA-256。
- 存储密码则必须使用Bcrypt、Scrypt或Argon2。
Bcrypt 是一种专为密码存储设计的安全、可适应的密码哈希函数,基于Blowfish加密算法,通过使用随机的“盐值”来生成独特的哈希值,即使是相同的密码也能产生不同的结果,并且可以通过调整“工作因子”来增加计算复杂度,有效抵抗彩虹表攻击和暴力破解攻击。
HMAC是一种基于哈希函数的消息认证码算法,通过与密钥结合使用,确保消息的完整性和发送者认证。
不安全的加密算法
在开发中应禁止使用的加密算法、工具、库、框架、协议;
| 类型 | 算法名称 |
|---|---|
| 对称加密 | DES、3DES(密钥过短,易被暴力破解)、ECB 模式(缺乏语义安全) |
| 非对称加密 | RSA-1024(已不满足 NIST 最低要求)、DSA(易被参数攻击) |
| 杂凑算法 | 一些场景忽视了抗彩虹表攻击和抗暴力攻击 |
| 认证加密 | HMAC-MD5、HMAC-SHA1 |
密钥安全
对称、非对称的密钥管理
密钥长度设计:
非对称加密算法:SM2(256位)、RSA(2048位)
对称加密算法:SM4(128位)、AES(128位/192位/256位)
散列算法:SM3、SHA256、口令等认证数据加盐处理
签名算法:SM2算法(256位)、RSA(2048位)、对原始数据进行哈希运算生成一个固定长度的消息摘要:SHA-2
盐值长度 ≥ 128位,且需唯一随机生成。
密钥生成:使用安全的随机数生成器(如 /dev/urandom 或 SecureRandom)。
密钥安全生命周期管理流程
| 阶段 | 常用算法 |
|---|---|
| 随机数生成 | Java的SecureRandom类 |
| 密钥创建 | 需要考虑安全的位数 |
| 密钥派生 | 密钥分层、HKDF |
| 密钥存储 | Bcrypt |
| 密钥分配 | 选择合适的密钥分配协议 |
| 密钥使用 | 密钥被泄露、密钥被硬编码在代码 |
| 密钥更新 | - |
| 密钥更换 | - |
| 密钥撤销 | - |
| 密钥归档 | 加密归档 |
| 密钥销毁 | 密钥必须定期更换,更换密钥后原来的密钥必须销毁。密钥不再使用时,该密钥的所有拷贝都必须删除,生成或构造该密钥的所有信息也应该被全部删除。 |
| 密钥的备份与恢复 | AES |
证书管理
企业数字证书的管理全流程通常包括:
- 购买
- 申请
- 域名验证
- 组织验证(如果需要)
- 证书签发以及证书的部署与续费/管理等步骤。
企业首先在证书管理平台购买相应的证书产品,然后提交证书申请并填写相关信息,接着通过DNS、邮箱或文件的方式验证域名所有权。对于OV、EV等高级别证书,还需要CA机构进行组织验证。验证通过后,CA机构便会签发数字证书。最后,企业需将证书部署到服务器上以启用加密连接,并定期续费和管理证书的生命周期。
当然,对于企业内部应用身份认证和数据加解密,企业还可以搭建私有的证书管理平台,签发和管理自签名私有证书,生成私有证书(PCA)流程:
- OpenSSL 工具;
- 配合自己的安全管理流程管理公钥私钥;
模型/流程设计/协议
-
PGP是指Pretty Good Privacy(优良保密协议);
-
SSL 协议;

浙公网安备 33010602011771号