本申请声明受益于2002年11月20日提交的标题为《基于Cookie的身份认证的系统和方法》的美国临时专利申请(序号为60/428,152),该临时申请被包括于此,用作整体参考。
具体实施方式
本发明的原理规定了安全地处理被用于基于Web的资源访问的客户证书。服务器至少保存一个或多个密钥的一个旋转密钥存储器。旋转密钥存储器中的每个密钥在规定的时间间隔(例如,10分钟)之后自动到期。在所规定的时间间隔之后,服务器将一个新的密钥旋转入旋转密钥存储器,并将到期的密钥从旋转密钥存储器中旋转出去。旋转密钥存储器中所保存的密钥数量和所规定的时间间隔可以由网络管理员来进行配置(例如,每5分钟保存3个密钥并旋转密钥)。服务器通过为用户证书生成数字签名并根据旋转密钥存储器中的密钥为用户证书加密,来保护用户证书。
在客户处呈现具有用于输入用户证书的界面的登录网页。将在客户处所输入的用户证书发送到服务器。响应于接收用户证书,服务器为客户生成唯一通话标识符。服务器根据旋转密钥存储器中最当前的密钥和该唯一通话标识符来获得用户证书的数字签名。然后,服务器根据得自旋转密钥存储器中最当前的密钥的加密密钥以及唯一通话标识符,来为该数字签名和用户证书加密。当在客户处收回被加密的证书时,使用来自旋转密钥存储器的密钥来尝试证实这些证书。如果原来用于为用户证书加密的、来自旋转密钥存储器的密钥已从旋转密钥存储器中旋转出去,则将客户重新重定向到登录网页,以输入新的证书。
本发明的范围以内的实施例包括用于携带或其上存储有计算机可执行指令或数据结构的计算机可读介质。这种计算机可读介质可以是可由通用或专用的计算机系统进行存取的任何可用的介质。举例来讲(不作限制),这种计算机可读介质可以包括物理存储介质(例如,RAM、ROM、EPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁性存储设备)或可以被用来携带或存储采取计算机可执行指令、计算机可读指令或数据结构形式的所需程序代码方法以及可以由通用或专用的计算机系统进行存取的任何其他的介质。
在本文和以下的权利要求书中,“网络”被定义为允许在各个计算机系统和/或模块之间传送电子数据的一个或多个数据链路。当在网络或另一通信连接(硬连线、无线,或者硬连线或无线的组合)上将信息传送或提供给计算机系统时,该连接被严格地视作计算机可读介质。这样,任何这类的连接都可以被严格地称为“计算机可读介质”。以上内容的组合应该也被包括在计算机可读介质的范围内。例如,计算机可执行指令包括使通用计算机系统或专用计算机系统执行某项功能或某组功能的指令和数据。例如,这些计算机可执行指令可能是二进制、中间格式指令(例如,汇编语言),或甚至可能是源代码。
在本文和以下的权利要求书中,“计算机系统”被定义为“一起合作来执行对电子数据的操作的一个或多个软件模块、一个或多个硬件模块或其组合”。例如,计算机系统的定义包括个人计算机的硬件部件,以及软件模块(例如,该个人计算机的操作系统)。这些模块的物理布局并不重要。计算机系统可以包括经由网络而被连接的一台或多台计算机。同样,计算机系统可以包括一个单一物理设备(例如,移动电话或个人数字助理“PDA”),在该单一物理设备中,内部模块(例如,存储器和处理器)一起合作来执行对电子数据的操作。
精通该技术领域的人将会理解:可以在具有多种类型的计算机系统配置的网络计算环境中实践本发明,这些网络计算环境包括个人计算机、便携式计算机、手持设备、多处理器系统、基于微处理器的或可编程的消费电子设备、网络PCs、小型计算机、大型计算机、移动电话、PDAs、寻呼机和类似的环境。本发明也可以在分布式系统环境中得到实践;在这些分布式系统环境中,通过网络而被连接(要么通过硬连线数据链路、无线数据链路,要么通过硬连线数据链路和无线数据链路的组合)的本地计算机系统和远程计算机系统都执行任务。在分布式系统环境中,程序模块既可以位于本地记忆存储设备中,也可以位于远程记忆存储设备中。
图1和以下的讨论意在简要、概括地描述可以在其中执行本发明的一种合适的计算环境。虽然未作要求,但是,将在计算机系统正执行的计算机可执行指令(例如,程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特殊任务或执行特殊的抽象数据类型的例行程序、程序、对象、部件、数据结构和类似物。计算机可执行指令、关联的数据结构和程序模块表示用于执行这里所揭示的各种方法的动作的程序代码方法的例子。
参照图1,用于执行本发明的范例系统包括采取计算机系统120形式的一个通用计算设备,该通用计算设备包括处理单元121、系统存储器122,以及将包括系统存储器122的各种系统部件连接到处理单元121的系统总线123。处理单元121可以执行被设计成用于执行计算机系统120的特点(包括本发明的特点)的计算机可执行指令。系统总线123可以是几种类型的总线结构(包括存储总线或存储控制器、外围总线,以及使用各种总线构造中的任何总线构造的局域总线)中的任何一种总线结构。系统存储器包括只读存储器(“ROM”)124和随机存取存储器(“RAM”)125。基本输入/输出系统(“BIOS”)126可以被存储在ROM 124中,基本输入/输出系统126包含有助于在计算机系统120内的各个元件之间传送信息的基本例行程序(例如,在启动期间)。
计算机系统120也可以包括用于从磁性硬盘139读取并对其写入的磁性硬盘驱动器127、用于从可移动的磁盘129读取或对其写入的磁盘驱动器128,以及用于从可移动的光盘131(例如,CD-ROM或其他光学介质)读取或对其写入的光盘驱动器130。磁性硬盘驱动器127、磁盘驱动器128和光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光驱接口134被连接到系统总线123。这些驱动器及其有关联的计算机可读介质为计算机系统120提供计算机可执行指令、数据结构、程序模块和其他数据的非易失存储。虽然这里所描述的范例环境采用磁性硬盘139、可移动的磁盘129和可移动的光盘131,但是,也可以使用用于存储数据的其他类型的计算机可读介质(包括盒式磁带、快闪存储卡、数字通用磁盘、伯努里式磁带匣、RAMs、ROMs和类似的介质)。
包含一个或多个程序模块的程序代码方法可以被存储在硬盘139、磁盘129、光盘131、ROM 124或RAM 125上,包括操作系统135、一个或多个应用程序136、其他程序模块137和程序数据138。用户可以通过键盘140、定点设备142或其他输入设备(未示出)(例如,话筒、操纵杆、游戏垫、扫描仪或类似的输入设备)将命令和信息输入计算机系统120。可以通过被连接到系统总线123的输入/输出接口146将这些和其他的输入设备连接到处理单元121。输入/输出接口146在逻辑上表示众多不同的接口(例如,串行端口接口、PS/2接口、并行端口接口、通用串行总线(“USB”)接口或“电气和电子工程师协会”(“IEEE”)1394接口(即“火线”(Fire Wire)接口))中的任何接口,或者甚至可以在逻辑上表示不同接口的组合。
监视器147或其他显示设备也经由视频适配器148被连接到系统总线123。扬声器169或其他音频输出设备也经由音频接口149被连接到系统总线123。其他外围输出设备(未示出)(例如,打印机)也可以被连接到计算机系统120。计算机系统120可以被连接到各种网络,例如,办公室范围或企业范围的计算机网络、家庭网络、内联网和/或因特网。计算机系统120可以与各种外部来源(例如,远程计算机系统、远程应用程序和/或这类网络上的远程数据库)交换数据。
计算机系统120包括网络接口153,计算机系统120通过该网络接口从外部来源接收数据并/或将数据传送到外部来源。如图1所示,网络接口153促进经由链路151与远程计算机系统183的数据交换。网络接口153可以在逻辑上表示一个或多个软件模块和/或硬件模块(例如,网络接口卡和对应的“网络驱动器接口规范”(“NDIS”)堆栈)。链路151表示网络的一个部分(例如,一个以太网片段),远程计算机系统183表示该网络的一个节点。例如,远程计算机系统183可以是为计算机系统120提供基于Web的资源(例如,电子邮件消息)访问的服务器计算机系统。另一方面,远程计算机系统183可以是使用基于Web的访问来从计算机系统120获得资源的客户计算机系统。
同样,计算机系统120包括输入/输出接口146,计算机系统120通过该输入/输出接口从外部来源接收数据并/或将数据传送到外部来源。输入/输出接口146经由链路159被连接到调制解调器154(例如,标准调制解调器、电缆调制解调器或数字订户线路(“DSL”)调制解调器),计算机系统120通过该输入/输出接口从外部来源接收数据并/或将数据传送到外部来源。如图1所示,输入/输出接口146和调制解调器154促进经由链路152与远程计算机系统193的数据交换。链路152表示网络的一个部分,远程计算机系统193表示该网络的一个节点。例如,远程计算机系统193可以是为计算机系统120提供基于Web的资源(例如,电子邮件消息)访问的服务器计算机系统。另一方面,远程计算机系统193可以是使用基于Web的访问来从计算机系统120获得资源的客户计算机系统。
图1表示本发明的一种合适的操作环境,可以在能够(如果必要的话,可进行适当的修改)执行本发明的原理的任何系统中采用本发明的原理。图1中所展示的环境只是起说明性的作用,并不表示其中可以执行本发明的原理的众多环境的甚至一个小部分。
可以存储本发明的模块以及关联的程序数据,并可以从与计算机系统120有关联的任何计算机可读介质存取这些模块和程序数据。例如,这类模块的各个部分和关联的程序数据的各个部分可以被包括在操作系统135、应用程序136、程序模块137和/或程序数据138中,用于存储在系统存储器122中。当大规模存储设备(例如,磁性硬盘139)被连接到计算机系统120时,也可以将这类模块和关联的程序数据存储在该大规模存储设备中。在联网环境中,相对于计算机系统120所描绘的程序模块或其各个部分可以被存储在远程记忆存储设备(例如,系统存储器和/或跟远程计算机系统183和/或远程计算机系统193有关联的大规模存储设备)中。如前所述,可以在分布式环境中实施这类模块的执行。
图2展示了网络系统结构200的一个例子,当客户请求访问服务器处的资源时,该网络系统结构促进对客户方的证书进行保护。客户计算机系统201和服务器计算机系统211可以被连接到公用网(例如,局域网(“LAN”)、广域网(“WAN”)或甚至是因特网)。客户计算机系统201包括浏览器202,该浏览器可以被用来请求基于Web的资源访问并呈现在客户计算机系统201处所接收的资源。Cookies 203可以包括存储以前从服务器计算机系统所接收的数据的各个部分的一个或多个Cookies。可以将Cookies 203中的数据发送到对应的服务器计算机系统,以便为服务器计算机系统指出个人化的信息或参数选择,并且/或者使用户无须手工输入所存储的信息的一个部分。
服务器计算机系统211包括电子邮件服务器212,该电子邮件服务器提供对电子邮件资源(例如,电子邮件消息、通讯簿信息和日程排列信息)的访问。为了被授权访问电子邮件资源,用户可以被请求向电子邮件服务器212提供证书,供电子邮件服务器212进行身份认证。电子邮件服务器212可以将所接收的证书与证书数据库213中的经授权的证书进行比较,以确定是否将许可访问电子邮件资源的请求。当用户被授权时,电子邮件服务器212可以将所请求的电子邮件资源返回给请求的客户计算机系统。当用户未被授权时,电子邮件服务器212可以将未经授权的消息(例如,具有状态码401“未经授权”的超文本传输协议(“HTTP”)消息)返回给请求的客户计算机系统。
服务器计算机系统211也包括密钥生成模块214。密钥生成模块214可以生成新的密钥并将它们旋转入旋转密钥220,并且可以将到期的密钥从旋转密钥220中旋转出去。可以将密钥生成模块214配置成保持一个或多个旋转密钥存储器。例如,在网络系统结构200中,密钥生成模块214保持非可信的旋转密钥存储器221和私人旋转密钥存储器231。
旋转密钥时所规定的时间间隔是可以配置的。也就是说,密钥生成模块214可以被配置成按规定的间隔将新近生成的密钥旋转入旋转密钥存储器并将到期的密钥从旋转密钥存储器中除去。例如,密钥生成模块214可以每10分钟将一个新的密钥插入私人旋转密钥存储器231并将到期的密钥从私人旋转密钥存储器231中除去。旋转密钥存储器中所保存的密钥数量也是可以配置的。也就是说,密钥生成模块214也可以被配置成将所规定数量的密钥保存在旋转密钥存储器中。例如,密钥生成模块214可以被配置成将3个密钥保存在非可信的旋转密钥存储器221中。
所保存的密钥和所规定的间隔的数量在各个旋转密钥存储器之间可以有所不同。例如,密钥生成模块214可以将具有所规定的5分钟旋转间隔的3个密钥保存在非可信的密钥存储器221中,并可以将具有所规定的1小时旋转间隔的4个密钥保存在私人密钥存储器231中。根据与客户计算机系统有关联的各种属性,可以利用不同的密钥存储器来实施本发明的原理。在旋转密钥存储器中的密钥下面所描绘的箭头指出:当增加新的密钥时,这些密钥向下旋转,直到到期的密钥最后从旋转密钥存储器中旋转出去。例如,当新的密钥被加入私人旋转密钥存储器231时,密钥232将旋转入密钥233的位置。
服务器计算机系统211也包括登录网页217。登录网页217可以是提供界面的Web网页(例如,“动态服务器网页”(“ASP”)网页),该界面用于提交用户证书并选择与客户计算机系统有关联的通信属性。响应于使用跟登录网页217对应的统一资源标识符(“URI”)的客户计算机系统,服务器计算机系统211可以将登录网页217发送到客户计算机系统。客户方的浏览器可以在客户计算机系统处呈现登录网页217。可以将用户证书和在登录网页217处被提交的通信属性选择发送到服务器计算机系统211。
服务器计算机系统也包括通信过滤器243。通信过滤器243可以截取HTTP通信(例如,被传送到服务器计算机系统211中并从服务器计算机系统211被发送出去的请求、响应和消息)。通信过滤器243可以查阅被加密的Cookies中所包括的客户状态信息,以确定是否应该改变服务器计算机系统211与客户计算机系统之间的HTTP通信(例如,通过修改HTTP头部)。通信过滤器243也可以执行密码算法(利用来自旋转密钥存储器的密钥),以便为用户证书解密并对其进行证实。
服务器计算机系统211也包括登录元素证实器(validator)216。登录元素证实器216可以接收在登录网页217处被输入的所提交的用户证书,并且执行密码算法(利用来自旋转密钥存储器的密钥),以便用计数法在所提交的用户证书上签字并为其加密。登录元素证实器216也可以为请求对服务器计算机系统211的资源进行基于Web的访问的客户计算机系统生成唯一通话标识符(例如,全球唯一标识符(“GUIDs”))。登录元素证实器216可以将唯一通话标识符和被加密的信息(包括用户证书和取决于时间的数字签名)发送到客户计算机系统。例如,登录元素证实器216可以将唯一通话标识符和被加密的用户证书发送到客户计算机系统201,供存储在Cookies 203中。
图3展示了方法300的范例流程图,该方法用于当客户请求访问服务器处的资源时对客户方的证书进行保护。将根据图2A中所描绘的客户计算机系统和服务器计算机系统来描述方法300。方法300包括将第一个请求发送到服务器的动作(动作301)。动作301可以包括:客户计算机系统发送关于对服务器处的资源(例如,电子邮件消息)进行基于Web的访问的第一个请求。
例如,客户计算机系统201可以将请求251(包括邮件服务器URI 267)发送到服务器计算机系统211。邮件服务器URI 267可以是对应于电子邮件服务器212的URI。也就是说,希望访问由电子邮件服务器保存的电子邮件资源的用户可以通过使用邮件服务器URI 267来尝试对电子邮件资源进行基于Web的访问。相应地,情况可能是:客户计算机系统201处的用户将命令输入浏览器202,以便使客户计算机系统201发送请求251。
方法300包括从客户那里接收第一个请求的动作(动作306)。动作306可以包括:服务器计算机系统接收关于对服务器处的资源(例如,电子邮件消息)进行基于Web的访问的第一个请求。例如,服务器计算机系统211可以从客户计算机系统201那里接收请求251(包括邮件服务器URI 267)。通过通信过滤器243的虚线指出:可以将通信过滤器243配置成允许请求251通过,而不会改变请求251。相应地,可以将请求251发送到电子邮件服务器212,而不作修改。
方法300包括一个用于保护客户方的证书的功能结果导向步骤(步骤311)。步骤311可以包括用于保护客户方的证书的任何对应的动作。但是,在图3的所示例子中,步骤311包括响应于第一个请求而使客户重定向到登录网页的一个对应的动作(动作307)。动作307可以包括:服务器计算机系统响应于第一个请求而使客户计算机系统重定向到登录网页。
响应于请求251,电子邮件服务器212可以发送响应252,响应252包括未经授权的指示符272。响应252可以是作为请求251的结果而被返回的具有状态码401“未经授权”的HTTP消息,它不包括用户证书。可以将通信过滤器243配置成截取包括未经授权的指示符的消息。相应地,通信过滤器243可以截取响应252。
通信过滤器243可以修改响应252的内容(例如,通过改变HTTP头部),以便将客户计算机系统201重定向到提供用于输入用户证书的界面的登录网页。例如,通信过滤器243可以从响应252中除去未经授权的指示符272,并将登录网页URI 263和重定向指示符271插入响应252,从而产生响应252A。响应252A可以是具有状态码302“发现”的HTTP消息。登录网页URI 263可以是被用来访问登录网页217的URI。相应地,响应252A可以向客户计算机系统201指出:在登录网页URI 263处访问所请求的资源(例如,电子邮件消息)。
方法300包括被重定向到登录网页的动作(动作302)。动作302可以包括:客户计算机系统被重定向到登录网页,该登录网页提供用于接受用户证书的界面。例如,客户计算机系统201可以被重定向到登录网页217。响应于接收响应252A,客户计算机系统201可以将请求257(包括登录网页URI 263)发送到服务器计算机系统211。响应于请求257,服务器计算机系统211可以将响应258(包括登录网页217)发送到客户计算机系统201。登录网页可以是Web网页(例如,“动态服务器网页”(“ASP”)网页)。
浏览器202可以在客户计算机系统201处呈现登录网页217。离开图3,现在来参考图6,图6展示了范例登录网页600,该范例登录网页可以根据本发明的原理来接受用户证书和通信属性选择。登录网页217可以类似于登录网页600。登录网页600包括可以接受用户标识符的域606和可以接受对应的密码的域607。
可以使用单选按钮601来接受指出“客户方的浏览器是‘高级客户’”的通信属性选择。可以使用单选按钮602来接受指出“客户方的浏览器是下层客户’”的通信属性选择。“高级客户”可以包括执行更多高级处理(例如,运行正本或呈现多媒体输出)的功能性。另一方面,“下层客户”可以不包括执行高级处理的功能性。相应地,可以根据客户方的浏览器的各种性能来适当地调整从服务器那里被返回的内容的丰富性。当“高级客户”在减小的带宽和/或长等待时间连接(例如,拨号连接)上被连接到服务器时,选择“下层客户”可以减少从服务器那里被返回的内容的数量。
可以使用单选按钮603来接受指出“客户方的浏览器处于‘非可信的客户计算机系统’”的通信属性选择。可以使用单选按钮604来接受指出“客户方的浏览器处于‘私人客户计算机系统’”的通信属性选择。“私人客户计算机系统”可能是具有有限的(或甚至没有)公共存取的家庭或公司客户计算机系统。“非可信的客户计算机系统”可能是具有增加的公共存取的客户计算机系统(例如,旅馆或机场中的因特网室)。相应地,可以根据客户计算机系统的可信赖性,来适当地调整与从服务器那里被返回的内容有关联的安全性。可以选择按钮608,以便将所输入的用户证书和所选择的通信属性发送到服务器计算机系统。
离开图6,现在来参考图5,图5展示了方法500的范例流程图,方法500用于根据本发明的原理来确定与客户有关联的通信属性。将在网络系统结构200中所描绘的客户计算机系统和服务器计算机系统方面来描述方法500。方法500包括将登录网页发送给客户的动作(动作501)。动作501可以包括:服务器计算机系统发送登录网页,该登录网页包括用于选择可以改变HTTP消息的处理方式的一个或多个通信属性的界面。例如,服务器计算机系统211可以将登录网页600(或类似的登录网页)发送到客户计算机系统201。
方法500包括从服务器接收登录网页的动作(动作505)。动作505可以包括:客户计算机系统接收登录网页,该登录网页包括用于选择可以改变服务器处理HTTP消息的方式的一个或多个通信属性的界面。例如,客户计算机系统201可以接收登录网页600(或类似的登录网页)。方法500包括在客户处呈现该登录网页的动作(动作506)。动作506可以包括:客户计算机系统处的浏览器在该客户计算机系统处呈现该登录网页。例如,浏览器202可以在客户计算机系统201处呈现登录网页600(类似的登录网页)。
方法500包括接收一个或多个通信属性中的至少一个通信属性的选择动作(动作507)。动作507可以包括:客户计算机系统接收登录网页处的一个或多个通信属性中的至少一个通信属性的选择。例如,客户计算机系统201处的用户可以操作输入设备(例如,键盘和/或鼠标),以便将通信属性选择输入登录网页600。登录网页600可以接收用户输入的选择。例如,登录网页600可以接收单选按钮601或单选按钮602的用户输入的选择,以及单选按钮603或单选按钮604的用户输入的选择(可能连同接收域606和607中的用户输入的证书)。
方法500包括将通信属性选择发送到服务器处的通信过滤器的动作(动作508)。动作508可以包括:客户计算机系统将通信属性选择发送到服务器计算机系统处的通信过滤器。例如,客户计算机系统201可以将通信属性选择(例如,和用户输入的证书一起)发送到服务器计算机系统211。方法500包括从客户那里接收至少一个通信属性选择动作(动作502)。动作502可以包括:服务器计算机系统接收可从登录网页中选择的一个或多个可选择的通信属性中的至少一个通信属性的选择。例如,通信过滤器243可以从客户计算机系统201接收一个或多个通信属性选择(例如,在登录网页600中被选择)。
方法500包括一个动作:询问客户,以便确定所接收的至少一个通信属性选择是否被支持,并识别由客户支持的其他有关的通信属性(动作503)。动作503可以包括:服务器计算机系统询问客户计算机系统,以便确定所接收的通信属性选择是否被支持,并识别由客户支持的其他有关的通信属性。例如,服务器计算机系统可以使用“用户代理”HTTP头部和有关客户计算机系统的原先的知识,来确定该客户计算机系统的性能。可以通过登录网页并从在客户计算机系统处的登录网页内部运行的正本(例如,JavaScript正本)中确定客户计算机系统的额外的性能。
另一方面,询问客户计算机系统可以包括:将请求发送到客户计算机系统,从而使客户计算机系统向服务器计算机系统揭示配置信息。例如,服务器计算机系统211可以将请求发送到客户计算机系统201,请求配置浏览器202。作为响应,浏览器202可以指出配置信息(例如,版本号)和浏览器202是否支持HTTP压缩(例如,gzip压缩)。服务器计算机系统211可以根据版本号来确定登录网页600处的“高级客户”的选择是否合适。例如,服务器计算机系统可能能够确定浏览器202的版本不支持正本。这样,即使选择“高级客户”,服务器计算机系统也可以将被简化的内容提供给客户计算机系统201。
简化内容可以包括:减少被传递给客户计算机系统的内容的数量。例如,响应于关于帮助信息的下层客户请求,服务器计算机系统可以返回被减少的(不太罗嗦的)帮助信息。另一方面,响应于关于帮助信息的高级客户请求,服务器计算机系统可能会返回增加的帮助信息(例如,包括搜索正本和其他高级功能性)。服务器计算机系统也可以根据客户计算机系统的可信赖性来改变所传递的内容。例如,服务器计算机系统可以将有关如何访问敏感的公司数据的帮助信息提供给私人客户计算机系统,但可能不会将相同的信息提供给非可信的客户计算机系统。
服务器计算机系统211可能会测试浏览器202,以验证做广告的特点得到适当的支持。例如,当浏览器202指出对gzip压缩的支持时,服务器计算机系统211可以将gzip压缩的内容发送到客户计算机系统201,以确定浏览器202是否适当地处理该gzip压缩内容。客户计算机系统201可能会对指出gzip压缩支持的合适的请求头部进行配置。客户计算机系统201可以包括被发送到服务器计算机系统211并在服务器计算机系统211处被接收的客户请求中的合适的请求头部。作为响应,服务器计算机系统211可以询问客户计算机系统201,以确定客户计算机系统201是否适当地对gzip压缩的内容进行超高速缓存并按不会对基于Web的应用程序的安全性和完整性造成不利影响的方式来处理gzip压缩的内容。
方法500包括根据所选择和所识别的通信属性来配置通信过滤器的动作(动作504)。动作504可以包括:服务器计算机系统根据被客户支持的任何所选择的通信属性和所识别的其他有关的属性,将通信过滤器配置成处理与客户的HTTP通信。例如,服务器计算机系统211可以根据浏览器202的通信属性选择(例如,“高级客户”和“非可信的客户”计算机系统)和所识别的其他有关的通信属性(例如,HTTP压缩支持)来配置通信过滤器243,以便处理与客户计算机系统201的HTTP通信。
当HTTP消息将要从服务器计算机系统211被发送到客户计算机系统201时,通信过滤器243可以改变HTTP报文首部和该HTTP消息的内容,以便使该内容符合客户计算机系统201的通信属性。例如,如果电子邮件服务器212将具有非压缩的电子邮件信息的消息发送到客户计算机系统101,则通信过滤器243可以截取该消息,gzip压缩内容,并改变这些报文首部,以指出该电子邮件信息被gzip压缩。另一方面,服务器计算机系统的其他模块(例如,“因特网信息服务器”(“IIS”)的模块)可以执行gzip压缩。相应地,可以按最好地利用客户计算机系统的性能的方式并根据用户的要求,在该客户计算机系统处呈现内容。
当服务器计算机系统211接收指出“客户方的浏览器处于‘私人客户计算机系统’”的选择时,可以利用私人旋转密钥存储器(例如,私人密钥存储器231)来保护用户证书。另一方面,当服务器计算机系统211接收指出“客户方的浏览器处于‘非可信的客户计算机系统’”的选择时,可以利用非可信的旋转密钥存储器(例如,非可信的密钥存储器221)来保护用户证书。
现在回去参考图3,方法300包括利用登录网页将证书提交给服务器的动作(动作303)。动作303可以包括:客户计算机系统利用登录网页,将证书提交给服务器计算机系统。例如,客户计算机系统201可以利用登录网页217,将证书(可能连同通信属性选择)提交给服务器计算机系统211。用户证书和通信属性选择可以作为登录元素被包括在邮政消息中,该邮政消息被提交给登录元素格式证实器。例如,客户计算机系统201可以将邮政消息254(包括登录元素273)发送到服务器计算机系统。
方法300包括接收曾在登录网页处被提交的用户证书的动作(动作308)。动作308可以包括:服务器计算机系统接收曾在登录网页处被提交的用户证书。例如,服务器计算机系统211可以从客户计算机系统201接收用户证书(可能连同通信属性选择)。证书和通信属性选择可以作为邮政消息中的登录元素来加以接收。例如,服务器计算机系统211可以从客户计算机系统201接收邮政消息254(包括登录元素273)。通过通信过滤器243的虚线指出:可以将通信过滤器243配置成允许邮政消息254通过,而不会改变邮政消息254。相应地,可以将邮政消息254发送到登录元素证实器216,而不作修改。在合适的时候,可以在客户计算机系统与服务器计算机系统之间建立手工认证的连接(例如,使用“传输层安全性”(“TLS”)或“加密套接字协议层”(“SSL”)),以减少怀有恶意的过程或用户“测错”分组的可能性,并减少中间人攻击的可能性。
登录元素证实器216也可以为客户计算机系统201生成唯一标识符(例如,全球唯一标识符(“GUID”))。登录元素证实器216可以使用数字签名和加密算法来保护所接收的用户证书(例如,被包括在登录元素273中)。例如,登录元素证实器216可以生成随后被用于证实所接收的用户证书的数字签名。登录元素证实器216可以通过散列(例如,使用SHA1或MD-5散列算法)旋转密钥存储器中最当前的密钥、所生成的唯一标识符和第一个恒定字符串的组合,来获得签名密钥(可以被用来用计数法在数据上签字)。在一些实施例中,数字签名被表示为“散列消息识别码”。相应地,可以根据公式1来获得签名密钥:
KSIG=SHA-1(KMOST CURRENT ROTATING,GUID,HMACKeyString)
公式1
在公式1中,KMOST CURRENT ROTATING表示合适的旋转密钥存储器中最当前的密钥。例如,当浏览器202处于“私人客户计算机系统”(例如,如通信属性选择所指出)时,KMOST CURRENT ROTATING表示私人旋转密钥存储器231中最当前的密钥(例如,密钥232)。GUID表示对应于客户计算机系统201的唯一标识符。HMACKeyString表示一个恒定字符串的文本。从KSIG中,可以根据公式2来生成“散列消息识别码”:
Digital Signature=HMACK(KSIG,(GUID,{username;password},Flags))
公式2
在公式2中,HMAC表示“散列消息识别码”算法(例如,如“请求注解”(“RFC”)2104中所描述的)。公式2中的(GUID,{username:password},Flags)部分表示:GUID、用户证书和代表通信属性选择的标记作为到“散列消息识别码”算法的文本输入而被包括在内。在合适的时候,可以将这些用户证书转换成与“散列消息识别码”算法相兼容的文本格式(例如,通过对这些用户证书进行base64编码)。虽然在“散列消息识别码”算法方面有所描述,但是,被用于生成数字签名的算法并不重要,并且实质上可以使用任何数字签名、摘要或识别码算法。
登录元素证实器216可以通过散列旋转密钥存储器中最当前的密钥、唯一标识符和第二个恒定字符串的组合,来获得加密密钥(可以被用来为数据加密)。相应地,可以根据公式3来获得加密密钥:
KENC=SHA-(KMOST CURRENT ROTATING,GUID,EncryptKeyString)
公式3
在公式3中,KMOST CURRENT ROTATING表示来自在签名密钥的生成过程中所使用的旋转密钥存储器的最当前的密钥。这样,如果密钥232曾经被用来生成KSIG,则也可以使用密钥232来生成KENC。GUID表示对应于客户计算机系统201的唯一标识符。EncryptKeyString表示与HMACKeyString不同的一个恒定字符串的文本。相应地,可以根据公式4来生成被加密的信息:
Encrypted Information=KENC[Digital Signature,{username:password},Flags]
公式4
在公式4中,Digital Signature(数字签名)表示由公式2生成的DigitalSignature(数字签名),{usemame:password}表示用户证书,Flags表示通信属性选择。
步骤311包括发送表示用户证书的至少一个部分和取决于时间的签名的被加密的信息的一个对应的动作(动作309)动作309可以包括:服务器计算机系统将表示用户证书的至少一个部分和取决于时间的签名的被加密的信息发送到客户计算机系统。例如,登录元素证实器216可以将消息255(包括GUID274和被加密的证书275)发送到客户计算机系统201。如通过通信过滤器243的虚线所指出的,可以将通信过滤器243配置成允许消息255通过,而不会改变消息255。相应地,可以将消息255发送到客户计算机系统201,而不作修改。
方法300包括接收表示用户证书的至少一个部分和取决于时间的签名的被加密的信息的动作(动作304)。动作304可以包括:客户计算机系统从服务器计算机系统那里接收表示用户证书的至少一个部分和取决于时间的签名的被加密的信息。例如,客户计算机系统201可以从服务器计算机系统211接收消息255(包括GUID 274和被加密的证书275)。消息255可以被配置成:使客户计算机系统201将GUID 274和被加密的证书275存储在Cookies 203中。例如,消息255可以被配置如下:
Set-Cookie:sessionid={GUID};path=/
Set-Cookie:creddata={Encrypted Information};path=/
方法300包括发送包括被加密的信息的第二个请求的动作(动作305)。动作305可以包括:客户计算机系统发送关于对资源(例如,在第一个请求中所要求的电子邮件消息)进行基于Web的访问的第二个请求。例如,客户计算机系统201可以将请求256(包括邮件服务器URI 267、GUID 274和被加密的证书275)发送到服务器计算机系统211。方法300包括接收包括被加密的信息的第二个请求的动作(动作310)。动作310可以包括:服务器计算机系统接收关于对资源(例如,在第一个请求中所要求的电子邮件消息)进行基于Web的访问的第二个请求。例如,服务器计算机系统211可以从客户计算机系统201接收请求256(包括邮件服务器URI 267、GUID 274和被加密的证书275)。
在一些实施例中,客户计算机系统已将具有GUID和被加密的信息的对应的Cookies存储在浏览器存储器中。当请求对服务器处的资源(例如,电子邮件数据)进行基于Web的访问时,可以使用所存储的GUID和被加密的信息。图2B展示了根据本发明的网络系统结构200的一个例子,该网络系统结构促进利用受保护的客户方的证书来获得服务器处的资源。图4展示了根据本发明的方法400的范例流程图,该方法用于利用受保护的客户方的证书来获得服务器处的资源。将根据图2B中所描绘的客户计算机系统和服务器计算机系统来描述方法400。
方法400包括发送关于对服务器处的资源进行基于Web的访问的请求(包括通话标识符和被加密的用户证书)的动作(动作401)。动作401可以包括:客户计算机系统发送关于对服务器计算机系统处的资源进行基于Web的访问的请求。例如,客户计算机系统201可以将请求291(包括邮件服务器URI 267、GUID 274和被加密的证书275)发送到服务器计算机系统211。邮件服务器URI267表示提供对电子邮件服务器212所控制的电子邮件资源进行访问的URI。GUID 274表示以前从服务器计算机系统211被发送到客户计算机系统201的唯一通话标识符。被加密的证书275表示以前从服务器计算机系统211被发送到客户计算机系统201的被加密的用户证书和取决于时间的签名。可能已从合适的旋转密钥存储器内的密钥中生成被加密的证书275。
方法400包括接收关于对服务器处的资源进行基于Web的访问的请求(包括通话标识符和被加密的用户证书)的动作(动作404)。动作404可以包括;服务器计算机系统接收关于对服务器计算机系统处的资源进行基于Web的访问的请求。例如,服务器计算机系统211可以从客户计算机系统201接收请求291(包括邮件服务器URI 267、GUID 274和被加密的证书275)。
方法400包括尝试使用旋转密钥存储器中最当前的密钥来证实被加密的用户证书的动作(动作405)。动作405可以包括:服务器计算机系统尝试使用旋转密钥存储器中最当前的密钥来证实用户证书的至少一个部分。例如,当指出浏览器202处于私人客户计算机系统时,服务器计算机系统可以尝试使用密钥232来证实被加密的证书275。另一方面,当指出浏览器202处于非可信的客户计算机系统时,服务器计算机系统可以尝试使用密钥222来证实被加密的证书275。证书证实器237可以通过散列来自合适的旋转密钥存储器的最当前的密钥、唯一通话标识符和第二个恒定字符串(在获得加密密钥时被使用)的组合,来获得可以被用来为数据解密的解密密钥。相应地,可以根据公式5来获得解密密钥:
KDCR=SHA-1(KMOST CURRENT ROTATING,GUID,EncryptKeyString)
公式5
在公式5中,KMOST CURRENT ROTATING表示合适的旋转密钥存储器中最当前的密钥(例如,密钥232或密钥222)。GUID表示对应于客户计算机系统201的唯一标识符。EncryptKeyString表示在导出KENC期间所使用的恒定字符串。相应地,证书证实器237可以根据公式6来对被加密的信息进行解密,以揭示表示通信属性选择的Digital Signature(数字签名)、User Credentials(用户证书)和Flags:
Digital Signature,{username:password},Flags=KDCR[Encrypted Information]
公式6
证书证实器237可以通过散列合适的旋转密钥存储器中最当前的密钥、唯一标识符和第一个恒定字符串的组合,来获得可以被用来生成证实数字签名的证实密钥。在一些实施例中,证实数字签名被表示为“散列消息识别码”。相应地,可以根据公式7来获得证实密钥:
KVAL=SHA-1(KMOST CURRENT ROTATING,GUID,HMACKeyString)
公式7
在公式7中,KMOST CURRENT ROTATING表示合适的旋转密钥存储器中最当前的密钥。GUID表示对应于客户计算机系统201的唯一标识符。HMACKeyString表示在获得签名密钥时所使用的那个恒定字符串的文本。从KVAL中并使用所揭示的用户证书和Flags形式公式6,可以根据公式8来生成“散列消息识别码”:
Validation Digital Signature=HMACK(KVAL,(GUID,{username:password},Flags))
公式8
在公式8中,HMAC表示“散列消息识别码”算法。公式8中的(GUID,{username:password},Flags)表示:表示通信属性选择的GUID、用户证书和标记作为到“散列消息识别码”算法的文本输入而被包括在内。虽然在“散列消息识别码”算法方面已作描述,但是,被用来生成证实数字签名的算法并不重要,并且实质上可以使用任何数字签名、摘要或识别码算法。
当证实数字签名等于数字签名时,证实被加密的证书275中所表示的用户证书。相应地,通信过滤器243建立一个包括这些被证实的用户证书的授权头部(例如,HTTP授权头部)。通信过滤器243可以将该授权头部插入关于基于Web的资源访问的请求。例如,通信过滤器243可以从请求291中除去被加密的证书275,并将证书289插入请求291,从而产生请求291A。
当证实数字签名不等于数字签名时,没有证实用户证书。相应地,证书证实器237根据合适的旋转密钥存储器中仅次于最当前的密钥来重复公式5、6、7和8的功能性。例如,关于处于私人客户计算机系统的客户方的浏览器,证书证实器237可以使用密钥233。另一方面,关于非可信的客户处的客户方的浏览器,证书证实器237可以使用密钥223。证书证实器可以尝试使用合适的旋转密钥存储器中的每个密钥来证实用户证书。被证实的用户证书可以被包括在合适的授权头部中。
在一些实施例中,连同被加密的证书一起包括一个索引,用于指出一个旋转密钥(例如,以前被用来为证书加密的旋转密钥),将使用该旋转密钥来尝试证实被加密的证书。例如,客户计算机系统201可以包括请求291中的一个索引,该索引识别非可信的旋转密钥存储器221或私人旋转密钥存储器231中的旋转密钥。索引可以是对将要被使用的旋转密钥的生成进行识别的数值(例如,0、1、2等)。例如,当客户计算机系统201是私人客户计算机系统时,索引0可以识别密钥232。同样,当客户计算机系统201是非可信的客户计算机系统时,索引2可以识别密钥224。相应地,通过使用索引,可以提高证实过程的效率。当利用在索引中所识别的旋转密钥没有证实证书时,可以使用对应的旋转密钥存储器中的其他密钥来尝试证实这些证书。
方法400包括将请求发送到控制对所请求的资源进行基于Web的访问的模块的动作(动作406)。动作406可以包括:服务器计算机系统将请求发送到控制基于Web的资源访问的模块。例如,通信过滤器243可以将请求291A发送到电子邮件服务器212,请求291A包括邮件服务器URI 267和证书289(如从被加密的证书275中所揭示的)。电子邮件服务器212可能是控制基于Web的电子邮件资源访问的模块。电子邮件服务器212可以将证书289和证书数据库213进行比较,以确定对所请求的电子邮件资源的基于Web的访问是否被加以授权。
方法400包括确定是否应该从旋转密钥存储器中最当前的密钥中获得刷新的被加密的用户证书的动作(动作407)。动作407可以包括:服务器计算机系统确定是否应该从旋转密钥存储器中最当前的密钥中获得表示用户证书和取决于时间的签名的刷新的被加密的信息。当利用来自旋转密钥存储器的密钥(而不是来自该旋转密钥存储器的最当前的密钥)来证实用户证书时,服务器确定:将要获得刷新的被加密的证书。例如,如果证书证实器237利用密钥224来证实被加密的证书,则通信过滤器243可以确定:将要为被加密的证书中所表示的用户证书获得刷新的被加密的证书。
相应地,虚线箭头表示:通信过滤器243可以随意地将cookie刷新请求294发送到登录元素证实器216。登录元素证实器216可以使用合适的旋转密钥存储器中最当前的旋转密钥来获得刷新的被加密的信息(例如,通过从最当前的密钥中获得刷新的数字签名和刷新的加密密钥)。登录元素证实器216可以将更新的GUID和刷新的被加密的证书返回给通信过滤器243。例如,虚线箭头表示:登录元素证实器216将消息295(包括更新的GUID 296和刷新的被加密的证书297)返回给通信过滤器243。
当证书289适合于对电子邮件服务器212处的电子邮件资源进行基于Web的访问时,电子邮件服务器212可以响应于请求291A来返回电子邮件资源。例如,电子邮件服务器212可以将包括资源293(例如,电子邮件消息)的响应292返回给通信过滤器243。另一方面,当证书289不适合对电子邮件服务器212处的电子邮件资源进行基于Web的访问时,电子邮件服务器212可以响应于请求291A来返回未经授权的指示。例如,虚线箭头表示:电子邮件服务器212可以将响应294(包括未经授权的指示符272)返回给通信过滤器243。当通信过滤器243接收未经授权的指示符时,通信过滤器243可以将客户计算机系统201重定向到登录网页217。
当被证实的用户证书合适时,通信过滤器243可以将所请求的资源发送到客户计算机系统201。例如,当利用来自合适的旋转密钥存储器的最当前的密钥来证实被加密的证书275时,在通信过滤器243处接收包括资源293的响应292。通信过滤器243可以将响应292发送到客户计算机系统201。相应地,可以在浏览器202处呈现资源293。
当被证实的用户证书合适时,通信过滤器243也可以将刷新的被加密的证书和更新的GUID连同资源一起发送到客户计算机系统201。例如,当利用来自旋转密钥存储器的密钥(不是该旋转密钥存储器中最当前的密钥)来证实被加密的证书275时,资源293、更新的GUID 296和刷新的被加密的证书297都可以在通信过滤器243处被接收。虚线箭头表示:然后,通信模块243可以将响应276(包括资源293、更新的GUID 296和刷新的被加密的证书297)发送到客户计算机系统201。
方法400包括接收资源连同客户方的浏览器处的更新的通话标识符和刷新的被加密的用户证书的动作(动作402)。动作402可以包括:客户计算机系统接收所请求的资源连同表示用户证书的至少这个部分和刷新的取决于时间的签名的更新通话标识符和刷新的被加密的信息。例如,客户计算机系统201可以从服务器计算机系统201接收响应276(包括资源293、更新的GUID 296和刷新的被加密的证书297。
方法400包括将更新的通话标识符和刷新的被加密的用户证书存储在对应的Cookies中的动作(动作403)。动作403可以包括:客户计算机系统将更新的通话标识符和刷新的被加密的信息存储在客户计算机系统处的对应的Cookies中。例如,更新的GUID 296和刷新的被加密的证书297可以被存储在Cookies 203中的对应的Cookies内,从而重写GUID 274和被加密的证书275。可以在浏览器202处呈现资源293。
在不脱离本发明的精神或本质特征的前提下,本发明可以在其他的特殊形式中得到具体表现。无论从哪方面来看,所描述的实施例都将被认为只起说明性的作用,而不具有限制性的作用。所以,本发明的范围由所附权利要求书(而不是由前面的描述)指明。在权利要求书的相等物的含义和范围以内的所有更改都将被包括在其范围以内。