主权项 |
一种防止撞库攻击的多因子身份认证方法,其特征在于,所述多因子包括有用户口令,手机和手环,三者缺一不可,共同参与完成用户的注册及登录,认证方法包括有如下步骤:(1)初始化阶段:1a)完成手环初始化:注册激活手环,并将其绑定到用户U指定的手机端上,确保手环具有蓝牙功能,并能与所关联手机端进行蓝牙连接;1b)确保用户U在注册阶段使用的PC端是安全可信的;(2)注册阶段:用户U在PC端利用短口令pwd,通过中止密钥导出函数(HKDF),生成原始主密钥k和验证字符串v;通过摇手环生成随机数x,利用原始主密钥k和随机数x,在PC端生成安全性加强的用户注册口令pu;用户U在服务器S进行首次注册,服务器S为该用户U生成随机数y,利用用户注册口令pu和随机数y,生成安全性更强的服务器存储口令ps;用户U利用手机端串码IMEI和短口令pwd的hash值,加密服务器S发来的随机数y,在手机端生成隐藏信息ctext;服务器S最终把用户注册信息安全存储在数据库中,注册信息包括:身份标识id,隐藏信息ctext,用户手机号num,验证字符串v和服务器存储口令ps;(3)预登录阶段:3a)用户U将自己的身份标识id发送给服务器S;3b)服务器S收到用户身份标识id后,查找数据库中与用户身份标识id相对应的隐藏信息ctext和验证字符串v,然后生成一个随机数challenge,并将随机数challenge与隐藏信息ctext和验证字符串v一起发送给用户U;3c)用户U利用服务器S发来的验证字符串v,并在手机端上输入注册阶段使用的短口令pwd,通过HKDF计算导出注册阶段生成的原始主密钥k,即HKDF.Extract(v,pwd)→(k);3d)用户U通过摇手环行为生成注册时的随机数x,并将随机数x通过蓝牙发送到手机端上;3e)用户U在手机端利用原始主密钥k和随机数x,生成用户注册口令pu;3f)用户U利用手机端串码IMEI和短口令pwd的hash值,解密隐藏信息ctext,得到注册阶段该网站服务器生成的随机数y;再在手机端利用用户注册口令pu和随机数y,生成服务器存储口令ps;(4)登录阶段:4a)用户U结合服务器存储口令ps和收到的随机数challenge,计算消息认证码R=MAC(ps,challenge),并将消息认证码R发送给服务器S;4b)服务器S收到消息认证码R后,查找数据库中与用户身份标识id相对应的服务器存储口令ps,再结合challenge,计算消息认证码R’=MAC(ps,challenge);最后,比较用户U发送的消息认证码R与服务器S计算出的消息认证码R’,若相等,则允许用户U登录;否则,拒绝登录请求。 |