避免服务器对客户端状态的存储转让专利

申请号 : CN200580001314.2

文献号 : CN101421970B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 大卫·A·麦格鲁

申请人 : 思科技术公司

摘要 :

公开了一种用于避免在服务器上存储客户端状态的方法。基于客户端不知道的本地密钥,服务器对客户端的状态信息进行加密。客户端的状态信息例如可以包括客户端的认证证书、客户端的授权特性和共享密钥,服务器可以用该共享密钥来加密和认证去往和来自客户端的通信。通过多种机制,经加密的客户端状态信息被提供给客户端。服务器可以释放曾存储客户端的状态信息的存储器。当服务器需要客户端的状态信息时,客户端向服务器发送客户端曾存储的经加密的状态信息。服务器利用本地密钥对客户端状态信息进行解密。因为每个客户端以加密的形式存储该客户端自己的状态信息,因此服务器不需要永久地存储任何客户端的状态信息。

权利要求 :

1.一种避免在服务器上存储客户端状态的方法,该方法包括以下步骤:基于客户端不知道的本地密钥,对客户端状态信息进行加密以产生经加密的信息,其中所述客户端状态信息包括只有所述客户端和所述服务器知道的私密密钥;

接收来自所述客户端的所述经加密的信息;

基于所述本地密钥,对从所述客户端接收到的所述经加密的信息进行解密,从而产生经解密的信息;以及利用所述经解密的信息中包括的所述私密密钥,通过对要发送到所述客户端的数据进行加密来与所述客户端安全地通信。

2.一种避免在服务器上存储客户端状态的方法,该方法包括以下步骤:基于第一客户端不知道的本地密钥,对第一客户端状态信息进行加密以产生第一经加密信息,其中所述第一客户端状态信息包括授权信息;

在第一时间从所述第一客户端接收所述第一经加密信息和第一请求;

基于所述本地密钥,对从所述第一客户端接收到的所述第一经加密信息进行解密,从而产生第一经解密信息;

基于所述第一经解密信息中包括的授权信息,确定所述第一请求是否被授权;以及仅在所述第一请求被授权的情况下才满足所述第一请求。

3.如权利要求2所述的方法,还包括以下步骤:在所述第一时间之前从存储器中删除所述第一客户端状态信息;以及在所述第一时间之前从存储器中删除所述第一经加密信息。

4.如权利要求2所述的方法,还包括以下步骤:基于所述本地密钥,对第二客户端状态信息进行加密以产生第二经加密信息,其中所述第二客户端状态信息包括与所述第一客户端状态信息中包括的授权信息不同的授权信息;

将所述第二经加密信息发送到所述第一客户端;

从所述第一客户端接收所述第二经加密信息和第二请求;

基于所述本地密钥,对从所述第一客户端接收到的所述第二经加密信息进行解密,从而产生第二经解密信息;

基于所述第二经解密信息中包括的授权信息,确定所述第二请求是否被授权;以及仅在所述第二请求被授权的情况下才满足所述第二请求。

5.如权利要求2所述的方法,还包括以下步骤:基于所述本地密钥,对第二客户端状态信息进行加密以产生第二经加密信息,其中所述第二客户端状态信息包括与所述第一客户端状态信息中包括的授权信息不同的授权信息;

将所述第二经加密信息发送到所述第一客户端;

在第二时间从所述第一客户端接收所述第一经加密信息、所述第二经加密信息和第二请求;

基于所述本地密钥,对从所述第一客户端接收到的所述第二经加密信息进行解密,从而产生第二经解密信息;

基于所述本地密钥,对在所述第二时间从所述第一客户端接收到的所述第一经加密信息进行解密,从而产生第三经解密信息;

基于所述第二经解密信息中包括的授权信息和所述第三经解密信息中包括的授权信息,确定所述第二请求是否被授权;以及仅在所述第二请求被授权的情况下才满足所述第二请求。

6.如权利要求2所述的方法,还包括以下步骤:在将所述第一经加密信息发送到所述第一客户端之前,基于所述本地密钥和所述第一客户端状态信息计算第一认证代码;以及将所述第一经加密信息和所述第一认证代码发送到所述第一客户端。

7.如权利要求6所述的方法,还包括以下步骤:在对从所述第一客户端接收到的所述第一经加密信息进行解密之后,基于所述本地密钥和所述第一经解密信息中包括的客户端状态信息计算第二认证代码;以及确定所述第二认证代码是否与所述第一经解密信息中包括的第一认证代码相匹配。

8.如权利要求7所述的方法,其中所述第一客户端状态信息包括唯一地标识所述第一客户端的值。

9.如权利要求2所述的方法,还包括以下步骤:在将所述第一经加密信息发送到所述第一客户端之前,对第一时间值以及所述第一客户端状态信息一起进行加密,以产生所述第一经加密信息。

10.如权利要求9所述的方法,还包括以下步骤:在对从所述第一客户端接收到的所述第一经加密信息进行解密之后,基于第二时间值和所述第一经解密信息中包括的第一时间值确定所述第一客户端状态信息是否期满。

11.如权利要求2所述的方法,还包括以下步骤:从多个密钥中选择所述本地密钥,其中所述多个密钥中的每个密钥与不同的索引值相关联;以及向所述第一客户端发送与所述本地密钥相关联的索引值。

12.如权利要求11所述的方法,还包括以下步骤:从所述第一客户端接收与所述本地密钥相关联的所述索引值;

其中对所述第一经加密信息进行解密的步骤包括以下步骤:基于与从所述第一客户端接收到的索引值相关联的所述本地密钥对所述第一经加密信息进行解密。

13.如权利要求2所述的方法,,还包括以下步骤:基于所述本地密钥,对第二客户端状态信息进行加密以产生第二经加密信息,其中所述第二客户端状态信息包括与所述第一客户端状态信息中包括的授权信息不同的授权信息,并且与所述第一客户端不同的第二客户端不知道所述本地密钥;

将所述第二经加密信息发送到所述第二客户端;

从所述第二客户端接收所述第二经加密信息和第二请求;

基于所述本地密钥,对从所述第二客户端接收到的所述第二经加密信息进行解密,从而产生第二经解密信息;

基于所述第二经解密信息中包括的授权信息,确定所述第二请求是否被授权;以及仅在所述第二请求被授权的情况下才满足所述第二请求。

14.一种避免在服务器上存储客户端状态的方法,该方法包括以下步骤:从客户端不知道的多个密钥中选择本地密钥,其中所述多个密钥中的每个密钥与不同的索引值相关联;

基于客户端状态信息和本地密钥计算第一认证代码,其中所述客户端状态信息包括授权信息和唯一地标识所述客户端的值;

基于所述本地密钥对所述第一认证代码、所述客户端状态信息和第一时间值进行加密,从而产生经加密的信息;

向所述客户端发送所述经加密的信息和与所述本地密钥相关联的特定索引值;

接收所述经加密的信息、所述特定索引值和请求;

基于与所述特定索引值相关联的特定密钥,对接收到的经加密的信息进行解密,从而产生经解密的信息;

基于所述特定密钥和所述经解密的信息中包括的客户端状态信息计算第二认证代码;

确定所述第二认证代码是否与所述经解密的信息中包括的第一认证代码相匹配;

基于当前时间值和所述经解密的信息中包括的时间值确定所述客户端状态信息是否期满;

