注册->登录(获取票据)->带票据访问其它业务操作逻辑
一、密码协议需要考虑的问题
1. 重放攻击
2. 字典攻击
3. 拖库后的字典攻击
4. 中间人攻击
5. 拖库后的中间人攻击
6. 拖库后的伪造登录
7. 拖库后伪造server搜集密码
8. 前向安全性
9. 窃听
二、QQ登录协议与kerberos/SRP协议的对比
1. qq登录协议与kerberos
- Kerberos是纯粹的对称加密协议,QQ协议用非对称加密包裹了一层,可以抵御 “本地字典攻击”,提升“前向安全性”及“会话安全性”
- 存储方面,QQ对密码信息加盐防止批量暴力破解
- Kerberos用时间戳来防重放攻击;QQ用时间戳+SEQ机制来防重放;
- Kerberos最新版协议仍然支持DES/RC4/3DES;QQ用TEA对比更安全
2. qq登录协议与SRP
使用了ECDH, 安全性和SRP基本无差别
三、安全密码协议的演变
1. 初始阶段
- 注册阶段:通过非对称加密, 告诉服务端H1(对密码做md5加密), 服务端存储H1
- 登录阶段:客户端通过H1加密, 服务端通过存储的H1解密; 然后通过客户端的随机key加密票据(skey等), 返回给客户端
- 访问其它业务阶段:带着登录态访问 若H1被拖库, 凉凉
2. 进化阶段
加盐 用md5(H1+uin), 防止批量彩虹表暴力破解。 可以防伪造登录, 因为不知道H1 若被拖库, 依旧可以伪造server、和网络窃听
3. 强化阶段
再做一层非对称加密, 把服务端的公钥硬编码在客户端, 客户端生成一对公私钥, 把公钥传给服务端,服务端的返回包用客户端的公钥解密。