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

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


在附图中以示例方式而非限制方式示出了本发明,并且附图中的相似标号指示类似元素,在附图中图1是示出客户端状态信息被主要存储在客户端上而非服务器上的系统的概况的框图;图2是示出用于避免客户端状态信息存储在服务器上的方法的一个实施例的高级概况的流程图;图3A和图3B是示出用于避免客户端授权特性存储在服务器上的方法的一个实施例的流程图;图4A和图4B是示出用于替换存储在客户端上的经加密客户端状态信息的方法的一个实施例的流程图;图5A和图5B是示出用于修改存储在客户端上的经加密客户端状态信息的方法的一个实施例的流程图;图6是示出用于消除相同客户端状态信息的冗余存储的方法的一个实施例的流程图;图7A和图7B是示出用于避免共享私密密钥存储在服务器上的方法的一个实施例的流程图;图8是示出用于在多个服务器间共享经加密的客户端状态信息的方法的一个实施例的流程图;图9是示出客户端可用以向服务器传输客户端的PAC Opaque的方法的一个实施例的流程图;以及图10是示出可在其上实现实施例的计算机系统的框图。
具体实施例方式
用于避免在服务器上存储客户端状态的方法和装置被描述。在以下描述中,出于说明的目的,提出了多个具体细节,以便提供对本发明的全面理解。但是,将会发现,本领域技术人员无需这些具体细节也可以实现本发明。在其他实例中,以框图形式示出了公知的结构和设备,以避免不必要地模糊本发明。
这里根据以下大纲来描述实施例1.0总体概况2.0结构和功能概况3.0实现示例3.1避免在服务器上存储授权特性3.2更新存储在客户端上的经加密客户端状态信息3.3消除相同客户端状态信息的冗余存储3.4避免在中间设备上存储会话状态信息3.5避免在服务器上存储共享私密密钥3.6在多个服务器间共享客户端状态信息3.7利用传输层安全性协议(TLS)扩展来避免客户端状态信息的服务器存储3.7.1EAP-FAST概况3.7.2隧道建立阶段4.0实现机制——硬件概况5.0扩展和替换---1.0总体概况在本发明中实现了前述背景技术中标识的需求以及将从以下描述中发现的其他需求和目的,本发明在其一个方面中包括用于避免在服务器上存储客户端状态信息的方法。基于客户端不知道的本地密钥,服务器对客户端的状态信息进行加密。客户端的状态信息例如可以包括客户端的认证凭证、客户端的授权特性和在服务器与客户端之间共享以使客户端和服务器可以相互导出新的会话密钥的私密密钥。
利用多种机制中的任意一种,经加密的客户端状态信息被提供给客户端。例如,服务器可以通过网络向客户端发送经加密的状态信息。因为客户端不具有本地密钥,因此客户端无法对经加密的状态信息解密。因此,经加密的信息对客户端来说是“模糊的(opaque)”。这种模糊性例如使客户端无法改变客户端的授权特性。
客户端存储客户端的经加密的状态信息。在客户端存储了经加密的客户端状态信息之后,服务器不再需要存储客户端的状态信息。因此,服务器可以腾出曾存储客户端的状态信息的存储器。服务器可以将存储器用于其它目的。
当服务器需要客户端的状态信息时,例如当服务器需要导出会话密钥或需要确定客户端的授权特性时,服务器可以向客户端请求客户端的经加密的状态信息。响应于服务器的请求,客户端可以向服务器发送客户端之前存储的经加密的状态信息。可替换地,即使不存在来自服务器的请求,客户端也可以在客户端发起与服务器的通信时将客户端的经加密的状态信息发送到服务器。
在接收到来自客户端的经加密的客户端状态信息之后,服务器利用本地服务器密钥来解密客户端状态信息。在服务器已解密出客户端状态信息之后,服务器可以将客户端状态信息用于服务器通常将客户端状态信息用于的任何目的。当服务器使用完客户端状态信息时,服务器可以再一次腾出存储客户端状态信息的存储器。因为每个客户端以加密形式存储了客户端本身的状态信息,因此服务器无需永久存储任何客户端的状态信息。
在其他方面,本发明包含被配置用于执行前述步骤的计算机装置和计算机可读介质。
2.0结构和功能概况图1是示出系统100的概况的框图,其中客户端状态信息主要存储在客户端而非服务器上。系统100包括专用网络102、服务器104A-N、服务器106A-N、公共网络108、客户端110A-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或客户端110A-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通信。
客户端110A-N和客户端112A-N可以是个人计算机或无盘工作站。客户端110A-N和客户端112A-N可以是诸如膝上型计算机之类的移动设备。客户端110A-N可以通信地耦合到公共网络108。另外,客户端110A-N中的一个或多个可能直接耦合到服务器104A-N中的一个或多个。
客户端110A-N和客户端112A-N中的每一个对应于不同的客户端状态信息。客户端的状态信息例如可以包括客户端的认证凭证、客户端的授权特性和客户端与服务器相互使用以导出新的会话密钥的共享私密密钥。客户端的认证凭证可以指示客户端的唯一身份。客户端的认证凭证可以包括用户名和密码。客户端的授权特性可以指示允许客户端在专用网络102内访问的资源。客户端的授权特性可以指示允许客户端在专用网络102内对资源执行的操作。
服务器104A-N和服务器106A-N中的每一个存储任意客户端110A-N和客户端112A-N都不知道的本地密钥。在一个实施例中,每个服务器的本地密钥不同于所有其他服务器的本地密钥。在另一实施例中,每个服务器的本地密钥是相同的。利用它们的本地密钥,服务器104A-N和服务器106A-N对与客户端110A-N和客户端112A-N相对应的客户端状态信息进行加密。利用多种机制中的任意一种,每个客户端的经加密的客户端状态信息被提供给该客户端。
客户端110A-N和客户端112A-N中的每一个存储该客户端的经加密的状态信息。在一个实施例中,客户端110A-N和客户端112A-N在经加密的客户端状态信息与对该客户端状态信息进行了加密的服务器之间建立关联。例如,服务器104A和服务器104B都可以加密客户端110A的客户端状态信息。客户端110A可以分开存储由服务器104A加密的经加密的客户端状态信息和由服务器104B加密的经加密的客户端状态信息。客户端110A可以分开建立服务器104A和经服务器104A加密的经加密的状态信息之间的关联,以及服务器104B和经服务器104B加密的经加密的状态信息之间的关联。
由于客户端110A-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的本地密钥对客户端110A的客户端状态信息进行加密。另外,服务器104A也可以利用服务器104A的本地密钥对客户端110B的客户端状态信息进行加密。
客户端110A和110B的经加密的客户端状态信息可以被分别提供到客户端110A和110B。在接收到经加密的客户端状态信息之后,客户端110A和110B可以存储经加密的客户端状态信息。
在框204中,服务器从客户端接收客户端的经加密的状态信息。继续该示例,服务器104A可以从客户端110A接收客户端110A的经加密的客户端状态信息。另外,服务器104A可以从客户端110B接收客户端110B的经加密的客户端状态信息。
在框206中,服务器利用服务器的本地密钥对客户端的经加密的状态信息解密。继续该示例,服务器104A可以利用服务器104A的本地密钥对接收自客户端110A的经加密的客户端状态信息进行解密。另外,服务器104A可以利用服务器104A的本地密钥对接收自客户端110B的经加密的客户端状态信息进行解密。服务器104A可以以与服务器104A在本地连续存储客户端状态信息的情况下服务器104A使用客户端状态信息的方式相同的方式来使用经解密的客户端110A和110B的客户端状态信息。但是,服务器104A不需要连续地存储任意客户端状态信息。
下面将描述前述一般方法的详细示例性实现方式。
3.0实现示例3.1避免在服务器上存储授权特性根据一个实施例,当客户端110A-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中,利用该特定本地密钥,服务器对客户端的状态信息和寿命值的组合进行加密。该寿命值指示服务器应该将客户端的状态信息视为过期的未来时刻。该寿命值可以是一个绝对日期,也可以例如通过将一个常量值添加到服务器时钟的的当前值来计算。加密和认证代码的结果在这里一起被称为经加密的信息。
在框308中,服务器既向客户端发送经加密的信息和服务器的身份,还向客户端发送与该特定本地密钥相关的SPI。例如,客户端可以是客户端110A-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更新存储在客户端上的经加密的客户端状态信息在一个实施例中,客户端110A-N和客户端112A-N中的每一个被配置为遵守下述关于经加密的客户端状态信息的规则。当客户端从服务器接收到经加密的客户端状态信息时,客户端存储经加密的客户端状态信息。例如,客户端可以在客户端的随机访问存储器(RAM)和/或客户端硬盘驱动器上存储值。
当客户端从服务器接收到更新的经加密的客户端状态信息时,客户端存储更新的经加密的客户端状态信息。客户端可以用最近接收自服务器的经加密的客户端状态信息来替换先前存储的与服务器相关的经加密的客户端状态信息。该规则允许服务器改变客户端的授权特性,刷新客户端和服务器用于导出新的会话密钥的私密密钥,或者更新任意相关的客户端状态信息。
当客户端从服务器接收到附加的经加密的客户端状态信息时,客户端将附加的经加密的客户端状态信息附接到先前存储的与服务器相关的经加密的客户端状态信息。该规则允许服务器向客户端的现有授权特性添加授权特性,而无需客户端将先前存储的经加密的客户端状态信息发送到服务器。
在一个实施例中,服务器指示客户端是应该用新接收到的经加密的客户端状态信息替换当前存储的经加密的客户端状态信息,还是应该将新接收到的经加密的客户端状态信息附接到当前存储的经加密的客户端状态信息。
图4A和图4B是示出用于替换存储在客户端上的经加密的客户端状态信息的方法的一个实施例的流程图400。在框402中,服务器利用本地密钥对客户端的状态信息进行加密。例如,服务器可以是服务器104A-N或服务器106A-N之一。加密结果下面被称为第一经加密信息。
在框404中,服务器向客户端发送第一经加密信息。例如,客户端可以是客户端110A-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中,服务器向客户端发送第一经加密信息。例如,客户端可以是客户端110A-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中,客户端存储通过基于通用服务器密钥对客户端的状态信息加密而生成的经加密的客户端状态信息。例如,客户端110A可以存储服务器104A利用客户端110A无法访问的通用服务器密钥加密后的经加密的客户端状态信息。
在框604中,客户端存储第一服务器通过利用与该第一服务器相关联的第一本地密钥对通用服务器密钥加密而生成的第一经加密密钥信息。继续该示例,服务器104A可以利用服务器104A的本地密钥对通用服务器密钥加密以产生第一经加密密钥信息。服务器104A可以向客户端110A发送第一经加密密钥信息。客户端110A可以接收第一经加密密钥信息并存储第一经加密密钥信息。
在框606中,客户端建立第一服务器和第一经加密密钥信息之间的关联。继续该示例,客户端110A可以建立第一经加密密钥信息和服务器104A之间的关联。
在框608中,客户端存储第二服务器通过利用与第二服务器相关联的第二本地密钥加密通用服务器密钥而生成的第二经加密密钥信息。继续该示例,服务器104B可以利用服务器104B的本地密钥对通用服务器密钥加密,以产生第二经加密密钥信息。服务器104B可以向客户端110A发送第二经加密密钥信息。客户端110A可以接收第二经加密密钥信息并存储第二经加密密钥信息。
在框610中,客户端建立第二服务器和第二经加密密钥信息之间的关联。继续该示例,客户端110A可以建立第二经加密密钥信息和服务器104B之间的关联。
第一本地密钥可能不同于第二本地密钥。第一本地密钥可能无法被除了第一服务器之外其他服务器所访问。第二本地密钥可能无法被除了第二服务器之外其他服务器所访问。因此,在上述示例中,服务器104A可能无法解密第二经加密密钥信息,而服务器104B可能无法解密第一经加密密钥信息。
在框612中,客户端向第一服务器发送经加密的客户端状态信息和与第一服务器相关联的经加密密钥信息。继续该示例,客户端110A可以向服务器104A发送经加密的客户端状态信息和第一经加密密钥信息。利用服务器104A的本地密钥,服务器104A可以对第一经加密密钥信息解密以获得通用服务器密钥。使用通用服务器密钥,服务器104A可以对经加密的客户端状态信息解密。
在框614中,客户端向第二服务器发送经加密的客户端状态信息和与第二服务器相关联的经加密密钥信息。继续该示例,客户端110A可以向服务器104B发送经加密的客户端状态信息和第二经加密密钥信息。利用服务器104B的本地密钥,服务器104B可以解密第一经加密密钥信息以获得通用服务器密钥。利用通用服务器密钥,服务器104B可以对经加密的客户端状态信息解密。
结果,在上述示例中,客户端110A可以仅存储属于客户端110A的经加密的客户端状态信息的一个拷贝。这节省了客户端110A的存储资源。
3.4避免在中间设备上存储会话状态信息上述方法可能适用于避免在中间设备上存储会话状态信息。一种这样类型的中间设备被称为“应答器”。应答器是一种响应于第一设备对参与与第二设备之间的会话的请求的设备。
应答器的一个示例是在题为“METHOD NAD APPARATUS FORSECURELY EXCHANGING CRYPTOGRAPHIC IDENTITIES THROUGHA 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还需要具有对共享私密密钥的访问权限以使服务器也能够导出会话密钥。当存在很多客户端时,存储每个单独的客户端的不同的共享私密密钥的操作所需要的存储器量实际上没有网络元件可能拥有。
因此,根据一个实施例,当客户端110A-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。例如,客户端可以是客户端110A-N或客户端112A-N之一。客户端存储经加密的信息和针对所指定的服务器的SPI,并利用经加密的信息在其自身和服务器之间建立关联。在客户端存储了该信息之后,服务器可以腾出服务器曾以明文形式和以加密形式存储客户端的状态信息的存储器。
当客户端发起与服务器的通信时,服务器可以指示客户端向服务器发送经加密的信息。在响应中,客户端可以将经加密的信息和相关的SPI两者发送到服务器。在框710中,服务器从客户端接收经加密的信息和SPI。
在框712中,利用与SPI相关联的本地密钥,服务器对接收自客户端的经加密的信息进行解密并核实认证代码。解密结果在这里被称为经解密的信息。
经解密的信息至少包含认证代码、客户端状态信息和寿命值。在框714中,服务器利用与服务器在框704中使用的函数相同的函数来计算新的认证代码。新的认证代码是特定本地密钥和包含在经解密的信息中的客户端经加密状态信息的组合的函数。
在框716中,服务器判断新的认证代码是否与包含在经解密的信息中的认证代码匹配。如果认证代码匹配,则控制传递到框718。如果认证代码不匹配,则控制传递到框720。以这种方式,服务器认证包含在经解密的信息中的信息。
在框718中,通过将当前时间值与包含在经解密的信息中的寿命值相比较,服务器判断包含在经解密的信息中的客户端状态信息是否已经过期。如果当前时间值小于包含在经解密的信息中的寿命值,则控制传递到框722。如果当前时间值不小于包含在经解密的信息中的寿命值,则控制传递到框724。
在框720中,服务器拒绝接收自客户端的经加密的信息。服务器可以拒绝从客户端发送的所有后续数据。
客户端可以从共享的私密密钥导出一个或多个会话密钥。利用这样的会话密钥,客户端可以对消息加密并将经加密的消息发送到服务器。在框722中,服务器从客户端接收已经利用从共享私密密钥导出的密钥被加密的消息。
包含在经解密的信息中的客户端状态信息包括共享私密密钥。在框724中,服务器从共享私密密钥导出一个或多个会话密钥。
在框726中,利用这样的会话密钥,服务器对从客户端发送的经加密的消息解密。利用从共享私密密钥导出的会话密钥,服务器可以加密另一消息并将经加密的消息发回客户端。因此,利用从共享私密密钥导出的会话密钥,客户端和服务器可以对它们彼此传输的消息进行加密和解密,从而建立安全的“隧道”。
在客户端和服务器完成通信之后,服务器可以腾出服务器曾以明文形式和加密形式存储客户端的状态信息的存储器。因此,服务器可以避免永久存储客户端状态信息(包括共享私密密钥),而是仅仅临时、非连续地存储客户端状态信息。
以上参考流程图700所描述的方法对于客户端110A-N和客户端112A-N中的多个客户端也可使用。多个客户端中的每一个可以向给定服务器发送包含针对该客户端的共享私密密钥的经加密信息。每个客户端的共享私密密钥不同于其他客户端的共享私密密钥。
3.6在多个服务器间共享客户端状态信息如上所述,无线客户端(例如客户端112A)可以从一个位置漫游到另一位置。当无线客户端离开一个位置而进入另一位置时,无线客户端可能试图通过不同服务器访问同一专用网络。例如,在一个位置,客户端112A可能通过服务器106A访问专用网络102。如果服务器106A具有客户端112A的共享私密密钥,服务器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时,新服务器此时不需要被提供以系统100中的所有客户端的共享私密密钥。相反,新服务器可被提供以本地密钥或本地密钥的集合。此后,新服务器可以按照需要从发起与新服务器之间的通信的客户端获得经加密的客户端状态信息。因为每个客户端存储其自己的经加密的客户端状态信息,因此在客户端和服务器已经完成彼此之间的通信之后,没有服务器需要继续存储任意客户端的状态信息。
图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。
3.7利用传输层安全性(TLS)协议扩展来避免客户端状态信息的服务器存储。
传输安全性层(TLS)协议在因特网工程任务组(IETF)请求注释(RFC)2245中有所描述。对TLS协议的扩展在IETF RFC 3546中被描述。如上所述,TLS协议扩展可被用于避免在服务器上存储客户端状态信息。另外,下述方法消除了对公共密钥认证机制的需求。根据一个实施例,TLS协议可被用于以密码方式保护客户端和多个服务器之间的可扩展的认证协议(EAP)连接。EAP在IETF RFC 2284中被描述。
3.7.1EAP-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 OnInformation Theory,vol.22,第644-654页中发表的文章“New DirectionsIn 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握手消息。在该消息的扩展数据字段中,ClientHello消息包含客户端的PAC模糊体。ClientHello消息还包含客户端的随机现时。在一个实施例中,客户端可以缓存客户端与之通信的每个不同服务器的不同PAC模糊体。每个PAC模糊体可能与不同的服务器身份相关联。从多个PAC模糊体中,客户端可以选出与包含在EAP-FAST/开始分组中的服务器身份相关联的PAC模糊体,并在ClientHello消息的扩展数据字段中将该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完成消息响应于服务器。
此后,在认证阶段期间,客户端和服务器可以利用隧道会话密钥对消息加密和解密。
图9是示出客户端可以用以向服务器传送客户端的PAC模糊体的方法的一个实施例的流程图900。在框902中,服务器利用客户端无法访问的本地密钥对客户端的状态信息进行加密,从而生成PAC模糊体。客户端的状态信息(例如PAC模糊体)包括共享的私密密钥。
PAC模糊体可以通过多种机制中的任意机制被存储在客户端上。在发起与服务器之间的通信的情况下,客户端向服务器发送PAC模糊体。PAC模糊体被包含在TLS握手协议扩展ClientHello消息的扩展数据字段中。在框904中,服务器从客户端接收在扩展的ClientHello消息的扩展数据字段中包含PAC模糊体的TLS握手协议扩展ClientHello消息。
在框906中,利用本地密钥,服务器对接收自客户端的PAC模糊体解密,从而获得共享的私密密钥。客户端和服务器可以从共享的私密密钥导出一个或多个密钥。客户端和服务器可以利用这样导出的密钥对消息加密和解密。因此,利用对TLS握手协议的扩展,服务器可以接收客户端的状态信息并基于客户端的状态信息建立与客户端之间的安全通信信道。由于客户端存储了客户端的状态信息,因此服务器无需永久而连续地存储客户端的状态信息。因为客户端的状态信息利用客户端无法访问的本地密钥被加密,因此客户端无法修改客户端的状态信息。客户端的状态信息像客户端的状态信息被存储在服务器上而非客户端上时一样安全。
4.0实现机制——硬件概况图10是示出可以在其上实现本发明的实施例的计算机系统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或其他计算机系统连接到计算机系统1000并利用接口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和EPROM、FIASH-EPROM、任意其他存储器芯片或卡带、下面将描述的载波或任意其他计算机可以从其读取的介质。
在向处理器1004运载用于执行的一个或多个指令的一个或多个序列时,可以涉及各种形式的计算机可读介质。例如,指令可能最初在远程计算机的磁盘上承载。远程计算机可以将指令加载到其动态存储器中并利用调制解调器通过电话线来发送指令。位于计算机系统1000本地的调制解调器可以接收电话线上的数据并使用红外发射器将数据转换成红外信号。耦合到总线1002的红外检测器可以接收红外信号中运载的数据并将数据放置在总线1002上。总线1002将数据运载到主存储器1006中,处理器1004从主存储器1006获取并执行指令。由主存储器1006接收到的指令可以可选地在由处理器1004执行前或执行后被存储在存储设备1010上。
通信接口1018还提供耦合到连接到本地网络1022的网络链路1020的双向数据通信。例如,通信接口1018可以是综合业务数字网络(ISDN)或调制解调器,以向相应类型的电话线提供数据通信连接。作为另一示例,通信接口1018可以是局域网(LAN)卡,用于提供到可兼容的LAN的数据通信连接。无线链路也可以被实现。在任意这样的实现方式中,通信接口1018发送和接收运载代表各种类型信息的数字数据流的电、电磁或光信号。
网络链路1020通常通过一个或多个网络提供到其它数据设备的数据通信。例如,网络链路1020可以提供通过本地网络1022到主机计算机1024或由因特网服务提供商(ISP)1026操作的数据装备的连接。ISP1026又通过现在一般称为“因特网”1028的世界范围的分组数据通信网络来提供数据通信服务。本地网络1022和因特网1028都是用运载数字数据流的电、磁和光信号。通过各种网络的信号和网络链路1020上的信号和通过通信接口1018的信号运载去往或来自计算机系统1000的数字数据,这些信号都是传输信息的载波的示例性形式。
计算机系统1000可以通过网络、网络链路1020和通信接口1080来发送消息和接收数据,包括程序代码。在因特网示例中,服务器1030可能通过因特网1028、ISP 1026、本地网络1022和通信接口1018来发送针对应用程序所请求的代码。如这里所述,根据本发明,一种这样下载的应用用于避免在服务器上存储客户端状态。
处理器1004可以执行它接收到的和/或存储在存储设备1010或其他非易失性存储设备以待随后执行的接收到的代码。以这种方式,计算机系统1000可以以载波形式获得应用代码。
5.0扩展和替换在之前的说明书中,已经参考本发明的特定实施例描述了本发明。但是,将会发现,在不脱离本发明更宽精神和范围的情况下,可以对其执行各种修改和改变。因此,说明书和附图将被看作示例性的,而非限制性的。
权利要求
1.一种用于避免在服务器上存储客户端状态的方法,该方法包括计算机实现的以下步骤基于第一客户端不知道的第一本地密钥对第一客户端状态信息加密以产生第一经加密信息,其中所述第一客户端状态信息包括第一共享私密密钥;在第一时间从所述第一客户端接收所述第一经加密信息;基于所述第一本地密钥来核实随所述第一经加密信息接收到的认证代码并对接收自所述第一客户端的所述第一经加密信息进行解密,从而产生第一经解密信息;接收已基于从所述第一共享私密密钥导出的第一导出密钥加密后的第一消息;从包括在所述第一经解密信息中的共享私密密钥导出第二导出密钥;以及基于所述第二导出密钥来进一步保护随之发生在所述第一客户端和所述服务器之间的会话。
2.如权利要求1所述的方法,还包括以下步骤在所述第一时间前从服务器存储器中移除所述第一客户端状态信息;以及在所述第一时间前从服务器存储器中移除所述第一经加密信息。
3.如权利要求1所述的方法,还包括以下步骤在将所述第一经加密信息发送到所述第一客户端之前,基于所述第一本地密钥、服务器的身份和经加密的客户端状态信息来计算第一认证代码;以及在将所述第一经加密信息发送到所述第一客户端之前,加密所述第一客户端状态信息并将所述认证代码与所述第一客户端状态信息的加密结果包括在一起以产生所述第一经加密信息。
4.如权利要求3所述的方法,还包括以下步骤在对接收自所述第一客户端的所述第一经加密信息进行解密之后,基于所述第一本地密钥和包括在所述第一经解密信息中的经加密的客户端状态信息来计算第二认证代码;以及判断所述第二认证代码是否与包括在所述第一经解密信息中的认证代码相匹配。
5.如权利要求4所述的方法,其中所述第一客户端状态信息包括唯一地标识所述第一客户端的值。
6.如权利要求1所述的方法,还包括以下步骤在将所述第一经加密信息发送到所述第一客户端之前,将第一寿命值和所述第一客户端状态信息一起加密以产生所述第一经加密信息。
7.如权利要求6所述的方法,还包括以下步骤在对接收自所述第一客户端的所述第一经加密信息进行解密之后,基于第二时间值和包括在所述第一经解密信息中的寿命值来判断所述第一客户端状态信息是否已经过期。
8.如权利要求1所述的方法,还包括以下步骤从多个密钥中选出所述第一本地密钥,其中所述多个密钥中的每个密钥与不同索引值和所述服务器的身份相关联;以及将与所述第一本地密钥相关联的索引值发送到所述第一客户端。
9.如权利要求8所述的方法,还包括以下步骤从所述第一客户端接收与所述第一本地密钥相关联的索引值和所述服务器的身份;其中所述对第一经加密信息进行解密的步骤包括基于与接收自所述第一客户端的索引值相关联的密钥对所述第一经加密信息进行解密的步骤。
10.如权利要求1所述的方法,其中第一服务器执行对所述第一客户端状态信息加密以产生所述第一经加密信息的步骤,其中所述方法还包括以下步骤第二服务器基于所述第一客户端不知道的第二本地密钥对所述第一客户端状态信息进行加密,以产生第二经加密信息,其中所述第二服务器不同于所述第一服务器,并且其中所述第二本地密钥不同于所述所述第一本地密钥;所述第二服务器从所述第一客户端接收所述第二经加密信息;所述第二服务器核实随所述第二经加密信息接收到的认证代码并对接收自所述第一客户端的第二经加密信息进行解密,从而产生第二经解密信息;接收已基于从所属第一共享私密密钥导出的第三导出密钥加密后的第二消息;从包括在所述第二经解密信息中的共享私密密钥导出第四导出密钥;以及基于所述第四导出密钥来进一步保护随之发生在所述第一客户端和所述第二服务器之间的会话。
11.一种避免在服务器上存储客户端状态的方法,该方法包括以下计算机实现的步骤从客户端不知道的多个密钥中选出本地密钥,其中所述多个密钥中的每个密钥与不同的索引值相关联;基于客户端的经加密状态信息、所述服务器的身份和所述本地密钥来计算第一认证代码,其中所述客户端状态信息包括共享私密密钥和唯一地标识所述客户端的值;基于所述本地密钥对所述客户端状态信息和第一寿命值进行加密并将加密结果与所述认证代码组合在一起,从而产生经加密信息;向所述客户端发送所述经加密信息和与所述本地密钥相关联的特定索引值;接收所述经加密信息和所述特定索引值;基于与针对所述服务器身份的所述特定索引值相关联的特定密钥对所述接收到的经加密信息进行解密,从而产生经解密信息;基于包括在所述经解密信息中的客户端的经加密状态信息、所述服务器的身份和所述特定密钥来计算第二认证代码;判断所述第二认证代码是否与包括在所述经解密信息中的认证代码相匹配;基于当前时间值和包括在所述经解密信息中的寿命值来判断所述客户端状态信息是否已经过期;接收已基于从所述共享私密密钥导出的第一导出密钥加密后的消息;从包括在所述第一经解密信息中的共享私密密钥导出第二导出密钥;以及基于所述第二导出密钥来进一步保护随之发生在所述客户端和所述服务器之间的会话。
12.一种在客户端上存储客户端状态的方法,该方法包括以下计算机实现的步骤安全地存储通过基于本地密钥对包括共享私密密钥的客户端状态信息和服务器的身份进行加密而生成的经加密客户端状态信息;将所述经加密客户端信息发送到存储所述本地密钥的第一服务器;以及将相同的经加密客户端信息发送到存储所述本地密钥的第二服务器;其中所述第二服务器不同于所述第一服务器,但是由相同的服务器身份所标识。
13.如权利要求12所述的方法,还包括以下步骤从所述第一服务器接收已基于从所述共享私密密钥导出的导出密钥加密后的消息;以及从所述第二服务器接收已基于从所述共享私密密钥导出的导出密钥加密后的消息。
14.一种在客户端上存储客户端状态的方法,该方法包括以下计算机实现的步骤安全地存储通过基于本地密钥对包括共享私密密钥的客户端状态信息和服务器的身份进行加密而生成的经加密客户端状态信息;将所述经加密客户端信息发送到存储所述本地密钥的第一服务器,其中所述本地密钥由所述第一服务器的身份所标识;以及将所述经加密客户端信息发送到存储所述本地密钥的第二服务器,其中所述本地密钥由所述第二服务器的身份所标识;其中所述第二服务器不同于所述第一服务器,并且所述第二服务器由服务器身份来唯一地标识。
15.如权利要求14所述的方法,还包括以下步骤从所述第一服务器接收已基于从所述共享私密密钥导出的导出密钥加密后的消息;以及从所述第二服务器接收已基于从所述共享私密密钥导出的导出密钥加密后的消息。
16.一种从客户端接收客户端状态的方法,该方法包括以下计算机实现的步骤基于客户端不知道的本地密钥来加密客户端状态信息,以产生经加密信息,其中所述客户端状态信息包括共享私密密钥;从所述客户端接收传输安全性层(TLS)握手协议扩展ClientHello消息,该消息在其扩展数据字段中包含了所述经加密信息;以及基于所述本地密钥对接收自所述客户端的所述经加密信息进行解密,从而产生包括所述共享私密密钥的经解密信息。
17.一种承载了用于避免在服务器上存储客户端状态的一个或多个指令序列的计算机可读介质,当所述指令被一个或多个处理器执行时,致使所述一个或多个处理器执行以下步骤基于第一客户端不知道的第一本地密钥对第一客户端状态信息加密以产生第一经加密信息,其中所述第一客户端状态信息包括第一共享私密密钥;在第一时间从所述第一客户端接收所述第一经加密信息;基于所述本地密钥对接收自所述第一客户端的所述第一经加密信息进行解密,从而产生第一经解密信息;接收已基于从所述第一共享私密密钥导出的第一导出密钥加密后的第一消息;从包括在所述第一经解密信息中的共享私密密钥导出第二导出密钥;以及基于所述第二导出密钥来进一步保护随之发生在所述第一客户端和所述服务器之间的会话。
18.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令在所述第一时间前从存储器中移除所述第一客户端状态信息;以及在所述第一时间前从存储器中移除所述第一经加密信息。
19.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令在将所述第一经加密信息发送到所述第一客户端之前,基于所述本地密钥、服务器的身份和客户端经加密态信息来计算第一代码;以及在将所述第一经加密信息发送到所述第一客户端之前,将所述第一代码与包括所述第一客户端状态信息的加密结果包括在一起以产生所述第一经加密信息。
20.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令在对接收自所述第一客户端的所述第一经加密信息进行解密之后,基于包括在所述第一经解密信息中的客户端经加密状态信息、所述本地密钥和所述服务器的身份来计算第二认证代码;以及判断所述第二认证代码是否与包括在所述第一经解密信息中的认证代码相匹配。
21.如权利要求19所述的计算机可读介质,其中所述第一客户端状态信息包括唯一地标识所述第一客户端的值。
22.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令在将所述第一经加密信息发送到所述第一客户端之前,将第一寿命值和所述第一客户端状态信息一起加密以产生所述第一经加密信息。
23.如权利要求22所述的计算机可读介质,还包括用于执行以下步骤的指令在对接收自所述第一客户端的所述第一经加密信息进行解密之后,基于第二时间值和包括在所述第一经解密信息中的寿命值来判断所述第一客户端状态信息是否已经过期。
24.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令从多个密钥中选出所述本地密钥,其中所述多个密钥中的每个密钥与不同索引值相关联;以及将与所述本地密钥相关联的索引值发送到所述第一客户端。
25.如权利要求24所述的计算机可读介质,还包括用于执行以下步骤的指令从所述第一客户端接收与所述本地密钥相关联的索引值;其中所述对第一经加密信息进行解密的步骤包括基于与接收自所述第一客户端的索引值相关联的密钥对所述第一经加密信息进行解密的步骤。
26.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令生成所述服务器的身份;基于所述本地密钥对第二客户端状态信息进行加密以产生第二经加密信息,其中所述第二客户端状态信息包括不同于所述第一共享私密密钥的第二共享私密密钥,并且其中所述本地密钥不被不同于所述第一客户端的第二客户端所知;从所述第二客户端接收所述第二经加密信息;基于所述本地密钥对接收自所述第二客户端的所述第二经加密信息进行解密,从而产生第二经解密信息;接收已基于从所述第二共享私密密钥导出的第三导出密钥加密后的第二消息;从包括在所述第二经解密信息中的共享私密密钥导出第四导出密钥;以及基于所述第四导出密钥来进一步保护随之发生在所述第二客户端和所述服务器之间的会话。
27.如权利要求17所述的计算机可读介质,还包括用于执行以下步骤的指令基于从包括在所述第一经解密信息中的共享私密密钥导出的第三导出密钥来加密第二消息,以产生经加密的消息;以及将所述经加密的消息发送到所述第二客户端。
28.一种用于避免在服务器上存储客户端状态的装置,包括用于基于客户端不知道的本地密钥对客户端状态信息加密以产生经加密信息的装置,其中所述客户端状态信息包括共享私密密钥;用于从所述客户端接收所述经加密信息的装置;用于基于所述本地密钥对接收自所述客户端的所述经加密信息进行解密,从而产生经解密信息的装置;用于接收已基于从所述共享私密密钥导出的第一导出密钥加密后的消息的装置;用于从包括在所述经解密信息中的共享私密密钥导出第二导出密钥的装置;以及用于基于所述第二导出密钥来解密所述消息的装置。
29.一种用于避免在服务器上存储客户端状态的装置,包括耦合到数据网络的用于从其接收一个或多个分组流的网络接口;处理器;一个或多个已存储的指令序列,该指令序列被所述处理器执行时致使所述处理器执行以下步骤计算所述服务器的身份;基于客户端不知道的本地密钥对客户端状态信息进行加密以产生经加密信息,其中所述客户端状态信息包括共享私密密钥;从所述客户端接收所述经加密信息;基于所述本地密钥对接收自所述客户端的所述经加密信息进行解密,从而产生经解密信息;接收已基于从所述共享私密密钥导出的第一导出密钥加密后的消息;从包括在所述经解密信息中的共享私密密钥导出第二导出密钥;以及基于所述第二导出密钥来进一步保护随之发生在所述客户端和所述服务器之间的会话。
全文摘要
本发明公开了一种用于实现基于无状态服务器的预共享私密的方法。基于客户端不知道的本地密钥,服务器对客户端的状态信息进行加密。客户端的状态信息例如可以包括客户端的认证凭证、客户端的授权特性和客户端用于导出会话密钥的共享私密密钥。利用多种机制中的任意一种,经加密的客户端状态信息被提供给客户端。服务器可以腾出曾存储客户端的状态信息的存储器。当服务器需要客户端的状态信息时,客户端向服务器发送客户端存储的经加密的状态信息。服务器利用本地密钥对经加密的客户端状态信息解密。由于每个客户端以加密形式存储了该客户端自己的状态信息,因此服务器无需永久存储任意客户端的状态信息。
文档编号G06F15/16GK1906883SQ200580001385
公开日2007年1月31日 申请日期2005年1月10日 优先权日2004年1月12日
发明者南希·卡姆-温恩特, 周浩, 帕特曼纳哈·C·杰卡浩里, 约瑟夫·萨洛韦, 大卫·A·麦格鲁 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1