认证方法和认证系统的制作方法

文档序号:7654263阅读:105来源:国知局
专利名称:认证方法和认证系统的制作方法
技术领域
本发明涉及利用对身份认证的技术领域,特别是一种对客户端进行身份认证的认证方法和认证系统。
背景技术
随着互联网技术的发展,人们可以利用互连网从事各种各样的操作,其中许多操作需要对用户进行身份认证。例如,当用户利用互联网上的银行网站对银行帐户进行操作时,银行网站需要对请求操作的用户进行身份认证,从而确保网上操作的安全性。
为了解决互联网上的身份认证问题,出现了一些USB密钥(USB-KEY)形式的客户端设备。这种USB-KEY设备采用USB接口与计算机相连接,并且通过互联网与服务器交互,从而完成用户身份的认证过程。
按照USB-KEY设备中保存的密钥与服务器上保存的密钥是否一致,可以将现有的USB-KEY认证技术分为两类。一类叫非对称式USB-KEY技术,此时USB-KEY设备中保存的密钥与服务器上保存的密钥不同,即USB-KEY设备中保存的是私钥(private_key),而服务器上保存的是公钥(public_key)。另一类叫对称式USB-KEY技术,此时USB-KEY设备中保存的密钥和服务器上保存的密钥一致。
下面首先参照图1描述非对称式USB-KEY技术中USB-KEY设备与服务器的认证交互流程。如图1所示,该流程包括以下步骤步骤101,USB-KEY设备通过互联网向服务器发起身份认证的请求。
步骤102,服务器收到请求后,向USB-KEY设备发送挑战(challenge)m。挑战m中可能包含时间、会话标识(SESSION-ID)和一些随机数。
步骤103,USB-KEY设备利用自身保存的private_key并采用非对称加密算法对挑战m加密,得到密文c。
如果以y=E(p1,x)表示加密函数,以x=D(p2,y)表示解密函数,其中p1、p2为密钥,则本步骤中的加密可以表示为c=E(private_key,m)。
步骤104,USB-KEY设备将密文c发送给服务器。
步骤105,服务器接收到密文c后,利用自身的public_key对c解密,得到解密后的明文m′=D(public_key,c)。
步骤106,服务器比较m与m′是否相同,如果两者相同,则表示认证成功,否则认证失败。
步骤107,服务器向USB-KEY设备返回认证成功或者失败的结果。
采用非对称式USB-KEY技术时,如果服务器上的数据库泄漏导致服务器保存的公钥泄漏,由于通过公钥无法算出私钥,因此他人也就无法复制出用户的私钥,从而在一定程度上保证了USB-KEY设备与服务器之间交互的安全。但是,另一方面,由于非对称加密技术所采用的公钥密码算法(RSA)、椭圆曲线加密(ECC)等非对称算法比较复杂,需要使用专用芯片才能及时完成运算,而专用芯片的价格比较昂贵,这导致了非对称式USB-KEY技术使用时的成本比较高,难于推广应用。
为了降低成本,业界提出了对称式USB-KEY技术。下面参照图2描述对称式USB-KEY技术中USB-KEY设备与服务器的认证交互流程。如图2所示,该流程包括以下步骤步骤201,USB-KEY设备通过互联网向服务器发起身份认证的请求。
步骤202,服务器收到请求后,向USB-KEY设备发送挑战m。挑战m中可能包含时间、SESSION-ID和一些随机数。
步骤203,USB-KEY设备利用自身保存的key,采用对称加密算法对挑战m加密,得到密文c,即c=E(key,m)。
步骤204,USB-KEY设备将密文c发送给服务器。
步骤205,服务器接收到密文c后,利用自身与USB-KEY设备相同的key对c解密,得到解密后的明文m′=D(key,c)。
步骤206,服务器比较m与m′是否相同,如果两者相同,则表示认证成功,否则认证失败。
步骤207,服务器向USB-KEY设备返回认证成功或者失败的结果。
与非对称式USB-KEY技术相比,对称式USB-KEY技术所采用的数字加密标准(DES)算法、微型加密算法(TEA)算法等对称加密算法复杂度较低,可以采用普通的运算器件来实现,从而降低了成本。但是,由于USB-KEY设备中保存的密钥与服务器上保存的密钥一样,一旦服务器上的密钥泄露,那么他人就可以利用该密钥冒充真正的用户进行网络操作,大大降低了安全性。

