基于动态口令和数字证书的双向身份认证方法

文档序号:7602424阅读:444来源:国知局
专利名称:基于动态口令和数字证书的双向身份认证方法
技术领域
本发明涉及计算机技术,特别涉及计算机系统网络安全的技术。
背景技术
随着计算机网络的发展和网络应用的迅速普及,网络安全日益受到人们的重视, 网络的安全访问控制越来越重要,网络系统遭受的攻击,大部分是入侵者获得已经存在的 通道或伪装身份与用户建立通讯通道的基础上,而身份认证是安全系统中的第一道关卡, 身份认证技术解决的是验证网络通讯双方真实身份的问题,目的是为了在通信双方之间建 立相互信任的关系,验证用户的真实身份,防止非法用户窃取敏感数据,通过对身份认证技 术的理论分析和系统设计等方面的研究,可以增强现有认证系统的安全性、可用性和易管 理性,提高系统的效率,为网络安全系统应用提供高效实用的解决方案;基于口令的认证机 制因其简单有效、易于使用,在分布式环境下被广泛应用于身份合法性验证,从而决定是否 提供资源的使用授权,但是用户在选择口令的时候,一般都是选择便于自己记忆的口令,这 样就很容易遭受字典攻击,为此许多研究人员从增加安全性和提高效率这两方面入手,提 出了一系列的协议,大致可以分为两类基于安全hash函数的认证协议以及基于公钥体制 的认证协议,前者由于具备开销小、效率高等特点,成为近年来研究的热点。对于计算机单 机的应用,用户资源使用访问控制可以实现安全保护,而对于集中分时系统的服务,通过基 于用户身份认证,如登录口令等实现资源的安全保护,而在计算机网络广泛应用的时代,更 常见的是客户机/服务器分布式应用模型,在这种模型中,要求每个客户机能保证对每个 用户身份的识别,每个客户机对服务器身份的识别以及服务器对每个客户机身份的识别。 目前在有些对安全性要求较高的系统中,单纯的基于口令的认证方式已无法满足当前复杂 网络环境下身份认证的需求,随着技术的发展,又涌现出数字证书、生物识别等新的身份认 证技术。目前,具有数字签名的数字证书技术是最成熟、最安全的身份认证解决办法。数字 证书具有的保密性、完整性、真实性和不可否认性等特点,使得数字证书身份认证正在被广 泛应用,但是,在单纯的基于数字证书的认证中,如果其中一方传递的证书链不是自己的, 另一方只对接收到的证书链进行有效期、完整性、签名等验证,往往也可以通过,因此,系统 资源授权就存在风险。