基于所述经解密的信息中包括的授权信息确定所述请求是否被授权;以及仅在所述请求被授权、所述第二认证代码与所述经解密的信息中包括的第一认证代码相匹配并且所述经解密的信息中包括的所述客户端状态信息尚未期满的情况下,才满足所述请求。

15.一种将客户端状态存储在客户端上的方法,该方法包括以下步骤:存储通过基于通用密钥对客户端状态信息进行加密而生成的经加密的客户端状态信息;

存储由第一服务器通过基于与所述第一服务器相关联的第一本地密钥对所述通用密钥进行加密而生成的第一经加密密钥信息;

确立所述第一服务器和所述第一经加密密钥信息之间的关联;

存储由第二服务器通过基于与所述第二服务器相关联的第二本地密钥对所述通用密钥进行加密而生成的第二经加密密钥信息,其中所述第二本地密钥不同于所述第一本地密钥,并且所述第二服务器不同于所述第一服务器;

确立所述第二服务器和所述第二经加密密钥信息之间的关联;

向所述第一服务器发送所述经加密的客户端状态信息和与所述第一服务器相关联的第一经加密密钥信息;以及向所述第二服务器发送所述经加密的客户端状态信息和与所述第二服务器相关联的第二经加密密钥信息;

其中所述第二服务器不知道所述第一本地密钥;并且其中所述第一服务器不知道所述第二本地密钥。

16.一种用于避免在服务器上存储客户端状态的设备,包括:用于基于第一客户端不知道的本地密钥对第一客户端状态信息进行加密以产生第一经加密信息的装置,其中所述第一客户端状态信息包括授权信息;

用于在第一时间从所述第一客户端接收所述第一经加密信息和第一请求的装置;

用于基于所述本地密钥对从所述第一客户端接收到的所述第一经加密信息进行解密从而产生第一经解密信息的装置;

用于基于所述第一经解密信息中包括的授权信息确定所述第一请求是否被授权的装置;以及用于仅在所述第一请求被授权的情况下才满足所述第一请求的装置。

17.如权利要求16所述的设备,还包括:

用于在所述第一时间之前从存储器中删除所述第一客户端状态信息的装置;以及用于在所述第一时间之前从存储器中删除所述第一经加密信息的装置。

18.如权利要求16所述的设备,还包括:

用于基于所述本地密钥对第二客户端状态信息进行加密以产生第二经加密信息的装置,其中所述第二客户端状态信息包括与所述第一客户端状态信息中包括的授权信息不同的授权信息;

用于将所述第二经加密信息发送到所述第一客户端的装置;

用于从所述第一客户端接收所述第二经加密信息和第二请求的装置;

用于基于所述本地密钥对从所述第一客户端接收到的所述第二经加密信息进行解密从而产生第二经解密信息的装置;

用于基于所述第二经解密信息中包括的授权信息来确定所述第二请求是否被授权的装置;以及用于仅在所述第二请求被授权的情况下才满足所述第二请求的装置。

19.如权利要求16所述的设备,还包括:

用于基于所述本地密钥对第二客户端状态信息进行加密以产生第二经加密信息的装置,其中所述第二客户端状态信息包括与所述第一客户端状态信息中包括的授权信息不同的授权信息;

用于将所述第二经加密信息发送到所述第一客户端的装置;

用于在第二时间从所述第一客户端接收所述第一经加密信息、所述第二经加密信息和第二请求的装置;

用于基于所述本地密钥对从所述第一客户端接收到的所述第二经加密信息进行解密从而产生第二经解密信息的装置;

用于基于所述本地密钥对在所述第二时间从所述第一客户端接收到的所述第一经加密信息进行解密从而产生第三经解密信息的装置;

用于基于所述第二经解密信息中包括的授权信息和所述第三经解密信息中包括的授权信息来确定所述第二请求是否被授权的装置;以及用于仅在所述第二请求被授权的情况下才满足所述第二请求的装置。

20.如权利要求16所述的设备,还包括:

用于在将所述第一经加密信息发送到所述第一客户端之前、基于所述本地密钥和所述第一客户端状态信息计算第一认证代码的装置;以及用于将所述第一经加密信息和所述第一认证代码发送到所述第一客户端的装置。

21.如权利要求20所述的设备,还包括:

用于在对从所述第一客户端接收到的所述第一经加密信息进行解密之后、基于所述本地密钥和所述第一经解密信息中包括的第一客户端状态信息计算第二认证代码的装置;以及用于确定所述第二认证代码是否与所述第一经解密信息中包括的第一认证代码相匹配的装置。

22.如权利要求21所述的设备,其中所述第一客户端状态信息包括唯一地标识所述第一客户端的值。

23.如权利要求16所述的设备,还包括:

用于在将所述第一经加密信息发送到所述第一客户端之前、对第一时间值以及所述第一客户端状态信息一起进行加密以产生所述第一经加密信息的装置。

24.如权利要求23所述的设备,还包括:

用于在对从所述第一客户端接收到的所述第一经加密信息进行解密之后、基于第二时间值和所述第一经解密信息中包括的第一时间值确定所述第一客户端状态信息是否期满的装置。

25.如权利要求16所述的设备,还包括:

用于从多个密钥中选择所述本地密钥的装置,其中所述多个密钥中的每个密钥与不同的索引值相关联;以及用于向所述第一客户端发送与所述本地密钥相关联的索引值的装置。

26.如权利要求25所述的设备,还包括:

用于从所述第一客户端接收与所述本地密钥相关联的所述索引值的装置;

其中用于对所述第一经加密信息进行解密的装置包括:用于基于与从所述第一客户端接收到的索引值相关联的所述本地密钥对所述第一经加密信息进行解密的装置。

27.如权利要求16所述的设备,还包括:

用于基于所述本地密钥对第二客户端状态信息进行加密以产生第二经加密信息的装置,其中所述第二客户端状态信息包括与所述第一客户端状态信息中包括的授权信息不同的授权信息,并且与所述第一客户端不同的第二客户端不知道所述本地密钥;

用于将所述第二经加密信息发送到所述第二客户端的装置;

用于从所述第二客户端接收所述第二经加密信息和第二请求的装置;

用于基于所述本地密钥对从所述第二客户端接收到的所述第二经加密信息进行解密从而产生第二经解密信息的装置;

用于基于所述第二经解密信息中包括的授权信息来确定所述第二请求是否被授权的装置;以及用于仅在所述第二请求被授权的情况下才满足所述第二请求的装置。

说明书 :

避免服务器对客户端状态的存储

技术领域

[0001] 本发明一般地涉及计算机网络的认证、授权和安全性机制。更具体而言,本发明涉及用于避免在服务器上存储客户端状态的方法和装置。

背景技术