发明内容
有鉴于此,本发明提出了一种认证方法,用以在确保安全性的同时降低使用成本。本发明还提出了一种认证系统。
根据上述目的,本发明提供了一种认证方法,该方法包括服务器向客户端发送挑战;客户端利用散列函数从自身的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并将该密文发送给服务器;服务器利用自身的第二密钥解密所述密文得到解密的第一密钥和挑战,利用与客户端所述散列函数相同的散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与自身的第二密钥是否相同。
该方法进一步包括客户端利用一般变换函数从自身的初始密钥变换得到第一密钥的步骤。
服务器向客户端发送的挑战包括时间、和/或SESSION-ID、和/或随机数。所述客户端利用第二密钥加密第一密钥和挑战的步骤为利用第二密钥加密时间、SESSION-ID和随机数中的任意一个或它们的任意组合以及第一密钥。
所述散列函数为MD5或者SHA1。
该方法中所述加密和解密采用DES算法或者TEA。
本发明还提供了一种认证系统,该系统包括服务器和客户端,其中所述客户端用于在收到服务器的挑战之后,利用散列函数从自身的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并将该密文发送给服务器;所述服务器用于向客户端发送挑战,以及在收到客户端的密文之后,利用自身的第二密钥解密密文得到解密的第一密钥和挑战,利用与客户端所述散列函数相同的散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与自身的第二密钥是否相同。
所述客户端包括客户端存储单元、计算单元和客户端接口单元,其中所述客户端存储单元用于存储第一密钥、散列函数以及加密函数;所述计算单元用于在收到服务器的挑战之后,利用散列函数从所述客户端存储单元中的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并通过客户端接口单元将密文发送给服务器;所述接口单元用于接收所述挑战并提供给所述计算单元,以及向所述服务器发送所述密文。
另一方面,所述客户端包括客户端存储单元、计算单元和客户端接口单元,其中所述客户端存储单元用于存储初始密钥、一般变换函数、散列函数以及加密函数;所述计算单元用于在收到服务器的挑战之后,利用一般变换函数从客户端存储单元中的初始密钥转换得到第一密钥,利用散列函数从第一密钥变换得到第二密钥,利用第二密钥和加密函数加密第一密钥和挑战得到密文,并通过客户端接口单元将密文发送给服务器;所述客户端接口单元用于接收所述挑战并提供给所述计算单元,以及向服务器发送所述密文。
所述客户端为USB密钥设备。
所述服务器包括服务器存储单元、验证单元、服务器接口单元,其中所述服务器存储单元用于存储第二密钥、散列函数以及解密函数;所述验证单元用于通过服务器接口单元向客户端发送挑战,以及在接收到客户端的密文之后,利用服务器存储单元中的第二密钥解密密文得到解密的第一密钥和挑战,利用所述散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与服务器存储单元中的第二密钥是否相同;所述服务器接口单元用于向客户端发送所述挑战,以及接收所述密文并提供给所述验证单元。
从上述方案中可以看出,如果服务器保存的第二密码泄漏,他人得到了第二密码,但是仅凭第二密码而没有初始密码或第一密码还无法完成在客户端的加密,所以本发明实施例的方案可以做到即使服务器上的密钥泄露也不会发生安全问题,从而确保了安全性。另一方面,客户端要实现的算法为一般变换函数、散列函数以及对称加密函数。由于这几种算法都是很简单的,完全可以在客户端控制芯片自带的微型片内处理单元(MCU)中完成,不需要价格昂贵的专门芯片,所以本发明实施例的方案还大大降低了硬件成本。


