实现基于无状态服务器的预共享私密转让专利

申请号 : CN200580001385.2

文献号 : CN100591003C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 南希·卡姆-温恩特周浩帕特曼纳哈·C·杰卡浩里约瑟夫·萨洛韦大卫·A·麦格鲁

申请人 : 思科技术公司

摘要 :

本发明公开了一种用于实现基于无状态服务器的预共享私密的方法。基于客户端不知道的本地密钥,服务器对客户端的状态信息进行加密。客户端的状态信息例如可以包括客户端的认证凭证、客户端的授权特性和客户端用于导出会话密钥的共享私密密钥。利用多种机制中的任意一种,经加密的客户端状态信息被提供给客户端。服务器可以腾出曾存储客户端的状态信息的存储器。当服务器需要客户端的状态信息时,客户端向服务器发送客户端存储的经加密的状态信息。服务器利用本地密钥对经加密的客户端状态信息解密。由于每个客户端以加密形式存储了该客户端自己的状态信息,因此服务器无需永久存储任意客户端的状态信息。

权利要求 :

1.一种用于避免在服务器上存储客户端状态的方法,该方法包括以下步骤: 基于第一客户端不知道的第一本地密钥,所述服务器对第一客户端状态信息加密以产生第一经加密信息,其中所述第一客户端状态信息包括第一共享私密密钥; 所述服务器将所述第一经加密信息发送到所述第一客户端; 所述服务器在第一时间从所述第一客户端接收所述第一经加密信息; 基于所述第一本地密钥,所述服务器核实从所述第一经加密信息中提取出的第一认证代码并对接收自所述第一客户端的所述第一经加密信息进行解密,从而产生第一经解密信息; 所述服务器接收已基于从所述第一共享私密密钥导出的第一导出密钥加密后的第一消息; 所述服务器从包括在所述第一经解密信息中的所述第一共享私密密钥导出第二导出密钥;以及 基于所述第二导出密钥,所述服务器进一步保护随之发生在所述第一客户端和所述服务器之间的会话。

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

3. 如权利要求1所述的方法,还包括以下步骤:在将所述第一经加密信息发送到所述第一客户端之前,基于所述第一 本地密钥、服务器的身份和经加密的第一客户端状态信息来计算所述第一 认证代码;以及在将所述第一经加密信息发送到所述第一客户端之前,加密所述第一 客户端状态信息并将所述第一认证代码与所述第一客户端状态信息的加密 结果包括在一起以产生所述第一经加密信息。

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

5. 如权利要求1所述的方法,还包括以下步骤:在将所述第一经加密信息发送到所述第一客户端之前,将第一寿命值 和所述第一客户端状态信息一起加密以产生所述第一经加密信息。

6. 如权利要求5所述的方法,还包括以下步骤:在对接收自所述第一客户端的所述第一经加密信息进行解密之后,基 于存储在所述服务器中的当前时间值和包括在所述第一经解密信息中的所 述第一寿命值来判断所述第一客户端状态信息是否已经过期。

7. 如权利要求1所述的方法,还包括以下步骤:从多个密钥中选出所述第一本地密钥,其中所述多个密钥中的每个密 钥与不同索引值和所述服务器的身份相关联;以及将与所述第一本地密钥相关联的索引值发送到所述第一客户端。

8. 如权利要求7所述的方法,还包括以下步骤:从所述第一客户端接收与所述第一本地密钥相关联的索引值和所述服务器的身份;其中所述对第一经加密信息进行解密的步骤包括基于与接收自所述第 一客户端的索引值相关联的所述第一本地密钥对所述第一经加密信息进行 解密的步骤。

9. 如权利要求4所述的方法,其中所述服务器执行对所述第一客户端 状态信息加密以产生所述第一经加密信息的步骤,其中所述方法还包括以下步骤:第二服务器基于所述第一客户端不知道的第二本地密钥对所述第一客 户端状态信息进行加密,以产生第二经加密信息,其中所述第二服务器不 同于所述服务器,并且其中所述第二本地密钥不同于所述第一本地密钥;所述第二服务器从所述第一客户端接收所述第二经加密信息;所述第二服务器核实从所述第二经加密信息中提取出的所述第二认证 代码并对接收自所述第一客户端的第二经加密信息进行解密,从而产生第二经解密信息;接收已基于从所述第一共享私密密钥导出的第三导出密钥加密后的第 二消息;从包括在所述第二经解密信息中的所述第一共享私密密钥导出第四导 出密钥;以及基于所述第四导出密钥来进一步保护随之发生在所述第一客户端和所 述第二服务器之间的会话。

10. —种用于避免在服务器上存储客户端状态的装置,包括: 用于基于客户端不知道的本地密钥对客户端状态信息加密以产生经加密信息的装置,其中所述客户端状态信息包括共享私密密钥; 用于从所述客户端接收所述经加密信息的装置;用于基于所述本地密钥对接收自所述客户端的所述经加密信息进行解 密,从而产生经解密信息的装置;用于接收已基于从所述共享私密密钥导出的第一导出密钥加密后的消 息的装置;用于从包括在所述经解密信息中的共享私密密钥导出第二导出密钥的 装置;以及用于基于所述第二导出密钥来解密所述消息的装置。

11. 一种用于避免在服务器上存储客户端状态的装置,包括- . 用于计算所述服务器的身份的装置;用于基于第一客户端不知道的第一本地密钥对第一客户端状态信息进 行加密以产生第一经加密信息的装置,其中所述第一客户端状态信息包括 共享私密密钥;用于将所述第一经加密信息发送到所述第一客户端的装置; 用于从所述第一客户端接收所述第一经加密信息的装置;用于基于所述第一本地密钥对接收自所述第一客户端的所述第一经加 密信息进行解密,从而产生经解密信息的装置;以及 消息处理装置,用于接收已基于从所述共享私密密钥导出的第一导出 密钥加密后的消息,从包括在所述经解密信息中的共享私密密钥导出第二 导出密钥,并 且基于所述第二导出密钥来进一步保护随之发生在所述第一 客户端和所述服务器之间的会话。

12. 如权利要求11所述的装置,其中所述消息处理装置还用于:在第 一时间前从服务器存储器中移除第一客户端状态信息;以及在所述第一时 间前从服务器存储器中移除第一经加密信息。

13. 如权利要求ll所述的装置,其中所述消息处理装置还用于:在将 第一经加密信息发送到第一客户端之前,基于第一本地密钥、服务器的身 份和经加密的第一客户端状态信息来计算第一认证代码;以及在将所述第 一经加密信息发送到所述第一客户端之前,加密第一客户端状态信息并将 所述第一认证代码与所述第一客户端状态信息的加密结果包括在一起以产 生所述第一经加密信息。

14. 如权利要求13所述的装置,其中所述消息处理装置还用于:在对 接收自所述第一客户端的所述第一经加密信息进行解密之后,基于所述第 一本地密钥和包括在所述第一经解密信息中的经加密的第一客户端状态信 息来计算第二认证代码;以及判断所述第二认证代码是否与包括在所述第一经解密信息中的所述第一认证代码相匹配。

15. 如权利要求11所述的装置,其中所述消息处理装置还用于:在将 第一经加密信息发送到第一客户端之前,将第一寿命值和第一客户端状态 信息一起加密以产生所述第一经加密信息;以及在对接收自所述第一客户 端的所述第一经加密信息进行解密之后,基于存储在所述服务器中的当前 时间值和包括在所述第一经解密信息中的所述第一寿命值来判断所述第一 客户端状态信息是否已经过期。

16. 如权利要求11所述的装置,其中所述消息处理装置还用于:从多 个密钥中选出第一本地密钥,其中所述多个密钥中的每个密钥与不同索引 值和所述服务器的身份相关联;将与所述第一本地密钥相关联的索引值发送到所述第一客户端;从所述第一客户端接收与所述第一本地密钥相关联的索引值和所述服务器的身份;并且,其中所述对第一经加密信息进行解 密包括基于与接收自所述第一客户端的索引值相关联的所述第一本地密钥 对所述第一经加密信息进行解密。

17.如权利要求14所述的装置,其中所述服务器被配置来执行对所述 第一客户端状态信息加密以产生第一经加密信息;其中所述用于避免在服务器上存储客户端状态的装置还包括第二服务 器,被配置来用于:基于所述第一客户端不知道的第二本地密钥对所述第 一客户端状态信息进行加密,以产生第二经加密信息,其中所述第二服务 器不同于所述服务器,并且其中所述第二本地密钥不同于所述第一本地密 钥;从所述第一客户端接收所述第二经加密信息;以及核实从所述第二经 加密信息中提取出的所述第二认证代码并对接收自所述第一客户端的所述 第二经加密信息进行解密,从而产生第二经解密信息;其中所述消息处理装置还用于:接收已基于从所述共享私密密钥导出 的第三导出密钥加密后的第二消息;从包括在所述第二经解密信息中的共 享私密密钥导出第四导出密钥;以及基于所述第四导出密钥来进一步保护 随之发生在所述第一客户端和所述第二服务器之间的会话。

