协议安全

Posted by jabin on March 20, 2019

注册->登录(获取票据)->带票据访问其它业务操作逻辑

一、密码协议需要考虑的问题

1. 重放攻击

2. 字典攻击

3. 拖库后的字典攻击

4. 中间人攻击

5. 拖库后的中间人攻击

6. 拖库后的伪造登录

7. 拖库后伪造server搜集密码

8. 前向安全性

9. 窃听

二、QQ登录协议与kerberos/SRP协议的对比

1. qq登录协议与kerberos

  1. Kerberos是纯粹的对称加密协议,QQ协议用非对称加密包裹了一层,可以抵御 “本地字典攻击”,提升“前向安全性”及“会话安全性”
  2. 存储方面,QQ对密码信息加盐防止批量暴力破解
  3. Kerberos用时间戳来防重放攻击;QQ用时间戳+SEQ机制来防重放;
  4. Kerberos最新版协议仍然支持DES/RC4/3DES;QQ用TEA对比更安全

2. qq登录协议与SRP

使用了ECDH, 安全性和SRP基本无差别

三、安全密码协议的演变

1. 初始阶段

  1. 注册阶段:通过非对称加密, 告诉服务端H1(对密码做md5加密), 服务端存储H1
  2. 登录阶段:客户端通过H1加密, 服务端通过存储的H1解密; 然后通过客户端的随机key加密票据(skey等), 返回给客户端
  3. 访问其它业务阶段:带着登录态访问 若H1被拖库, 凉凉

2. 进化阶段

加盐 用md5(H1+uin), 防止批量彩虹表暴力破解。 可以防伪造登录, 因为不知道H1 若被拖库, 依旧可以伪造server、和网络窃听

3. 强化阶段

再做一层非对称加密, 把服务端的公钥硬编码在客户端, 客户端生成一对公私钥, 把公钥传给服务端,服务端的返回包用客户端的公钥解密。