图1为现有技术中非对称式USB-KEY技术中认证交互的流程示意图;图2为现有技术中对称式USB-KEY技术中认证交互的流程示意图;图3为本发明实施例中认证交互的流程示意图;图4为本发明实施例中认证系统的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
在本发明实施例中,对于密钥p0,采用一个一般变换函数y=F(x)对p0进行变换得到p1=F(x),然后再采用一个单相散列函数y=H(x)对p1进行变换得到p2=H(p1)。
其中,一般变换函数y=F(x)只需要保证对于一个x有且只有一个y与之对应,例如y=x、y=x3等。
单向散列函数y=H(x)的特点是,通过x可以得到y,但通过y却无法还原出x。例如,目前通用的报文摘要算法(MD5)、安全散列算法(SHA1)等。对于单相散列函数来说,由两个不同的x生成相同的y的情况叫做“碰撞”,由于实际应用中碰撞的概率非常小,可以忽略不计。因此,在实际应用中,可以简单地认为只要x不同,y也会不同。
在本发明实施例中,在客户端保存有密钥p0、一般变换函数、散列函数、对称加密函数等,在服务器保存有密钥p2、散列函数、对称解密函数等,客户端和服务器可以预先确定p0、一般变换函数、散列函数、p2、加密以及解密函数等。
图3是本发明实施例的流程示意图。参照图3,本发明实施例的流程包括以下步骤步骤301,客户端通过互联网向服务器发起身份认证的请求。
步骤302,服务器收到请求后,向客户端发送挑战m,并记录挑战m。挑战m中可能包含时间、SESSION-ID和一些随机数。
步骤303,客户端利用自身保存的p0利用一般函数y=F(x)变换得到p1=F(p0),再利用散列函数y=H(x)变换得到p2=H(p1)。
步骤304,客户端利用p2作为密钥采用对称加密算法加密m和p1,得到密文c=E(p2,(p1,m))。
步骤305,客户端将密文c发送给服务器。
步骤306,服务器接收到密文c后,利用自身保存的密钥p2采用对称解密算法对c解密,得到解密后的p1′和m ′,即(p1′,m′)=D(p2,c)。
步骤307,服务器比较m′和m是否相同,以及利用散列函数对p′进行计算得到p2′,即计算p2′=H(p1′),并比较p2′与p2是否相同。
如果m′和m相同并且p2′与p2相同,则认证成功,否则认证失败。
步骤308,服务器向客户端返回认证成功或者失败的结果。
进一步,在客户端也可以预先保存有p1,而不是保存p0并通过一般变换函数计算得到p1,那么在上述流程中就可以省略从p0到p1的变换,从而可以降低计算量。
根据本发明实施例的上述方案,如果服务器保存的p2泄漏,他人得到了p2,但是仅凭p2而没有p0、p1还是无法完成在客户端的加密,所以本发明实施例的方案可以做到即使服务器上的密钥泄露也不会发生安全问题,从而确保了安全性。
另一方面,客户端要实现的算法为变换函数F、散列函数H以及对称加密函数E。由于这几种算法都是很简单的,完全可以在USB控制芯片自带MCU中完成,不需要价格昂贵的专门芯片,所以本发明实施例的方案还大大降低了硬件成本。
图4是本发明实施例中认证系统的结构示意图。
如图4所示,本发明实施例的认证系统包括服务器和客户端。其中,客户端用于向服务器发起认证请求,然后在收到服务器的挑战m之后,利用单向散列函数y=H(x)从自身保存的p1变换得到p2,利用p2加密p1和挑战m得到密文c,并将密文c发送给服务器;服务器用于在收到认证请求后向客户端发送挑战m,以及在收到客户端的密文c之后,利用自身保存的p2解密密文c得到解密的p1′和挑战m′,利用散列函数从解密的p1′变换得到p2′,并比较解密的挑战m′与所发送的挑战m以及变换得到的p2′与自身的p2是否相同。
继续参考图4,客户端包括客户端存储单元、计算单元和客户端接口单元。其中,客户端存储单元用于存储p1、散列函数以及加密函数。计算单元用于在收到服务器的挑战m之后,利用散列函数从客户端存储单元中的p1变换得到p2,利用p2加密p1和挑战m得到密文c,并通过客户端接口单元将密文c发送给服务器。客户端接口单元用于接收挑战m并将该挑战m提供给计算单元,以及用于向服务器发送密文c。
另一方面,客户端存储单元用于存储p0、一般变换函数、散列函数以及加密函数。计算单元用于在收到服务器的挑战m之后,利用一般变换函数从客户端存储单元中的p0转换得到p1,利用散列函数从p1变换得到p2,利用p2和加密函数加密p1和挑战m得到密文c,并通过客户端接口单元将密文c发送给服务器。接口单元用于接收挑战m,并将该挑战m提供给计算单元,以及用于向服务器发送密文c。
上述的客户端为USB-KEY设备,也可以其它形式的设备,例如计算机、移动终端、蓝牙设备等等。
继续参照图4,服务器包括服务器存储单元、验证单元、服务器接口单元。其中,服务器存储单元用于存储p2、散列函数以及解密函数。验证单元用于通过服务器接口单元向客户端发送挑战m,以及在接收到客户端的密文c之后,利用服务器存储单元中的p2解密密文c得到解密的p1和挑战m,利用散列函数从解密的p1变换得到p2,并比较解密的挑战m与所发送的挑战m以及变换得到的p2与服务器存储单元中的p2是否相同;如果相同则说明认证通过,否则没有通过,验证单元还可以进一步通过服务器接口单元将认证结果发送给客户端。服务器接口单元用于接收接收来自客户端的密文,并将该密文提供给验证单元,以及用于向客户端发送挑战m。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种认证方法,其特征在于,该方法包括服务器向客户端发送挑战;客户端利用散列函数从自身的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并将该密文发送给服务器;服务器利用自身的第二密钥解密所述密文得到解密的第一密钥和挑战,利用与客户端所述散列函数相同的散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与自身的第二密钥是否相同。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括客户端利用一般变换函数从自身的初始密钥变换得到第一密钥的步骤。
3.根据权利要求1所述的方法,其特征在于,服务器向客户端发送的挑战包括时间、和/或会话标识SESSION-ID、和/或随机数;所述客户端利用第二密钥加密第一密钥和挑战的步骤为利用第二密钥加密时间、SESSION-ID和随机数中的任意一个或它们的任意组合以及第一密钥。
4.根据权利要求1所述的方法,其特征在于,所述散列函数为报文摘要算法MD5或者安全散列算法SHA1。
5.根据权利要求1所述的方法,其特征在于,该方法中所述加密和解密采用数字加密标准DES算法或者微型加密算法TEA。
6.一种认证系统,其特征在于,该系统包括服务器和客户端,其中所述客户端用于在收到服务器的挑战之后,利用散列函数从自身的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并将该密文发送给服务器;所述服务器用于向客户端发送挑战,以及在收到客户端的密文之后,利用自身的第二密钥解密密文得到解密的第一密钥和挑战,利用与客户端所述散列函数相同的散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与自身的第二密钥是否相同。
7.根据权利要求6所述的系统,其特征在于,所述客户端包括客户端存储单元、计算单元和客户端接口单元,其中所述客户端存储单元用于存储第一密钥、散列函数以及加密函数;所述计算单元用于在收到服务器的挑战之后,利用散列函数从所述客户端存储单元中的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并通过客户端接口单元将密文发送给服务器;所述客户端接口单元用于接收所述挑战并提供给所述计算单元,以及向所述服务器发送所述密文。
8.根据权利要求6所述的系统,其特征在于,所述客户端包括客户端存储单元、计算单元和客户端接口单元,其中所述客户端存储单元用于存储初始密钥、一般变换函数、散列函数以及加密函数;所述计算单元用于在收到服务器的挑战之后,利用一般变换函数从客户端存储单元中的初始密钥转换得到第一密钥,利用散列函数从第一密钥变换得到第二密钥,利用第二密钥和加密函数加密第一密钥和挑战得到密文,并通过客户端接口单元将密文发送给服务器;所述客户端接口单元用于接收所述挑战并提供给所述计算单元,以及向服务器发送所述密文。
9.根据权利要求7或8所述的系统,其特征在于,所述客户端为USB密钥设备。
10.根据权利要求6所述的系统,其特征在于,所述服务器包括服务器存储单元、验证单元、服务器接口单元,其中所述服务器存储单元用于存储第二密钥、散列函数以及解密函数;所述验证单元用于通过服务器接口单元向客户端发送挑战,以及在接收到客户端的密文之后,利用服务器存储单元中的第二密钥解密密文得到解密的第一密钥和挑战,利用所述散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与服务器存储单元中的第二密钥是否相同;所述服务器接口单元用于向客户端发送所述挑战,以及接收所述密文并提供给所述验证单元。
全文摘要
本发明公开了一种认证方法,该方法包括服务器向客户端发送挑战;客户端利用散列函数从自身的第一密钥变换得到第二密钥,利用第二密钥加密第一密钥和挑战得到密文,并将该密文发送给服务器;服务器利用自身的第二密钥解密密文得到解密的第一密钥和挑战,利用与客户端所述散列函数相同的散列函数从解密的第一密钥变换得到第二密钥,并比较解密的挑战与所发送的挑战以及变换得到的第二密钥与自身的第二密钥是否相同。本发明还提供了一种认证系统,该系统包括服务器和客户端。本发明可以做到即使服务器上的密钥泄露也不会发生安全问题,从而确保了安全性。本发明还大大降低了硬件成本。
文档编号H04L9/32GK101075874SQ200710109500
公开日2007年11月21日 申请日期2007年6月28日 优先权日2007年6月28日
发明者卢山 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1