说明书 :

实现基于无状态服务器的预共享私密

技术领域

本发明一般地涉及计算机网络的认证、授权和安全机制。更具体而
言,本发明涉及用于实现基于无状态服务器的预共享私密(secret)的方法 和装置。

背景技术

本部分中描述的方法可被获得,但这些方法不一定是先前已经设想到 或已经获得的方法。因此,除非这里另外指示,否则在本部分中描述的方 法不是针对本申请中的权利要求的现有技术,并且不会由于包括在本部分 中而被承认是现有技术。
为了维持私有计算机网络的安全性,客户端计算机("客户端")可 能被要求通过经由服务器计算机("服务器")进行认证以及建立到网络 的授权来访问网络。在授予客户端对网络的访问权限之前,服务器可能要 求客户端向服务器提供认证凭证,以使服务器能够确信客户端实际上是客 户端所声称的的实体。客户端的认证凭证指示客户端的身份。如果客户端 的认证凭证与存储在服务器中的认证凭证不匹配,服务器则拒绝客户端访 问网络。即使在客户端已成功认证其自身之后,服务器也可以基于与客户 端相关的以及存储在服务器中的授权特性来限制服务器对网络资源的访问 和/或客户端可以对网络资源执行的操作。
未经授权的计算机尝试窃听在经授权的客户端和服务器之间传输的信 息的情况并不罕见。为了防止未经授权的计算机利用未经授权的计算机不 应接收的信息,客户端和服务器可以采用加密机制来保护将在客户端和服 务器之间传输的信息。根据一种加密机制,客户端和服务器都从仅被客户 端和服务器拥有的共享私密密钥导出一个或多个会话密钥。在彼此发送消 息之前,客户端和服务器利用会话密钥对消息加密。利用会话密钥,客户端和服务器可以对它们从彼此接收到的经加密的消息进行解密。不具有共 享私密密钥的计算机无法导出会话密钥,因此无法对在客户端和服务器之 间传输的消息进行解密。
多个客户端可能通过同 一服务器来访问专用网络。为了防止一个客户 端伪装成另一客户端,不同的客户端通常与不同的认证凭证相关联。不同 的客户端可能与不同的授权特性相关联。为了防止一个客户端利用专用于 另一客户端的信息,不同的客户端通常具有不同的共享私密密钥。总的来 讲,客户端的认证凭证、授权特性和共享私密密钥被称为客户端的状态信 息。
根据一种方法,服务器针对每个客户端存储独立的客户端状态信息。 当存在很多客户端时,存储每个客户端的独立的客户端状态信息的操作要 使用大量存储器。服务器的成本与服务器要求用于存储客户端状态信息的 存储器的量成正比。
很多现有网络设备不包含足以存储大量客户端的客户端状态信息的存 储器。例如,某些网络路由器可获得的相对较少量的存储器使这些网络路 由器在大量客户端将访问网络时无法执行上述服务器功能。很多网络路由 器没有足够的存储器来同时存储很多不同的认证凭证、授权特性和共享私 密密钥。
在当今不断增长的无线世界中,存储器限制不是与客户端状态信息的 存储相关的唯一关注点。无线客户端可以从一个位置漫游到另一位置。当 无线客户端离开一个位置而进入另一位置时,无线客户端可能试图通过不 同服务器访问同一专用网络。如果客户端试图通过其来进行访问的服务器 不具有客户端的状态信息,服务器则将无法授予客户端对网络的访问权 限。
解决上述问题的一种可能方法可能是以如下方式管理一组服务器:将 存储在一个服务器中的客户端状态信息复制在域中的所有服务器上。但 是,当存在很多客户端和很多服务器时,在所有服务器上复制所有客户端 状态信息的操作是一项繁重的任务,尤其是在新的客户端被持续添加到客 户端池的情况下。如果域中的每个服务器都需要装配非常大量的存储器来存储所有客户端的所有客户端状态信息,那么域管理员的花费可能是无法 承受的。毫无疑问,如果客户端的数目以相当快速的步调增长,管理员则 可能发现无法跟上这种增长。

发明内容

根据本发明第一方面,提供了一种用于避免在服务器上存储客户端状 态的方法,该方法包括以下步骤:基于第一客户端不知道的第一本地密 钥,所述服务器对第一客户端状态信息加密以产生第一经加密信息,其中 所述第一客户端状态信息包括第一共享私密密钥;所述服务器将所述第一 经加密信息发送到所述第一客户端;所述服务器在第一时间从所述第一客 户端接收所述第一经加密信息;基于所述第一本地密钥,所述服务器核实 从所述第一经加密信息中提取出的第一认证代码并对接收自所述第一客户 端的所述第一经加密信息进行解密,从而产生第一经解密信息;所述服务 器接收已基于从所述第一共享私密密钥导出的第一导出密钥加密后的第一 消息;所述服务器从包括在所述第一经解密信息中的所述第一共享私密密 钥导出第二导出密钥;以及基于所述第二导出密钥,所述服务器进一步保 护随之发生在所述第一客户端和所述服务器之间的会话。
根据本发明第二方面,提供了一种用于避免在服务器上存储客户端状 态的装置,包括:用于基于客户端不知道的本地密钥对客户端状态信息加 密以产生经加密信息的装置,其中所述客户端状态信息包括共享私密密 钥;用于从所述客户端接收所述经加密信息的装置;用于基于所述本地密 钥对接收自所述客户端的所述经加密信息进行解密,从而产生经解密信息 的装置;用于接收已基于从所述共享私密密钥导出的第一导出密钥加密后 的消息的装置;用于从包括在所述经解密信息中的共享私密密钥导出第二 导出密钥的装置;以及用于基于所述第二导出密钥来解密所述消息的装 置。
根据本发明第三方面,提供了一种用于避免在服务器上存储客户端状 态的装置,包括:用于计算所述服务器的身份的装置;用于基于第一客户 端不知道的第一本地密钥对第一客户端状态信息进行加密以产生第一经加密信息的装置,其中所述第一客户端状态信息包括共享私密密钥;用于将 所述第一经加密信息发送到所述第一客户端的装置;用于从所述第一客户 端接收所述第一经加密信息的装置;用于基于所述第一本地密钥对接收自 所述第一客户端的所述第一经加密信息进行解密,从而产生经解密信息的 装置;以及消息处理装置,用于接收已基于从所述共享私密密钥导出的第 一导出密钥加密后的消息,从包括在所述经解密信息中的共享私密密钥导 出第二导出密钥,并且基于所述第二导出密钥来进一步保护随之发生在所 述第一客户端和所述服务器之间的会话。

附图说明

在附图中以示例方式而非限制方式示出了本发明,并且附图中的相似 标号指示类似元素,在附图中:
图1是示出客户端状态信息被主要存储在客户端上而非服务器上的系 统的概况的框图;
图2是示出用于避免客户端状态信息存储在服务器上的方法的一个实 施例的高级概况的流程图;
图3A和图3B是示出用于避免客户端授权特性存储在服务器上的方法 的一个实施例的流程图;
图4A和图4B是示出用于替换存储在客户端上的经加密客户端状态信 息的方法的 一个实施例的流程图;
图5A和图5B是示出用于修改存储在客户端上的经加密客户端状态信 息的方法的一个实施例的流程图;
图6是示出用于消除相同客户端状态信息的冗余存储的方法的一个实 施例的流程图;
图7A和图7B是示出用于避免共享私密密钥存储在服务器上的方法的 一个实施例的流程图;
图8是示出用于在多个服务器间共享经加密的客户端状态信息的方法 的一个实施例的流程图;
图9是示出客户端可用以向服务器传输客户端的PAC Opaque的方法的一个实施例的流程图;以及
图IO是示出可在其上实现实施例的计算机系统的框图。

具体实施方式