[0002] 本部分中描述的方法可以被实行,但却不一定是先前构想或实行过的方法。因此,除非这里另有指示,否则本部分中的方法并不是本申请的权利要求的现有技术,并且并不因为被包括在本部分中就被承认是现有技术。
[0003] 为了保持私有计算机网络的安全性,客户端计算机(“客户端”)可能需要通过充当到网络的接入点的服务器计算机(“服务器”)来访问网络。在允许客户端访问网络之前,服务器可能要求客户端向服务器提供认证证书,以便服务器可以确信客户端确实是客户端声称它是的那个实体。客户端的认证证书指示客户端的身份。如果客户端的认证证书不与存储在服务器上的认证证书相匹配,则服务器拒绝客户端访问网络。即使在客户端成功认证自身之后,服务器也可以基于与存储在服务器上的客户端相关联的授权特性来限制客户端对网络资源的访问和/或客户端可以对网络资源执行的操作。
[0004] 未经授权的计算机尝试窃听在经授权的客户端和服务器之间传输的信息并非罕见情况。为了防止未经授权的计算机利用未经授权的计算机不应当接收到的信息,客户端和服务器可以采用加密机制来保护将在客户端和服务器之间传输的信息。根据一种加密机制,客户端和服务器都从只有客户端和服务器拥有的共享密钥得出一个或多个会话密钥。在向彼此发送消息之前,客户端和服务器利用会话密钥对消息加密。利用会话密钥,客户端和服务器可以对从彼此接收到的经加密的消息进行解密。没有共享密钥的计算机无法得出会话密钥,因而无法对在客户端和服务器之间传输的经加密的消息进行解密。
[0005] 多个客户端可以通过同一个服务器访问私有网络。为了防止一个客户端伪装成另一个客户端,不同的客户端一般与不同的认证证书相关联。不同的客户端可以与不同的授权特性相关联。为了防止一个客户端利用仅打算用于另一客户端的信息,不同的客户端一般被提供以不同的共享密钥。客户端的认证证书、授权特性和共享密钥被统称为该客户端的状态信息。
[0006] 根据一种方法,服务器为每个客户端存储单独的客户端状态信息。在存在许多客户端的情况下,为每个客户端存储单独的客户端状态信息会使用大量存储器。服务器的花费与服务器存储客户端状态信息所需的存储器的量成比例。
[0007] 许多现有的网络设备不包含足以存储大量客户端的客户端状态信息的存储器。例如,当大量客户端将会访问网络时,某些网络路由器可获得的相对少量的存储器妨碍了这些网络路由器执行上述服务器功能。许多网络路由器不具有足够的存储器来同时存储许多不同的认证证书、授权特性和共享密钥。此外,许多设备使用诸如闪存这样的非易失性存储器系统,这些系统的使用是有局限性的。闪存能被写的次数是固定的,并且每次写操作可能会花费大量时间。由于这些局限性,闪存系统不适合于存储诸如客户端状态信息这样的动态数据。
[0008] 在当今的越来越无线的世界中,存储器局限性并不是与客户端状态信息的存储有关的唯一问题。无线客户端可能从一个位置漫游到另一个位置。在无线客户端离开一个位置并进入另一个位置时,无线客户端可能尝试通过不同的服务器访问相同的私有网络。如果客户端通过其尝试访问的服务器没有客户端的状态信息,则服务器将不能对去往客户端的消息进行加密,也不能对来自客户端的消息进行解密。
[0009] 解决上述问题的一种可能的方法是以这样一种方式来管理一组服务器,该方式使得存储在一个服务器上的客户端状态信息被复制在域中的每个服务器上。但是,在存在许多客户端和许多服务器的情况下,在每个服务器上复制所有客户端状态信息是令人生畏的工作,尤其是在新的客户端不断被添加到客户端池的情况下更是如此。如果域中的每个服务器都需要被配备以很大量的存储器来存储所有客户端的所有客户端状态信息,则管理域的花费将会是无法承受的。实际上,如果客户端的数目以充分快的速度增长,则管理员将会发现不可能跟得上增长。

附图说明

[0010] 在附图中以示例方式而非限制方式示出了本发明,附图中类似的标号是指类似的元件,其中:
[0011] 图1是示出其中客户端状态信息主要存储在客户端上而不是服务器上的系统的概况的框图;
[0012] 图2是示出用于避免在服务器上存储客户端状态信息的方法的一个实施例的高级别概况的流程图;
[0013] 图3A和3B是示出用于避免在服务器上存储客户端授权特性的方法的一个实施例的流程图;
[0014] 图4A和4B是示出用于替换存储在客户端上的经加密的客户端状态信息的方法的一个实施例的流程图;
[0015] 图5A和5B是示出用于修改存储在客户端上的经加密的客户端状态信息的方法的一个实施例的流程图;
[0016] 图6是示出用于消除对相同客户端状态信息的冗余存储的方法的一个实施例的流程图;
[0017] 图7A和7B是示出用于避免在服务器上存储共享密钥的方法的一个实施例的流程图;以及
[0018] 图8是可在其上实现实施例的计算机系统的框图。

具体实施方式

