1.一种抗口令泄露的认证与密钥协商方法,其特征在于,包括以下步骤:步骤1:初始化,服务器生成私钥和公钥;
具体实现包括以下子步骤:
步骤1.1:服务器确定相关公共参数,包括群的生成元、群的阶,并将所有公共参数公开;
步骤1.2:服务器选择随机的大素数作为私钥;
步骤1.3:服务器使用步骤1.2中私钥对步骤1.1中生成元计算模幂得到服务器公钥,并将公钥公开;
步骤2:用户注册;
具体实现包括以下子步骤:
步骤2.1:用户选择用户名、口令和用户密钥;
步骤2.2:将选择的口令和用户密钥分别对步骤1.1中生成元计算模幂进行隐藏处理得到口令隐藏信息和用户密钥隐藏信息;
步骤2.3:将步骤2.1中用户名、步骤2.2中口令隐藏信息和用户密钥隐藏信息通过安全通道传输给服务器;
步骤2.4:在接收到用户的信息后,服务器将步骤1.2中服务器私钥分别对步骤2.2中口令隐藏信息和用户密钥隐藏信息计算模幂,进行二次隐藏处理得到口令二次隐藏信息和用户密钥二次隐藏信息;
步骤2.5:将步骤2.1中用户名、步骤2.2中用户密钥隐藏信息以及步骤2.4中口令二次隐藏信息储存至数据库中;
步骤2.6:生成一张包括步骤1.1中生成元、步骤2.2中用户密钥隐藏信息以及步骤2.4中用户密钥二次隐藏信息的智能卡,并将它通过安全通道交付用户手中;
步骤3:用户登录;
具体实现包括以下子步骤:
步骤3.1:用户将智能卡插入智能卡读卡器,同时输入用户名,口令以及用户密钥;
步骤3.2:使用用户密钥将用户的口令分解为两个和用户密钥相关的伪随机数:x1+kU·x2=PWU;其中x1、x2是得到的两个伪随机数,kU是用户密钥,PWU是用户的口令;
步骤3.3:将智能卡中关于用户密钥和口令的内容删除;
步骤4:认证与协商;
具体实现包括以下子步骤:
步骤4.1:用户选择一个随机数,利用模幂运算将该随机数、步骤3.2中两个伪随机数分别进行隐藏得到随机数隐藏信息和两个伪随机数隐藏信息,并根据步骤3.2中两个伪随机数、步骤1.3中服务器公钥和步骤2.4中用户密钥二次隐藏信息计算得到口令二次隐藏信息:
其中x1、x2是得到的两个伪随机数,SP是服务器公钥,G2S是用户密钥二次隐藏信息,PWS是口令二次隐藏信息;
步骤4.2:将步骤3.1中用户口令与步骤4.1中的随机数隐藏信息、两个伪随机数隐藏信息、口令二次隐藏信息合并生成哈希值,并将该哈希值与用户口令、步骤4.1中的随机数隐藏信息和两个伪随机数隐藏信息打包作为用户认证请求信息发送给服务器;
步骤4.3:当服务器收到用户的认证请求信息后,从数据库中调取该用户对应数据,包括步骤2.2中用户密钥隐藏信息以及步骤2.4中口令二次隐藏信息;
步骤4.4:将步骤4.3中口令二次隐藏信息与用户认证请求信息相比较,如果匹配则进行下一步,否则拒绝此身份验证请求;
步骤4.5:对步骤4.1中哈希值进行验证,如果符合则进入下一步,否则拒绝此身份验证请求;
步骤4.6:选择一个随机数,将该随机数分别对步骤1.1中生成元和步骤4.1中随机数隐藏信息计算模幂得到两个隐藏信息,并将其中第一个隐藏信息与步骤4.3中口令二次隐藏信息合并生成哈希值;
步骤4.7:将步骤4.6中第一个隐藏信息与哈希值打包作为服务器响应信息发送给用户;
步骤4.8:服务器计算SK=H(G1RU||G1RS||KS),将SK作为服务器与用户之间的会话密钥,其中G1RU表示步骤4.1中随机数隐藏信息,G1RS、KS表示步骤4.6中两个隐藏信息,H(·)表示一个哈希函数;
步骤4.9:用户收到服务器响应信息后,对响应信息中的哈希值进行验证;如果验证通过则进入下一步,如果验证不通过,则结束本次登录请求;
步骤4.10:计算 SK'=H(G1RU||G1RS||KU),将SK'作为用户与服务器之间的会话密钥,其中KU表示用户将步骤4.1中的随机数对步骤4.6中第一个隐藏信息计算模幂得到的结果,rU表示步骤4.1中随机数,G1RU表示步骤4.1中随机数隐藏信息,G1RS表示步骤
4.6中第一个隐藏信息,H(·)表示步骤4.8中哈希函数。
2.根据权利要求1所述的抗口令泄露的认证与密钥协商方法,其特征在于:如果用户要用新口令替换旧口令,则具体实现包括以下步骤:步骤5.1:用户插入智能卡输入用户名、口令以及新口令;
步骤5.2:选择一个随机数,将该随机数对步骤1.3中服务器公钥、步骤1.1中生成元分别计算模幂得到两个隐藏信息;
步骤5.3:将步骤5.1中用户新口令对步骤1.1中生成元计算模幂得到新口令隐藏信息,将步骤5.1中用户口令对步骤1.3中服务器公钥计算模幂得到口令二次隐藏信息,并将新口令隐藏信息与步骤5.2中的第一个隐藏信息进行异或运算得到新口令随机数隐藏信息;
步骤5.4:将步骤5.1中用户名、步骤5.3中新口令随机数隐藏信息、口令二次隐藏信息、步骤5.2中第二个隐藏信息以及步骤2.2中用户密钥隐藏信息合并生成哈希值;
步骤5.5:将步骤5.1中用户名、步骤5.2中第二个隐藏信息、步骤5.3中新口令随机数隐藏信息以及步骤5.4中哈希值打包作为口令更换请求信息发送给服务器;
步骤5.6:当服务器收到用户的口令更换请求信息后,从数据库中调取该用户对应数据,包括步骤2.2中用户密钥隐藏信息以及步骤2.4中口令二次隐藏信息;步骤5.7:对步骤
5.4中哈希值进行验证,如果符合则进入下一步,否则拒绝此口令更换请求;
步骤5.8:使用步骤1.2中服务器私钥对步骤5.2中第二个隐藏信息计算模幂,再将计算结果与步骤5.3中新口令随机数隐藏信息进行异或运算得到新口令隐藏信息;
步骤5.9:使用步骤1.2中服务器私钥对步骤5.8中新口令隐藏信息计算模幂,得到新口令二次隐藏信息,并用新口令二次隐藏信息替换掉数据库中存储的旧口令二次隐藏信息。
3.根据权利要求2所述的抗口令泄露的认证与密钥协商方法,其特征在于:如果用户想要将密钥更换为新的密钥,则具体实现包括以下步骤:步骤6.1:用户插入智能卡输入用户名、口令以及新用户密钥;
步骤6.2:选择一个随机数,将该随机数对步骤1.3中服务器公钥、步骤1.1中生成元分别计算模幂得到两个隐藏信息;
步骤6.3:将步骤6.1中新用户密钥对步骤1.1中生成元计算模幂得到新用户密钥隐藏信息,将步骤6.1中用户口令对步骤1.3中服务器公钥计算模幂得到口令二次隐藏信息,并将新用户密钥隐藏信息与步骤6.2中的第一个隐藏信息进行异或运算得到新用户密钥随机数隐藏信息
步骤6.4:将步骤6.1中用户名、步骤6.3中新用户密钥随机数隐藏信息、口令二次隐藏信息、步骤6.2中第二个隐藏信息以及步骤2.2中用户密钥隐藏信息合并生成哈希值;
步骤6.5:将步骤6.1中用户名、步骤6.2中第二个隐藏信息、步骤6.3中新用户密钥随机数隐藏信息以及步骤6.4中哈希值打包作为用户密钥更换请求信息发送给服务器;
步骤6.6:当服务器收到用户密钥更换请求信息后,从数据库中调取该用户对应数据,包括步骤2.2中用户密钥隐藏信息以及步骤2.4中口令二次隐藏信息;
步骤6.7:对步骤6.4中哈希值进行验证,如果符合则进入下一步,否则拒绝此密钥更换请求;
步骤6.8:使用步骤1.2中服务器私钥对步骤6.2中第二个隐藏信息计算模幂,再将计算结果与步骤6.3中新用户密钥随机数隐藏信息进行异或运算得到新用户密钥隐藏信息,最后使用步骤1.2中服务器私钥对新用户密钥隐藏信息计算模幂得到新用户密钥二次隐藏信息;
步骤6.9:选择一个随机数,将该随机数分别对步骤6.8中新用户密钥隐藏信息和步骤
1.1中生成元计算模幂得到随机数共享信息和随机数隐藏信息,再将随机数共享信息与步骤6.8中新用户密钥二次隐藏信息进行异或运算得到随机数二次共享信息;
步骤6.10:将步骤6.9中随机数隐藏信息和随机数二次共享信息以及步骤6.6中口令二次隐藏信息合并生成哈希值;
步骤6.11:将步骤6.9中随机数隐藏信息和随机数二次共享信息以及步骤6.10中哈希值打包作为密钥更换响应信息发送给用户;
步骤6.12:用步骤6.8中新用户密钥隐藏信息替换掉数据库中存储的旧用户密钥隐藏信息;
步骤6.13:当用户收到服务器的密钥更换响应信息后,对步骤6.11中的哈希值进行验证,如果符合则进入下一步,否则停止此密钥更换流程;
步骤6.14:用步骤6.1中新用户密钥对步骤6.9中随机数隐藏信息计算模幂,将该结果与步骤6.9中随机数二次共享信息进行异或运算,得到新用户密钥二次隐藏信息;
步骤6.15:用步骤6.3中的新用户密钥隐藏信息和步骤6.14中的新用户密钥二次隐藏信息替换掉智能卡中存储的旧用户密钥隐藏信息和旧用户密钥二次隐藏信息。