保密(Confidentiality)是通过加密和解密算法保护敏感数据,确保未授权人员无法访问其真实内容。可分为以下几类:
保密强度与成本
- 简单哈希:如 MD5,可以防止明文泄露,但对抗彩虹表攻击能力弱。
- 加盐哈希:使用静态或动态盐值增强保护。动态盐值能防止重复攻击,但复杂性增加。
- 慢哈希函数:如 BCrypt,通过增加计算时间来抵御暴力破解。
客户端加密
客户端加密在用户登录或注册时进行,目的是防止服务端存储明文密码。这减少了被拖库的风险,确保即使服务端被攻破,密码也不会以明文形式泄露。
密码存储与验证
-
用户注册:
- 用户输入明文密码,客户端进行哈希处理(例如,SHA-256)。
- 添加静态或伪动态盐值,再次哈希,生成中间结果。
- 将结果与动态盐值结合,发送到服务端。
-
服务端存储:
- 服务端接收加密结果和盐值,存储到数据库。
-
用户登录:
- 客户端发送输入的明文密码,重复相同的哈希过程。
- 服务端提取存储的盐值,计算哈希,并与数据库中的哈希值进行比较。