本文討論:
- 在企業項目實踐中會遇到的密碼安全要求管理規定;
* 隨著密碼學的發展,下文所標記的安全算法也會變為不安全,博客我很少更新,大家謹慎看待。
密碼學工具包
如果你不是密碼學的專家,請不要創造或者修改加密算法。
| 類型 | 算法名稱 |
|---|---|
| 對稱加密 | 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號