本发明属于信息安全技术领域,涉及一种抗口令泄露的认证与密钥协商方法,特别涉及针对用户口令使用的特点、用户隐私保护的需要、抵御侧信道攻击的需求和方法效率的限制,使用口令拆分方法的一种抗口令泄露的认证与密钥协商方法。
背景技术:
随着计算机,移动设备和互联网技术的发展,人们越来越多地通过网络与他人交流。在沟通之前,有一个不容忽视的步骤是认证。没有认证的通信将失去其实际意义。目前大多数种类的认证都是通过使用验证用户名和口令来实现。其中口令通常易于记忆,并且可以方便地使用。在日常生活中人们几乎每天都使用他们的口令。但为了便于记忆和使用,口令经常短而低熵。恶意攻击者可能通过口令猜测攻击成功猜出合法用户的密码。为了抵抗口令猜测攻击,普遍的方法是增加口令的长度和口令的组成类型。
随着计算机和移动设备的数量日益增加,攻击方法不再攻击协议的漏洞,而是考虑包括定时信息,电磁辐射和功耗信息的泄露等侧信道攻击。而针对口令的主要攻击是口令猜测攻击。在协议的整个执行过程中,如果口令多次参与计算,其泄露概率因为将大大增加。如果口令有轻微泄露,猜测密码的成功将大大提高,甚至可以将猜测成功的所需次数直接减少至个位数。
现有的抗口令泄露认证密钥协商协议利用抗口令泄露的加密/解密算法或签名/验证算法来实现防止泄露的目标。但使用这些算法将严重影响要协议的高效性。因此如何设计独立于抗泄露加密/解密算法或签名/验证算法的高效抗口令泄露认证与密钥协商方法是一个值得深入研究的问题。
技术实现要素:
为了解决上述的技术问题,本发明提供了一种抗口令泄露的认证与密钥协商方法。
本发明所采用的技术方案是:一种抗口令泄露的认证与密钥协商方法,其特征在于,包括以下步骤:
步骤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:服务器将步骤4.6中两个隐藏信息与步骤4.1中随机数隐藏信息合并生成哈希值,将该哈希值作为服务器与用户之间的会话密钥;
步骤4.9:用户收到服务器响应信息后,对响应信息中的哈希值进行验证;如果验证通过则进入下一步,如果验证不通过,则结束本次登录请求;
步骤4.10:用户将步骤4.1中的随机数对步骤4.6中第一个隐藏信息计算模幂,将该结果与步骤4.1中随机数隐藏信息、步骤4.6中第一个隐藏信息合并生成哈希值;将该哈希值作为用户与服务器之间的会话密钥。
作为优选,如果用户要用新口令替换旧口令,则具体实现包括以下子步骤:
步骤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中新口令隐藏信息计算模幂,得到新口令二次隐藏信息,并用新口令二次隐藏信息替换掉数据库中存储的旧口令二次隐藏信息。
作为优选,如果用户想要将密钥更换为新的密钥,则具体实现包括以下步骤:
步骤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中的新用户密钥二次隐藏信息替换掉智能卡中存储的旧用户密钥隐藏信息和旧用户密钥二次隐藏信息。
本发明提供的一种抗口令泄露的认证与密钥协商方法,假设所述的环境中有两类参与者:服务器和用户。本发明是一个没有使用自带抗泄露属性的加密算法、解密算法、签名算法或验证算法的认证与密钥协商方法,此方法可以高效实现抗口令泄露的认证与密钥交换。在该方法的登录阶段,用户口令将通过一次计算分解为两个相关的伪随机数。在协议的后续步骤,即身份验证阶段,口令将不再直接参与计算。因此,可以在该方法执行过程中直接减少用户口令参与计算的次数,从而达到抗口令泄漏的目的。本发明的贡献可以概括如下:
1)提出了第一种认证与密钥协商方法,该方法在协议执行过程中能够抗口令泄漏。
2)本方法是第一个没有使用抗泄露加密/解密算法或签名/验证算法的抗口令泄露的认证与密钥协商方法。
附图说明
图1:本发明实施例的方法流程图;
图2:本发明实施例的方法中注册流程图;
图3:本发明实施例的方法中登录、认证与协商流程图;
图4:本发明实施例的方法中口令更换流程图的;
图5:本发明实施例的方法中密钥更换流程图的。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细述,应当理解,此处所述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1,本发明提供的一种抗口令泄露的认证与密钥协商方法,包括以下步骤:
步骤1:初始化,服务器生成公共参数、私钥和公钥;
具体实现包括以下子步骤:
步骤1.1:服务器s选择随机的大素数p,选择一个以g1为生成元的乘法群
步骤1.2:在群中选择一个随机数s作为服务器私钥;
步骤1.2:计算服务器公钥sp=g1s,并公开服务器公钥,其中g1表示步骤1.1中生成元,s表示步骤1.2中服务器私钥;
步骤2:用户u注册;
请见图2,具体实现包括以下子步骤:
步骤2.1:用户u选择用户名idu、口令pwu和用户密钥ku;
步骤2.2:计算
其中g2表示用户密钥隐藏信息,g1p表示口令隐藏信息,g1表示步骤1.1中生成元,ku表示步骤2.1中用户密钥,pwu表示步骤2.1中用户口令;
步骤2.3:将{g2,g1p,idu}作为注册请求信息通过安全通道发送给服务器s,其中idu表示步骤2.1中用户名、g1p、g2分别表示步骤2.2中口令隐藏信息和用户密钥隐藏信息;
步骤2.4:在接收到用户的注册请求信息后,服务器s;
计算pws=(g1p)s和g2s=g2s;
其中,pws表示口令二次隐藏信息,g2s表示用户密钥二次隐藏信息,s表示步骤1.2中服务器私钥,g1p表示步骤2.2中口令隐藏信息,g2表示步骤2.2中用户密钥隐藏信息,;
步骤2.5:将步骤2.1中用户名idu、步骤2.2中用户密钥隐藏信息g2以及步骤2.4中的口令二次隐藏信息pws储存至数据库中;
步骤2.6:生成一张包括步骤1.1中生成元g1、步骤2.2中的用户密钥隐藏信息g2以及步骤2.4中的用户密钥二次隐藏信息g2s的智能卡{g1,g2,g2s},并将它通过安全通道交付用户手中。
步骤3:用户登录;
请见图3,具体实现包括以下子步骤:
步骤3.1:用户将智能卡插入智能卡读卡器,同时输入用户名idu、口令pwu以及用户密钥ku;步骤3.2:使用步骤3.1中用户密钥ku将步骤3.1中用户的口令分解为两个和用户密钥相关的伪随机数x1,x2,该伪随机数须满足如下等式:
x1+ku·x2=pwu
其中x1、x2表示得到的两个伪随机数,ku表示步骤3.1中用户密钥,pwu表示步骤3.1中用户的口令;步骤3.3:将智能卡中关于用户密钥和口令的内容删除。
步骤4:认证与协商;
当用户u完成登陆步骤后需要完成以下步骤来通过身份认证;请见图3,具体实现包括以下子步骤:
步骤4.1:用户选择一个随机数ru,计算
步骤4.2:计算
步骤4.3:当服务器收到用户的认证请求信息后,从数据库中调取该用户对应数据,包括步骤2.2中用户密钥隐藏信息g2和步骤2.4中口令二次隐藏信息pws;
步骤4.4:比较pws与(g1x·g2x)s是否相等,如果相等则进行下一步,否则拒绝此身份认证请求,其中pws表示步骤4.3中的口令二次隐藏信息,g1x、g2x表示步骤4.1中两个伪随机数隐藏信息,s表示步骤1.2中服务器私钥;
步骤4.5:比较authenu与
步骤4.6:选择一个随机数rs,计算
其中,g1rs、ks表示两个隐藏信息,authens表示所得哈希值,g1表示步骤1.1中生成元,g1ru表示步骤4.1中随机数隐藏信息,pws表示步骤4.3中口令二次隐藏信息,h(·)表示一个哈希函数;
步骤4.7:将{g1rs,authens}作为服务器响应信息发送给用户,其中g1rs表示步骤4.6中第一个隐藏信息,authens表示步骤4.6中哈希值;
步骤4.8:服务器计算sk=h(g1ru||g1rs||ks),将sk作为服务器与用户之间的会话密钥,其中g1ru表示步骤4.1中随机数隐藏信息,g1rs、ks表示步骤4.6中两个隐藏信息,h(·)表示一个哈希函数;
步骤4.9:用户收到服务器响应信息后,比较authens与
步骤4.10:计算
很多时候,用户可能想要用新口令替换旧口令,请见图4,口令更换具体实现包括以下子步骤:
步骤5.1:用户插入智能卡输入用户名idu、口令pwu以及新口令pwunew;
步骤5.2:选择一个随机数rpw,计算
步骤5.3:计算
步骤5.4:计算
步骤5.5:将{idu,g1pw,g1rpw,authenpw}作为口令更换请求信息发送给服务器,其中idu表示步骤5.1中用户名,g1pw表示步骤5.3中新口令随机数隐藏信息,g1rpw表示步骤5.2中第二个隐藏信息,authenpw表示步骤5.4中哈希值;
步骤5.6:当服务器收到用户的口令更换请求信息后,从数据库中调取该用户对应数据,包括步骤2.2中用户密钥隐藏信息g2和口步骤2.4中令二次隐藏信息pws;
步骤5.7:比较authenpw与
步骤5.8:计算rpw'=(g1rpw)s、
步骤5.9:计算pwsnew=(g1pnew)s,其中pwsnew表示新口令二次隐藏信息,g1pnew表示步骤5.8中新口令隐藏信息,s表示步骤1.2中服务器私钥,并用新口令二次隐藏信息pwsnew替换掉数据库中存储的步骤2.5中口令二次隐藏信息pws。
如果用户想要将密钥更换为新的密钥,请见图5,具体实现包括以下步骤:
步骤6.1:用户插入智能卡输入用户名idu、口令pwu以及新用户密钥kunew;
步骤6.2:选择一个随机数
步骤6.3:计算
步骤6.4:计算
步骤6.5:将
步骤6.6:当服务器收到用户的密钥更换请求信息后,从数据库中调取该用户对应数据,包括包括步骤2.2中用户密钥隐藏信息g2和包括步骤2.4中口令二次隐藏信息pws;
步骤6.7:比较
步骤6.8:计算
步骤6.9:选择一个随机数
步骤6.10:计算
步骤6.11:将
步骤6.12:用步骤6.8中新用户密钥隐藏信息g2new'替换掉数据库中存储的用户密钥隐藏信息g2;
步骤6.13:当用户收到服务器的密钥更换响应信息后,比较
步骤6.14:计算
步骤6.15:用步骤6.3中的新用户密钥隐藏信息g2new和步骤6.15中的新用户密钥二次隐藏信息g2snew'替换掉智能卡中存储的用户密钥隐藏信息g2和用户密钥二次隐藏信息g2s。
现今应用最普遍的认证方式就是口令认证,因为这种方式具有简单高效的特性。由用户在注册阶段任意的选择便于自己记忆的用户名和口令。其中,口令的安全性至关重要。由于口令选择的不随机性,使得口令猜测攻击时常发生。现今采用最多的解决方法是增加口令的长度和多样性。而随着侧信道攻击的发展,攻击者的能力大大提高,当攻击者获取口令的一部分,那进行口令猜测攻击的准确性将大幅度提高。在有些情况下,甚至只需泄漏一小部分就可以直接推导出整个口令。目前可以抵抗口令泄露的认证与密钥协商方法大多依赖于所谓的抗泄露加解密算法或抗泄露签名验证算法来实现抗泄漏的目的。这显然与口令认证的简单高效性相违背,本专利提出了一种抗口令泄露的认证和密钥协商方法,该方法可以帮助用户与服务器高效的完成相互认证与会话密钥的协商,并可以有效的抵抗侧信道攻击,具有很高的实用性。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。