用于避免在服务器上存储客户端状态的方法和装置被描述。在以下描 述中,出于说明的目的,提出了多个具体细节,以便提供对本发明的全面 理解。但是,将会发现,本领域技术人员无需这些具体细节也可以实现本 发明。在其他实例中,以框图形式示出了公知的结构和设备,以避免不必 要地模糊本发明。
这里根据以下大纲来描述实施例:
l.O总体概况
2.0结构和功能概况 3.0实现示例
3.1避免在服务器上存储授权特性
3.2更新存储在客户端上的经加密客户端状态信息
3.3消除相同客户端状态信息的冗余存储
3.4避免在中间设备上存储会话状态信息
3.5避免在服务器上存储共享私密密钥
3.6在多个服务器间共享客户端状态信息
3.7利用传输层安全性协议(TLS)扩展来避免客户端状态信息
的服务器存储
3.7.1 EAP-FAST概况
3.7.2隧道建立阶段 4.0实现机制——硬件概况 5.0扩展和替换
l.O总体概况
'在本发明中实现了前述背景技术中标识的需求以及将从以下描述中发 现的其他需求和目的,本发明在其一个方面中包括用于避免在服务器上存储客户端状态信息的方法。基于客户端不知道的本地密钥,服务器对客户端的状态信息进行加密。客户端的状态信息例如可以包括客户端的认证凭证、客户端的授权特性和在服务器与客户端之间共享以使客户端和服务器可以相互导出新的会话密钥的私密密钥。
利用多种机制中的任意一种,经加密的客户端状态信息被提供给客户端。例如,服务器可以通过网络向客户端发送经加密的状态信息。因为客户端不具有本地密钥,因此客户端无法对经加密的状态信息解密。因此,
经加密的信息对客户端来说是"模糊的(opaque)"。这种模糊性例如使客户端无法改变客户端的授权特性。
客户端存储客户端的经加密的状态信息。在客户端存储了经加密的客户端状态信息之后,服务器不再需要存储客户端的状态信息。因此,服务器可以腾出曾存储客户端的状态信息的存储器。服务器可以将存储器用于其它目的。
当服务器需要客户端的状态信息时,例如当服务器需要导出会话密钥或需要确定客户端的授权特性时,服务器可以向客户端请求客户端的经加密的状态信息。响应于服务器的请求,客户端可以向服务器发送客户端之前存储的经加密的状态信息。可替换地,即使不存在来自服务器的请求,客户端也可以在客户端发起与服务器的通信时将客户端的经加密的状态信息发送到服务器。
在接收到来自客户端的经加密的客户端状态信息之后,服务器利用本地服务器密钥来解密客户端状态信息。在服务器已解密出客户端状态信息之后,服务器可以将客户端状态信息用于服务器通常将客户端状态信息用于的任何目的。当服务器使用完客户端状态信息时,服务器可以再一次腾出存储客户端状态信息的存储器。因为每个客户端以加密形式存储了客户端本身的状态信息,因此服务器无需永久存储任何客户端的状态信息。
在其他方面,本发明包含被配置用于执行前述步骤的计算机装置和计算机可读介质。
2.0结构和功能概况图l是示出系统IOO的概况的框图,其中客户端状态信息主要存储在
客户端而非服务器上。系统100包括专用网络102、服务器104A-N、服务器106A-N、公共网络108、客户端IIOA-N和客户端112A-N。专用网络102可以是计算机网络,例如局域网(LAN)或广域网(WAN)。从专用网络102外部对专用网络102的访问只能通过服务器104A-N和服务器106A-N来获得。
服务器104A-N和服务器106A-N可以是诸如充当认证、授权和计费服务器(即AAA服务器)的网络路由器、网络交换机或网桥之类的计算机或网络元件。服务器104A-N通信地耦合到专用网络102。服务器104A-N还可以通信地耦合到公共网络108。公共网络108可以是诸如LAN或WAN之类的计算机网络。公共网络108可以包含因特网。公共网络108可能是服务器104A-N或客户端IIOA-N不信任的网络。另外,服务器104A-N中的一个或多个可能直接耦合到客户端110A-N中的一个或多个。
服务器106A-N通信地耦合到专用网络102。服务器106A-N可以通过无线介质与客户端112A-N通信。无线介质采用连接到服务器106A-N的无线接入点(WAP) 114A-N; WAP提供对客户端112A-N的无线网络访问。类似地,客户端112A-N可以通过无线介质(包括WAP 114A-N)与服务器106A-N通信。
客户端IIOA-N和客户端112A-N可以是个人计算机或无盘工作站。
客户端IIOA-N和客户端112A-N可以是诸如膝上型计算机之类的移动设
备。客户端110A-N可以通信地耦合到公共网络108。另外,客户端
110A-N中的一个或多个可能直接耦合到服务器104A-N中的一个或多个。
客户端IIOA-N和客户端112A-N中的每一个对应于不同的客户端状态信息。客户端的状态信息例如可以包括客户端的认证凭证、客户端的授权特性和客户端与服务器相互使用以导出新的会话密钥的共享私密密钥。客户端的认证凭证可以指示客户端的唯一身份。客户端的认证凭证可以包括用户名和密码。客户端的授权特性可以指示允许客户端在专用网络102内访问的资源。客户端的授权特性可以指示允许客户端在专用网络102内对资源执行的操作。
服务器104A-N和服务器106A-N中的每一个存储任意客户端110A-N和客户端112A-N都不知道的本地密钥。在一个实施例中,每个服务器的本地密钥不同于所有其他服务器的本地密钥。在另一实施例中,每个服务器的本地密钥是相同的。利用它们的本地密钥,服务器104A-N和服务器106A-N对与客户端IIOA-N和客户端112A-N相对应的客户端状态信息进行加密。利用多种机制中的任意一种,每个客户端的经加密的客户端状态信息被提供给该客户端。
客户端IIOA-N和客户端112A-N中的每一个存储该客户端的经加密的状态信息。在一个实施例中,客户端IIOA-N和客户端112A-N在经加密的客户端状态信息与对该客户端状态信息进行了加密的服务器之间建立关联。例如,服务器104A和服务器104B都可以加密客户端IIOA的客户端状态信息。客户端IIOA可以分开存储由服务器104A加密的经加密的客户端状态信息和由服务器104B加密的经加密的客户端状态信息。客户端IIOA可以分开建立服务器104A和经服务器104A加密的经加密的状态信息之间的关联,以及服务器104B和经服务器104B加密的经加密的状态信息之间的关联。
由于客户端IIOA-N和客户端112A-N存储了经加密的客户端状态信息,因此服务器104A-N和服务器106A-N无需永久存储客户端状态信息。服务器104A-N和服务器106A-N可以腾出曾存储客户端状态信息的
存储器以用于其它目的。
当服务器104A-N或服务器106A-N中的任意一个需要客户端110A-N或客户端112A-N中的任意一个的客户端状态信息时,服务器可以请求来自该客户端的客户端的经加密的状态信息。当客户端110A-N或客户端112A-N中的任意一个接收到这样的请求时,该客户端可以将与该服务器相关联的经加密的状态信息发送到服务器。可替换地,即使不存在来自服务器的请求,客户端110A-N或客户端112A-N中的任意一个也可以在该客户端发起与服务器之间的通信时将客户端的经加密的状态信息发送到服务器。
当服务器104A-N或服务器106A-N中的任意一个接收到来自客户端的经加密的客户端状态信息时,服务器利用服务器的本地密钥对客户端状态信息进行解密。在服务器已解密出客户端状态信息之后,服务器可以将客户端状态信息用于服务器通常将客户端状态信息用于的任何目的。当服务器使用完客户端状态信息之后,服务器可以腾出存储客户端状态信息的存储器。因此,即使在存在很多不同客户端时,服务器104A-N和服务器106A-N也可以利用相对较少量存储器来执行认证和授权功能。
图2是示出用于避免在服务器上存储客户端状态信息的方法的一个实施例的高级概况的流程图200。在框202中,服务器使用服务器的本地密钥对客户端的状态信息进行加密。客户端不具有对服务器的本地密钥的访问权限。例如,服务器104A可以利用服务器104A的本地密钥对客户端IIOA的客户端状态信息进行加密。另外,服务器104A也可以利用服务器104A的本地密钥对客户端110B的客户端状态信息进行加密。
客户端IIOA和110B的经加密的客户端状态信息可以被分别提供到客户端IIOA和IIOB。在接收到经加密的客户端状态信息之后,客户端IIOA和IIOB可以存储经加密的客户端状态信息。
在框204中,服务器从客户端接收客户端的经加密的状态信息。继续该示例,服务器104A可以从客户端IIOA接收客户端IIOA的经加密的客户端状态信息。另外,服务器104A可以从客户端IIOB接收客户端110B的经加密的客户端状态信息。
在框206中,服务器利用服务器的本地密钥对客户端的经加密酌状态信息解密。继续该示例,服务器104A可以利用服务器104A的本地密钥对接收自客户端110A的经加密的客户端状态信息进行解密。另外,服务器104A可以利用服务器104A的本地密钥对接收自客户端IIOB的经加密的客户端状态信息进行解密。服务器104A可以以与服务器104A在本地连续存储客户端状态信息的情况下服务器104A使用客户端状态信息的方式相同的方式来使用经解密的客户端IIOA和110B的客户端状态信息。但是,服务器104A不需要连续地存储任意客户端状态信息。下面将描述前述一般方法的详细示例性实现方式。
3.0实现示例
3.1避免在服务器上存储授权特性
根据一个实施例,当客户端IIOA-N或客户端112A-N中的任意一个向服务器104A-N或服务器106A-N中的任意一个发送请求时,客户端将客户端的经加密的状态信息与请求一起发送给服务器。服务器可以根据包括在客户端的经加密的状态信息中的授权特性确定客户端的请求应该被满足还是拒绝。客户端110A-N和客户端112A-N中的每一个可以与不同的授权特性相关联。
图3A和图3B是示出用于避免在服务器上存储客户端授权特性的方法的一个实施例的流程图300。在一个实施例中,服务器104A-N和服务器106A-N中的每一个存储不同的本地密钥集合。服务器可以利用服务器的本地密钥集合中的任意本地密钥来加密客户端状态信息。通过在不同时刻使用不同的本地密钥,安全性被提高。每个本地密钥与一个不同的索引值相关联,该索引值是来自被称为安全性参数索引(SPI)的总的字段的一个子字段内容。在框302中,服务器从服务器的本地密钥集合中选出一个特定的本地密钥。例如,服务器可以是服务器104A-N或服务器106A-N之一。
在框304中,服务器基于客户端的经加密的状态信息和所述特定本地密钥计算出认证代码。客户端的状态信息包括客户端授权特性。客户端的状态信息还指示客户端的唯一身份。认证代码是服务器的身份、客户端的经加密状态信息和该特定本地密钥的组合的函数。该函数通常是用于防止敌方识别出受函数保护的原始文本的单向散列函数。
在框306中,利用该特定本地密钥,服务器对客户端的状态信息和寿命值的组合进行加密。该寿命值指示服务器应该将客户端的状态信息视为过期的未来时刻。该寿命值可以是一个绝对日期,也可以例如通过将一个常量值添加到服务器时钟的的当前值来计算。加密和认证代码的结果在这里一起被称为经加密的信息。
16在框308中,服务器既向客户端发送经加密的信息和服务器的身份, 还向客户端发送与该特定本地密钥相关的SPI。例如,客户端可以是客户
端IIOA-N或客户端112A-N之一。客户端存储经加密的信息、服务器的 身份以及SPI,并在服务器和经加密的信息之间建立关联和在经加密的信 息与对应于特定服务器的SPI之间建立关联。在客户端存储了该信息之 后,服务器可以腾出曾以明文形式和以加密形式存储客户端的状态信息的 服务器的存储器。
此后,当客户端向服务器发送请求时,客户端还发送与服务器相关的 经加密信息以及与服务器和经加密信息两者相关的SPI。在框310中,服 务器从客户端接收经加密的信息、服务器的身份、SPI和请求。
在框312中,服务器利用与SPI相关的本地密钥来核实客户端提供的 服务器的身份,提取出认证代码,并对接收自客户端的经加密的信息进行 解密。解密和认证代码的结果在这里一起被称为经解密的信息。
经解密的信息至少包含认证代码、客户端状态信息和寿命值。在框 314中,服务器利用服务器在框304中使用的相同函数来计算新的认证代 码。新的认证代码是包含在经解密的信息中的经加密客户端状态信息、服 务器的身份和特定本地密钥的组合的函数。
在框316中,服务器确定新的认证代码是否与包含在经解密的信息中 的认证代码匹配。如果认证代码匹配,则控制传递到框318。如果认证代 码不匹配,则控制传递到框324。以这种方式,服务器认证包含在经解密 的信息中的信息。
在框318中,通过将当前时间值与包含在经解密的信息中的寿命值相 比较,服务器判断包含在经解密的信息中的客户端状态信息是否已经过 期。如果当前时间值小于包含在经解密的信息中的寿命值,则控制传递到 框320。如果当前时间值不小于包含在经解密的信息中的寿命值,则控制 传递到框324。
在框320中,服务器基于包含在经解密的信息中的授权特性来判断在 框310中接收到的请求是否已被授权。如果该请求已被授权,则控制传递 到框322。如果请求未被授权,则控制传递到框324。在框322,服务器满足该请求。
可替换地,在框324中,服务器拒绝该请求。
在服务器已经满足或拒绝了请求之后,服务器可以腾出曾以明文形式 和以加密形式存储客户端的状态信息的服务器的存储器。因此,服务器可 以避免永久存储客户端状态信息(包括授权特性),而是仅仅临时、非连 续地存储客户端状态信息。
3.2更新存储在客户端上的经加密的客户端状态信息 在一个实施例中,客户端IIOA-N和客户端112A-N中的每一个被配 置为遵守下述关于经加密的客户端状态信息的规则。当客户端从服务器接 收到经加密的客户端状态信息时,客户端存储经加密的客户端状态信息。 例如,客户端可以在客户端的随机访问存储器(RAM)和/或客户端硬盘 驱动器上存储值。
当客户端从服务器接收到更新的经加密的客户端状态信息时,客户端 存储更新的经加密的客户端状态信息。客户端可以用最近接收自服务器的 经加密的客户端状态信息来替换先前存储的与服务器相关的经加密的客户 端状态信息。该规则允许服务器改变客户端的授权特性,刷新客户端和服 务器用于导出新的会话密钥的私密密钥,或者更新任意相关的客户端状态 信息。
当客户端从服务器接收到附加的经加密的客户端状态信息时,客户端 将附加的经加密的客户端状态信息附接到先前存储的与服务器相关的经加 密的客户端状态信息。该规则允许服务器向客户端的现有授权特性添加授 权特性,而无需客户端将先前存储的经加密的客户端状态信息发送到服务 器o
在一个实施例中,服务器指示客户端是应该用新接收到的经加密的客 户端状态信息替换当前存储的经加密的客户端状态信息,还是应该将新接 收到的经加密的客户端状态信息附接到当前存储的经加密的客户端状态信 息。
图4A和图4B是示出用于替换存储在客户端上的经加密的客户端状态信息的方法的一个实施例的流程图400。在框402中,服务器利用本地 密钥对客户端的状态信息进行加密。例如,服务器可以是服务器104A-N 或服务器106A-N之一。加密结果下面被称为第一经加密信息。
在框404中,服务器向客户端发送第一经加密信息。例如,客户端可 以是客户端IIOA-N或客户端112A-N之一。客户端存储第一经加密信息 并建立服务器和其自身之间的关联。
客户端向服务器发送第一请求和第一经加密信息。在框406中,服务 器从客户端接收第一请求和第一经加密信息。
在框408中,服务器利用本地密钥对在框406中接收自客户端的经加
密信息进行解密,并核实认证代码。解密结果在下面被称为第一经解密信 白
在框410中,服务器基于包含在第一经解密信息中的授权特性来确定 第一请求是否已被授权。如果第一请求已被授权,则控制传递到框412。 如果第一请求未经授权,则控制传递到框414。
在框412中,服务器满足第一请求。控制传递到框416。
可替换地,在框414中,服务器拒绝第一请求。服务器可以拒绝来自 客户端的所有后续请求。
在框416中,利用本地密钥,服务器加密针对客户端的更新的客户端 状态信息。加密结果在下面被称为第二经加密信息。
在框418中,服务器向客户端发送第二经加密信息。客户端存储第二 经加密信息,建立服务器和其自身之间的关联并利用第二经加密信息来更 新其状态。客户端对第二经加密信息的接收使第一经加密信息变为无效。 客户端可以用第二经加密信息替换第一经加密信息。
客户端向服务器发送第二请求和第二经加密信息。在框420中,服务 器从客户端接收第二请求和第二经加密信息。
在框422中,服务器利用本地密钥对在框420中接收自客户端的经加 密的信息进行解密并核实认证代码。解密结果在下面被称为第二经解密信 息。
在框424中,服务器基于包含在第二经解密信息中的授权特性来判断第二请求是否已被授权。如果第二请求已被授权,则控制传递到框426。
如果第二请求未经授权,则控制传递到框428。 在框426中,服务器满足第二请求。
可替换地,在框428中,服务器拒绝第二请求。服务器可以拒绝来自 客户端的所有后续请求。
图5A和图5B是示出用于修改存储在客户端上的经加密的客户端状 态信息的方法的一个实施例的流程图500。在框502中,服务器利用本地 密钥加密客户端的状态信息。例如,服务器可以是服务器104A-N或服务 器106A-N之一。加密结果下面被称为第一经加密信息。
在框504中,服务器向客户端发送第一经加密信息。例如,客户端可 以是客户端IIOA-N或客户端112A-N之一。客户端存储第一经加密信息 并建立服务器和第一经加密信息之间的关联。
客户端向服务器发送第一请求和第一经加密信息。在框506中,服务 器从客户端接收第一请求和第一经加密信息。
在框508中,服务器使用本地密钥对在框506中接收自客户端的经加 密的信息进行解密并核实认证代码。解密的结果下面被称为第一经解密信
在框510中,服务器基于包含在第一经解密信息中的授权特性判断第 一请求是否已被授权。如果第一请求已被授权,则控制传递到框512。如 果第一请求未经授权,控制则传递到框514。
在框512中,服务器满足第一请求。控制传递到框516。
可替换地,在框514中,服务器拒绝第一请求。服务器可以拒绝来自 客户端的所有后续请求。
在框516中,服务器利用本地密钥对针对客户端的附加客户端状态信 息进行加密。加密结果下面被称为第二经加密信息。
在框518中,服务器将第二经加密信息发送到客户端。客户端存储第 二经加密信息并建立服务器和其自身之间的关联,从而将第二加密信息与 第一加密信息一起存储。客户端对第二经加密信息的接收不会使第一经加 密信息无效。客户端不用第二经加密信息替换第一经加密信息。客户端向服务器发送第二请求、第一经加密信息和第二经加密信息。 在框520中,服务器从客户端接收第二请求、第一经加密信息和第二经加
悉{曰息。
在框522中,服务器利用本地密钥对在框520中接收自客户端的第一 经加密信息进行解密。解密结果下面被称为第二经解密信息。
在框524中,服务器利用本地密钥对在框520中接收自客户端的第二 经解密信息进行解密。解密结果下面被称为第三经解密信息。
在框526中,服务器基于第二和第三认证值中的有效认证代码、包含 在第二经解密信息中的授权特性和包含在第三经解密信息中的授权特性来 判断第二请求是否已被授权。如果第二请求已被授权,控制传递到框 528。如果第二请求未经授权,则控制传递到框530。
在框528中,服务器满足第二请求。
可替换地,在框530中,服务器拒绝第二请求。服务器可以拒绝来自 客户端的所有后续请求。
利用上述方法,服务器可以将新的授权特性发布给客户端或取消客户 端的现有授权特性。
以上参考流程图500所述的方法可针对客户端110A-N和客户端
112A-N中的多个客户端被使用。多个客户端中的每一个向给定服务器发
送包含该客户端的授权特性的经加密的信息。每个客户端的授权特性可能 不同于其他客户端的授权特性。
3.3消除相同客户端状态信息的冗余存储
在一个实施例中,多个服务器可以向一个客户端提供认证和授权服 务。如果每个服务器向客户端发布单独的经加密状态信息,客户端则可能 存储多个相同客户端状态信息的拷贝;其中每个拷贝是在不同服务器的本 地密钥下被加密的。如果客户端状态信息很大,则这种冗余性会浪费客户 端的大量存储资源。
为了避免相同客户端状态信息的这种冗余存储,客户端状态信息可以 利用通用服务器密钥来加密,该通用服务器密钥可被所有服务器访问,但不能被任何客户端访问。每个服务器可以利用该服务器的本地密钥来加密 该通用服务器密钥。当服务器向客户端发送经加密的客户端状态信息时, 服务器还发送利用该服务器的本地密钥加密了的通用服务器密钥。客户端 可以存储多个经加密的通用服务器密钥(一个密钥针对一个服务器),而 仅存储经加密的客户端状态信息的一个拷贝。对于每个服务器,客户端可 以建立服务器、该服务器的经加密的通用服务器密钥、以及经加密的客户 端状态信息之间的关联。因为每个经加密的通用服务器密钥大大小于经加 密的客户端状态信息,因此这种存储方法保留了客户端的存储资源。
当客户端向服务器发送请求时,客户端还发送与该服务器相关联的经 加密的通用服务器密钥和与经加密的通用服务器密钥相关联的经加密的客 户端状态信息。接收到经加密的通用服务器密钥的服务器可以对经加密的 通用服务器密钥解密,以获得经解密的通用服务器密钥。利用经解密的通 用服务器密钥,服务器可以解密经加密的客户端状态信息。
图6是示出用于消除相同客户端状态信息的冗余存储的方法的一个实
施例的流程图600。在框602中,客户端存储通过基于通用服务器密钥对
客户端的状态信息加密而生成的经加密的客户端状态信息。例如,客户端
IIOA可以存储服务器104A利用客户端IIOA无法访问的通用服务器密钥 加密后的经加密的客户端状态信息。
在框604中,客户端存储第一服务器通过利用与该第一服务器相关联 的第一本地密钥对通用服务器密钥加密而生成的第一经加密密钥信息。继 续该示例,服务器104A可以利用服务器104A的本地密钥对通用服务器 密钥加密以产生第一经加密密钥信息。服务器104A可以向客户端110A 发送第一经加密密钥信息。客户端IIOA可以接收第一经加密密钥信息并 存储第一经加密密钥信息。
在框606中,客户端建立第一服务器和第一经加密密钥信息之间的关 联。继续该示例,客户端110A可以建立第一经加密密钥信息和服务器 104A之间的关联。
在框608中,客户端存储第二服务器通过利用与第二服务器相关联的 第二本地密钥加密通用服务器密钥而生成的第二经加密密钥信息。继续该示例,服务器104B可以利用服务器104B的本地密钥对通用服务器密钥 加密,以产生第二经加密密钥信息。服务器104B可以向客户端IIOA发 送第二经加密密钥信息。客户端IIOA可以接收第二经加密密钥信息并存 储第二经加密密钥信息。
在框610中,客户端建立第二服务器和第二经加密密钥信息之间的关 联。继续该示例,客户端110A可以建立第二经加密密钥信息和服务器 104B之间的关联。
第一本地密钥可能不同于第二本地密钥。第一本地密钥可能无法被除 了第一服务器之外其他服务器所访问。第二本地密钥可能无法被除了第二 服务器之外其他服务器所访问。因此,在上述示例中,服务器104A可能 无法解密第二经加密密钥信息,而服务器104B可能无法解密第一经加密 密钥信息。
在框612中,客户端向第一服务器发送经加密的客户端状态信息和与 第一服务器相关联的经加密密钥信息。继续该示例,客户端IIOA可以向 服务器104A发送经加密的客户端状态信息和第一经加密密钥信息。利用 服务器104A的本地密钥,服务器104A可以对第一经加密密钥信息解密 以获得通用服务器密钥。使用通用服务器密钥,服务器104A可以对经加 密的客户端状态信息解密。
在框614中,客户端向第二服务器发送经加密的客户端状态信息和与 第二服务器相关联的经加密密钥信息。继续该示例,客户端IIOA可以向 服务器104B发送经加密的客户端状态信息和第二经加密密钥信息。利用 服务器104B的本地密钥,服务器104B可以解密第一经加密密钥信息以 获得通用服务器密钥。利用通用服务器密钥,服务器104B可以对经加密 的客户端状态信息解密。
结果,在上述示例中,客户端IIOA可以仅存储属于客户端IIOA的 经加密的客户端状态信息的一个拷贝。这节省了客户端IIOA的存储资 源。
3.4避免在中间设备上存储会话状态信息上述方法可能适用于避免在中间设备上存储会话状态信息。 一种这样 类型的中间设备被称为"应答器"。应答器是一种响应于第一设备对参与 与第二设备之间的会话的请求的设备。
应答器的一个示例是在题为"METHOD NAD APPARATUS FOR SECURELY EXCHANGING CRYPTOGRAPHIC IDENTITIES THROUGH A MUTUALLY TRUSTED INTERMEDIARY"的共同未决美国申请No. 10/411,964中描述的"引导者设备"。如该申请所述,引导者设备辅助 "请求者设备"和"权力设备"之间密码身份的安全交换,其中所述"请 求者设备"和"权力设备"都已经信任引导者设备。
如果应答器被要求存储会话状态信息,应答器则可能暴露于拒绝服务 攻击。为了避免在应答器上存储会话状态信息,可以对会话状态信息加 密。应答器可以将经加密的会话状态信息与第一和第二设备通过应答器向 彼此发送的其他信息一道转发。第一和第二设备可以将经加密的会话状态 信息与期望应答器处理的其他信息一道发送到应答器。第一和第二设备可 以向应答器返回第一和第二设备从应答器接收的任意经加密的会话状态信 息。因此,经加密的会话状态信息可以被称为"回声(echo)"。当应答 器接收到回声时,应答器可以检查回声上的保护。
回声可以包括指示相关会话何时过期的寿命值。应答器可以将该寿命 值与应答器时钟的当前值相比较以判断会话是否已经过期。
当使用密码协议时,应答器可以发布随机现时(nonce),然后存储
该现时以用于处理应答器未来将接收到的消息。例如,应答器可以在参与 质询/响应协议时发布随机现时。为了避免在应答器上存储现时,现时可 以被包括在回声中。其他信息(例如标识符、网络地址和用于选择协议选 项的数据)也可被包括在回声中。
3.5避免在服务器上存储共享私密密钥
客户端110A-N和客户端112A-N中的每一个可能关联到具有不同共 享私密密钥的服务器。客户端110A-N和客户端112A-N可以使用它们与 服务器服务器104A-N和服务器106A-N共享的私密密钥来相互导出会话密钥,该会话密钥可能被客户端用于对客户端发送到服务器104A-N和服
务器106A-N以及从服务器104A-N和服务器106A-N接收的消息进行加 密和解密。以这种方式,可以在客户端和服务器之间建立安全的"隧 道"。但是,为了让服务器104A-N和服务器106A-N建立这些安全隧 道,服务器104A-N和服务器106A-N还需要具有对共享私密密钥的访问 权限以使服务器也能够导出会话密钥。当存在很多客户端时,存储每个单 独的客户端的不同的共享私密密钥的操作所需要的存储器量实际上没有网 络元件可能拥有。
因此,根据一个实施例,当客户端IIOA-N或客户端112A-N中的任 意一个发起与服务器104A-N或服务器106A-N中的任意一个的通信时, 服务器指示客户端将客户端的经加密的状态信息发送到服务器。在响应 中,客户端将该客户端的经加密状态信息发送到服务器。客户端的经加密 的状态信息包含客户端的共享私密密钥。
服务器可以使用服务器的本地密钥来解密客户端的经加密的状态信息 并核实认证代码,从而获得客户端的共享私密密钥。服务器可以从客户端 的共享私密密钥导出一个或多个会话密钥。利用这一个或多个会话密钥, 服务器可以对发送到客户端和接收自客户端的消息进行加密和解密。当服 务器已经完成与客户端的通信时,服务器可以腾出服务器曾用于存储客户 端的共享私密密钥和任意相应会话密钥的存储器以用于其它目的。因此, 不要求服务器同时存储具有访问专用网络102的权限的所有客户端的不同 的共享私密密钥。
图7A和图7B是示出用于避免在服务器上存储共享私密密钥的方法 的一个实施例的流程图700。在一个实施例中,服务器104A-N和服务器 106A-N中的每一个存储不同的本地密钥集合。服务器可以使用服务器的 本地密钥集合中的任意本地密钥对客户端状态信息加密。通过在不同时刻 利用不同的本地密钥,安全性被提高。每个本地密钥与不同的SPI相关 联。在框702中,服务器从服务器的本地密钥集合中选出一个特定的本地 密钥。例如,服务器可以是服务器104A-N或服务器106A-N之一。
在框704中,服务器基于服务器的身份、客户端的经加密的状态信息和该特定本地密钥来计算认证代码。客户端的状态信息包括客户端的共享 私密密钥。客户端的状态信息还指示客户端的唯一身份。认证代码是服务 器的身份、客户端的经加密状态信息和该特定本地密钥的组合的函数。该 函数可被实现为用于防止敌方识别出受函数保护的原始文本的单向散列函 数。在框706中,利用该特定本地密钥,服务器对客户端的状态信息和寿 命值的组合加密。该寿命值指示服务器应该将客户端的状态信息视为过期 的未来时刻。该寿命值可以是一个绝对时间,也可以例如通过将一个恒定 值添加到服务器时钟的的当前值来计算。认证代码和加密的结果在这里一 起被称为经加密的信息。在框708中,服务器既向客户端发送经加密的信息和服务器的身份, 还向客户端发送与该特定本地密钥相关的SPI。例如,客户端可以是客户 端UOA-N或客户端112A-N之一。客户端存储经加密的信息和针对所指 定的服务器的SPI,并利用经加密的信息在其自身和服务器之间建立关 联。在客户端存储了该信息之后,服务器可以腾出服务器曾以明文形式和 以加密形式存储客户端的状态信息的存储器。当客户端发起与服务器的通信时,服务器可以指示客户端向服务器发 送经加密的信息。在响应中,客户端可以将经加密的信息和相关的SPI两 者发送到服务器。在框710中,服务器从客户端接收经加密的信息和 SPI。在框712中,利用与SPI相关联的本地密钥,服务器对接收自客户端的经加密的信息进行解密并核实认证代码。解密结果在这里被称为经解密的梓, 口、j i口 't;、 o经解密的信息至少包含认证代码、客户端状态信息和寿命值。在框 714中,服务器利用与服务器在框704中使用的函数相同的函数来计算新 的认证代码。新的认证代码是特定本地密钥和包含在经解密的信息中的客 户端经加密状态信息的组合的函数。在框716中,服务器判断新的认证代码是否与包含在经解密的信息中 的认证代码匹配。如果认证代码匹配,则控制传递到框718。如果认证代码不匹配,则控制传递到框720。以这种方式,服务器认证包含在经解密 的信息中的信息。在框718中,通过将当前时间值与包含在经解密的信息中的寿命值相比较,服务器判断包含在经解密的信息中的客户端状态信息是否已经过 期。如果当前时间值小于包含在经解密的信息中的寿命值,则控制传递到框722。如果当前时间值不小于包含在经解密的信息中的寿命值,则控制 传递到框724。在框720中,服务器拒绝接收自客户端的经加密的信息。服务器可以 拒绝从客户端发送的所有后续数据。客户端可以从共享的私密密钥导出一个或多个会话密钥。利用这样的 会话密钥,客户端可以对消息加密并将经加密的消息发送到服务器。在框 722中,服务器从客户端接收已经利用从共享私密密钥导出的密钥被加密 的消息。包含在经解密的信息中的客户端状态信息包括共享私密密钥。在框 724中,服务器从共享私密密钥导出一个或多个会话密钥。在框726中,利用这样的会话密钥,服务器对从客户端发送的经加密 的消息解密。利用从共享私密密钥导出的会话密钥,服务器可以加密另一 消息并将经加密的消息发回客户端。因此,利用从共享私密密钥导出的会 话密钥,客户端和服务器可以对它们彼此传输的消息进行加密和解密,从 而建立安全的"隧道"。在客户端和服务器完成通信之后,服务器可以腾出服务器曾以明文形 式和加密形式存储客户端的状态信息的存储器。因此,服务器可以避免永 久存储客户端状态信息(包括共享私密密钥),而是仅仅临时、非连续地 存储客户端状态信息。以上参考流程图700所描述的方法对于客户端110A-N和客户端 112A-N中的多个客户端也可使用。多个客户端中的每一个可以向给定服 务器发送包含针对该客户端的共享私密密钥的经加密信息。每个客户端的 共享私密密钥不同于其他客户端的共享私密密钥。)可以从一个位置漫游到 另一位置。当无线客户端离开一个位置而进入另一位置时,无线客户端可 能试图通过不同服务器访问同一专用网络。例如,在一个位置,客户端112A可能通过服务器106A访问专用网络102。如果服务器106A具有客 户端U2A的共享私密密钥,服务器106A则可以通过安全隧道与客户端 112A通信。但是,如果客户端112A移动到服务器106B服务而非服务器 106A服务的区域,客户端112A则可能试图通过服务器106B而非服务器 106A来访问专用网络102。在现有方法下,服务器106B可能不具有客户 端112A的共享私密密钥。在此情况下,服务器106B将无法通过安全隧 道与客户端112A通信。幸运的是,根据一个实施例,多个服务器可以存储同样的本地密钥。 当一组服务器具有对同样本地密钥的访问权限时,如果客户端的状态信息 是利用本地密钥来加密的,则该组中的每个服务器可以对包含客户端状态 信息(包括客户端的共享私密密钥)的经加密的信息进行解密。例如,根据一个实施例,所有服务器106A-N可能存储相同的一个或 一组本地密钥。服务器106A可以利用这样的本地密钥对客户端112A的 客户端状态信息加密,然后将经加密的客户端状态信息发送到客户端 112A。客户端112A可以存储经加密的客户端状态信息。当客户端112A 需要与服务器106A-N中的任意一个通信时,客户端112A可以将同样的 经加密的客户端状态信息发送到该服务器。由于所有服务器服务器106A-N都具有对被用于加密经加密的客户端状态信息的本地密钥的访问权限, 因此服务器106A-N中的任意一个可以利用本地密钥对接收到的经加密的 客户端状态信息进行解密。因此,服务器106A-N中的任意一个可以获得 客户端112A的共享的私密密钥并建立与客户端112A之间的安全隧道。当新的服务器被添加到服务器106A-N时,新服务器此时不需要被提 供以系统IOO中的所有客户端的共享私密密钥。相反,新服务器可被提供 以本地密钥或本地密钥的集合。此后,新服务器可以按照需要从发起与新 服务器之间的通信的客户端获得经加密的客户端状态信息。因为每个客户端存储其自己的经加密的客户端状态信息,因此在客户端和服务器已经完 成彼此之间的通信之后,没有服务器需要继续存储任意客户端的状态信 阜图8是示出用于在多个服务器间共享经加密的客户端状态信息的方法 的一个实施例的流程图800。在框802中,客户端存储通过利用本地密钥 对包括共享私密密钥的客户端状态信息进行加密而生成的经加密的客户端 状态信息。例如,客户端112A可以存储利用本地密钥加密的经加密的客 户端状态信息,该本地密钥可被服务器106A-N中的每一个访问,而不能 被客户端112A访问。经加密的客户端状态信息可以包括客户端112A的 共享私密密钥。在框804中,客户端将经加密的客户端状态信息发送到存储本地密钥 的第一服务器。继续该示例,客户端112A可以将经加密的客户端状态信 息发送到服务器106A。服务器106A可以利用本地密钥对经加密的客户端 状态信息解密并从包含在客户端状态信息中的共享私密密钥导出一个或多 个会话密钥。服务器106A可以利用这样的会话密钥对消息加密并将经加 密的消息发送到客户端112A。客户端112A可以接收来自服务器106A的 经加密的消息。客户端112A可以从同一共享私密密钥导出同样的会话密 钥并对经加密的消息解密。在框806中,客户端将经加密的客户端状态信息发送到存储本地密钥 的第二服务器。继续该示例,客户端112A可以将经加密的客户端状态信 息发送到服务器106B。服务器106B可以利用本地密钥对经加密的客户端 状态信息解密,并从包含在客户端状态信息中的共享私密密钥导出一个或 多个会话密钥。服务器106B可以利用这样的会话密钥对消息加密并发送 经加密的消息到客户端112A。客户端112A可以接收来自服务器106B的 经加密消息。客户端112A可以从同一共享私密密钥导出相同的会话密钥 并对经加密的消息解密。因此,在上述示例中,所有服务器106A-N可以建立与客户端112A 之间的安全通信隧道。上述示例可应用到任意客户端112A-N。的服 务器存储。
传输安全性层(TLS)协议在因特网工程任务组(IETF)请求注释 (RFC) 2245中有所描述。对TLS协议的扩展在IETF RFC 3546中被描 述。如上所述,TLS协议扩展可被用于避免在服务器上存储客户端状态信 息。另外,下述方法消除了对公共密钥认证机制的需求。根据一个实施 例,TLS协议可被用于以密码方式保护客户端和多个服务器之间的可扩展 的认证协议(EAP)连接。EAP在IETF RFC 2284中被描述。
3.7.1 EAP-FAST概况
根据一个实施例,提供了一种可扩展构架以允许客户端和服务器彼此 安全地通信。该可扩展构架这里被称为"EAP-FAST" 。 EAP-FAST通过 使用共享私密密钥建立安全隧道来实现相互认证。隧道可被用于保护相对 较弱的认证技术(例如基于密码的那些认证技术)。共享私密密钥可被称 为"受保护访问凭证"密钥(PAC密钥)。PAC密钥可被用于相互认证 建立了安全隧道的客户端和服务器。
EAP-FAST包含三个阶段:预备阶段、隧道建立阶段和认证阶段。下 面描述每个阶段。
在预备阶段中,服务器利用客户端无法访问的本地密钥对PAC密钥 加密。所产生的经加密的信息被称为"PAC模糊体",这是因为缺乏本地 密钥的客户端无法解密该经加密的信息。PAC密钥和PAC模糊体两者都 包括在PAC中。PAC可以包括附加信息,例如生成PAC模糊体和SPI的 服务器的身份。SPI可以指示使用哪个本地密钥和哪种加密算法来生成 PAC模糊体。
客户端和服务器共同参与经认证的密钥协定,以便建立受保护隧道。 例如,经认证的密钥协定可以遵循Diffie-Hellman密钥协定协议。Diffie-Hellman 密钥协定协议在W. Diffie和M.E.Hellman在IEEE Transactions On Information Theory, vol. 22,第644-654页中发表的文章"New Directions In Cryptography"中有所描述。客户端向服务器认证其自身。在客户端已经向服务器认证其自身之后,服务器通过作为经认证的密钥协定的结果建 立的受保护隧道向客户端发送客户端的PAC。
在替换实施例中,PAC可使用其他"带外"机制而被提供给客户端。
例如,用户可以从服务器或信息技术(IT)管理员直接获得PAC并将 PAC存储在客户端上。
在隧道建立阶段中,客户端和服务器利用PAC来彼此认证。客户端 向服务器发送PAC模糊体。利用本地密钥,服务器对PAC模糊体解密以 获得客户端的PAC密钥。利用该PAC密钥,客户端和服务器建立隧道密 钥。客户端和服务器使用隧道密钥来以密码方式保护在客户端和服务器之 间发送的消息。受隧道密钥保护的消息可被称为位于隧道会话内。
在认证阶段期间,客户端和服务器参与隧道会话内的认证协议。认证 协议还可以建立其他密钥材料,该密钥材料被以密码方式绑定到隧道会话 密钥以确保会话完整性。在认证协议期间,客户端和服务器可以相互导出 一个或多个会话密钥。客户端和服务器可以使用这些会话密钥将认证协议 会话绑定到隧道建立会话以确保会话完整性。
在EAP-FAST中,信息以分组形式传输,这里被称为"EAP-FAST分 组"。EAP-FAST分组被封装在EAP分组内,EAP分组通过诸如远程认 证拨入用户服务(RADIUS)协议和直径(Diameter)协议之类的运载协 议来运载。EAP-FAST分组封装TLS分组。TLS分组封装认证信息。因 此,EAP-FAST消息使用分层模型,其中每一层封装其下面那一层。
TLS分组包含EAP-Type-Length-Value (TLV)对象。EAP-TLV对象 在客户端和服务器之间运载参数。
3.7.2隧道建立阶段
在一个实施例中,在隧道建立阶段,服务器和客户端协商EAP参 数。服务器可以向客户端发送EAP请求/身份分组,而客户端可以以EAP 响应/身份分组作出响应。EAP响应/身份分组包含客户端的相关用户名。 客户端可以使用匿名用户名来保护客户端的身份。
在服务器接收到客户端的身份并确定EAP-FAST认证将会发生之后,EAP服务器向客户端发送EAP-FAST/开始分组。EAP-FAST/开始分组是 一种EAP请求分组,其中的EAP类型被设置为"EAP-FAST"而"开 始"位被置位。EAP-FAST/开始分组还包括向客户端标识服务器的服务器 身份。客户端接收EAP-FAST/开始分组并在响应中发送EAP响应分组到 服务器。EAP响应分组的EAP类型被设置为"EAP-FAST"。
EAP响应分组的数据字段包含经EAP-FAST封装的TLS ClientHello 握手消息。在该消息的扩展数据字段中,ClientHdk)消息包含客户端的 PAC模糊体。ClientHelk)消息还包含客户端的随机现时。在一个实施例 中,客户端可以缓存客户端与之通信的每个不同服务器的不同PAC模糊 体。每个PAC模糊体可能与不同的服务器身份相关联。从多个PAC模糊 体中,客户端可以选出与包含在EAP-FAST/开始分组中的服务器身份相 关联的PAC模糊体,并在ClientHdlo消息的扩展数据字段中将该PAC模 糊体发送到服务器。
服务器接收封装了 TLS ClientHello握手消息的EAP-FAST分组。服 务器从ClientHello消息的扩展数据字段中获得PAC模糊体。服务器利用 被用于加密PAC模糊体的本地密钥对PAC模糊体解密。服务器从客户端 的随机现时、服务器的随机现时和包含在PAC模糊体中的共享私密密钥 导出隧道密钥。服务器使用隧道密钥来计算嵌入在TLS完成消息中的消 息摘要。
响应于从客户端接收到EAP-FAST分组,服务器向客户端发送EAP 类型被设置为"EAP-FAST"的EAP请求分组。EAP请求分组的数据字段 至少封装了 TLS ServerHello消息和TLS完成消息。ServerHello消息包含 被用于导出隧道密钥的服务器的随机现时。TLS完成消息包含已根据所协 商的算法、密钥和私密被保护的消息。
客户端接收包含TLS ServerHello消息的EAP请求分组。客户端从包 含在ServerHello消息中的服务器的随机现时、客户端的随机现时和共享 私密密钥(即PAC密钥)导出隧道密钥。客户端生成其消息摘要并将其 嵌入TLS完成消息中。客户端以TLS完成消息响应于服务器。
此后,在认证阶段期间,客户端和服务器可以利用隧道会话密钥对消
32息加密和解密。
图9是示出客户端可以用以向服务器传送客户端的PAC模糊体的方
法的一个实施例的流程图900。在框902中,服务器利用客户端无法访问 的本地密钥对客户端的状态信息进行加密,从而生成PAC模糊体。客户 端的状态信息(例如PAC模糊体)包括共享的私密密钥。
PAC模糊体可以通过多种机制中的任意机制被存储在客户端上。在发 起与服务器之间的通信的情况下,客户端向服务器发送PAC模糊体。 PAC模糊体被包含在TLS握手协议扩展ClientHdlo消息的扩展数据字段 中。在框904中,服务器从客户端接收在扩展的ClientHdlo消息的扩展数 据字段中包含PAC模糊体的TLS握手协议扩展ClientHello消息。
在框906中,利用本地密钥,服务器对接收自客户端的PAC模糊体 解密,从而获得共享的私密密钥。客户端和服务器可以从共享的私密密钥 导出一个或多个密钥。客户端和服务器可以利用这样导出的密钥对消息加 密和解密。因此,利用对TLS握手协议的扩展,服务器可以接收客户端 的状态信息并基于客户端的状态信息建立与客户端之间的安全通信信道。 由于客户端存储了客户端的状态信息,因此服务器无需永久而连续地存储 客户端的状态信息。因为客户端的状态信息利用客户端无法访问的本地密 钥被加密,因此客户端无法修改客户端的状态信息。客户端的状态信息像 客户端的状态信息被存储在服务器上而非客户端上时一样安全。
4.0实现机制——硬件概况
图IO是示出可以在其上实现本发明的实施例的计算机系统1000的框 图。该优选实施例是利用运行在计算机或诸如提供认证、授权和计费 (AAA)服务的路由器设备之类的网络元件上的一个或多个计算机程序 来实现的。因此,在该实施例中,计算机系统1000是路由器。
计算机系统1000包括总线1002或其它用于传输信息的机制,以及与 总线1002耦合的用于处理信息的处理器1004。计算机系统1000还包括 耦合到总线1002的用于存储信息或将由处理器1004执行的指令的随机访 问存储器(RAM)、闪存或其它动态存储设备。主存储器1006还可被用于在执行将被处理器1004执行的指令期间存储临时变量或其它中间信
息。计算机系统1000还包括耦合到总线1002的用于存储用于处理器 1004的指令和静态信息的只读存储器(ROM) 1008或其他静态存储设 备。存储设备1010 (例如磁盘、闪存或光盘)被提供并耦合到总线 1002,以用于存储信息和指令。
通信接口 1018可被耦合到总线1002以用于向处理器1004传送信息 和命令选择。接口 1018是诸如RS-232或RS-422接口之类的传统串行接 口。外部终端1012或其他计算机系统连接到计算机系统IOOO并利用接口 1014向其提供命令。运行在计算机系统1000中的固件或软件提供终端接 口或基于字符的命令接口,以使外部命令能够被赋予计算机系统。
交换系统1016被耦合到总线1002并具有到一个或多个外部网络元件 的输入接口 1014和输出接口 1019。外部网络元件可以包括耦合到一个或 多个主机1024的本地网络1022或具有一个或多个服务器1030的诸如因 特网之类的全球网络1028。交换系统1016根据公知的预定协议和规范将 到达输入接口 1014的信息流量交换到输出接口 1019。例如,交换系统 1016可以与处理器1004协作确定到达输入接口 1014的数据分组的目的地 并利用输出接口 1019将其发送到正确的目的地。目的地可以包括主机 1024、服务器1030、其他最终台站或在本地网络1022或因特网1028上 的其他路由和交换设备。
本发明涉及用于避免在计算机系统1000上存储客户端状态的计算机 系统1000的使用。根据本发明的一个实施例,计算机系统1000响应于处 理器1004执行包含在主存储器1006中的一个或多个指令的一个或多个序 列来提供这样的更新。这样的指令可以从诸如存储设备1010之类的另一 计算机可读介质读取到主存储器1006中。包含在主存储器1006中的指令 序列的执行致使处理器1004执行这里所描述的过程步骤。在多处理布置 中的一个或多个处理器也可被采用以执行包含在主存储器1006中的指令 序列。在替换实施例中,硬连线的电路可被用于取代软件指令或与软件指 令相结合来实现本发明。因此,本发明的实施例并不局限于硬件电路和软 件的任意特定组合。这里使用的术语"计算机可读介质"指的是参与向处理器1004提供 指令以用于执行的操作的任何机制。这样的介质可以采取很多形式,包括 但不局限于,非易失性介质、易失性介质和传输介质。非易失性介质例如 包括诸如存储设备1010之类的光盘或磁盘。易失性介质包括动态存储
器,例如主存储器1006。传输介质包括同轴电缆、铜电线和光纤,其中 包括包含总线1002的电线。传输介质还可以采取声波或光波的形式,例
如在无线电波和红外数据通信期间生成的那些。
计算机可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带或任
意其他磁介质、CD-ROM、任意其他光介质、打孔卡、纸带、具有孔形图 案的任意其他物理介质、RAM、 PROM禾Q EPROM、 FIASH-EPROM、任
意其他存储器芯片或卡带、下面将描述的载波或任意其他计算机可以从其 读取的介质。
在向处理器1004运载用于执行的一个或多个指令的一个或多个序列 时,可以涉及各种形式的计算机可读介质。例如,指令可能最初在远程计 算机的磁盘上承载。远程计算机可以将指令加载到其动态存储器中并利用 调制解调器通过电话线来发送指令。位于计算机系统1000本地的调制解 调器可以接收电话线上的数据并使用红外发射器将数据转换成红外信号。 耦合到总线1002的红外检测器可以接收红外信号中运载的数据并将数据 放置在总线1002上。总线1002将数据运载到主存储器1006中,处理器 1004从主存储器1006获取并执行指令。由主存储器1006接收到的指令可 以可选地在由处理器1004执行前或执行后被存储在存储设备1010上。
通信接口 1018还提供耦合到连接到本地网络1022的网络链路1020 的双向数据通信。例如,通信接口 1018可以是综合业务数字网络 (ISDN)或调制解调器,以向相应类型的电话线提供数据通信连接。作 为另一示例,通信接口 1018可以是局域网(LAN)卡,用于提供到可兼 容的LAN的数据通信连接。无线链路也可以被实现。在任意这样的实现 方式中,通信接口 1018发送和接收运载代表各种类型信息的数字数据流 的电、电磁或光信号。
网络链路1020通常通过一个或多个网络提供到其它数据设备的数据到主机计算机 1024或由因特网服务提供商(ISP) 1026操作的数据装备的连接。ISP 1026又通过现在一般称为"因特网"1028的世界范围的分组数据通信网 络来提供数据通信服务。本地网络1022和因特网1028都是用运载数字数 据流的电、磁和光信号。通过各种网络的信号和网络链路1020上的信号 和通过通信接口 1018的信号运载去往或来自计算机系统1000的数字数 据,这些信号都是传输信息的载波的示例性形式。
计算机系统IOOO可以通过网络、网络链路1020和通信接口 1080来 发送消息和接收数据,包括程序代码。在因特网示例中,服务器1030可 能通过因特网1028、 ISP 1026、本地网络1022和通信接口 1018来发送针 对应用程序所请求的代码。如这里所述,根据本发明, 一种这样下载的应 用用于避免在服务器上存储客户端状态。
处理器1004可以执行它接收到的和/或存储在存储设备1010或其他非 易失性存储设备以待随后执行的接收到的代码。以这种方式,计算机系统 IOOO可以以载波形式获得应用代码。
5.0扩展和替换
在之前的说明书中,已经参考本发明的特定实施例描述了本发明。但 是,将会发现,在不脱离本发明更宽精神和范围的情况下,可以对其执行 各种修改和改变。因此,说明书和附图将被看作示例性的,而非限制性 的。