本文讨论:

  • 在企业项目实践中会遇到的密码安全要求管理规定;

* 随着密码学的发展,下文所标记的安全算法也会变为不安全,博客更新较慢,大家谨慎看待。


密码学工具包

如果你不是密码学的专家,请不要创造或者修改加密算法。

类型 算法名称
对称加密 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 协议;
    image

posted on 2025-06-08 20:52  Mysticbinary  阅读(58)  评论(0)    收藏  举报