网络用户身份认证的方法及克服Kerberos认证体制中用户口令漏洞的方法

文档序号:7631989阅读:435来源:国知局
专利名称:网络用户身份认证的方法及克服Kerberos认证体制中用户口令漏洞的方法
技术领域
本发明涉及身份认证领域,特别是一种有关网络用户身份认证的方法。另外,本发明还涉及一种克服Kerberos认证体制用户口令漏洞的方法。
目前在用户身份识别和认证领域,关于用户身份的认证方法有很多。其中最简单的方法就是口令。系统事先保存每个用户的二元组信息(IDx,PWx),进入系统时用户x输入IDx和PWx,系统根据保存的用户信息和用户输入的信息相比较,从而判断用户身份的合法性。很明显,这种身份认证方法操作十分简单,但同时又最不安全。后来又出现了卡式的认证,即用户持有的某个秘密信息(硬件)。用户必须持有合法的随身携带的物理介质,例如IC卡中存储用户的个人化参数,访问系统资源时必须要有智能卡,通过插卡的方式判断出用户的身份。
在此方面最安全的身份认证机制是采用一次口令机制,即每次用户登录系统时口令互不相同。主要有两种实现方式。第一种采用请求/应答方式(challenge/response)。用户登录时系统随机提示一条信息,用户根据这一信息连同其个人化数据共同产生一个口令字,用户输入这个口令字,完成一次登录过程,或者用户对这一条信息实施数字签名发送给认证服务器进行鉴别;第二种方法采用时钟同步机制,即根据这个同步时钟信息连同其个人化数据共同产生一个口令字。这两种方案均需要AS端也产生与用户端相同的口令字(或检验用户签名)用于验证用户身份。
以上的几种认证方式都是基于单机的,但随着网络的发展和资源节省配置的需要,越来越需要适用于网络的认证方式。在分布式计算环境之下,用户访问系统时的位置是可变的,同时用户所要访问的系统资源也不是固定的。Kerberos提供了一种具有较高安全性能的用户身份认证和资源访问认证的机制。在Kerberos认证体制中,除了认证服务器AS外,还有另外一种授权服务器TGS(Ticket-Granting Server)。认证服务器AS中保存了所有用户的口令。其认证方法是这样的用户登录系统并表明访问某个系统资源时,系统并不传送用户口令,而是由认证服务器AS根据数据库中存储的用户口令产生一个密钥KU,并传送给用户一个可以访问授权服务器TGS的门票Ttgs;用户将获得的可以访问授权服务器TGS的门票Ttgs连同其个人化信息发送给授权服务器TGS,授权服务器TGS对用户身份信息认证后,发送给用户一个可以访问某个服务器的门票TS;用户将获得的TS连同其个人化信息发送给Server,Server对信息认证后,给用户提供相应的服务。
综上所述,一次性口令虽然比较安全,但是要求认证方和被认证方能够基于同一个要素产生相同的口令字,一般比较难实现。而kerberos认证方式功能更强大、也更加严密,但是kerberos认证过程中是通过用户名username/口令password登陆的,在后期的应用中使用口令password生成的密钥很容易被离线攻击。因为口令password是很容易离线攻击的,一些黑客在网上截取口令password生成的密钥进行存储后分析,很容易得到口令password的内容。
本发明的目的是要提供网络用户身份认证的方法及克服Kerberos认证体制用户口令漏洞的方法,它能够克服单凭口令password保密很容易离线攻击的特点,使得即使在有其他人通过离线攻击或其他方法得到口令的情况下仍不能进入系统获得资源。
网络用户身份认证的原过程为管理员设定用户帐号,指定用户口令,通过用户口令产生的密钥key0预先存放到数据库中。在用户使用时,只要输入用户帐号及口令,就可向认证服务器发出请求并获得应答,此应答采用了数据库中用户的key0加密,到达用户端后用户程序通过获得的口令计算出此用户的密钥key0再解密应答,从而向对端确认了自己的身份。
本发明对其进行改进后的过程为管理员输入用户临时口令到认证卡中,与卡内的原密钥(GDTkey)产生一个新密钥key0,生成的key0存放在数据库中;用户拿到临时口令和认证卡后,向一个认证服务器发出请求,输入客户帐号,认证服务器就用所述的数据库中存放的密钥key0对应答进行加密,应答到用户端后,客户能够通过已知的用户口令与认证卡内的原密钥(GDTkey)结合生成key0对该应答进行解密。能够解密正确并获得访问票根授权服务器TGS的票根,就已证明了自己的身份,同时也获得了与TGS的会话密钥。用户通过此票根访问TGS,并申请访问应用服务器的票根,在TGS获得此请求时需要能够解开这个访问票根,因为票根中有用户与TGS会话的密钥,解密的密钥是TGS自己的密钥,如果不能解开,就说明此台服务器是假的;如果能够解开,再向用户发放访问应用服务器的票根。依次类推,用户最后才可以访问所需要的应用资源。
在上述的密钥产生过程中不仅仅依赖用户口令,用户口令还需要结合GDTkey通过算法产生key0,并存放在数据库中。用户得到认证卡与一个加密卡并安装用户系统,用户输入管理员指定的帐号和口令,由认证卡与其内部信息先做一次比较,如果口令错误,认证就失败;如果正确,口令与认证卡内的原密钥(GDTkey)产生一个与上述存放在数据库中的key0一样的密钥key0,用户通过key0向认证服务器验证身份,证明确实是自己,用户就可获得可以改变口令的许可,有了改变口令的许可后就可以改变口令,改动后的口令再与认证卡内的原密钥产生一个第二新密钥key1,并在认证卡中用第一次得到的新密钥key0加密第二新密钥key1并通过网络传送给服务器管理控制台,控制台将把此用户在数据库中存放的密钥key0改变为key1,作为后述程序中用户向认证服务器发出请求时认证服务器加密的密钥。
改进后的方式从真正意义上克服了管理员可能盗用用户帐号及网上攻击破获用户口令等隐患。因用户改动口令,必须在网上传送而引起破获的可能性也没有了。
另外,本发明还是一种克服Kerberos认证体制中用户口令漏洞的方法。
Kerberos认证体制的原过程为管理员设定用户帐号,指定用户口令,通过用户口令产生的密钥key0预先存放到数据库中。在用户使用时,只要输入用户帐号及口令,就可向认证服务器发出请求并获得应答,此应答采用了数据库中用户的key0加密,到达用户端后用户程序通过获得的口令计算出此用户的密钥key0再解密应答,从而向对端确认了自己的身份。
本发明对其进行改进后的过程为管理员输入用户临时口令到认证卡中,与卡内的原密钥(GDTkey)产生一个新密钥key0,生成的key0存放在数据库中;用户拿到临时口令和认证卡后,向一个认证服务器发出请求,输入客户帐号,认证服务器就用所述的数据库中存放的密钥key0对应答进行加密,应答到用户端后,客户能够通过已知的用户口令与认证卡内的原密钥(GDTkey)结合生成key0对该应答进行解密。
在上述的密钥产生过程中不仅仅依赖用户口令,用户口令还需要结合GDTkey通过算法产生key0,,并存放在数据库中。
用户首次申请登陆时,建议要求修改密码,步骤如下用户输入管理员指定的帐号和口令,由认证卡与其内部信息先做一次比较,如果口令错误,认证就失败;如果正确,口令与认证卡内的原密钥(GDTkey)产生一个与上述存放在数据库中的key0—样的密钥key0,用户通过key0向认证服务器验证身份,证明确实是自己,用户就可获得可以改变口令的许可,有了改变口令的许可后就可以改变口令,改动后的口令再与认证卡内的原密钥产生一个第二新密钥key1,并在认证卡中用第一次得到的新密钥key0加密第二新密钥key1并通过网络传送给服务器管理控制台,控制台将把此用户在数据库中存放的密钥key0改变为key1,作为后述程序中用户向认证服务器发出请求时认证服务器加密的密钥。
由于本发明除了利用用户口令之外,还要结合一个密钥(GDTkey)来产生一个真正的新密钥,这就使得即使在有其他人通过离线攻击或其他方法得到口令的情况下仍不能进入系统获得资源。另外,由于本发明的改进的技术方案是由认证卡在卡内部计算出密钥(GDTkey)和用户口令结合产生的新密钥key0,避免了直接暴露认证卡中的密钥GDTkey值;对修改过后的客户密钥采用老的客户密钥加密后传送的方式避免了直接传送,从而避免了泄密。●实际应用

