安全网络协议系统和方法 本发明涉及网络用户间传递信息包的系统和方法,尤其是在网络通信系统中,传送包含可执行程序的对象以代替传送传统的数据包的安全方法。
现有技术的网络协议通常传递作为数据包的信息,每个数据包包含头标和尾标、数据包类型标识符、以及有效负载(payload)。此载荷符合与标识的数据包类型相关的协议。从另一种观点来看,网络协议数据包通常依据被描述成可变长度记录或数据结构的请求和响应信息来定义,现有技术的被保护网络对这些数据包类型标识符使用过滤器,以筛除对网络的不需要的访问。
然而,现有技术的网络协议正变得更为灵活,例如某些新的协议,如HTTP,被用于实现极为通用的运行环境,结果造成对于此协议的网络安全防范日益困难。
本发明使用了包含可执行程序的包对象(packet objcet)以代替网络协议中的数据包(data packet)。在分布对象中网络协议是接口和对象地实施间的保密通信机制,在联网的对象(networked objects)中同级(peers)之间的通信被定义为一个记录或数据结构集,不同于上述的分布对象或联网对象,本发明的包对象其自身就是(或包含有)可执行的代码段。因为包对象包含可执行程序,所以它能被设置成响应正在保护网络的安全机制对其所作的质疑。
一旦在希望安全通信的各部分之间的安全接口协议达成,包对象被指定去实现安全接口且无论这些包对象用于什么样的系统服务,在可信和不可信网络的交界,“防火墙”(firewall)或安全机构从对象的安全接口来调用方法,以确定它的目标和将由包对象执行的任务的性质。例如,由包对象执行的任务也许是重新配置网络服务器的路由确定程序、将计算机受理的缺省网络打印机更改为特定的打印机、或者传递电子邮件信息。使用这样一套方法可以建立许多新的网络服务,而无需对相关的网络防火墙进行升级,因为包对象能自身标识,而不依赖防火墙去了解包对象的具体数据结构。
本发明的目的是提供为实现网络安全协议的灵活的系统和方法,它能免除所有网络用户都具有防火墙程序的需要,防火墙程序要事先知道请求的数据结构和对全部网络协议的响应信息。
本发明的另一个目的是提供一网络安全协议系统和方法,其中每个信息包括为安全而识别信息发送者和信息目标的方法,以及传递或执行此信息的方法。
总之,本发明是一种具有第一和第二网络实体(entities)的计算机网络。第一网络实体包括产生包对象的包对象产生器。包对象包含可执行的源方法、可执行的目标方法、以及与每种方法相关的数据。第一网络实体还包括传送此包对象的通信接口。
第二网络实体包括接收包对象的通信接口和处理所接收到的包对象的输入(incoming)包对象处理器。输入包对象处理器包括源和目标验证器,以便用其相关数据执行源和目标方法,从而验证接收到的包对象的源和目标。
在优选实施例中,所产生的包对象还包括可执行的主方法和与主方法相关的数据。输入包对象处理器还包括主方法执行器,当包对象的源和目标得到验证时去执行主方法,这里,主方法完成所希望的关于第二网络实体的功能。
在另外的优选实施例中,网络包括第三网络实体,并且所产生的包对象还包含可执行的主方法和与主方法相关的数据。当包对象的源和目标得到验证时,第二网络的通信接口重新传送包对象。第三网络实体包括接收重新传送的包对象的通信接口和处理所接收的包对象的输入包对象处理器。输入包对象处理器包括主方法执行器以完成执行所希望的有关第三网络实体的功能的主方法。
通过以下的详细说明及所附权利要求,并结合附图,本发明的目的和特点将更加明显,其中:
图1是体现本发明的分布式计算机系统的方块图。
图2是根据本发明的客户计算机的方块图。
图3是根据本发明的防火墙计算机的方块图。
图4是根据本发明的服务器的方块图。
图5是现有技术的数据包的方块图。
图6是本发明的安全网络协议方法的流程图。
图7是本发明优选实施例中包对象的方块图。
参考图1,这里显示的是根据本发明的分布式计算机网络100,它包括许多网络机构,有客户计算机102和103、服务器104、防火墙或警卫计算机105、网络通信连接106、网络资源107和命名服务器108。
防火墙计算机105建立网络100的保护侧109和非保护侧111。客户计算机103和服务器104、网络资源107和命名服务器108被连接在一起并连到防火墙计算机的保护侧,客户计算机102被连接在一起,并在非保护侧连到网络通信连接106。
网络通信连接106连接防火墙计算机103到非保护侧的客户计算机102。网络通信连接可能是局域网或者广域网、Internet连接、或者是防火墙计算机与非保护侧客户计算机之间的某些其它网络连接。
虽然大部分非保护侧客户计算机102是桌面型计算机,如Sun工作站、IBM兼容机、以及Macintosh计算机,实际上任何类型的计算机都可能成为非保护的客户计算机。如图2所示,每台这种客户计算机包括中央处理器(CPU)200、用户接口202、存贮器204、和通信接口206。通信接口使非保护侧客户计算机、命名服务器108、服务器104、以及保护侧客户计算机105通过网络通信连接106和防火墙105相互通信。存贮器存贮操作系统208、局部库210、包对象产生器212、输入包对象处理器214、和与平台(或机器)无关的虚拟机器模块216,以及其它的程序和数据218。虚拟机器模块包含一组原语(primitives)以使与平台无关的程序能够执行。虚拟机器模块最好是“Java”(Sun Microsystems公司注册商标)虚拟机器模块,以执行用Java语言编号的程序。
参看图3,防火墙计算机105包括CPU300、存贮器302、用户接口304、和通信接口306。通信接口使防火墙计算机与非保护侧客户计算机102通过网络通信连接106进行通信,以及与服务器104、保护侧客户计算机103、网络资源107、还有保护侧109的命名服务108器进行通信。防火墙计算机的存贮器存贮有操作系统308、局部库310、包对象产生器312、输入包对象处理器314、与其自身平台无关的虚拟机器模块316、以及其它的程序和数据318。防火墙计算机的虚拟机器模块在很多方面与客户计算机102的虚拟机器模块216功能上相似,除了可能具有不同的一组原语外。其它的程序和数据包括用虚拟机器模块216和316的语言的与平台无关的程序。
回到图4,保护侧的服务器104包括CPU400、存贮器402、用户接口404、和通信接口406。通信接口使服务器与保护侧的客户计算机103、命名服务器108、及网络资源107进行通信。它也允许服务器通过防火墙计算机105和网络通信连接106而与非保护侧客户计算机102通信。为了现在的讨论,假定服务器的存贮器中存贮了操作系统408、局部库410、包产生器412、输入包处理器414、与其自身平台无关的虚拟机器模块416、以及其它的程序和数据418。服务器的虚拟机器模块在很多方面与客户计算机102和防火墙计算机105的虚拟机器模块216和316在功能上相似,除了独特地包含另外的原语以处理网络管理任务之外,例如设置缺省网络打印机、设置网络包路由缺省、以及处理各种网络资源107。其它的程序和数据包括用虚拟机器模块216、316和416的语言的与平台无关的程序。
再参看图1,如同非保护侧客户计算机102,事实上任何类型的计算机都可成为保护侧客户计算机103。除了它们的虚拟机器模块具有不同的一组原语。保护侧客户计算机的配置类似于服务器104。
参考图5,典型的网络数据包500具有网络头标502和网络尾标504,分别处在其开始和结尾处,还具有有效载荷506、和指出存贮在有效载荷506中数据的性质的协议标识符508。于是,当系统从网络上接收这样一数据包时,它的网络包处理器(有时称为防火墙)检查协议标识符然后根据相应的协议过程处理数据包。如果网络包处理器不能识别此协议标识符,它通常拒绝此接收的数据包。
不过,再参考图1,在本发明中包对象110可能用于按照图6所示方法600在网络100的任意实体间的通信。为了说明起见,将描述在非保护侧客户计算机102和保护侧服务器104之间,通过网络通信连接106和防火墙计算机105的这种类型的通信。
参看图1和图2,为响应用户通过用户接口112起动的命令,非保护侧客户计算机102的包对象产生器212产生包对象110。如图7所示,像典型的网络数据包一样,每个包对象包含分别在它的起始和结尾的网络头标702和网络尾标704,然而,同典型的网络数据包不同,它包含对象头标706、可执行的源方法708、可执行的目标方法710、可执行的主方法712、各方法的特征标记714、对象数据716、以及对象数据的特征标记718。
在产生包对象110时,包对象产生器212以源、目标和主方法708-712、对象数据716、还有对应的对象头标来生成一个对象,并将它们嵌入包对象中(图6的602)。源、目标和主方法包括以客户计算机、防火墙计算机和服务器102、105及104的虚拟机器模块216、316及416的语言编写的可执行代码。对象数据包括至少与某种方法相关的数据。正如将要更详细说明的那样,在主方法712将由服务器104执行以实现专门的功能时,源和目标方法将由防火墙计算机105执行以验证包对象的源和目标。
对象头标706说明包对象的类别和子类别,包对象包括用于验证它的源和目标的可执行源和目标方法,并且在优选实施例中它的类别或超级类别被称作“安全”。与每个包对象关联的对象子类别是基于由执行包对象的主方法712实现的功能。例如,如果由执行的主方法实现的功能是服务器104的网络服务或管理,如设置缺省网络打印机、设置网络包路由缺省或处理各种网络资源107,则此时对象头标可能指出包对象的子类别是“服务”或“管理”。或者,当由执行的主方法实现的功能是传送电子邮件信息,例如生成一页传播的内容,对象头标可能指明包对象的子类别是“电子邮件”。更一般地,每个产生的包对象是与对象类别相关的实例,而且包括在优选实施例中,标识包对象的类别为预定的“安全”类别或子类别的对象头标。在优选实施例中,每个包对象的对象类别或是子类别都是“安全”类别。
包产生器212包括特征标记产生器220,它根据预定的散列(hash)函数(图6中604步)通过对这些方法的数据位计算散列编码,来产生源、目标和主方法708-712的信息摘要。计算出的散列编码和散列函数标识符(指出用于产生散列编码的散列函数的类型)一起,形成该方法的信息摘要(MDM):
MDM=散列函数(对象的方法),散列函数ID
类似地,特征标记产生器220根据预定的散列函数通过对对象数据的数据位计算散列编码(图6中604),来产生对象数据716的信息摘要。这种用于方法708-712的数据位的散列函数可能是相同的或者是不同的。对象数据的信息摘要(MDD)包含所计算的散列编码和相应的散列函数标识符:
MDD=散列函数(对象的数据),散列函数ID
特征标记产生器220接着用包含在客户计算机的库210中相应的加密钥来加密每个信息摘要(图6中606)。用于给方法708-712信息摘要加密的加密钥是包对象110类别(和子类别)的始发者的专用密钥,而用于给对象数据716信息摘要加密的加密钥是数据始发者(也就是用户)的专用密钥,对应于这些专用加密钥的公共加密钥存贮在命名服务器108或其它用户和防火墙计算机105均认同的可信服务器中。
于是特征标记产生器220为这方法和对象数据产生特征标记714和718,并将它们嵌入包对象110(图6的608)。方法的特征标记包含方法708-712的加密信息摘要和类别始发者的ID,而对象数据的特征标记包含对象数据716的加密信息摘要和用户的ID。
另外,特别当用户不是包对象类别的始发者时,包对象中的方法特征标记714可能由类别始发者永久性地嵌入到包对象的类别的所有对象中,因为仅有类别始发者才能访问其专用密钥,而发送包对象的用户的特征标记产生器220仅产生并嵌入基于数据的特征标记718。
通信接口206接着把头标702和尾标704加到包对象110,并且传送此包对象。根据附加的头标,包对象通过网络通信连接106行进到防火墙计算机105(图6中610)。参看图1和图3,防火墙计算机105的通信接口306接收包对象110并从包对象上剥去头标702和尾标704(图6的612)。输入包处理器314起着防火墙或安全机构的作用,以确保包对象能被安全地提供给网络100的保护侧109。
此时,输入包处理器314的类别筛选器332首先从对象的头标304确定包对象110的类别是否属“安全”类别(图6的决定步骤614),如果不是“安全”类别,则类别筛选器322拒绝此包对象(图6的616)。如果包对象的类别是“安全”,则输入包处理器314的特征标记验证器324用存贮在库146中的相应公共加密钥,对方法和对象数据在特征标记714和718中的信息摘要进行加密(图6中618)。正如早先指出的,这种密钥可从命名服务器108中得到。
接着,特征标记验证器324确定源、目标和主方法708-712以及接收到的包对象110中对象数据714是否是由客户计算机102实际送出的那些(图6中620)。为此,特征标记验证器为这些方法产生验证信息摘要,这是通过利用由方法的加密信息摘要中散列函数类型指定的散列函数,来计算包对象中源、目标和主方法的数据位的散列编码而实现。接着将验证信息摘要与相应的加密信息摘要作比较,以验证被防火墙计算机105接收的方法实际上是由客户计算机102传送的那些方法。类似地,特征标记验证器产生目标数据的验证信息摘要,这是利用加密的对象数据信息摘要中由散列函数类型指定的散列函数,来计算目标数据的数据位的散列编码而实现。将此验证信息摘要与相应的加密信息摘要作比较,以验证被防火墙计算机接收的对象数据实际上是由客户计算机传送的。如果在二种情况下信息摘要都不匹配,则此对象包就被拒绝(图6中616)。
然而,一旦确定方法708-712及相应的对象数据716实际上是由客户计算机102发送的,则输入包处理器314的源和目标验证器326就确定是否包对象110是从有效源被接收的,并且为有效目标所想要的(图6中622)。这是通过使用虚拟机器模块318,来执行源和目标方法708和710而完成的。与它们在对象数据716中相应的数据相结合的源和目标方法,以包对象的源和目标提供给源和目标验证器326。然后源和目标验证器将提供的源和目标与包含在防火墙计算机的库310中的可接受源和目标表进行比较,以确定是否包对象是从有效源接收并为有效目标所要求。如果源和/或目标不可接受,则此包对象被拒绝(图6中616)。
一旦确定源和目标是可接受的,防火墙计算机105的通信接口306将新的网络头标和新的网络尾标附加到包对象110并接着将其传送(图6中624)。新头标用于使包对象行进到可接受目标。
参看图1和图4,由于在此例中目标是服务器104,所以服务器104的通信接口406接收包对象110、剥去其头标和尾标并将它传递到输入包处理器414的类别筛选器422(图6中626)。接着类别筛选器从对象头标304确定包对象的子类别是否是可接受的(图6中628)。这是通过将包对象的子类别与那些在服务器库410中并包含在可接受包对象子类别表中的那些进行比较来实现。如果它不能被接受,则类别筛选器拒绝此包对象(图6中630)。例如,如果对象头标指明包对象的子类别是“电子邮件”并且服务器的虚拟机器模块416不包含处理电子邮件的原语,则输入包处理器将拒绝此包对象,因为可接受包对象子类别的表中没有指明电子邮件包对象是可接受的。
一旦确定包对象110的子类别是可接受的,则输入包处理器414的主方法执行器428执行同对象数据714中相应的数据相结合的主方法712。这是利用虚拟机器模块416实现有关服务器104所要的功能(图6中632)。执行的主方法可能调用相关的原语,这些原语包含在为实现所需功能的虚拟机器模块中。例如,如早先所指出的虚拟机器模块可能包括为设置缺省网络打印机、设置网络包路由缺省和处理各种网络资源的一组原语。
不管怎样,网络管理器应该实现原语中的网络策略。例如,网络管理器可以仅对某些用户设置原语以完成它们相关的功能。从而,例如当包对象110的主方法310调用存贮在服务器104的存贮器134中的特定原语时,此原语仅当在发送者在此原语中被指明有权做此事时才能实现相关的功能。作为另一示例,接收包对象的计算机用户可以对自己计算机的原语作设置,以便不允许自己计算机的缺省打印机被更改,但是允许用户的打印机的设置作其它的改变(如改变可用打印机表)。
在对图6方法600的说明中,网络客户实体(也就是非保护侧客户计算机102)和网络执行实体(也就是保护侧服务器104)间的通信通过网络防火墙实体(也就是防火墙计算机105)而被建立。但是,熟悉本专业的人员都知道,在任何网络实体之间类似的通信也能被建立。
例如,被服务器104从防火墙计算机105接收的对象包的目标是保护侧客户计算机103之一,则服务器的通信接口406将一合适的头标附加到对象包,以使该包行进到此客户计算机。而后,客户计算机进行前面所叙述的图6的626-632,以执行包对象的主方法712。
作为另一例子,非保护侧客户计算机102可能从另外的非保护侧客户计算机、服务器104、防火墙计算机105、或保护侧客户计算机103之一接收一包对象110。为生产包对象,这些计算机包括包对象产生器212、312和412。如图2所示,为处理接收包对象,非保护侧客户计算机102包括输入包处理器,该处理器包含类别筛选器222、特征标记验证器224、源和目标验证器226及主方法执行器228。此时,类别筛选器根据前面所述有关图6中614和628步骤的类别和子类别来筛选包对象。特征标记验证器、源和目标验证器、和主方法执行器进行前面所述图6的618-622和632步骤。因而,非保护侧客户计算机具有自己内部的防火墙,从而只有可接受的包对象的主方法才能由它们执行。
虽然本发明通过少量具体实施例给予了说明,但此说明是对本发明的描述而非对本发明的限制。对于本领域的技术员,在不脱离本发明范围和实质精神的情况下可做各种修改,这些范围和精神已由所附权利要求书定义。