实现对计算机网络中服务的安全访问的系统和方法 本发明一般涉及到计算机网络,更具体地说涉及到实现对计算机网络中服务的安全访问的系统和方法。
在初期,互联网提供了面向研究的环境,用户和主机对那里的信息的自由、开放式的交换很感兴趣,并且在那里用户和主机相互信赖。然而,互联网络戏剧性地增长,目前大约有100,000互相连接的计算机网络和几百万用户。由于互联网络的规模和公开性,它变成了数据盗窃、数据蚀变和其它恶作剧的目标。
事实上,在互联网上的每个人都是有弱点的。在连接之前,公司会权衡互联网连接与安全性损失的利弊。当前的安全技术用来提供客户机和服务器认证、数据机密性、系统完整性以及系统访问控制等。
当前的安全技术中最流行的是防火墙,它包括在可信赖的网络和互联网之间安置地一个中间系统。为避免可信赖网络和互联网之间未经认证的通信,防火墙提供了安全性能的外部参数。一个防火墙可以包括屏蔽路由器、代理服务器和应用层网关。
为了能够访问可信赖的网络中受到保护的服务,互联网上的用户需要用某种方法,例如输入口令、或者利用硬件令牌完成对于询问的回答,向防火墙提供身份。通过适当的认证,用户可以通过防火墙进入局域网络,但是它通常被限制在预定的服务设置之内,例如电子邮件、FTP(文件传输协议)等等。
一些局域网络管理员只是将服务器放置在防火墙之外,该服务器经常被称为“献身的羔羊”,该服务器存储那些可以被远程用户很容易访问的非机密数据,因而具有很少的安全性能。
一个非军事化区域、或DMZ,处于用来保护可信赖网络的两个防火墙之间。在DMZ中,外部防火墙在允许超级文本传送协议(HTTP)请求的同时保护服务器免受外部威胁。如果在DMZ中一个服务器受到危害,内部防火墙就会保护可信赖的网络。许多公司利用DMZ来维护它们的网络服务器。
另一种保护计算机网络的安全技术是公用密钥证书的发行和使用。证书机构把公用密钥证书发布给用户,并且通过某一方法使用户的身份生效、并且发布一个描述用户姓名和公用密钥的证书。作为可靠性的证据,利用本人的私用密匙,该证书机构用计数法标记用户的证书。
这样,当用户经由一台客户计算机连接到一台服务器上时,这台客户计算机就会和服务器交换公用密钥证书。通过利用证书机构的公用密钥来检验证书的署名,每一个用户都会检验该接收证书的可靠性。接着,通过用服务器公用密钥加密信息,用户能够给服务器发送安全的通信联络,并且用用户公用密钥加密信息,服务器能够给用户发送安全通信联络。虽然任何用户可以给出一个公用密钥证书,但是仅有该真实用户和该真实主机才拥有解密信息所需的相应私用密匙。认证和密钥分配的计算机安全系统的实例包括由麻省理工学院开发的KerberosTM安全系统和由IBM公司开发的NetSPTM安全系统。
这些安全技术无法解决与漫游(移动的)用户相关的问题。对于漫游用户来说,维护识别和认证信息例如口令、证书、密钥等等是一个烦琐的处理过程。另外,访问多机系统要求多个密钥,这经常使得跟踪和利用变得过于复杂。而且对防火墙之后的系统的直接访问会危害到安全性能。因此,容易、安全地对计算机服务实现远端访问的系统和方法是必需的。
本发明提供一种实现对计算机网络中服务的安全访问的系统和方法。此网络系统包括一个全球服务器,经由一个计算机网络与计算机服务器连接。全球服务器包括一个通信引擎,用于建立与客户机的通信联络;安全装置,用于与确定客户机特权的通信引擎连接;一个与安全装置连接的小服务程序(servlet)主机引擎,基于客户机特权给客户机提供一个应用小程序,此程序使得客户机与安全服务之间能够进行输入/输出操作;以及一个密钥保存(文件),用于存储使得能够对安全服务进行访问的密匙。全球服务器可以与多个站点连接,其中每一个站点提供多种服务。每一个站点都可以被防火墙保护。相应地,全球服务器存储此密匙,用于通过防火墙与服务进行通信。
此方法包括下列步骤:与客户机建立通信联络;识别和认证客户机;确定客户机特权;基于客户机特权,提供一个应用小程序给客户机,此程序使得客户机与安全服务之间能够进行输入/输出操作;检索使访问安全服务密匙;
本发明的系统和方法更好地提供了全球可访问的可信赖的第三方,即全球服务器。该可信赖的第三方安全地存储密匙,起着单一的识别和认证服务的作用。其它系统可以通过全球服务器被访问。全球服务器使用存储的密匙认证某一身份下的用户,此身份被另一系统的现有安全服务所领会,并建立起与所需服务之间的安全通信通道。由于全球防火墙,全球服务器很显著地被保护,以免受外部威胁。相应地,通过与服务相连接的防火墙,全球服务器为经过认证的客户机提供安全通信。全球服务器可以提供多级别的识别和认证服务。相应地,基于用户状态、识别与认证的强度以及通信通道的保密性,全球服务器可以提供多级别的资源访问。
由于全球防火墙以及由全球服务器执行的识别和认证服务,公司能够在全球服务器上存储相对机密的信息,用于供经认证的客户机使用。然而,本发明使得公司在全球服务器仅能保持它们的一部分机密信息,这样这个有限的损失就可以由可信赖的第三方系统妥协处理。此外,全球服务器可以很方便地起到客户机代理的作用,用于控制对服务的访问、记录密匙的使用以及对记录资源的访问。
图1是一个方框图,图示了一个按照本发明的漫游用户网络访问系统;
图2是一个方框图,图示了图1所示的一例客户机的细节;
图3是一个方框图,图示了图1所示的全球服务器的细节;
图4是一个方框图,图示了图1所示的一例服务器的细节;
图5是一个流程图,图示了一种用于远程访问一个安全服务的方法;
图6是一个流程图,图示了在客户机和全球服务器之间产生连接的图5所示的步骤的细节;
图7图示了一个示例性的网页;
图8A是一个流程图,按照第一实施例图示了图5所示的访问服务步骤的细节;
图8B是一个流程图,按照第二实施例图示了图5所示的访问服务步骤的细节;
图8C是一个流程图,按照第三实施例图示了图5所示的访问服务步骤的细节;
图1是一个方框图,图示了一个按照本发明的示例性漫游用户网络访问系统100。系统100包括一个计算机互连网络,在这里是指互联网102。系统100另外包括第一公司网络112、第二公司网络118、一个信息站(kiosk)网络138和一个网络服务提供商(ISP)网络143,每一个网络都被连接到互联网上。
公司网络112包括一个防火墙116,连接在互联网102和客户计算机114a之间。公司网络118包括一个防火墙,连接在互联网102和内部网络信号总线126之间。公司网络118另外包括:第一个服务器108a,用于提供第一服务110a;第二服务器108b,用于提供第二服务110b;一个客户计算机114b,用于存储提供第三服务110c的程序;以及一个第二客户计算机114c;并且每一个都被连接到信号总线126。这些服务110a-110d包括一个电子邮件服务程序、一个地址簿服务程序、一个日历服务程序、一个页面调度服务程序以及一个公司数据库服务程序。
信息站网络138包括第一客户计算机114d以及第二客户计算机114e,并且每一个都被连接到互联网102上。ISP网络143包括一个ISP148,它通过无线电通道146连接到第一客户计算机114f上,并且通过调制解调器152、156以及传输线154连接到第二客户计算机114g上。
互联网102包括一个被全球防火墙104保护的全球服务器106,并且还包括一个用于提供服务110d的服务器108e。客户计算机114a-114g和服务110a-110d之间的内部通信是经由全球服务器106完成的。例如,如果客户计算机114a-114g的任何一个用户想访问服务110a-110d(此服务被提供在系统100内用户未知的站点),那么他就可以利用一个已知的统一资源定位符(URL)来访问由全球服务器106提供的网页。一个示例性的网页300在图7中被显示、描述。全球防火墙104保护全球服务器106免受外部威胁。
在获得对全球服务器106提供的功能的访问特权之前,用户必须首先获得全球服务器106的授权。获得授权通常要求进行用户识别和认证,例如利用公用密匙证书。一旦进行了认证,全球服务器106为用户提供对服务110a-110d的访问。应该理解,基于识别和认证的变化强度、以及通信通道的保密性,用户将被授与对服务110a-110d访问的变化级别。
为使用户能够访问并控制服务110a-110d,全球服务器106可以在分布式网络环境中使用常规的应用小程序、小服务程序(servlets)或者代理服务器,比如由Netscape公司提供的JavaTM分布式环境。全球服务器106为用户的客户机提供对服务110a-110d的访问和控制。全球服务器106可以通过对用户的客户机重定向来访问服务110a-110d本身;全球服务器106可以访问服务110a-110d本身并通过代理给客户机提供输入/输出;或者全球服务器106可以提供服务110a-110d本身。参考图8A-8C,将描述对服务110a-110d不同的三种访问模式。
全球服务器106保存所有服务110a-110d的网络地址、用户的公用和私人密匙、用户的帐户编号、以及防火墙认证信息等等。防火墙认证信息包括必要的识别、口令和传送防火墙116和120需要的证书。相应地,用户仅需要保存全球服务器106的URL、以及识别和认证信息,比如一个口令或者用于可使用全球服务器106功能的硬件标记。这样,这个漫游用户可以通过任何连接到互联网102的计算机终端,能够访问计算机服务110a-110d。
图2是一个方框图,图示了客户计算机114的细节,其中客户机114a-114d的每一个都是客户机114的一种情况。客户机114包括一个中央处理器(CPU)210,比如一个摩托罗拉PC微处理器或者英特尔奔腾微处理器。一个输入设备220(例如键盘以及鼠标)以及一个输出装置230(比如阴极射线管(CRT)显示器),经由信号总线240连接到CPU210。一个通信接口250、一个数据存储装置260(例如只读存储器芯片(ROM)或者磁盘)、以及一个随机存取存储器(RAM)270,经由信号总线240也被连接到CPU210。客户计算机114的通信接口250,如图1所示被连接到互联网102,并且将参考图1描述。
操作系统280,包括用于控制CPU210处理过程的程序,并且它通常被存储在数据存储装置260中、并装入RAM270中用于执行。操作系统280包括一个通信引擎282,用于产生信息数据包并经由通信接口250将它们传送到互联网106或从互联网接收信息数据包。
操作系统280进一步包括一个互联网引擎,比如一个网页浏览器284,例如由网景公司提供的NetscapeTM网页浏览器或者由微软公司提供的IE浏览器。网页浏览器284包括一个用公用和私用密匙加密信息的加密引擎285,和一个应用小程序引擎286,用于执行从全球服务器106下载的应用小程序,使得客户机能够访问计算机服务110a-110d。下载的应用小程序288可以包括安全应用小程序290,用于执行服务例如用户识别和认证、信息完整性服务、以及证书检验。浏览器284进一步接收网页数据(391、图3)、配置数据390和识别一组用来选择服务110a-110d的信息,并且利用此信息来显示此网页(700、图7)。此网页浏览器284使得用户能够通过客户机114a-114b选择地执行服务110a-110d中的一种。
应该理解,客户机114a-114g例如客户机114b可以包括一个服务引擎490(图4),用于提供服务110a-110d例如服务110c。这样,对于一个客户机114b的用户,在不知道客户机114b提供服务110c的情况下,经由全球服务器106请求对服务110c的访问是有可能的。相应地,全球服务器106将为客户机114提供一个应用小程序288,目的是为用户提供回到客户机114b的服务110c的接口输入/输出。
图3是一个方框图,图示了全球服务器106的细节,此服务器包括一个CPU310例如一个摩托罗拉PC微处理器、或者一个英特尔奔腾微处理器。一个输入设备320例如键盘和鼠标、以及一个输出装置330例如一个CRT显示器通过信号总线340,被连接到CPU310上。一个通信接口350、一个数据存储装置360例如只读存储器或者磁盘、以及一个RAM370,经由信号总线340也被连接到CPU310。通信接口350照惯例作为互联网102的一部分被连接到客户机114。应该理解,虽然全球服务器106被描述为单一计算机,但它可以被理解为同时包括构成网络的多个计算机。
操作系统380,包括用于控制CPU310处理过程的程序,并且通常被存储在数据存储装置260上、并且被装入RAM370中用于执行。操作系统380包括一个通信引擎382用于产生信息数据包、并且经由通信接口350与客户计算机114交换信息数据包。
操作系统380进一步包括作为全球防火墙一部分的安全服务384,用于开放与用户通信的通道。例如,当一个客户机试图访问全球服务器106时,此安全服务384首先确定全球服务器106是否从特定端口(没有显示)接收了进入的(in-bound)通信,并且在下面描述的小服务程序主机引擎386中确定连接到该特定端口是否经过了认证。假如是的话,经由该特定端口,安全服务384就会允许通信引擎382开放到客户机114a-114b的通信通道。否则,将不开放通道。
操作系统380更进一步包括一个网页引擎387,它基于用户的识别、用户认证的强度以及通信信道的保密性,把网页数据391和识别一组可用服务110a-110d的信息传送到客户机114a-114g。一个示例性的网页700被显示在图7中,并且参考图7被描述。网页引擎387使得用户能够从网页700中选择服务110a-110d。
网页引擎387包括一个小服务程序主机引擎286,它能把包括一个认证应用小程序(没有显示)的安全应用小程序290下载到客户计算机114上,并且相应地执行小服务程序398的认证小服务程序397,以完成识别和认证服务。认证应用小程序290提示用户输入识别和认证信息,然后把此信息传达到认证小服务程序397。认证小服务程序397检验信息是否正确。应该理解,用户的认证信息不一定被送到认证小服务程序397,而是要用一种安全方法例如一个安全混杂来证明它的存在和正确性。小服务程序主机引擎386更进一步包括一个安全通信引擎396,它可以利用公用密钥证书与客户计算机114商讨安全通信通道。
相对于服务110a-110d的一个选择,小服务程序主机引擎386下载相应的应用小程序388、相应的配置数据390以及相应的用户数据392,并且可以把相应的服务地址信息394下载到客户计算机114。配置数据390包括用于配置用户网页浏览器284的信息、用于配置下载的应用小程序288的信息、以及用于配置选中的服务110a-110d的信息。用户数据392可以包括用户和服务所特定的信息,例如存储的书签、日历数据、寻呼机编号等等,此信息被特意地存储在全球服务器106上,以便可以容易地存取。服务地址信息394识别服务110a-110d的站点,这些服务是由全球服务器106提供给系统100的。客户计算机114执行下载的相应的应用小程序288,此程序经由小服务程序主机引擎386(可能使用一个相应的小服务程序398)使得用户能够访问并控制其相应的服务110a-110d。可下载的应用小程序388、配置数据390、用户数据392以及服务地址信息394可以被存储在此数据存储设备360中。
密钥保存395是一个数据文件,用于存储每一个用户的认证信息、公用以及私用的密匙、每一个防火墙的口令信息等等。密钥保存395以链表格式组织,这样,基于选中的服务110a-110d,全球服务器106能够检索适当的防火墙口令信息、适当的用户认证信息以及密匙等等。密钥保存395可以被存储在数据存储装置360上。
图4是一个方框图,图示了服务器108的细节,这样服务器108a-108c和客户机114b分别是服务器108的不同实例。服务器108包括一个CPU410,例如一个摩托罗拉PC微处理器或者一个英特尔奔腾微处理器。一个输入设备420例如一个键盘和鼠标、以及一个输出装置430例如一个CRT显示器,经由信号总线440被连接到CPU410。一个通信接口450、一个数据存储装置460例如ROM或者磁盘、以及一个RAM470经由信号总线也被连接到CPU410。如图1所示及描述的那样,通信接口450被连接到客户机114上。
操作系统480,包括一个用于控制CPU410处理过程的程序,通常被存储在数据存储装置460、并且被装入RAM470用于执行。操作系统480也包括一个通信引擎482,用于产生信息数据包、并经由通信接口450与客户机114或全球服务器106交换信息数据包。操作系统480进一步包括用于商讨与用户的安全通道的安全服务484、一个用于开放与用户之间的安全通道的通信引擎486、以及一个用于为用户提供服务110a-110d的服务引擎490。
服务引擎490包括一个服务接口492,用于接收并翻译当前在客户机114执行的与下载的应用小程序288交换的信息,并且包括一个服务处理机494和服务数据496用于处理来自用户的服务请求。服务数据496可以包括先前产生的文件、数据库信息等等。应该理解,服务数据496类似于用户数据392,以至于包括相同的信息类型,但是它是在工作服务器108上被维护,不是在全球服务器108上。
图5是一个流程图,图示了使得用户能够在计算机网络系统100上访问服务110a-110d的方法500。该方法500由客户机114以步骤505开始,此步骤产生一个与全球服务器106的通信联络。参考图6,步骤505将被更详细地描述。在步骤510中,全球服务器106确认用户有访问全球服务器106的功能的特权。确认用户访问特权的步骤可以包括检查用户证书、获得秘密口令、利用数字签名技术等等。应该理解,安全服务384可以使得小服务程序主机引擎386经由通信通道把安全应用小程序389传送到客户机114,以用于执行用户认证。
在用户访问特权被确认之后,全球服务器106的网页引擎387,在步骤515中把网页数据391和配置数据390下载到客户机114。在步骤520中,客户机114的浏览器284利用网页数据391和配置数据390、在客户机114的输出装置上显示网页700(图7)并且使得它能够访问由全球服务器106提供的服务110a-110d。一个示例性的网页700将如图7被显示和描述。
在步骤525中,经由输入设备220,用户从列出的网页700选项中选择一项服务110a-110d。作为响应,在步骤530中,全球服务器106的主机引擎386把相应的应用小程序(s)388、应用小程序配置数据390、用户数据392以及可能的服务地址信息394下载到客户机114。应用小程序配置数据390,最好包括用户特定的参数选择例如用户偏爱的字体,用于配置选中的服务110a-110d。用户数据392可以包括用户特定的以及服务特定的信息,例如存储的书签、日历数据、寻呼机编号等等。服务地址信息394识别选中的服务110a-110d的站点。也可以,相应的应用小程序388、应用小程序配置数据390、用户数据392以及服务地址信息394,在步骤515中已经与网页数据391以及配置数据390一起被下载。
在步骤535中,客户机114的应用小程序引擎286执行相应的下载的应用小程序288。工作服务器108在步骤537中初始化服务引擎490。全球服务器106在步骤538中选择图8A-8C中所描述的三种访问模式之一,用于使得客户计算机114能够与相应的服务引擎490联络。例如,如果用户选择服务器108c上的服务110d,它不被分离的防火墙保护,那么全球服务器106可能使用户能够直接访问。如果用户选择由公司网络118内的服务器108a提供的服务110a,那么全球服务器106可以为用户提供直接的访问。应该理解,每一个防火墙106以及120可以存储策略,此种策略建立全球服务器106应该选择的访问的正确模式。其它选择访问模式的因素可以包括用户偏爱性、有效性以及可行性。在步骤540中,全球服务器106为客户机114提供到选中的服务110a-110d的访问。参考图8A、8B以及8C,步骤540将更详细地描述。
图6是一个流程图,图示了步骤505的细节,此步骤从步骤605开始,在步骤605中用户通过客户机114利用已知的URL调用全球服务器106。在步骤607中,全球服务器106和客户机114之间建立一个安全通信通道,有可能是通过应用安全槽层(SSL)技术。即在步骤610中,全球服务器106的安全服务384确定联接安全通信是否许可,并且假如许可的话,建立一个与客户机114的通信通道。在步骤615中,客户机114的浏览器284和全球服务器106的安全服务384,协商安全通信通道参数,有可能是利用公用密匙鉴定。一例安全通信通道是使用RC4加密的RSA。应该理解全球服务器106可以被配置用来利用十种加密协议中的一种,并且客户机114可以被激活以利用五种加密协议中的一种。因此,步骤615可以包括选择一种对全球服务器106和客户机114通用的加密协议。在步骤620中,客户机114的加密引擎285和全球服务器的安全通信引擎396,利用安全通道参数来建立安全通信通道。之后,方法505也就结束了。
图7图示了一个示例性的基于URL可寻址超文本标记语言(HTML)的网页700,此网页由小服务程序主机引擎386维护。网页700包括一个标题710“网页”、提供的服务715的列表以及一个用于选择一种可供选择的服务715的指针770。正如图示的那样,提供的服务715可以包括一个电子邮件服务720、一个日历服务730、一个互联网访问服务740、一个页面调度服务750以及一部传真发送服务760。虽然图中未示,网页700可以包括其它服务例如书签、快速查寻卡(QuickCard)等等。
图8A是一个流程图,图示了第一实施例中步骤540的细节,这里指的是步骤540a,其中全球服务器106为客户机114提供到服务110a-110d的定向连接。步骤540由步骤805中下载的应用小程序288开始,从数据存储装置360中检索服务110a-110d的选中的服务地址、以及从密钥保存395检索用于服务110a-110d的认证信息。在步骤810中,通信引擎282在检索的服务地址处与工作服务器108的通信引擎482建立一个直接的、安全的连接,并且利用认证信息认证它本身。在步骤815中,应用小程序288充当与服务引擎之间的输入/输出接口。然后步骤540就结束。
图8B是一个流程图,图示了第二实施例中步骤540的细节,这里指的是步骤540b,其中全球服务器106作为客户机114到服务110a-110d的一个代理。步骤540b始于步骤840,在步骤840中,应用小程序288检索服务地址,此地址导致步骤540b被指示到全球服务器106。这样,在步骤845中,应用小程序288与全球服务器106之间建立了连接。在步骤850中,全球服务器106的小服务程序主机引擎386,检索选中的服务110a-110d的服务地址、以及来自密钥保存395的用于此选中服务110a-110d的认证信息。在步骤855中,为创建一个与工作服务器108的安全通信引擎486之间的安全通道,全球服务器106的安全通信引擎396协商安全通道参数。
之后,在步骤860中,应用小程序288充当与全球服务器106的安全通信引擎396之间的输入/输出接口(使得用户能够作出服务引擎490的请求)。在步骤865中,如果小服务程序主机引擎386确定执行客户机114用户的请求是未经认证的话,那么小服务程序主机引擎386在步骤870中就会确定是否方法540b已经结束,例如用户是否已经退出。假如是的话,那么方法820b就会结束。否则,方法540b返回到步骤860以获得另一个请求。在步骤865中,如果小服务程序主机引擎386确定执行客户机114用户的请求是经过认证的话,小服务程序主机引擎386,就可能利用小服务程序398充当客户机114到服务引擎490的代理。作为代理,小服务程序主机引擎386为应用小程序288把服务请求传送到服务110a-110d,并且把回应传送到当前执行在客户机114上正在请求的应用小程序288。方法540b接着返回步骤870。
图8C是一个流程图,图示了第三个实施例中步骤540的细节,这里指的是步骤540c,其中被请求的服务110a-110d位于全球服务器106。步骤540e始于步骤880,在步骤880中,应用小程序288为服务110a-110d检索服务地址,这样就会为应用小程序288提供全球服务器106上的服务110a-110d的服务地址。这样,在步骤882中应用小程序288与全球服务器106之间建立了一个连接。因为在图5所示的步骤510中、客户机114已经把它本身识别并认证到全球服务器106上,就不再需要附加的识别步骤。
在步骤884,判断服务110a-110d是否在当前运转。假如这样的话,那么在步骤886中就会判断服务110a-110d是否能够处理多个用户。如果不是,那么在步骤890中全球服务器106会为用户建立一个实例(instance),并且在步骤532中应用小程序288充当与全球服务器106上的服务110a-110d之间的输入/输出接口。否则,在步骤886中,如果服务110a-110d确定不能处理多个用户,那么方法540a就会进入步骤892。进一步,在步骤884中,如果全球服务器106确定当前服务110a-110d没有执行,那么全球服务器106在步骤888中就会起动服务110a-110d,并且进入到步骤886。
上文所述本发明最佳实施例的描述,仅仅是为了举例,并且上述实施例的其它变化和方法也可由本发明提供。本发明的部件可以通过下面的方法实现,利用可编程的通用数字计算机、利用应用程序特定的集成电路、或者利用互相连接的常规部件和电路的网络。在此已经描述了用于说明的实施例,但并不限制于此。按照上文的教导,可以产生许多变化、作出许多改进。本发明仅由下面的权利要求限制。