[0019] 描述了一种用于避免在服务器上存储客户端状态的方法和装置。在以下描述中,出于说明目的,阐述了许多具体细节,以提供对本发明的详尽理解。但是,对于本领域的技术人员来说显而易见的是,本发明可以在没有这些具体细节的情况下实现。在其他情况下,以框图形式示出公知的结构和设备,以避免不必要地模糊本发明。
[0020] 在这里根据以下大纲描述实施例:
[0021] 1.0一般概况
[0022] 2.0结构和功能概况
[0023] 3.0实现方式示例
[0024] 3.1避免在服务器上存储授权特性
[0025] 3.2更新存储在客户端上的经加密的客户端状态信息
[0026] 3.3消除对相同客户端状态信息的冗余存储
[0027] 3.4避免在中间设备上存储会话状态信息
[0028] 3.5避免在服务器上存储共享密钥
[0029] 4.0实现机构-硬件概况
[0030] 5.0扩展和备选方案
[0031] ***
[0032] 1.0一般概况
[0033] 在本发明中实现了前述背景技术中给出的需求以及将从以下描述中显现出来的其他需求和目的,本发明在一个方面中包括用于避免在服务器上存储客户端服务器的方法。基于客户端不知道的本地密钥,服务器对客户端的状态信息进行加密。客户端的状态信息例如可以包括客户端的认证证书、客户端的授权特性和客户端用来得出会话密钥的共享密钥。
[0034] 通过多种机制,经加密的客户端状态信息被提供给客户端。例如,服务器可以经由网络将经加密的状态信息发送到客户端。由于客户端没有本地密钥,因此客户端无法对经加密的状态信息进行解密。因此,经加密的信息对于客户端来说是“不透明”的。
[0035] 客户端存储客户端的经加密的状态信息。在客户端存储了经加密的客户端状态信息之后,服务器不再需要存储客户端的状态信息。因此,服务器可以释放曾存储客户端的状态信息的存储器。服务器可将该存储器用于其他用途。
[0036] 当服务器需要客户端的状态信息时,例如用来得出会话密钥或者用来确定客户端的授权特性时,服务器可以向客户端请求客户端的经加密的状态信息。响应于服务器的请求,客户端可以向服务器发送客户端以前存储的经加密的状态信息。或者,即使没有来自服务器的请求,客户端也可以在客户端发起与服务器的通信时将客户端的经加密的状态信息发送到服务器。
[0037] 在接收到来自客户端的经加密的客户端状态信息之后,服务器利用本地密钥对客户端状态信息进行解密,并且利用在不透明数据中提供的消息认证代码来验证消息的真实性。在服务器对客户端状态信息进行解密之后,服务器可以将客户端状态信息用于服务器通常将客户端状态信息用于的任何用途。当服务器完成使用客户端状态信息之后,服务器可以再次释放曾存储客户端状态信息的存储器。因为每个客户端以加密的形式存储该客户端自己的状态信息,因此服务器不需要永久地存储任何客户端的状态信息。
[0038] 在其他方面中,本发明包括被配置成执行前述步骤的计算机装置和计算机可读介质。
[0039] 2.0结构和功能概况
[0040] 图1是示出其中客户端状态信息主要存储在客户端上而不是服务器上的系统100的概况的框图。系统100包括私有网络102、服务器104A-N、服务器106A-N、公共网络108、客户端110A-N和客户端112A-N。私有网络102可以是诸如局域网(LAN)或广域网(WAN)这样的计算机网络。从私有网络102外部对私有网络102的访问只能通过服务器104A-N和服务器106A-N来实现。
[0041] 服务器104A-N和服务器106A-N可以是诸如网络路由器、网络交换机或网桥这样的网络元件。服务器104A-N可通信地耦合到私有网络102。服务器104A-N还可以可通信地耦合到公共网络108。公共网络108可以是诸如LAN或WAN这样的计算机网络。公共网络108可以包括因特网。公共网络108可以是不被服务器104A-N或客户端110A-N信任的网络。或者,服务器104A-N中的一个或多个可以直接耦合到客户端110A-N中的一个或多个。
[0042] 服务器106A-N可通信地耦合到私有网络102。服务器106A-N可以通过无线介质与客户端112A-N通信。类似地,客户端112A-N可以通过无线介质与服务器106A-N通信。
[0043] 客户端110A-N和客户端112A-N可以是个人计算机或无盘的工作站。客户端110A-N和客户端112A-N可以是诸如笔记本计算机这样的移动设备。客户端110A-N可以可通信地耦合到公共网络108。或者,客户端110A-N中的一个或多个可以直接耦合到服务器
104A-N中的一个或多个。
[0044] 客户端110A-N和客户端112A-N中的每一个对应于不同的客户端状态信息。客户端的状态信息例如可以包括客户端的认证证书、客户端的授权特性和客户端用来得出会话密钥的共享密钥。客户端的认证证书可以指示客户端的唯一身份。客户端的认证证书可以包括用户名和口令。客户端的授权特性可以指示允许客户端访问的私有网络102内的资源。客户端的授权特性可以指示允许客户端对私有网络102内的资源执行的操作。
[0045] 服务器104A-N和服务器106A-N各自存储客户端110A-N和客户端112A-N中的任何一个都不知道的本地密钥。在一个实施例中,每个服务器的本地密钥不同于每个其他服务器的本地密钥。在另一个实施例中,每个服务器的本地密钥是相同的。利用其本地密钥,服务器104A-N和服务器106A-N对与客户端110A-N和客户端112A-N相对应的客户端状态信息进行加密。通过多种机制中的任何一种,每个客户端的经加密的客户端状态信息被提供到客户端。
[0046] 客户端110A-N和客户端112A-N中的每一个存储该客户端的经加密的状态信息。在一个实施例中,客户端110A-N和客户端112A-N确立经加密的客户端状态信息和对该客户端状态信息进行加密的服务器之间的关联。例如,服务器104A和服务器104B都可以对客户端110A的客户端状态信息进行加密。客户端110A可以单独存储由服务器104A加密的经加密的客户端状态信息和由服务器104B加密的经加密的客户端状态信息。客户端110A可以单独确立服务器104A和由服务器104A加密的经加密的状态信息之间的关联以及服务器104B和由服务器104B加密的经加密的状态信息之间的关联。
[0047] 由于客户端110A-N和客户端112A-N存储经加密的客户端状态信息,因此服务器104A-N和服务器106A-N不需要永久地存储客户端状态信息。服务器104A-N和服务器106A-N可以释放曾存储客户端状态信息的存储器以用于其他用途。
[0048] 当服务器104A-N或服务器106A-N中的任何一个需要客户端110A-N或客户端112A-N中的任何一个的客户端状态信息时,服务器可以向该客户端请求该客户端的经加密的状态信息。当客户端110A-N或客户端112A-N中的任何一个接收到这种请求时,客户端可以向服务器发送与该服务器相关联的经加密的状态信息。或者,即使没有来自服务器的请求,客户端110A-N或客户端112A-N中的任何一个也可以在该客户端发起与服务器的通信时将客户端的经加密的状态信息发送到服务器。
[0049] 当服务器104A-N或服务器106A-N中的任何一个接收到来自客户端的经加密的客户端状态信息时,服务器利用服务器的本地密钥对客户端状态信息进行解密。在服务器对客户端状态信息进行密钥之后,服务器可以将客户端状态信息用于服务器通常将客户端状态信息用于的任何用途。当服务器完成使用客户端状态信息之后,服务器可以释放曾存储客户端状态信息的存储器。从而,利用相对少量的存储器,即使在存在许多不同客户端时,服务器104A-N和服务器106A-N也可以执行认证和授权功能。
[0050] 图2是示出用于避免在服务器上存储客户端状态信息的方法的一个实施例的高级别概况的流程图200。在块202中,服务器利用服务器的本地密钥对客户端的状态信息进行加密。客户端不能访问服务器的本地密钥。例如,服务器104A可以利用服务器104A的本地密钥对客户端110A的客户端状态信息进行加密。此外,服务器104A可以利用服务器104A的本地密钥对客户端110B的客户端状态信息进行加密。
[0051] 客户端110A和110B的经加密的客户端状态信息可以分别被提供给客户端110A和110B。一旦接收到经加密的客户端状态信息,客户端110A和110B就可以存储经加密的客户端状态信息。
[0052] 在块204中,服务器从客户端接收到客户端的经加密的状态信息。继续该示例,服务器104A可以从客户端110A接收到客户端110A的经加密的客户端状态信息。此外,服务器104A可以从客户端110B接收到客户端110B的经加密的客户端状态信息。
[0053] 在块206中,服务器利用服务器的本地密钥对客户端的经加密的状态信息进行解密。继续该示例,利用服务器104A的本地密钥,服务器104A可以对从客户端110A接收到的经加密的客户端状态信息进行解密。此外,利用服务器104A的本地密钥,服务器104A可以对从客户端110B接收到的经加密的客户端状态信息进行解密。服务器104A使用客户端110A和110B的经解密的客户端状态信息的方式可以与在服务器104A在本地连续存储客户端状态信息的情况下服务器104A使用客户端状态信息的方式相同。但是,服务器104A不需要连续地存储任何客户端状态信息。
[0054] 以下描述前述一般方法的详细示例性实现方式。
[0055] 3.0实现方式示例
[0056] 3.1避免在服务器上存储授权特性
[0057] 根据一个实施例,一旦客户端110A-N或客户端112A-N中的任何一个向服务器104A-N或服务器106A-N中的任何一个发送请求,客户端就将客户端的经加密的状态信息连同该请求一起发送到服务器。服务器可以从客户端的经加密的状态信息中包括的授权特性确定客户端的请求是应当被满足还是被拒绝。客户端110A-N和客户端112A-N中的每一个可以与不同的授权特性相关联。
[0058] 图3A和3B是示出用于避免在服务器上存储客户端授权特性的方法的一个实施例的流程图300。在一个实施例中,服务器104A-N和服务器106A-N中的每一个存储不同的本地密钥集合。服务器可以利用该服务器的本地密钥集合中的任何本地密钥对客户端状态信息进行加密。通过在不同时间使用不同本地密钥,提高了安全性。每个本地密钥与不同的索引值相关联,该索引值被称为安全性参数索引(SPI)。虽然下文所描述的技术为了说明简单起见谈到了单个客户端,但是下文所描述的技术也可以应用到多个客户端,其中每个客户端具有不同的客户端状态信息。
[0059] 在块302中,服务器从该服务器的本地密钥集合中选择特定本地密钥。例如,该服务器可以是服务器104A-N或服务器106A-N中的任何一个。
[0060] 在块304中,服务器基于客户端的状态信息和特定的本地密钥计算认证代码。客户端的状态信息包括客户端的授权特性。客户端的状态信息还指示客户端的唯一身份。认证代码是客户端的状态信息和特定本地密钥的组合的函数。该函数可以被实现成使得没有两个不同的组合会导致函数产生相同的认证代码。
[0061] 在块306中,利用特定本地密钥,服务器对认证代码、客户端的状态信息和时间值进行加密。时间值指示一个未来的时间,在该时间服务器应当将客户端的状态信息视为期满。时间值例如可以通过向服务器时钟的当前值添加恒定值来计算。服务器的时钟不需要被设置到正确的时间值,也不需要与任何其他特定时钟同步,这是因为客户端的状态信息中的时间值是由服务器设置的,并且在一个实施例中是仅由服务器检查的。加密的结果在这里被称为经加密的信息。
[0062] 在块308中,服务器向客户端发送经加密的信息和与特定本地密钥相关联的SPI。例如,客户端可以是客户端110A-N或客户端112A-N之一。客户端存储经加密的信息和SPI,并且确立服务器和经加密的信息之间的关联以及经加密的信息和SPI之间的关联。在客户端存储此信息之后,服务器可以释放服务器的曾以明码形式和加密形式存储客户端的状态信息的存储器。
[0063] 然后,当客户端向服务器发送请求时,客户端还发送与该服务器相关联的经加密的信息和与经加密的信息相关联的SPI。在块310中,服务器从客户端接收到经加密的信息、SPI和请求。
[0064] 在块312中,利用与SPI相关联的本地密钥,服务器对从客户端接收到的经加密的信息进行解密。解密的结果在这里被称为经解密的信息。
[0065] 经解密的信息至少包含认证代码、客户端状态信息和时间值。在块314中,服务器利用与服务器在块304中使用的函数相同的函数来计算新的认证代码。新的认证代码是特定本地密钥和经解密的信息中包含的客户端状态信息的组合的函数。
[0066] 在块316中,服务器确定新的认证代码是否与经解密的信息中包含的认证代码相匹配。如果认证代码匹配,则控制传递到块318。如果认证代码不匹配,则控制传递到块324。这样一来,服务器认证了经解密的信息中包含的信息。
[0067] 在块318中,通过比较当前时间值和经解密的信息中包含的时间值,服务器确定经解密的信息中包含的客户端状态信息是否已经期满。如果当前时间值小于经解密的信息中包含的时间值,则控制传递到块320。如果当前时间值不小于经解密的信息中包含的时间值,则控制传递到块324。
[0068] 在块320中,服务器基于经解密的信息中包含的授权特性来确定块310中接收到的请求是否被授权。如果请求被授权,则控制传递到块322。如果请求不被授权,则控制传递到块324。
[0069] 在块322中,服务器满足该请求。
[0070] 或者,在块324中,服务器拒绝该请求。
[0071] 在服务器满足或拒绝请求之后,服务器可以释放服务器的曾以明码形式和加密形式存储客户端的状态信息的存储器。从而,服务器可以避免以超出仅仅暂时性的、非连续的方式存储包括授权特性在内的客户端状态信息。
[0072] 虽然,上述技术为说明简单起见谈到了单个客户端,但是,服务器可以根据上述技术对多个客户端中的每一个的单独的客户端状态信息进行加密,并且可以从这些客户端中的每一个接收单独的经加密的状态信息。例如,服务器104A可以对客户端110A的客户端状态信息进行加密,并将该经加密的信息发送到客户端110A,并且服务器104A可以对客户端110B的客户端状态信息进行加密,并将该经加密的信息发送到客户端110B。服务器104A可以从客户端110A接收发送到客户端110A的经加密的信息,并在与客户端110A通信时使用其中包含的客户端状态信息。类似地,服务器104A可以从客户端110B接收发送到客户端110B的经加密的信息,并在与客户端110B通信时使用其中包含的客户端状态信息。
[0073] 3.2更新存储在客户端上的经加密的客户端状态信息
[0074] 在一个实施例中,客户端110A-N和客户端112A-N中的每一个被配置成遵守以下关于经加密的客户端状态信息的规则。当客户端接收到来自服务器的经加密的客户端状态信息时,客户端存储经加密的客户端状态信息。例如,客户端可以将该值存储在客户端的随机访问存储器(RAM)中和/或客户端的硬盘驱动器上。
[0075] 当客户端接收到来自服务器的更新后的经加密的客户端状态信息时,客户端存储更新后的经加密的客户端状态信息。客户端可以用后来从服务器接收到的经加密的客户端状态信息替换先前存储的与服务器相关联的经加密的客户端状态信息。这个规则允许服务器更改客户端的授权特性。
[0076] 当客户端接收到来自服务器的附加的经加密的客户端状态信息时,客户端将附加的经加密的客户端状态信息附接到先前存储的与服务器相关联的经加密的客户端状态信息。这个规则允许服务器向客户端的现有授权特性添加授权特性,而不需要客户端将先前存储的经加密的客户端状态信息发送到服务器。
[0077] 在一个实施例中,服务器向客户端指示客户端是应当用新接收到的经加密的客户端状态信息替换当前存储的经加密的客户端状态信息,还是应当将新接收到的经加密的客户端状态信息附加到当前存储的经加密的客户端状态信息。
[0078] 图4A和4B是示出用于替换存储在客户端上的经加密的客户端状态信息的方法的一个实施例的流程图400。在块402中,利用本地密钥,服务器对客户端的状态信息进行加密。例如,服务器可以是服务器104A-N或服务器106A-N之一。加密的结果在下文中被称为第一经加密信息。
[0079] 在块404中,服务器将第一经加密信息发送到客户端。例如,客户端可以是客户端110A-N或客户端112A-N之一。客户端存储第一经加密信息,并确立服务器和第一经加密信息之间的关联。
[0080] 客户端向服务器发送第一请求和第一经加密信息。在块406中,服务器从客户端接收到第一请求和第一经加密信息。
[0081] 在块408中,利用本地密钥,服务器对在块406中从客户端接收到的经加密的信息进行解密。解密的结果在下文中被称为第一经解密信息。
[0082] 在块410中,服务器基于第一经解密信息中包含的授权特性来确定第一请求是否被授权。如果第一请求被授权,则控制传递到块412。如果第一请求不被授权,则控制传递到块414。
[0083] 在块412中,服务器满足第一请求。控制传递到块416。
[0084] 或者,在块414中,服务器拒绝第一请求。服务器可以拒绝来自客户端的所有后续请求。
[0085] 在块416中,利用本地密钥,服务器对客户端的更新后的客户端状态信息进行加密。加密的结果在下文中被称为第二经加密信息。
[0086] 在块418中,服务器将第二经加密信息发送到客户端。客户端存储第二经加密信息,并确立服务器和第二经加密信息之间的关联。客户端对第二经加密信息的接收致使第一经加密信息无效。客户端可以用第二经加密信息替换第一经加密信息。
[0087] 客户端向服务器发送第二请求和第二经加密信息。在块420中,服务器从客户端接收到第二请求和第二经加密信息。
[0088] 在块422中,利用本地密钥,服务器对在块420中从客户端接收到的经加密的信息进行解密。解密的结果在下文中被称为第二经解密信息。
[0089] 在块424中,服务器基于第二经解密信息中包含的授权特性来确定第二请求是否被授权。如果第二请求被授权,则控制传递到块426。如果第二请求不被授权,则控制传递到块428。
[0090] 在块426中,服务器满足第二请求。
[0091] 或者,在块428中,服务器拒绝第二请求。服务器可以拒绝来自客户端的所有后续请求。
[0092] 图5A和5B是示出用于修改存储在客户端上的经加密的客户端状态信息的方法的一个实施例的流程图500。在块502中,利用本地密钥,服务器对客户端的状态信息进行加密。例如,服务器可以是服务器104A-N或服务器106A-N之一。加密的结果在下文中被称为第一经加密信息。
[0093] 在块504中,服务器将第一经加密信息发送到客户端。例如,客户端可以是客户端110A-N或客户端112A-N之一。客户端存储第一经加密信息,并确立服务器和第一经加密信息之间的关联。
[0094] 客户端向服务器发送第一请求和第一经加密信息。在块506中,服务器从客户端接收到第一请求和第一经加密信息。
[0095] 在块508中,利用本地密钥,服务器对在块506中从客户端接收到的经加密的信息进行解密。解密的结果在下文中被称为第一经解密信息。
[0096] 在块510中,服务器基于第一经解密信息中包含的授权特性来确定第一请求是否被授权。如果第一请求被授权,则控制传递到块512。如果第一请求不被授权,则控制传递到块514。
[0097] 在块512中,服务器满足第一请求。控制传递到块516。
[0098] 或者,在块514中,服务器拒绝第一请求。服务器可以拒绝来自客户端的所有后续请求。
[0099] 在块516中,利用本地密钥,服务器对客户端的附加客户端状态信息进行加密。加密的结果在下文中被称为第二经加密信息。
[0100] 在块518中,服务器将第二经加密信息发送到客户端。客户端存储第二经加密信息,并确立服务器和第二经加密信息之间的关联。客户端对第二经加密信息的接收并不致使第一经加密信息无效。客户端不用第二经加密信息替换第一经加密信息。
[0101] 客户端向服务器发送第二请求、第一经加密信息和第二经加密信息。在块520中,服务器从客户端接收到第二请求、第一经加密信息和第二经加密信息。
[0102] 在块522中,利用本地密钥,服务器对在块520中从客户端接收到的第一经加密信息进行解密。解密的结果在下文中被称为第二经解密信息。
[0103] 在块524中,利用本地密钥,服务器对在块520中从客户端接收到的第二经加密信息进行解密。解密的结果在下文中被称为第三经解密信息。
[0104] 在块526中,服务器基于第二经解密信息中包含的授权特性和第三经解密信息中包含的授权特性来确定第二请求是否被授权。如果第二请求被授权,则控制传递到块528。如果第二请求不被授权,则控制传递到块530。
[0105] 在块528中,服务器满足第二请求。
[0106] 或者,在块530中,服务器拒绝第二请求。服务器可以拒绝来自客户端的所有后续请求。
[0107] 利用上述方法,服务器可以向客户端发出新的授权特性,或废除客户端的现有授权特性。
[0108] 以上参考流程图500描述的方法可以用于客户端110A-N和客户端112A-N中的多个。多个客户端中的每一个可以向给定服务器发送包含该客户端的授权特性的经加密的信息。每个客户端的授权特性可以与每个其他客户端的授权特性不同。
[0109] 3.3消除对相同客户端状态信息的冗余存储
[0110] 在一个实施例中,多个服务器可以向客户端提供认证和授权服务。如果每个服务器向客户端发出单独的经加密的状态信息,则客户端可能存储相同客户端状态信息的多个复本,其中每个复本是在不同服务器的本地密钥下加密的。如果客户端状态信息较大,则这种冗余性浪费了客户端的大量存储资源。
[0111] 为了避免对相同客户端状态信息的冗余存储,可以利用所有服务器都可以访问但客户端都不能访问的通用服务器密钥来对客户端状态信息进行加密。每个服务器可以用该服务器的本地密钥对通用服务器密钥进行加密。当服务器将经加密的客户端状态信息发送到客户端时,服务器还发送已经用服务器的本地密钥加密的通用服务器密钥。客户端可以存储多个经加密的通用服务器密钥(其中每一个用于一个服务器),而只存储经加密的客户端状态信息的一个复本。对于每个服务器,客户端可以确立服务器、该服务器的经加密的通用服务器密钥和经加密的客户端状态信息之间的关联。由于每个经加密的通用服务器密钥大大小于经加密的客户端状态信息,因此这种存储方法节约了客户端的存储资源。该技术避免了对多个服务器共享本地密钥的单个值的需求。这个属性限制了对单个服务器的危害的效果;破坏一个服务器的攻击者至多只会暴露出用该服务器的本地密钥加密的数据。
[0112] 当客户端向服务器发送请求时,客户端还发送与该服务器相关联的经加密的通用服务器密钥,以及与经加密的通用服务器密钥相关联的经加密的客户端状态信息。接收到经加密的通用服务器密钥的服务器可以对经加密的通用服务器密钥进行解密,以获得经解密的通用服务器密钥。利用经解密的通用服务器密钥,服务器可以对经加密的客户端状态信息进行解密。
[0113] 图6是示出用于消除对相同客户端状态信息的冗余存储的方法的一个实施例的流程图600。在块602中,客户端存储通过基于通用服务器密钥对客户端的状态信息进行加密而生成的经加密的客户端状态信息。例如,客户端110A可以存储服务器104A利用客户端110A无法访问的通用服务器密钥加密的经加密的客户端状态信息。
[0114] 在块604中,客户端存储第一服务器通过利用与第一服务器相关联的第一本地密钥对通用服务器密钥进行加密而生成的第一经加密密钥信息。继续该示例,利用服务器104A的本地密钥,服务器104A可以对通用服务器密钥进行加密,以产生第一经加密密钥信息。服务器104A可以将第一经加密密钥信息发送到客户端110A。客户端110A可以接收第一经加密密钥信息并存储第一经加密密钥信息。
[0115] 在块606中,客户端确立第一服务器和第一经加密密钥信息之间的关联。继续该示例,客户端110A可以确立第一经加密密钥信息和服务器104A之间的关联。
[0116] 在块608中,客户端存储第二服务器通过利用与第二服务器相关联的第二本地密钥对通用服务器密钥进行加密而生成的第二经加密密钥信息。继续该示例,利用服务器104B的本地密钥,服务器104B可以对通用服务器密钥进行加密,以产生第二经加密密钥信息。服务器104B可以将第二经加密密钥信息发送到客户端110A。客户端110A可以接收第二经加密密钥信息并存储第二经加密密钥信息。
[0117] 在块610中,客户端确立第二服务器和第二经加密密钥信息之间的关联。继续该示例,客户端110A可以确立第二经加密密钥信息和服务器104B之间的关联。
[0118] 第一本地密钥可以不同于第二本地密钥。第一本地密钥可以只能由第一服务器访问。第二本地密钥可以只能由第二服务器访问。从而,在以上示例中,服务器104A可能不能对第二经加密密钥信息进行解密,而服务器104B可能不能对第一经加密密钥信息进行解密。
[0119] 在块612中,客户端向第一服务器发送经加密的客户端状态信息和与第一服务器相关联的经加密的密钥信息。继续该示例,客户端110A可以将经加密的客户端状态信息和第一经加密密钥信息发送到服务器104A。利用服务器104A的本地密钥,服务器104A可以对第一经加密密钥信息进行解密以获得通用服务器密钥。利用通用服务器密钥,服务器104A可以对经加密的客户端状态信息进行解密。
[0120] 在块614中,客户端向第二服务器发送经加密的客户端状态信息和与第二服务器相关联的经加密的密钥信息。继续该示例,客户端110A可以将经加密的客户端状态信息和第二经加密密钥信息发送到服务器104B。利用服务器104B的本地密钥,服务器104B可以对第二经加密密钥信息进行解密以获得通用服务器密钥。利用通用服务器密钥,服务器104B可以对经加密的客户端状态信息进行解密。
[0121] 结果,在以上示例中,客户端110A-N可以只存储与客户端110A有关的经加密的客户端状态信息的一个复本。这节约了客户端110A的存储资源。
[0122] 3.4避免在中间设备上存储会话状态信息
[0123] 上述方法可以适用于避免在中间设备上存储会话状态信息。一个这种类型的中间设备被称为“响应器”。响应器是对第一设备的参加与第二设备的会话的请求作出响应的设备。
[0124] 响应器的一个示例是在标题为“METHOD AND APPARATUS FORSECURELY EXCHANGING CRYPTOGRAPHIC IDENTITIES THROUGHA MUTUALLY TRUSTED INTERMEDIARY”共同未决的美国申请序列号10/411,964中描述的“介绍者设备”。如该申请所述,介绍者设备帮助在“请求者设备”和“授权者设备”之间进行密码标识的安全交换,这两个设备都已经信任介绍者设备。
[0125] 如果响应器需要存储会话状态信息,则响应器可能会被暴露到拒绝服务攻击的危险中。为了避免在响应器上存储会话状态信息,可以对会话状态信息进行加密。响应器可以转发经加密的会话状态信息以及第一和第二设备通过响应器发送到彼此的其他信息。第一和第二设备可以将经加密的会话状态信息和预期响应器将要处理的其他信息一起发送到响应器。第一和第二设备可以向响应器返回第一和第二设备从响应器接收到的任何经加密的会话状态信息。从而,经加密的会话状态信息可以被称为“回声”。当响应器接收到回声时,响应器可以检查回声上的保护。
[0126] 回声可以包括指示相关联的会话何时期满的时间值。响应器可以将该时间值与响应器的时钟的当前值相比较,以确定会话是否已期满。
[0127] 当使用密码协议时,响应器可以发出随机现时(nonce),并存储该现时以用于处理响应器未来将会接收到的消息。例如,响应器可以在参与挑战/响应协议时发出随机现时。为了避免在响应器上存储现时,现时可以被包括在回声中。其他信息,例如标识符、网络地址和用于选择协议选项的数据也可以被包括在回声中。
[0128] 3.5避免在服务器上存储共享密钥
[0129] 客户端110A-N和客户端112A-N中的每一个可以与不同的共享密钥相关联。客户端110A-N和客户端112A-N可以使用其共享密钥来得出客户端可以用来对客户端发送到服务器104A-N和服务器106A-N的消息和接收自服务器104A-N和服务器106A-N的消息进行加密和解密的会话密钥。这样一来,可以在客户端和服务器之间建立安全的“隧道”。但是,为了使得服务器104A-N和服务器106A-N能够建立这些安全隧道,服务器104A-N和服务器104A-N还需要能够访问共享密钥以便服务器也能够得出会话密钥。当存在许多客户端时,为每个客户端存储不同的共享密钥所需要的存储器量是没有任何网络元件实际拥有的。
[0130] 因此,根据一个实施例,当客户端110A-N或客户端112A-N中的任何一个发起与服务器104A-N或服务器106A-N中的任何一个的通信时,客户端将客户端的经加密的状态信息发送到服务器。作为响应,客户端将客户端的经加密的状态信息发送到服务器。客户端的经加密的状态信息包含客户端的共享密钥。
[0131] 服务器可以使用服务器的本地密钥来对客户端的经加密的状态信息进行解密,从而获得客户端的共享密钥。服务器可以从客户端的共享密钥得出一个或多个会话密钥。利用一个或多个会话密钥,服务器可以对发送到客户端和接收自客户端的消息进行加密和解密。当服务器完成与客户端的通信时,服务器可以释放曾用于存储客户端的共享密钥和任何相应的会话密钥的存储器,以用于其他用途。因此,服务器不需要同时存储访问私有网络102的每个客户端的不同共享密钥。
[0132] 图7A和7B是示出用于避免在服务器上存储共享密钥的方法的一个实施例的流程图700。在一个实施例中,服务器104A-N和服务器106A-N中的每一个存储不同的本地密钥集合。服务器可以利用该服务器的本地密钥集合中的任何本地密钥对客户端状态信息进行加密。通过在不同时间使用不同本地密钥,提高了安全性。每个本地密钥与不同的SPI相关联。在块702中,服务器从服务器的本地密钥集合中选择特定本地密钥。例如,服务器可以是服务器104A-N或服务器106A-N之一。
[0133] 在块704中,服务器基于客户端的状态信息和特定本地密钥计算认证代码。客户端的状态信息包括客户端的共享密钥。客户端的状态信息还指示客户端的唯一身份。认证代码是客户端的状态信息和特定本地密钥的组合的函数。该函数可以被实现成使得没有两个不同的组合会导致函数产生相同的认证代码。
[0134] 在块706中,利用特定本地密钥,服务器对认证代码、客户端的状态信息和时间值进行加密。时间值指示一个未来的时间,在该时间服务器应当将客户端的状态信息视为期满。时间值例如可以通过向服务器时钟的当前值添加恒定值来计算。加密的结果在这里被称为经加密的信息。
[0135] 在块708中,服务器向客户端发送经加密的信息和与特定本地密钥相关联的SPI。例如,客户端可以是客户端110A-N或客户端112A-N之一。客户端存储经加密的信息和SPI,并且确立服务器和经加密的信息之间的关联以及经加密的信息和SPI之间的关联。在客户端存储此信息之后,服务器可以释放服务器的曾以明码形式和加密形式存储客户端的状态信息的存储器。
[0136] 当客户端发起与服务器的通信时,客户端可以将经加密的信息和相关联的SPI发送到服务器。在块710中,服务器从客户端接收到经加密的信息和SPI。
[0137] 在块712中,利用与SPI相关联的本地密钥,服务器对从客户端接收到的经加密的信息进行解密。解密的结果在这里被称为经解密的信息。
[0138] 经解密的信息至少包含认证代码、客户端状态信息和时间值。在块714中,服务器利用与服务器在块704中使用的函数相同的函数来计算新的认证代码。新的认证代码是特定本地密钥和经解密的信息中包含的客户端状态信息的组合的函数。
[0139] 在块716中,服务器确定新的认证代码是否与经解密的信息中包含的认证代码相匹配。如果认证代码匹配,则控制传递到块718。如果认证代码不匹配,则控制传递到块720。这样一来,服务器认证了经解密的信息中包含的信息。
[0140] 在块718中,通过比较当前时间值和经解密的信息中包含的时间值,服务器确定经解密的信息中包含的客户端状态信息是否已经期满。如果当前时间值小于经解密的信息中包含的时间值,则控制传递到块722。如果当前时间值不小于经解密的信息中包含的时间值,则控制传递到块724。
[0141] 在块720中,服务器拒绝从客户端接收到的经加密的信息。服务器可以拒绝来自该客户端的所有后续数据。
[0142] 客户端可以从共享密钥中得出一个或多个会话密钥。利用这种会话密钥,客户端可以对消息进行加密并将经加密的消息发送到服务器。在块722中,服务器从客户端接收到已经用得出的密钥加密的消息,该密钥是从共享密钥得出的。
[0143] 经解密的信息中包含的客户端状态信息包括共享密钥。在块724中,服务器从共享密钥中得出一个或多个会话密钥。
[0144] 在块726中,利用这种会话密钥,服务器对从客户端发送来的经加密的消息进行解密。利用从共享密钥得出的会话密钥,服务器可以对另一消息进行加密并将该经加密的消息发送回客户端。从而,利用从共享密钥得出的会话密钥,客户端和服务器可以对它们传输到彼此的消息进行加密和解密,从而建立安全的“隧道”。
[0145] 在客户端和服务器完成通信之后,服务器可以释放服务器的曾以明码形式和加密形式存储客户端的状态信息的存储器。从而,服务器可以避免以超出仅仅暂时性的、非连续的方式存储包括共享密钥在内的客户端状态信息。
[0146] 以上参考流程图700描述的方法可以用于客户端110A-N和客户端112A-N中的多个。多个客户端中的每一个可以向给定服务器发送包含该客户端的共享密钥的经加密的信息。每个客户端的共享密钥与每个其他客户端的共享密钥不同。
[0147] 4.0实现机构-硬件概况
[0148] 图8是示出可在其上实现本发明实施例的计算机系统800的框图。优选实施例是用运行在诸如路由器设备这样的网络元件上的一个或多个计算机程序实现的。从而,在本实施例中,计算机系统800是路由器。
[0149] 计算机系统800包括用于传输信息的总线802或其他通信机构,以及与总线142相耦合的用于处理信息的处理器804。计算机系统800还包括耦合到总线802的用于存储信息和要被处理器804执行的指令的主存储器806,例如随机访问存储器(RAM)、闪存或其他动态存储设备。主存储器806还可以用于在要由处理器804执行的指令的执行期间存储临时变量或其他中间信息。计算机系统800还包括耦合到总线802的用于存储处理器804的静态信息和指令的只读存储器(ROM)808或其他静态存储设备。提供了存储设备810,例如磁盘、闪存或光盘,其耦合到总线802,用于存储信息和指令。
[0150] 通信接口818可以与总线802相耦合,用于将信息和命令选择传输到总线802。接口818是传统串行接口,例如RS-232或RS-422接口。外部终端812或其他计算机系统连接到计算机系统800,并利用接口814向其提供命令。运行在计算机系统800上的固件或软件提供终端接口或基于字符的命令接口,从而使得外部命令可以被提供给计算机系统。
[0151] 交换系统816耦合到总线802,并且具有到一个或多个外部网络元件的输入接口814和输出接口819。外部网络元件可以包括耦合到一个或多个主机824的本地网络822,或者具有一个或多个服务器830的全球网络,例如因特网828。交换系统816根据公知的预定协议和协定将在输入接口814上到达的信息流量交换到输出接口819。例如,交换系统
816与处理器804合作,可以确定在输入接口814上到达的数据分组的目的地,并利用输出接口819将其发送到正确的目的地。目的地可以包括主机824、服务器830、其他末端站或本地网络822或因特网828中的其他路由选择和交换设备。
[0152] 本发明涉及使用计算机系统800来避免在计算机系统800上存储客户端状态。根据本发明的一个实施例,计算机系统800响应于处理器804执行主存储器806中包含的一个或多个指令的一个或多个序列而提供这种更新。这种指令可以从另一计算机可读介质被读取到主存储器806中,所述另一计算机可读介质例如是存储设备810。对主存储器806中包含的指令序列的执行致使处理器804执行这里所描述的过程步骤。也可以用采取多处理配置的一个或多个处理器来执行主存储器806中包含的指令序列。在备选实施例中,可以使用硬连线电路来取代软件指令或与软件指令相结合以实现本发明。从而,本发明的实施例并不局限于硬件电路和软件的任何特定组合。
[0153] 这里使用的术语“计算机可读介质”是指任何参与向处理器804提供指令以便执行的介质。这种介质可以采取许多形式,其中包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘或磁盘,例如存储设备810。易失性介质包括动态存储器,例如主存储器806。传输介质包括同轴电缆、铜线和光纤,其中包括构成总线802的导线。传输介质也可以采取无线链路的形式,例如在无线电波和红外数据通信期间生成的声波或电磁波。
[0154] 计算机可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带或任何其他磁介质、CD-ROM、任何其他光介质、打孔卡、纸带、或任何其他具有孔图案的物理介质、RAM、PROM、EPROM、FLASH-EPROM、或任何其他存储器芯片或卡式磁带、以下所述的载波,或任何其他计算机可读取的介质。
[0155] 在将一个或多个指令的一个或多个序列承载到处理器804以便执行时,可涉及各种形式的计算机可读介质。例如,指令最初可能是承载在远程计算机的磁盘上的。远程计算机可将指令加载到其动态存储器中,并利用调制解调器经由电话线发送指令。计算机系统800本地的调制解调器可接收电话线上的数据,并利用红外发射器将数据转换成红外信号。耦合到总线802的红外检测器可以接收承载在红外信号中的数据并将数据置于总线802上。总线802将数据传输到主存储器806,处理器804从主存储器806取得并执行指令。
可选地,由主存储器806接收到的指令可以在被处理器804执行之前或之后被存储在存储设备810上。
[0156] 通信接口818还提供与连接到本地网络822的网络链路820的双向数据通信耦合。例如,通信接口818可以是综合业务数字服务(ISDN)卡或调制解调器,以提供到相应类型的电话线的数据通信连接。又例如,通信接口818可以是局域网(LAN)卡,以提供到兼容的LAN的数据通信连接。还可以实现无线链路。在任何这种实现方式中,通信接口818都发送和接收承载代表各种类型的信息的数字数据流的电、电磁或光信号。
[0157] 网络链路820一般提供通过一个或多个网络到其他数据设备的数据通信。例如,网络链路820可以提供通过本地网络822到主机计算机824或者由因特网服务提供商(ISP)所操作的数据设备的连接。ISP 826又通过通常称为“因特网”828的世界范围的分组数据通信网络提供数据通信服务。本地网络822和因特网828都使用承载数字数据流的电、电磁或光信号。将数字数据承载到计算机系统800或承载来自计算机系统800的数字数据的经过各种网络的信号和网络链路820上的经过接口818的信号是传输信息的载波的示例性形式。
[0158] 计算机系统800可以通过(一个或多个)网络、网络链路820和通信接口818发送消息和接收数据,其中包括程序代码。在因特网示例中,服务器830可以通过因特网828、ISP 826、本地网络822和通信接口818发送针对应用程序的请求代码。根据本发明,一个这样下载的应用程序提供了如这里所述的避免在服务器上存储客户端状态的方法。
[0159] 处理器804可以在接收到代码时执行接收到的代码,以及/或者将其存储在存储设备810中或其他非易失性存储设备中,以便将来执行。这样一来,计算机系统800可以获得载波形式的应用代码。
[0160] 5.0扩展和备选方案
[0161] 在以上说明中,已经参考本发明的特定实施例描述了本发明。但是,显而易见的是,可以对其做出各种修改和改变,而不会脱离本发明的更宽的精神和范围。因此,说明书和附图应当被视为说明性的而不是限制性的。