图1是一个本发明在虚拟专用网VPN中的应用拓扑图。(见后面,下同。)图2是本发明的网络用户身份认证的方法的流程图。
图3是本发明的一个交互过程图。
图1是一个本发明在虚拟专用网VPN中的应用拓扑图。从中可以看出,本发明所应用的认证系统主要由有认证和加密卡的用户端、认证服务器、票根授权服务器和应用服务器组成。结合图2本发明的网络用户身份认证方法的流程图、图3本发明的一个交互过程图可以看出本发明的实现步骤。
首先,管理员输入用户临时口令到认证卡中,与卡内的原密钥(GDTkey)产生一个新密钥key0,生成的key0采用数据库的主秘密加密存放在数据库中。然后,用户通过修改密码的方式变key0为key1,如果不修改也可以使用。接着由用户向客户系统输入用户身份,即用户名,以及被请求的认证服务器名,由系统向被请求的认证服务器发出请求,认证服务器收到请求后,查找数据库中是否有此用户名,如果存在,对用户做出应答,此应答用数据库中存放的该用户的新密钥key0加密,到达用户端后,用户端软件通过自己的用户口令与认证卡内的原密钥(GDTkey)结合产生key0,对该应答进行解密,解密正确,用户就可以获得认证服务器传送给用户的可以访问一个票根授权服务器的门票,以及用户与票根授权服务器进行会话的密钥,这个过程也就验证了用户自己的身份。该票根授权服务器的门票是下面过程中用户能够进入票根授权服务器的凭证,而要想和票根授权服务器建立通话,则必须有用户与票根授权服务器进行会话的密钥。
接着,由用户拿着票根授权服务器的门票,和被请求的应用服务器名,以及用户与票根授权服务器之间的认证符(该认证符表明用户拿到票根授权服务器的门票到实际去请求授权服务器的时间差)去请求票根授权服务器。该授权服务器传送给用户一个可以访问应用服务器的门票,以及用户与应用服务器进行会话的密钥。该应用服务器的门票是下面过程中用户能够进入应用服务器的凭证,而要想和应用服务器建立通话,则必须有用户与应用服务器进行会话的密钥。
然后,由用户拿着应用服务器的门票,以及用户与应用服务器之间的认证符(该认证符表明用户拿到应用服务器的门票到实际去请求应用服务器的时间差)去请求应用服务器,应用服务器响应,则用户可以访问系统资源。
在本发明的改进的技术方案中,首先,管理员输入用户临时口令到认证卡中,与卡内的原密钥(GDTkey)产生一个新密钥key0并被加密(加密方法采用的是数据库的主秘密)存放在数据库中。
用户得到认证卡与一个加密卡并安装相应的客户端系统,用户使用前输入管理员给定的帐号及口令,与认证卡内的原密钥(GDTkey)产生一个与上述存放在数据库中的新密钥key0一样的密钥key0,用户通过key0向认证服务器验证身份,证明确实是自己,用户就可获得可以改变口令的许可,有了改变口令的许可后就可以改变口令,改动后的口令再与认证卡内的原密钥产生一个第二新密钥key1,并在认证卡中用第一次得到的新密钥key0加密第二新密钥key1并通过网络传送给服务器管理控制台,控制台将把此用户在数据库中存放的密钥key0改变为key1,作为后述程序中用户向认证服务器发出请求时认证服务器加密的密钥。
改变以后后续用户向服务器证明自己的过程与原kerberos协议没有什么大的区别,唯一不同的是每次用户登陆都必须同时拥有密钥GDTkey及用户自己的帐号及口令,用户口令和密钥GDTkey结合产生的新密钥用于解密从认证服务器返回的应答。
所述的结合口令和密钥产生新密钥的算法是将原密钥进行MD5算法处理,与口令或经二进制码填充的口令进行异或。
其中,MD5算法是这样的它以一种充分复杂的方式将各比特弄乱,每个输出比特都受每个输入比特的影响。简而言之,开始是先将报文填充到448比特(以512为模)的长度。然后再将报文的初始长度增加为64比特的整数,以得到一个长度为512比特的倍数的完整输入。最后一步是把一个128比特的缓冲区初始化为一个固定值。在计算时,每次取512比特的输入块并将它与128比特的缓冲区彻底混合。
上述与口令或经二进制码填充的口令进行异或的过程是这样的将口令password凑成16个8字节,如果不够就用二进制ASC码填充,直到最后成为16位8字节。然后根据对称算法,校验奇偶位,实际结果如果是64位,56位是密钥,8位是奇偶位。如果这个结果与对称算法规范中描述的“脆弱”和“半脆弱”密钥相匹配,则将其与常数00000000000000F0异或,最终结果为产生的新密钥。
其中上面所述的“脆弱”和“半脆弱”举例来说,如结果为0000000000000000或000000000001的情况,该情况非常不稳定,如果我们直接用其作密钥,则非常容易产生错误的识别。
上面所述的加密或解密处理是按照美国保密产业数据加密标准(DES)进行的。DEC的情况大致如下明文按64比特块加密,经过19个不同的站,最后生成64比特的密文。在19个站处理过程中,有一个56比特的密钥作参数。其中,第一站是一个在64比特明文上作与密钥无关的变换的。最后一站对第一站的结果作逆变换。倒数第二站将左32位与右32位互换。余下的16站功能相同,但使用密钥的不同函数。解密用的密钥与加密密钥相同,只是解密步骤正好相反。
本发明还公开了一种克服了Kerberos认证体制光使用用户口令存在漏洞的方法,它实际上是把上述本发明的网络用户身份认证的方法的前序建立认证准备的部分单独抽出来作为一个技术方案来保护。此外,就这一部分范围来说,它能够独立解决一个技术问题,即变Kerberos认证体制中单因子认证为双因子认证,或者是说为认证建立准备的问题。
权利要求
1.一种网络用户身份认证的方法,它包括管理员输入用户临时口令到认证卡中,与卡内的原密钥产生一个新密钥key0,key0存放在数据库中;用户拿到临时口令和认证卡后,向一个认证服务器发出请求,输入客户帐号,认证服务器就用所述的数据库中存放的新密钥key0加密应答,用户端收到应答,通过临时口令和认证卡中的原密钥产生一样的新密钥key0并解密应答,得到一个可以访问票根授权服务器的门票;用户将所述的访问票根授权服务器的门票与个人化信息发送给票根授权服务器,由票根授权服务器发给用户一个可以访问某应用服务器的门票;用户将可以访问某应用服务器的门票及个人化信息发送给该应用服务器,该应用服务器对信息认证后,给用户提供相应的服务。
2.根据权利要求1所述的网络用户身份认证的方法,其特征在于在所述的新密钥key0产生并被加密后存放在数据库中之后,用户得到认证卡与一个加密卡并安装用户系统,用户输入管理员指定的帐号和临时口令,这些信息与认证卡中的信息先做一次对比,如果错误,认证失败;如果正确,口令将与认证卡内的原密钥产生一个与上述存放在数据库中的新密钥一样的密钥key0,用户通过key0向认证服务器验证身份,证明确实是自己,用户就可获得改变口令的许可,有了改变口令的许可后就可以改变口令,改动后的口令可与认证卡内的原密钥产生一个第二新密钥key1,在认证卡中用第一次得到的新密钥key0加密第二新密钥key1并通过网络传送给服务器管理控制台,控制台将此把用户在数据库中存放的密钥key0改变为key1,作为后述程序中用户向认证服务器发出请求时认证服务器加密的密钥。
3.根据权利要求1或2所述的网络用户身份认证的方法,其特征在于所述的结合口令和认证卡中的密钥产生新密钥的算法是将原密钥进行MD5算法处理,与口令或经二进制码填充的口令进行异或。
4.根据权利要求3所述的网络用户身份认证的方法,其特征在于在异或之后,根据对称算法,校验奇偶位,如果这个结果与对称算法规范中描述的“脆弱”和“半脆弱”密钥相匹配,则将其与常数00000000000000F0异或,最终结果为产生的新密钥。
5.根据权利要求1或2所述的网络用户身份认证的方法,其特征在于所述的加密或解密处理是按照美国保密产业数据加密标准(DES)进行的或者中国商业密码办公室指定的对称加密算法。
6.一种克服Kerberos认证体制用户口令漏洞的方法,它包括管理员输入用户临时口令到认证卡中,与卡内的原密钥产生一个新密钥key0,key0存放在数据库中;用户拿到临时口令和认证卡后,向一个认证服务器发出请求,输入客户帐号,认证服务器就用所述的数据库中存放的新密钥key0加密,同时用户端能够对该加密进行解密。
7.根据权利要求6所述的保证Kerberos认证体制用户口令安全的方法,其特征在于在所述的新密钥key0产生并被加密后存放在数据库中之后,用户得到认证卡与一个加密卡并安装用户系统,用户输入管理员指定的帐号和临时口令,由认证卡与其内部信息先做一次对比,如果错误,认证失败;如果正确,口令将与认证卡内的原密钥产生一个与上述存放在数据库中的新密钥一样的密钥key0,用户通过key0向认证服务器验证身份,证明确实是自己,用户就可获得改变口令的许可,有了改变口令的许可后就可以改变口令,改动后的口令可与认证卡内的原密钥产生一个第二新密钥key1,在认证卡中用第一次得到的新密钥key0加密第二新密钥key1并通过网络传送给服务器管理控制台,控制台将改变此用户在数据库中存放的密钥key0为key1,作为后述程序中用户向认证服务器发出请求时认证服务器加密的密钥。
8.根据权利要求6或7所述的保证Kerberos认证体制用户口令安全的方法,其特征在于所述的结合口令和密钥产生新密钥的方法是将原密钥进行MD5算法处理,与口令或经二进制码填充的口令进行异或。
全文摘要
一种网络用户身份认证的方法,它包括:管理员输入用户临时口令到认证卡中,与卡内的原密钥产生一个新密钥key0,key0存放在数据库中;用户拿到临时口令和认证卡后,向一个认证服务器发出请求,输入客户帐号,认证服务器就用所述的数据库中存放的新密钥key0加密应答,用户端收到应答,通过临时口令和认证卡中的原密钥产生一样的新密钥key0并解密应答,得到一个访问票根授权服务器的门票;尔后访问票根授权服务器,由票根授权服务器发给用户访问某应用服务器的门票;用户访问该应用服务器。该方法减小了泄密的可能性。
文档编号H04L9/14GK1329418SQ01120580
公开日2002年1月2日 申请日期2001年7月24日 优先权日2001年7月24日
发明者李晓明, 何伟, 吴浩刚, 刘铁军 申请人:巨龙信息技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1