专利名称:C/s架构下客户端身份的动态验证方法、系统及装置的制作方法
技术领域:
本发明涉及身份验证技术,尤其是涉及一种基于客户端/服务器端(Client/Server, C/S) 架构下对客户端身份以随机产生的一次性动态密码算法进行验证的方法、系统及装置。
背景技术:
目前的计算机应用软件中,基于客户端/服务器端(Client/Server, C/S )架构的软件占 了很大一部分,如企业网上OA系统、网上银行系统和网络游戏系统。同一时间内有多人可 以通过客户端同时登录到服务器来完成特定的业务功能。在多个登录的用户中,每个人的身份、权限都是不同的,决定其所能使用的软件功能 也不相同。为了区分不同用户的身份和权限,系统给每个用户分发不同的登录账号和密码。 系统凭借用户登录时所使用的账号来区分不同用户的身份,进而赋予用户不同的权限。目前采用的客户端用户登录至服务器端的方式如下.一是用户使用静态的账号和密码登录,如MSN、 QQ等聊天软件,电子邮件系统等。 在静态密码验证中,将用户账号和密码结合起来,先用账号识别"你是谁",再用密码验证"你 确实是谁",这种身分认证方法操作简单,但不安全,账号和密码容易被窃取;合法用户的 账号和静态密码一旦被黑客盗走,那么黑客就可以实施重放攻击,假冒合法用户的身份。另一种是使用动态一次性密码登录,即密码不是静态的,而是只能使用一次的动态密 码。动态密码系统中,服务器端和客户端共享一个相同的密钥K和一个共同的种子S (该种 子可以是时间序列值或事件序列值),验证程序是一个单向陷门函数F ( S )(比如为MD4、 MD5或SHA1),依赖于单向陷门函数的安全性,即正向计算很容易,反向计算却几乎不可 能,来保证动态密码的安全性。它一般配合一个硬件令牌来使用,每按一次按键,令牌根 据F (S)就可以生成一个动态密码,动态密码上送到服务器端,服务器端同样根据F(S) 计算出动态密码,进行验证。种子值S使用过一次后,即进行更新,以供下一次计算使用。 该动态密码有一个有效时间窗, 一旦使用过一次或超出该时间范围,密码即失效。如果黑 客仍采用静态密码的盗取方法,即使盗取成功,他得到的是已经失效的密码,重放攻击没 有任何作用。但是,由于动态密码登录验证的根本仍然是只在用户登录时验证一次,如果验证通过, 即认为用户为合法用户,可以无限期使用系统。因此,针对这种特点,发展出了针对动态 密码的中间人攻击。即黑客位于客户端与服务器端之间,当客户端的用户登录时,用户输 入的动态密码首先被黑客截取,黑客马上断开客户端与服务器端的网络连接,给用户造成 服务暂停的假象;然后黑客在极短的时间内使用截取的动态密码假冒用户登录服务器端, 因为时间很短,动态密码仍然有效,所以黑客成功的假冒了合法用户。因此,前述方法存在安全缺陷,其根本原因在于只对客户端的用户身份进行一次登录 验证,如果验证通过,即认为用户为合法用户,可以无限期使用连结至服务器端;静态密 码的方式无法抵御重放攻击,而一次性动态密码方式无法抵御中间人攻击,这使得它们在 用于客户端/服务器端的结构时面临严重的安全挑战。 发明内容本发明所要解决的技术问题在于提出一种C/S架构下客户端身份的动态验证方法、系 统及装置,以通过使用与客户端连接的动态令牌单元利用共享密钥和使用动态验证算法对 服务器端产生的挑战码和客户端用户输入的身份信息进行合成处理,生产响应码,在客户 端与服务器端以挑战/响应认证方式对客户端身份进行动态验证。为解决上述问题,本发明公开一种C/S架构下客户端身份的动态验证系统,包括客户端和用于对客户端作身份验证的服务器端;连接客户端的动态令牌单元,用于在客户端与服务器端以挑战/响应认证方式对客户端 身份进行动态验证过程中,使用动态验证算法合成服务器端产生的挑战码和客户端用户输入的身份信息,生产反馈至服务器端的响应码; 其中,所述动态令牌单元包括 接口单元,用于连接客户端; 密钥存储单元,用于存储经加密处理后的共享密钥; 验证算法单元,用于提供动态验证算法;具有防拷贝的安全控制单元,用于利用共享密钥,使用动态验证算法对服务器端产生 的挑战码和客户端用户输入的身份信息进行合成处理,生产反馈至服务器端的响应码。 较优的,所迷动态验证算法为SHA1-HMAC算法。较优的,所述客户端与所述服务器端之间以每进行一次数据通信就产生一次挑战/响应 认证,或以所述服务器端选择的一个随机时间为间隔产生一次挑战/响应认证。 较优的,所述接口单元为USB接口 。另外,本发明公开一种C/S架构下客户端身份的动态验证装置,包括 接口单元,用于连接客户端; 密钥存储单元,用于存储经加密处理后的共享密钥; 验证算法单元,用于提供动态验证算法;具有防拷贝的安全控制单元,用于利用共享密钥,使用动态验证算法对服务器端产生 的挑战码和客户端用户输入的身份信息进行合成处理,生产反馈至服务器端的响应码。 较优的,所述动态验证算法为SHA1-HMAC算法。 较优的,所述接口单元为USB接口 。再者,本发明还公开一种C/S架构下客户端身份的动态验证方法,包括与客户端连接的动态令牌单元利用共享密钥和使用动态验证算法对服务器端产生的挑 战码和客户端用户输入的身份信息进行合成处理,生产响应码,并通过客户端将响应码反 馈至服务器端,在客户端与服务器端以挑战/响应认证方式对客户端身份进行动态验证。较优的,所述客户端与所述服务器端之间以每进行一次数据通信就产生一次挑战/响应 认证,或以所述服务器端选择的一个随机时间为间隔产生一次挑战/响应认证。较优的,所述动态验证算法为SHA1-HMAC算法。与现有技术相比,本发明具有以下有益效果1、 本发明解决了目前C/S架构下对用户身份鉴别的安全缺陷,提出了在客户端和服务 器端的使用过程中随时发起的动态验证方法,避免了一次性登录中,用户身份极易伪造的 缺陷。2、 由于本发明使用的动态验证使用的算法采用一次性动态密码算法,因为密码是动态 的,这使得它可以抵御重放攻击。并且,由于本发明的验证方法并不仅限于用户登录时刻, 而是由服务器端动态发起,随机地在任意时刻进行验证,因为验证是随机的,可能在任意 的时刻发起,使得假冒客户端的难度大大增加,服务器端在任意一次验证中一旦验证失败, 随即断开与客户端的连接,停止服务,使假冒的客户端失效;即使中间人攻击即使能窃取 某一次的动态密码,但在随机发起的下一次的验证中,它由于无法获取后续的动态密码, 从而无法继续假冒客户,这使得它可以抵御中间人攻击。因此,本发明为系统提供了更高 的安全性。3、 同时,本发明的验证过程是自动完成的,不需要人工参与,对用户而言是透明的, 具有使用简便,客户接受程度高的优点,较好的解决了使用便利性与安全性的矛盾。
图1是本发明一个较佳实施例的结构示意图。
具体实施方式
本发明是通过使用与客户端连接的动态令牌单元利用共享密钥和使用动态验证算法对 服务器端产生的挑战码和客户端用户输入的身份信息进行合成处理,生产响应码,在客户 端与服务器端以挑战/响应认证方式对客户端身份进行动态验证。请参考图1所示。本实施例中,动态令牌单元130与客户端110连接,其是一个嵌入 式的防侵入设备,用于在客户端110与服务器端120以挑战/响应(Challenge/Response)认 证方式对客户端110的用户身份进行动态验证过程中,使用动态验证算法合成服务器端120 产生的挑战码(Challenge Code)和客户端110用户输入的身份信息,生产响应码(Response Code)并经客户端110反馈至服务器端120,从而实现对客户端110的用户身份的随时、随 机的动态-睑证。其中,所述动态令牌单元130包括连接客户端110的接口单元131,其可为USB接 口;用于存储经加密处理后的共享密钥的密钥存储单元132;用于提供动态验证算法的验证 算法单元133;具有防拷贝的安全控制单元134,控制运用逻辑无法对密钥存储单元132中 的共享密钥进行复制,该安全控制单元134用于利用共享密钥,使用动态验证算法对服务 器端120产生的挑战码和客户端110的用户输入的身份信息进行合成处理,生产反馈至服 务器端120的响应码。并且,所述动态令牌单元130具有一个唯一的机器号或序列号,其 与一个客户端的用户身^分信息(或用户账号)进行绑定。本实施例的工作过程如下1、 将动态令牌单元130通过接口单元131与客户端110连接。2、 用户打开客户端110的客户端软件,通过选择相应的驱动使得客户端110与动态令 牌单元130连接。3、 用户从客户端110输入身份信息或用户账号,使用客户端软件登录。4、 客户端110的客户端软件发出的登录请求转发至服务器端120。5、 服务器端120接收到带有用户身份信息的登录请求后,使用真随机数发生器产生一 个随机数作为挑战码,并将挑战码返回至客户端110 。6、 客户端110收到该挑战码后,转发给动态令牌单元130,动态令牌单元130利用密 钥存储单元132中的共享密钥,使用验证算法单元133产生一个动态验证算法对服务器端 120产生的挑战码和客户端110的用户输入的身份信息进行合成处理,生产响应码,并通过 客户端110将响应码反馈至服务器端120。7、 服务器端120将响应码与其自己的计算结果做比较,验证响应码的正确性,如果正 确,则认为用户的身分合法,客户端110的用户可以连接至服务器端120使用与用户身份 对应的特定业务功能。8、 在随后的直至客户端110的用户退出服务器端120的整个使用过程中,服务器端120 会动态随机的以挑战/响应认证方式挑战客户端110,如果任何一次的挑战/响应失败,则认 为客户端110的用户身份非法,服务器端120立即停止对客户端110的服务。以上过程是自动完成的,无须用户的参与,因此,整个验证过程相对用户来说是透明的。 另外,所述动态令牌单元130中的动态验证算法兼顾硬件速度和算法的安全性,采用 了 SHA1 - HMAC算法。它是一种基于SHA1算法的消息鉴别码算法。定义HMAC需要一 个加密用散列函数(表示为H)和一个密钥K。在SHA1-HMAC算法中,H是SHA1算法。 我们用B来表示数据块的字长,用L来表示散列函数的输出数据字长(比如,在SHA-1中, L=20)。鉴别密钥的长度可以是小于等于数据块字长的任何正整数值。应用程序中使用的密 钥长度若是比B大,则首先用使用散列函数H作用于它,然后用H输出的L长度字符串作 为在HMAC中实际使用的密钥。 一般情况下,推荐的最小密钥K长度是L个字长(与H 的输出数据长度相等)。我们将定义两个固定且不同的字符串ipad,opad 'o'标志内部与外部) ipad = the byte 0x36 repeated B timesopad = the byte 0x5C repeated B times, 计算'text'的HMAC:H( K XOR opad, H(K XOR ipad, text)) 即为以下步骤1、 在密钥K后面添加0来创建一个子长为B的字符串。(例如,如果K的字长是20 字节,B-60字节,则K后会加入44个零字节0x00)2、 将上一步生成的B字长的字符串与ipad做异或运算。3、 将数据流text填充至第二步的结果字符串中。4、 用H作用于第三步生成的数据流。5、 将第一步生成的B字长字符串与opad做异或运算。6、 再将第四步的结果填充进第五步的结果中。7、 用H作用于第六步生成的数据流,输出最终结果。并且,动态令牌单元130收到挑战码C后,与其序列号SE (其序列号SE与用户身份 信息绑定)连接起来,即C+SE,用做SHAl-HMAC的输入数据text。SHA1 - HMAC算法对硬件速度要求相对较低,同时它具有相当高的安全性,目前有 MD5碰撞成功的文献报道,但还未见有关于SHA1碰撞成功的报道。动态验证的时间选择有两种方案1、 将动态验证附加于每个交易包上。它使得发生一次数据通讯即进行一次验证。这种 方案具有最高的安全性,它确保了每一次的通讯都去判断客户端是否为假冒的。但是这种 方案的运算强度较大。2、 以服务器端120的随机时间选择算法T + cj为时间间隔发生动态验证。其中T是一 个人工调整因子,是人工指定的一个时间值。o是计算机随机选择的一个-T +T之间的时间 值。实施时可根据应用系统的重要性及安全级别来选择。因此,本发明的动态验证是以客户端110的动态令牌单元130为承载体,选定 SHAl-HMAC作为验证算法,给出了动态验证的时间选择方案,再加上服务器端120就构 成了一套完整的验证方法,可以对客户端110的用户身份进行有效的鉴伪,防止假冒客户 端110的用户身份而造成的损失。综上,本发明具有如下有益技术效果1 、本发明解决了目前C/S架构下对用户身份鉴别的安全缺陷,提出了在客户端和服务 器端的使用过程中随时发起的动态验证方法,避免了一次性登录中,用户身分极易伪造的缺陷。2、 由于本发明使用的动态验证使用的算法采用一次性动态密码算法,因为密码是动态 的,这使得它可以抵御重放攻击。并且,由于本发明的验证方法并不仅限于用户登录时刻, 而是由服务器端动态发起,随机地在任意时刻进行验证,因为验证是随机的,可能在任意 的时刻发起,使得假冒客户端的难度大大增加,服务器端在任意一次验证中一旦验证失败, 随即断开与客户端的连接,停止服务,使假冒的客户端失效;即使中间人攻击即使能窃取 某一次的动态密码,但在随机发起的下一次的验证中,它由于无法获取后续的动态密码, 从而无法继续假冒客户,这使得它可以抵御中间人攻击。因此,本发明为系统提供了更高 的安全性。3、 同时,本发明的验证过程是自动完成的,不需要人工参与,对用户而言是透明的, 具有使用简便,客户接受程度高的优点,较好的解决了使用便利性与安全性的矛盾。
权利要求
1、一种C/S架构下客户端身份的动态验证系统,其特征在于,包括客户端和用于对客户端作身份验证的服务器端;连接客户端的动态令牌单元,用于在客户端与服务器端以挑战/响应认证方式对客户端身份进行动态验证过程中,使用动态验证算法合成服务器端产生的挑战码和客户端用户输入的身份信息,生产反馈至服务器端的响应码;其中,所述动态令牌单元包括接口单元,用于连接客户端;密钥存储单元,用于存储经加密处理后的共享密钥;验证算法单元,用于提供动态验证算法;具有防拷贝的安全控制单元,用于利用共享密钥,使用动态验证算法对服务器端产生的挑战码和客户端用户输入的身份信息进行合成处理,生产反馈至服务器端的响应码。
2、 根据权利要求1所述的C/S架构下客户端身份的动态验证系统,其特征在于,所述 动态验证算法为SHA1-HMAC算法。
3、 根据权利要求1所述的C/S架构下客户端身份的动态验证系统,其特征在于,所述 客户端与所述服务器端之间以每进行一次数据通信就产生一次挑战/响应认证,或以所述服 务器端选择的一个随^L时间为间隔产生一次挑战/响应认证。
4、 根据权利要求1所述的C/S架构下客户端身份的动态验证系统,其特征在于,所述 接口单元为USB接口。
5、 一种C/S架构下客户端身份的动态验证装置,其特征在于,包括 接口单元,用于连接客户端;密钥存储单元,用于存储经加密处理后的共享密钥; 验证算法单元,用于提供动态验证算法;具有防拷贝的安全控制单元,用于利用共享密钥,使用动态验证算法对服务器端产生 的挑战码和客户端用户输入的身份信息进行合成处理,生产反馈至服务器端的响应码。
6、 根据权利要求5所述的C/S架构下客户端身份的动态验证装置,其特征在于,所述 动态验证算法为SHA1-HMAC算法。
7、 根据权利要求5所述的C/S架构下客户端身份的动态验证装置,其特征在于,所述 接口单元为USB接口。
8、 一种C/S架构下客户端身份的动态验证方法,其特征在于,包括与客户端连接的动态令牌单元利用共享密钥和使用动态验证算法对服务器端产生的挑 战码和客户端用户输入的身份信息进行合成处理,生产响应码,并通过客户端将响应码反馈至服务器端,在客户端与服务器端以挑战/响应认证方式对客户端身份进行动态验证。
9、 根据权利要求8所述的C/S架构下客户端身份的动态验证方法,其特征在于,所述 客户端与所迷服务器端之间以每进行一次数据通信就产生一次挑战/响应认证,或以所述服 务器端选择的一个随机时间为间隔产生一次挑战/响应认证。
10、 根据权利要求8所述的C/S架构下客户端身份的动态验证方法,其特征在于,所 述动态验证算法为SHA1-HMAC算法。
全文摘要
本发明公开一种C/S架构下客户端身份的动态验证系统、方法和装置,其中,该动态验证系统包括客户端和服务器端;连接客户端的动态令牌单元,该动态令牌单元包括接口单元,用于连接客户端;密钥存储单元,用于存储经加密处理后的共享密钥;验证算法单元,用于提供动态验证算法;具有防拷贝的安全控制单元,用于利用共享密钥,使用动态验证算法对服务器端产生的挑战码和客户端用户输入的身份信息进行合成处理,生产反馈至服务器端的响应码。本发明解决了目前C/S架构下对用户身份鉴别的安全缺陷,提出了在客户端和服务器端的使用过程中随时发起的动态验证方法,避免了一次性登录中,用户身份极易伪造的缺陷;且具有使用简便,客户接受程度高的优点。
文档编号H04L9/32GK101252437SQ20081006506
公开日2008年8月27日 申请日期2008年1月15日 优先权日2008年1月15日
发明者吴俊华, 崔若起, 张家浩, 李登辉, 穆敬东, 毅 米, 邱爱国, 黄海昌 申请人:深圳市九思泰达技术有限公司