本文目录导读:

数据加密的规范配置需要根据数据的生命周期(存储、传输、使用)和敏感等级(公开、内部、敏感、绝密)来制定,以下是基于行业最佳实践(如NIST、ISO 27001、等保2.0)的系统性配置指南:
加密配置的核心原则
- 算法标准化:只使用经过国际或国家密码管理局认证的公开算法。
- 推荐:AES-256(对称)、RSA-2048/3072(非对称)、ECC-P256/P384(非对称)、SHA-256/SHA-3(哈希)。
- 禁用:DES、RC4、MD5、SHA-0/1(仅用于兼容性不可用于安全校验)。
- 密钥独立性:生产环境、测试环境、开发环境必须使用独立的加密密钥。
- “最小权限”加密:只对需要保护的数据字段或文件进行加密,避免全盘无差别加密导致的性能浪费。
- 加密与密钥管理分离:加密模块与密钥存储系统(如KMS、HSM)必须物理或逻辑隔离。
不同场景的配置规范
数据传输加密
这是最容易配置但常被忽略的环节。
- TLS(传输层安全)配置:
- 版本:强制使用 TLS 1.2 或 TLS 1.3,禁用 SSL 2.0/3.0 和 TLS 1.0/1.1。
- 密码套件:优先使用
TLS_AES_256_GCM_SHA384(TLS 1.3)或TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384(TLS 1.2)。 - 证书管理:使用公信CA签发的证书,证书链完整,私钥权限设置为600(Linux)。
- 配置检查:使用工具(如
sslscan、Qualys SSL Labs)扫描,确保无弱密钥交换(如DHE_EXPORT、RC4)。 - 特殊协议:RDP、SSH、数据库连接(如MySQL SSL)、MQTT等,必须启用TLS加密,禁用明文回退。
数据存储加密
- 数据库字段级加密(列加密):
- 文件:使用数据库内置加密(如 MySQL
AES_ENCRYPT()、PostgreSQLpgcrypto)或应用层加密(如 Java JCE)。 - 密钥:绝对不能将加密密钥硬编码在代码或数据库配置文件中,必须使用密钥管理系统(KMS)。
- 搜索支持:如需对加密字段搜索,考虑使用可搜索加密、哈希索引或明文脱敏索引。
- 文件:使用数据库内置加密(如 MySQL
- 文件/对象存储加密:
- 云存储:开启服务端加密(SSE-S3 或 SSE-KMS),使用自动轮换的CMK。
- 本地磁盘:对于操作系统、数据库数据盘、日志盘,应使用 LUKS(Linux)、BitLocker(Windows)进行全盘加密。
- 备份文件:备份必须加密,密钥与备份系统分离。
- 内存加密(高安全场景):
- 对于支付密码、令牌等生命周期极短的数据,在内存中使用后立即清空,避免swap泄露。
- (可选)使用Intel SGX(软件防护扩展)或AMD SEV(安全加密虚拟化)进行可信执行环境加密。
终端设备加密
- 移动设备:启用硬件级加密(iOS FileVault、Android Full Disk Encryption),配合MDM(移动设备管理)策略。
- 笔记本电脑/移动硬盘:必须启用全盘加密(如FileVault、BitLocker),禁用未加密的USB存储。
密钥管理规范(加密的“心脏”)
配置加密算法只完成了一半工作,密钥管理是安全成败的关键:
- 密钥层级:
- 主密钥(Master Key):存储在硬件安全模块(HSM)或专用的KMS(密钥管理系统)中,极少使用。
- 数据加密密钥(DEK):由主密钥加密后存储(封装密钥),用于实际加密数据。
- 密钥生命周期:
- 生成:使用密码学安全的伪随机数生成器(CSPRNG),云环境使用KMS原生生成。
- 轮换:
- 主密钥:至少每年一次。
- 数据密钥:敏感数据每90天一次,普通数据每365天一次。
- 归档与销毁:旧密钥需安全存储(用于解密旧数据),但不能再用于加密新数据,销毁时必须是“密码学销毁”(即彻底删除密钥)。
- 访问控制:
- 使用KMS时必须配置IAM策略,仅允许特定服务账号(如应用服务器、数据库服务)使用特定密钥进行加密/解密操作。
- 禁用人人可访问的“默认密钥”。
配置检查清单(自检表)
在部署前,请逐项检查:
| 配置项 | 正确做法 | 错误做法 |
|---|---|---|
| 加密算法 | AES-256-GCM, ChaCha20-Poly1305 | AES-ECB, DES, 3DES |
| 密钥交换 | ECDHE (前向安全) | RSA 密钥交换(无PFS) |
| 哈希方式 | SHA-256, SHA-3 | MD5, SHA-1 |
| TLS版本 | 2+ | SSL 3.0, TLS 1.0/1.1 |
| 密钥存储 | HSM, KMS, Vault | 代码/配置文件/环境变量 |
| 静态加密 | 细粒度列加密 / 全盘加密 | 纯文本存储 |
| 日志加密 | 加密日志文件,脱敏敏感字段 | 日志明文包含密码/身份证号 |
| 错误处理 | 返回泛化错误(如“解密失败”) | 返回具体错误(如“密钥不存在”) |
落地工具与平台
- KMS:AWS KMS、Azure Key Vault、Google Cloud KMS、HashiCorp Vault、阿里云 KMS。
- 全盘加密:LUKS(Linux)、BitLocker(Windows)、FileVault(macOS)。
- 数据库加密:TDE(透明数据加密)如 SQL Server TDE、Oracle TDE;列级基于JCE或pgcrypto。
- 网络加密:WireGuard(现代VPN)、OpenVPN、IPsec。
总结建议
- 不要自己造轮子:始终使用标准库(如 OpenSSL、Bouncy Castle)或云服务商提供的加密SDK。
- 加密≠安枕无忧:加密只保护静态和传输中的数据,对数据使用中(如内存中处理时的侧信道攻击)需要额外防护(如HSM)。
- 从“默认安全”起步:在配置数据库、Web服务器、云服务时,默认开启加密(如MySQL 8.0+默认加密、S3桶默认加密)。
- 定期审计:使用自动化工具(如
tls-scan、config auditor)定期检查配置是否符合规范。
核心公式:数据安全 = 标准算法 + 隔离密钥 + 最小权限 + 定期轮换 + 合规审计