** 固若金汤: 网站的安全性架构 **
信息加密技术
单向散列加密
- 原理:将任意长度的输入通过散列算法生成固定长度的输出(如MD5、SHA),加密不可逆。
- 应用:用于密码存储,数据库中仅保存密文,即使被“拖库”也不泄露明文密码。
- 安全增强:通过“加盐”(salt)增加破解难度,防止彩虹表攻击。
用户密码的存储与验证
- 密码保存阶段(用户注册/密码修改)
- 步骤1 – 密码预处理:
- 客户端限制密码复杂度(长度≥8,包含字母+数字/符号)。
- 步骤2 – 生成唯一盐值:
- 服务端为每个用户随机生成至少16字节的盐值(salt),避免不同用户使用相同盐值。
- 步骤3 – 计算散列密文:
- 将明文密码与盐值拼接(如
salt + password),使用抗暴力破解算法(如 PBKDF2、Argon2 或 bcrypt ,优先于MD5/SHA-1)进行多次迭代散列(例如10万次)。
- 将明文密码与盐值拼接(如
- 步骤4 – 存储安全数据:
- 数据库中仅保存 盐值 及 最终散列值 ,字段命名避免暴露加密意图(如
salt字段命名为user_metadata)。
- 数据库中仅保存 盐值 及 最终散列值 ,字段命名避免暴露加密意图(如
- 步骤1 – 密码预处理:
- 密码验证阶段(用户登录)
- 步骤1 – 获取用户盐值:
- 根据用户名查询数据库,获取对应的盐值(salt)。
- 步骤2 – 动态计算散列值:
- 将用户输入的明文密码与数据库中存储的盐值拼接,并使用相同算法及迭代次数进行散列计算。
- 步骤3 – 密文比对:
- 将计算结果与数据库中存储的散列值进行恒定时间(constant-time)比对,防止计时攻击。
- 步骤4 – 日志与监控:
- 禁止记录明文密码到系统日志;触发失败阈值后启用账户锁定/IP封禁机制。
- 步骤1 – 获取用户盐值:
- 核心安全增强措施
| 措施 | 作用 |
|---|---|
| 唯一盐值生成 | 避免彩虹表攻击,即使相同密码密文不同 。 |
| 迭代散列对抗暴力破解 | 增加攻击者计算单次密码的时间成本(如使用PBKDF2)。 |
| 禁用陈旧算法 | MD5/SHA-1等易碰撞算法不适用于密码存储。 |
MD5 与 SHA 对比
- 核心差异对比
| 对比维度 | MD5 | SHA系列(以SHA-1为例) |
|---|---|---|
| 输出长度 | 128位 | 160位(SHA-1)、更长(如SHA-256) |
| 碰撞安全性 | 已被破解(可人为制造哈希冲突) | 安全性更高,但SHA-1已被证明存在理论脆弱性 |
| 抗彩虹表攻击 | 容易被彩虹表攻击,需结合盐值 | 相同场景下需依赖盐值增强安全性 |
| 计算速度 | 更快 | 相对较慢(设计上更强调安全强度) |
| 适用场景 | 非敏感数据摘要、校验文件完整性 | 密码存储首选(结合盐值及高级算法如SHA-256) |
- 当前安全共识
- 弃用建议:MD5不应用于密码存储等高敏感场景;SHA-1逐渐被SHA-256/512替代。
- 迭代优化:实际应用中更推荐PBKDF2、bcrypt等迭代哈希算法,而非原始MD5/SHA(需叠加盐值与多次散列)。
- 总结
资料中MD5与SHA并列为传统单向散列算法,需辅以盐值提升安全性,但实际应用中建议优先选择更抗碰撞的SHA-2(如SHA-256)或现代迭代哈希方案。
对称加密
- 原理:加密与解密使用同一密钥(如DES、RC算法),适合高效处理大量数据。
- 优点:算法简单,性能开销低。
- 缺点:密钥传输安全性差,需依赖安全通道。
DES 与 RC 对比
- 关键对比项
| 对比维度 | DES(Data Encryption Standard) | RC系列(如 RC4、RC6) |
|---|---|---|
| 历史定位 | 由美国联邦标准,20世纪70年代提出 | 由 Ron Rivest 设计,适用于不同场景的灵活算法 |
| 密钥长度 | 固定56位有效密钥(64位含校验位) | 可变长度(如 RC4 支持40-2048位) |
| 安全性现状 | 已不推荐:因密钥太短,易被暴力破解(可被数小时攻破) | 部分版本存在重大漏洞(如RC4已被广泛弃用) |
- 其他对称加密算法
- DES的替代方案:当前普遍使用 AES(Advanced Encryption Standard)替代DES。
- RC系列区分:
- RC4 :流加密算法,因 TLS/SSL 协议漏洞被主流禁用;
- RC6:块加密算法,曾参与 AES 标准竞选但未被选中。
非对称加密
信息安全传输
- 核心机制:
发送方(A)使用接收方(B)的 公钥 加密数据 → 通过非安全信道传输密文 → 接收方(B)使用自己的 私钥 解密获取明文。 - 安全保障:
即使密文在传输中被窃取,窃密者因无B的私钥无法解密,确保数据传输的机密性。
数字签名
- 核心机制:
签名者(如用户A)使用自己的 私钥 加密信息 → 接收方用签名者公开的 公钥 解密数据 → 解密成功即证明信息来源和完整性。 - 效力特征:
由于私钥唯一性,签名后的信息具有 不可抵赖性(无法否认签名行为)和 完整性验证(篡改后无法解密)。 - HTTPS:
- 根本机制:数字证书由权威机构颁发,包含网站公钥并通过机构私钥签名 → 浏览器使用机构预置的公钥验证证书合法性。
- 作用核心:确保客户端与服务器通信时传递的 公钥未被篡改 ,防范中间人攻击
场景扩展
二者可结合 对称加密与非对称加密混合使用:
- 步骤:非对称加密安全传输对称密钥 → 使用对称加密处理后续数据加解密。
- 目的:兼顾密钥交换安全性与高吞吐量数据处理需求。
常见非对称加密算法
| 算法名称 | 基础数学原理 | 密钥长度(等效强度举例) | 典型场景 | 优势 | 局限性 |
|---|---|---|---|---|---|
| RSA | 大整数质因数分解 | 2048/3072位 | HTTPS 证书、数据加密/签名 | 通用性强、兼容性高 | 计算开销大、量子攻击下安全性弱 |
| ECC | 椭圆曲线离散对数问题 | 256位(等效RSA 3072位) | 移动设备加密、物联网通信 | 密钥短、计算效率高、资源占用低 | 实现复杂度较高 |
| DSA | 离散对数问题 | 3072位(与RSA匹配) | 数字签名 | 签名速度快 | 仅支持签名、需预先生成临时密钥 |
| ElGamal | 离散对数问题 | 3072位以上 | 加密协议设计 | 安全性基于数学难题 | 密文膨胀明显、效率较低 |
| DH | 离散对数问题 | 2048位 | 密钥交换(如 TLS) | 动态生成会话密钥 | 无法抵抗中间人攻击(需身份验证) |
密钥安全管理
-
密钥风险
- 问题:明文存储密钥(如代码/配置文件中)导致内部泄露风险。
-
安全方案
- 独立服务模式:将密钥和算法部署于专用服务器或硬件,降低泄露概率,但性能开销高。
- 分片存储模式:密钥拆分加密后存储于多台服务器,仅授权后组装,兼顾安全与性能。
- 优势:分散密钥管理权限,避免单点泄露。
1234

被折叠的 条评论
为什么被折叠?



