核心觀點
一個有用的加密算法,其安全性必須完全依賴密鑰的保密性,而非算法的保密性。 這是現代密碼學的基石(克拉霍夫原則)。
場景分析
- 客戶端發送 100 金幣,修改為 1000:若服務端嚴格驗證「用戶當前金幣 ≥ 請求扣除金幣」,無論封包如何構造,服務端拒絕非法邏輯即可。加密只防竄改檢測,業務邏輯校驗才是根本。
- 加密算法 vs 加密映射:
- 算法:如 AES、HMAC-SHA1,標準化、公開、經驗證。
- 映射/密鑰:對稱密鑰、非對稱私鑰、HMAC Key,必須極度保護。
- 「改映射/改算法」防破解?:自定義算法(保密算法)屬於「安全性靠模糊」,一旦逆向分析出算法即全盤崩潰。標準算法+強密鑰管理才是正道。
工程落地建議
- 使用成熟庫:
libsodium、OpenSSL、語言標準庫(Java `javax.crypto`、Go `crypto`、Python `cryptography`)。
- 密鑰管理:輪換、最小權限、HSM/KMS 存儲,嚴禁硬編碼在代碼/配置中。
- 完整性驗證:採用 AEAD 模式(AES-GCM, ChaCha20-Poly1305)或 HMAC,防範密文竄改。
- 業務層防禦:服務端授權檢查、幂等性、頻率限制、審計日誌。
密碼學課程第一節課就會強調:算法公開,密鑰保密。請務必遵循此原則設計系統。