发明内容
本发明的目的是克服目前数字证书认证中系统资源授权存在风险的缺点,提供一 种基于动态口令和数字证书的双向身份认证方法。本发明解决其技术问题,采用的技术方案是,基于动态口令和数字证书的双向身 份认证方法,其特征在于,包括以下步骤a.客户端向服务器发出注册请求,用户在客户端输入用户的身份信息ID。和口令 Pff ;b.服务器接收到该注册请求,判断接收到的ID。是否已经注册过,若是则回到a步骤,并提示客户端重新输入,若不是则进入下一步;c.客户端产生随机数Rch1和Rtl,并进行如下计算X0^1 = H(IDc, PW 十 R0—!)X0 =H(IDc,PW 十 R0)Y0 = H(IDC,X0)C0=H(IDc,Yo Xo-i)得到数据IVCc^Xci ;d.客户端保存数据礼、C0,并将数据Xtl通过网络安全信道发送给服务器;e.服务器接收并保存数据Xtl,注册完成;f.在进行认证时,默认服务器和客户端都已经拥有了各自的证书链,若此次认证 为第i次认证,则客户端此时保存有数据Rh、C^1,服务器保存有数据Xp1 ;g.客户端输入ID和PW,产生随机数Ri,并进行如下计算Xh =H(IDcPX^Rh)X1 sHODcPW !^)Yi = H(IDc5Xi)C1=H(IDcYWXh)α = CC1+XH)十 X1P = Y^Xh得到数据氏、(;、α、β ;h.客户端将α、β及其证书链发送给服务器;i.服务器接收到α、β及客户端的证书链,判断该证书链中的客户端证书是否合 法有效,若不是则终止本次认证,并向客户端发出提示消息,若是则进入下一步;j.解析客户端证书,得到客户端证书中的客户端ID字段ID。,并进行如下计算β 十 Xh =Y1C1=H(IDc5YWXw)O^(CWXh) = X1Yi' = H(IDC, Xi)得到数据YpYiW;k.服务器比较Yi与V是否相等,若不是则说明本次申请认证的客户端不合法, 拒绝进一步通信,若是则进入下一步;1.服务器使用本次计算得到的数据Xi代替之前存储的数据Xp1,并进行如下计 算Vi = H(IDsIlIDcIlYi)得到数据Vi,并将数据Vi和服务器的证书链发送给客户端;m.客户端接收到数据Vi和服务器的证书链后,判断服务器的证书链中的服务器证 书是否合法有效,若不是则终止本次认证,若是则进入下一步;η.解析服务器证书,得到服务器ID字段IDs,并进行如下计算Vi' =H(IDsIlIDcJlYi)得到数据V,判断数据Vi与数据Vi ’是否相等,若不是则本次认证失败,若是则本次认证成功,客户端用本次产生的随机数Ri代替之前存储的Rh。具体的,步骤f所述各自的证书链为服务器拥有的服务器证书和上级CA (数字证 书认证中心)证书、客户端拥有的客户端证书和上级CA证书。本发明的有益效果是,通过上述基于动态口令和数字证书的双向身份认证方法, 由于认证双方的ID在认证阶段不加密传输,而是通过证书解析得到,因此在证书解析的过 程中,既可以通过证书验证双方身份的有效性和合法性,又可以利用解析得到的ID用于进 一步的身份验证,而且每次认证均产生新的随机数,保证了每次认证所传输口令的随机性 和唯一性,这种动态口令和数字证书相结合的双重认证的方式,实现了对通信双方的高安 全性认证,适用于目前对安全性要求较高的通信环境中,且运算简单,在认证阶段不需要选 用安全信道传输认证参数,降低了对认证信道的要求。
具体实施例方式下面结合实施例,详细描述本发明的技术方案。本发明所述基于动态口令和数字证书的双向身份认证方法为首先客户端向服务 器发出注册请求,用户在客户端输入用户的身份信息ID。和口令PW,当服务器接收到该注 册请求后,判断接收到的ID。是否已经注册过,若是则回到客户端向服务器发出注册请求 那一步,并提示客户端重新输入,若不是则客户端产生随机数RtH1和Rtl,并进行如下计算 X01=H(IDc,PW R01), X0=H(IDc,PW R0),Y0 = H(IDC, X0),C。=H(IDc, Y。十Χ。—),
得到数据礼、C0, X0,客户端保存数据&、C0,并将数据Xtl通过网络安全信道发送给服务 器,服务器接收并保存数据Xtl,注册完成,在进行认证时,默认服务器和客户端都已经 拥有了各自的证书链,若此次认证为第i次认证,则客户端此时保存有数据Rh、CV1, 服务器保存有数据Xh,首先客户端输入ID和PW,产生随机数Ri,并进行如下计算 X1 ^H(H)c,PW十R11), Χ^ΗΟ^,ΡλνΘΙ^,Ι = H(IDcJi), Ci=H(IDc^Xil),
α = ^1+ΧΗ) θ X1, β = ^ ^—,,得到数据&、(;、α、β,客户端将α、β及其证书链发送 给服务器,服务器接收到α、β及客户端的证书链,判断该证书链中的客户端证书是否合 法有效,若不是则终止本次认证,并向客户端发出提示消息,若是则解析客户端证书,得到 客户端证书中的客户端ID字段ID。,并进行如下计算ΑΦΧ,—, = Y1,C1 =HODyYi Θ Xh), α Θ (C1 Θ Xw) = X1,Yi ‘ = H (ID。,Xi),得到数据 Yi、Yi,、Xi,然后比较 Yi 与 Yi,是否相等,若 不是则说明本次申请认证的客户端不合法,拒绝进一步通信,若是则服务器使用本次计算 得到的数据Xi代替之前存储的数据Xh,并进行如下计算=Vi =HdDj IlDj IYi),得到数据 Vi,并将数据Vi和服务器的证书链发送给客户端,客户端接收到数据Vi和服务器的证书链 后,判断服务器的证书链中的服务器证书是否合法有效,若不是则终止本次认证,若是则解 析服务器证书,得到服务器ID字段IDs,并进行如下计算=Vi' =HdDj IlDc !Yi),得到数据 Vi',判断数据Vi与数据V是否相等,若不是则本次认证失败,若是则本次认证成功,客户 端用本次产生的随机数Ri代替之前存储的Rh。实施例本例中默认服务器和客户端都已经拥有了各自的证书链的意思为默认服务器拥 有服务器证书和上级CA证书,客户端拥有客户端证书和上级CA证书。首先客户端向服务器发出注册请求,用户在客户端输入用户的身份信息ID。和口令PW,当服务器接收到该注册请求后,判断接收到的ID。是否已经注册过,若是则回到客 户端向服务器发出注册请求那一步,并提示客户端重新输入,若不是则客户端产生随机数 Rch1 和 R。,并进行如下计算=xW =H(ID。,PW 十RQ—0,X。=H(ID。,PW 十R。),Y0 = H(IDC, X。),CQ =H(ro , Y。ΘΧ。—),得到数据R。、C0、X0,客户端保存数据R。、C0,并将数据X0通过网 络安全信道发送给服务器,服务器接收并保存数据Xtl,注册完成,在进行认证时,默认服务 器和客户端都已经拥有了各自的证书链,即默认服务器拥有服务器证书和上级CA证书,客 户端拥有客户端证书和上级CA证书,若此次认证为第i次认证,则客户端此时保存有数据 Rh、Ch,服务器保存有数据Xp1,首先客户端输入ID和PW,产生随机数Ri,并进行如下计 算Xh = H(IDc, PW Θ R11),X1 = H(IDc, PW 十 R1),Yi = H (IDc,Xi),C1 = H(IDc, Y1 Θ Xh),
α = CC1+XH) X1^ βζΧΦΧ^,得到数据&、(;、α、β,客户端将α、β及其证书链发送 给服务器,服务器接收到α、β及客户端的证书链,判断该证书链中的客户端证书是否合 法有效,若不是则终止本次认证,并向客户端发出提示消息,若是则解析客户端证书,得到 客户端证书中的客户端ID字段ID。,并进行如下计算ΑΦΧ,—, = Y1,C1 =HODyYi Θ Xh), α Θ (C1 Θ Xw ) = X1,Yi ‘ = H (ID。,Xi),得到数据 Yi、Yi,、Xi,然后比较 Yi 与 Yi,是否相等,若 不是则说明本次申请认证的客户端不合法,拒绝进一步通信,若是则服务器使用本次计算 得到的数据Xi代替之前存储的数据Xh,并进行如下计算=Vi =HdDj IlDj IYi),得到数据 Vi,并将数据Vi和服务器的证书链发送给客户端,客户端接收到数据Vi和服务器的证书链 后,判断服务器的证书链中的服务器证书是否合法有效,若不是则终止本次认证,若是则解 析服务器证书,得到服务器ID字段IDs,并进行如下计算=Vi' =HdDj IlDc !Yi),得到数据 Vi',判断数据Vi与数据V是否相等,若不是则本次认证失败,若是则本次认证成功,客户 端用本次产生的随机数Ri代替之前存储的Rh。由于认证双方的ID在认证阶段不加密传 输,而是通过证书解析得到,因此在证书解析的过程中,既可以通过证书验证双方身份的有 效性和合法性,又可以利用解析得到的ID用于进一步的身份验证,而且每次认证均产生新 的随机数,保证了每次认证所传输口令的随机性和唯一性,这种动态口令和数字证书相结 合的双重认证的方式,实现了对通信双方的高安全性认证,适用于目前对安全性要求较高 的通信环境中,且运算简单,在认证阶段不需要选用安全信道传输认证参数,降低了对认证 信道的要求。
权利要求
基于动态口令和数字证书的双向身份认证方法,其特征在于,包括以下步骤a.客户端向服务器发出注册请求,用户在客户端输入用户的身份信息IDc和口令PW;b.服务器接收到该注册请求,判断接收到的IDc是否已经注册过,若是则回到a步骤,并提示客户端重新输入,若不是则进入下一步;c.客户端产生随机数R0 1和R0,并进行如下计算 <mrow><msub> <mi>X</mi> <mrow><mn>0</mn><mo>-</mo><mn>1</mn> </mrow></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <mi>PW</mi> <mo>&CirclePlus;</mo> <msub><mi>R</mi><mrow> <mn>0</mn> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow> </mrow> <mrow><msub> <mi>X</mi> <mn>0</mn></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <mi>PW</mi> <mo>&CirclePlus;</mo> <msub><mi>R</mi><mn>0</mn> </msub> <mo>)</mo></mrow> </mrow>Y0=H(IDc,X0) <mrow><msub> <mi>C</mi> <mn>0</mn></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <msub><mi>Y</mi><mn>0</mn> </msub> <mo>&CirclePlus;</mo> <msub><mi>X</mi><mrow> <mn>0</mn> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow> </mrow>得到数据R0、C0、X0;d.客户端保存数据R0、C0,并将数据X0通过网络安全信道发送给服务器;e.服务器接收并保存数据X0,注册完成;f.在进行认证时,默认服务器和客户端都已经拥有了各自的证书链,若此次认证为第i次认证,则客户端此时保存有数据Ri 1、Ci 1,服务器保存有数据Xi 1;g.客户端输入ID和PW,产生随机数Ri,并进行如下计算 <mrow><msub> <mi>X</mi> <mrow><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <mi>PW</mi> <mo>&CirclePlus;</mo> <msub><mi>R</mi><mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow> </mrow> <mrow><msub> <mi>X</mi> <mi>i</mi></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <mi>PW</mi> <mo>&CirclePlus;</mo> <msub><mi>R</mi><mi>i</mi> </msub> <mo>)</mo></mrow> </mrow>Yi=H(IDc,Xi) <mrow><msub> <mi>C</mi> <mi>i</mi></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <msub><mi>Y</mi><mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub><mi>X</mi><mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow> </mrow> <mrow><mi>&alpha;</mi><mo>=</mo><mrow> <mo>(</mo> <msub><mi>C</mi><mi>i</mi> </msub> <mo>+</mo> <msub><mi>X</mi><mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow><mo>&CirclePlus;</mo><msub> <mi>X</mi> <mi>i</mi></msub> </mrow> <mrow><mi>&beta;</mi><mo>=</mo><msub> <mi>Y</mi> <mi>i</mi></msub><mo>&CirclePlus;</mo><msub> <mi>X</mi> <mrow><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></msub> </mrow>得到数据Ri、Ci、α、β;h.客户端将α、β及其证书链发送给服务器;i.服务器接收到α、β及客户端的证书链,判断该证书链中的客户端证书是否合法有效,若不是则终止本次认证,并向客户端发出提示消息,若是则进入下一步;j.解析客户端证书,得到客户端证书中的客户端ID字段IDc,并进行如下计算 <mrow><mi>&beta;</mi><mo>&CirclePlus;</mo><msub> <mi>X</mi> <mrow><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></msub><mo>=</mo><msub> <mi>Y</mi> <mi>i</mi></msub> </mrow> <mrow><msub> <mi>C</mi> <mi>i</mi></msub><mo>=</mo><mi>H</mi><mrow> <mo>(</mo> <msub><mi>ID</mi><mi>c</mi> </msub> <mo>,</mo> <msub><mi>Y</mi><mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub><mi>X</mi><mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow> </mrow> <mrow><mi>&alpha;</mi><mo>&CirclePlus;</mo><mrow> <mo>(</mo> <msub><mi>C</mi><mi>i</mi> </msub> <mo>&CirclePlus;</mo> <msub><mi>X</mi><mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn></mrow> </msub> <mo>)</mo></mrow><mo>=</mo><msub> <mi>X</mi> <mi>i</mi></msub> </mrow>Yi′=H(IDc,Xi)得到数据Yi、Yi’、Xi;k.服务器比较Yi与Yi’是否相等,若不是则说明本次申请认证的客户端不合法,拒绝进一步通信,若是则进入下一步;l.服务器使用本次计算得到的数据Xi代替之前存储的数据Xi 1,并进行如下计算Vi=H(IDs||IDc||Yi)得到数据Vi,并将数据Vi和服务器的证书链发送给客户端;m.客户端接收到数据Vi和服务器的证书链后,判断服务器的证书链中的服务器证书是否合法有效,若不是则终止本次认证,若是则进入下一步;n.解析服务器证书,得到服务器ID字段IDs,并进行如下计算Vi′=H(IDs||IDc||Yi)得到数据Vi’,判断数据Vi与数据Vi’是否相等,若不是则本次认证失败,若是则本次认证成功,客户端用本次产生的随机数Ri代替之前存储的Ri 1。
2.根据权利要求1所述基于动态口令和数字证书的双向身份认证方法,其特征在于, 步骤f所述各自的证书链为服务器拥有的服务器证书和上级CA证书、客户端拥有的客户端 证书和上级CA证书。
全文摘要
本发明涉及计算机网络安全技术。本发明解决了现有认证系统中系统资源授权存在风险的问题,提供了一种基于动态口令和数字证书的双向身份认证方法,其技术方案可概括为将用户的ID和服务器的ID均采用解析证书的方式才能得到,结合数字证书与动态口令的方式验证客户端和服务器。本发明的有益效果是,实现了对通信双方的高安全性认证,适用于网络安全通信。
文档编号H04L9/32GK101958913SQ20101052505
公开日2011年1月26日 申请日期2010年10月29日 优先权日2010年10月29日
发明者刘贤洪, 王艳艳 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1