与安全通信有关的改进的制作方法

文档序号:7948056阅读:144来源:国知局
专利名称:与安全通信有关的改进的制作方法
技术领域
本发明涉及与安全通信有关的改进,具体来说,但不限于,涉及与安全的点对点电子邮件、数据通信和网络电话(Voice over IP,简称VoIP)有关的改进。本发明进一步涉及一种支持直接点对点通信的方法,甚至可应用在出于保护通信网络以及扩大其IP地址分配范围的目的而使用了网络地址转换器(Network Address Translator,简称NAT)的情况下。本发明的范围还可扩展至实现这种通信系统和使用这种通信系统的网络的更高层次安全性。
背景技术
在需要使用间接通信的情况下,有多种方式可用来通过通信网络传送消息。然而,这种形式的消息传递本身也存在一些问题,即对消息副本进行存储的做法本身就不安全,这使得黑客有机会读取这些副本。这些问题中一部分(在WO 03/014955A1进行了描述)可使用点对点通信来解决。但是,以往所设计并使用的解决方案中最主要的问题在于这种通信的建立过程很复杂。这份现有技术文档中介绍的解决方案本身就不安全,并且十分繁琐,因为其中仍需使用中心服务器来帮助实现通信。这便使得整个过程十分繁冗,并且为安全性的滥用创造了条件。
我们知道,加密技术可增强需要在通信过程中进行存储的电子邮件的安全性。然而,没有一种加密技术是绝对安全的,面对变化多端的黑客技术,这些加密技术本身并不提供可行的替代方案。
NAT是可以使多台计算机共同使用同一地址空间进行通信(如连接互联网)的设备。这些设备都存在一种缺点,会影响到点对点通信,这便使得如果不对NAT进行复杂的配置,点对点通信就无法正常工作,而配置过程往往超出了普通PC使用者的能力范围。点对点通信中与NAT有关的问题在美国专利申请US 2004/0064584 A1中进行了描述。

发明内容
因此,需要对上述系统进行改进,具体来说,需要一种更为安全的系统。同时,还需要一种对用户来说易于管理且使用简单的系统。具体来说,需要一种通信系统,该系统无需用户登陆到中心服务器来实现点对点通信,或无需在点对点通信过程中在节点上存储消息,哪怕是临时存储。因此,需要的是一种理想情况下的“纯粹的”点对点通信系统。
本发明的一个方面是基于这样一种观点,即最安全的点对点例如电子邮件通信,是不需要在不安全环境(也就是在通信路径中除了源端和目的端以外的任何其他地点)中进行任何消息存储的。如此一来,也就是说在传输过程中,黑客读取电子邮件的机会将变得非常小。通过对电子邮件进行加密(例如使用PKI(公共密钥架构))以对其进行传输,可将传输过程中的入侵风险降至最低。
具体来说,根据本发明的第一方面,提供了一种通过数据通信媒介在第一远端计算机和第二远端计算机之间实现安全的点对点数据通信如电子邮件通信的方法,该方法包括接收每台远端计算机的地址详细信息,以及每台远端计算机到所述数据通信媒介的连接的当前状态信息;在所述第一远端计算机上创建所述数据通信;检查所述第二远端计算机的当前连接状态;只有在所述第二远端计算机连接状态显示当前其已连接到所述数据通信媒介时,才从所述第一远端计算机直接向所述第二远端计算机发送所述数据通信,且在路径中不对所述数据通信进行任何存储。
应了解这里所说的术语“存储”可认为是对整条消息进行存储。这种存储方式可为未授权的第三方提供一种可非法获取整条消息副本的机会。通信协议往往包括对消息(例如分为多个分组的)的一部分进行临时存储。本发明的第一方面允许对消息的部分进行临时且部分的存储,因为这样做不会让第三方获取所传送消息的整个副本。
因此,本发明对现有技术进行了重要改进,使得在从源端到目的端的路径中不对整条数据消息进行不安全的存储。此外,即使目的端不在线,消息也始终安全的临时存储在源端,直到与目的端之间的点对点通信通道建立起来,这样一来就无需在路径中对所述数据消息进行不安全的存储。
本发明通过一种系统来实现,该系统包含存储用户名及其IP地址的中心数据库。但是,该中心数据库并未应用到实际的点对点通信过程本身,而是用于对发送端的通信装置进行更新。用户注册到该中心数据库,分配到对应其名字的特定IP地址。随后,该注册用户将个人通信服务端下载并安装到其计算机上,以便于点对点通信。无论何时,只要通过其使用了其个人通信终端进而判断出该注册用户上线,所述中心数据库就会接到通知,将用户状态从离线改为在线。通过push(推播)机制,这种状态上的改变还将发给所有其他用户,这样一来,需在当前在线用户和刚刚连接上的用户之间进行的任何点对点通信,都可在已获知收发双方此刻均能发送和接收通信的情况下安全的完成。
此外,上述系统也下载了所述客户端个人计算机上的控制消息传递功能的软件组件。这些内容只在随后的一个电子邮件消息传递实施例中进行了详细介绍,在该实施例中,电子邮件服务器与本地电子邮件客户端例如MicrosoftOutlookTM共同处理所有数据消息的收发,在此过程中无需用户访问任何中心服务器,或者进行任何用户交互。换句话说,所述客户端个人计算机可对所需的点对点通信进行控制,并且在用户看来,这一过程非常简单。
本发明的其他优点,尤其是与电子邮件消息传送有关的优点,还包括具有阻止垃圾邮件的能力。由于所有的电子邮件地址都已由所述中心数据库检验,因此任何垃圾邮件源都将立即被拦截。此外,不同于现有电子邮件地址,本发明中收件一方的地址是不可见的。
此外,在本发明中,VoIP也可相对容易的实现,因为用户可立即得知哪些用户可进行电话对话,也就是无论何时只要用户上线,其状态信息就将发往想要与其进行通话的用户。由于VoIP连接是通过互联网实现的,因此是免费的,这样一来,在拨打长途和本地电话时,用户无需在标准互联网连接费用基础上另外付费。
因此,本发明允许用户收发完全属于个人隐私的机密商务和个人信息。同时,若与现有电子邮件一同使用,本发明还可用于为现有电子邮件服务器提供备份系统,以便在系统出错、灾难以及遭到物理或网络攻击时继续提供服务。
本发明的目的在于,第三方如ISP将无法从收到的电子邮件中收集有关发送者及其生意的私人信息,以便发送广告或进行其他操作。此外,本发明无需另外添加设备如昂贵的电子邮件服务器,也无需增加技术支持开销,这些都将显著的降低成本。
正如下面将要着重讲述的,本发明可穿过防火墙,并且无需进行额外的配置。本发明可与现有电子邮件应用如Microsoft OutlookTM和Novell GroupwiseTM无缝结合。
当IP地址为接收端的真实IP地址时,基于IP地址的点对点通信将很容易实现。然而,在使用了NAT时,由于发送端无法唯一的识别接收端,以及NAT的作为防火墙的可能的安全功能,点对点通信将变得比较困难。本发明的另一方面就是为解决这一特殊问题而设计的(随后将进行描述)。
本发明的另一方面提供了一种通信服务器,用于通过数据通信网络,在包括该服务器的第一远端计算机和第二远端计算机之间实现安全的点对点数据通信,该服务器包括接收装置,用于接收每台远端计算机的地址详细信息、以及每台远端计算机到所述数据通信网络的连接的当前状态信息;消息生成模块,用于在所述第一远端计算机上建立所述数据通信;检查模块,用于检查所述第二远端计算机的当前连接状态;传输模块,用于在只有当所述第二远端计算机连接状态显示其已连接到所述数据通信网络时,才从所述第一远端计算机直接向所述第二远端计算机发送所述数据通信,且在路径中不对整个数据通信进行任何存储。
本发明还可扩展至一种通信系统,包括多台上述通信服务器;可通过所述数据通信网络连接到所述多台通信服务器的数据服务器,用于接收、比较和存储每台通信服务器到所述通信网络的连接的当前状态信息以及每个通信服务器的当前网络地址,并将这些信息的至少一部分发往所述多台通信服务器,使所述多台通信服务器可在彼此之间实现点对点通信。
根据本发明的第二方面,提供了一种通信服务器,用于帮助通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信如电子邮件通信,该服务器位于包含多台通信服务器的服务器网络中的特定层次级上,该服务器包括连接装置,用于使所述通信服务器可连接到所述服务器网络内其他层次级上的其他通信服务器;注册装置,用于将多台本地用户计算机注册到所述通信服务器上;数据存储装置,用于存储每个注册的本地用户计算机的注册详细信息,所述注册详细信息包括每个本地用户计算机的地址信息和每个本地用户计算机到所述数据通信网络的连接的当前状态信息;其中,所述连接装置用于将所存储的注册详细信息发往所述服务器网络中紧接的较高层次级上的邻近通信服务器,以及接收并存储所述分层网络中较低层次级上连接的通信服务器上所有本地用户计算机的注册详细信息。
使用由传输服务器组成的分层网络的作用非常明显,它使消息传递网络的运行变得更有效率。具体来说,当因高容量、大负载的消息传递而对通信网络的需求量很大时,在通信媒介中采用分层结构将使大量的业务在本地得到处理,从而避免将不必要的负担施加到整个通信系统上。VoIP消息流的载荷非常大,往往会用掉很多可用带宽。使用分层结构和地址详细信息的分布式记录可有助于将数据流控制在通信网络的特定部分,这样一来便不会影响网络中其他部分的性能表现。将这种方法应用于VoIP通信的性能表现最为明显,因为多数VoIP呼叫发生在同时位于本地地理范围内的源端和目的端之间。
本发明所展示的第二方面可扩展至一种通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信如电子邮件通信的方法,该方法可由包括多台通信服务器的服务器网络中位于特定层次级上的通信服务器来实现,该方法包括建立到所述服务器网络中其他层次级上的通信服务器的网络连接;将多台本地用户计算机注册到该通信服务器上;存储每个注册的本地用户计算机的注册详细信息,该注册详细信息包括每台本地用户计算机的地址信息和每台本地用户计算机到所述数据通信网络的连接的当前状态信息;其中,上述建立步骤包括将所存储的注册详细信息发往所述服务器网络中紧接的较高层次级上的邻近通信服务器,以及接收并存储所述分层网络中较低层次级上连接的通信服务器上所有本地用户计算机的注册详细信息。
根据本发明的第三方面,提供了一种方法,用于搜索点对点通信中的目标接收方计算机,以帮助通过数据通信网络在发送方计算机和所述目标接收方计算机之间建立安全的点对点数据通信如电子邮件通信,该方法在由通信服务器组成的分层网络中实现,该方法包括向本地服务器发送数据通信请求,该请求包括所述目标接收方计算机的标识和所述发送方计算机的标识;判断所述目标接收方计算机对所述本地服务器而言是否是已知的;若所述目标接收方计算机对所述本地服务器而言是已知的,则获取所存储的与所述目标接收方计算机有关的详细信息,然后将这些信息发回给所述发送方计算机;若所述目标接收方计算机对所述本地服务器而言是未知的,则将所述请求转发给所述服务器网络中下一较高层次级上的邻近通信服务器,随后,所述邻近通信服务器变成所述本地服务器;重复上述判断、获取和转发步骤,直到找到所述目标接收方计算机,或者检查完位于所述分层网络最高层级上的服务器。
这种采用分层通信网络的方式的优点在于,查找目的地址的过程比现有技术更快。原因在于这种方法首先检查与源端位于同一本地地理范围内的地址,然后逐渐检查在所述分层网络中的越来越高的位置的越来越远的地址,直到找到该地址,或者到达所述分层网络的顶部。同理,由于实际上许多通信是发往本地目的地的,因而这种做法的速度更快,并且可降低通信服务器网络的潜在管理负担。
本发明的第三方面还可扩展至一种通过数据通信网络在发送方计算机和目标接收方计算机之间建立安全的点到点数据通信如电子邮件通信的方法,该建立方法在包括多台通信服务器的分层服务器网络中实现,该建立方法包括如上所述的搜索目标接收方计算机的方法;将所述目标接收方计算机的当前全局通信地址发往所述发送方计算机;将所述发送方计算机的当前全局通信地址发往所述目标接收方计算机;使用上述双方的全局通信地址在所述发送方和所述目标接收方计算机之间建立点对点通信通道。
根据本发明的第四方面,提供了一种传输服务器,用于在第一和第二用户计算机之间建立点对点数据通信如电子邮件通信,该传输服务器包括接收装置,用于从所述第一用户计算机接收请求连接到所述第二用户计算机的连接请求,所述第二用户计算机注册在所述传输服务器上;检查装置,用于检查到所述第二用户计算机的连接的当前连接状态;数据存储装置,当所述第二用户计算机的当前连接状态显示当前无法与其建立点对点通信时,将所述请求的详细信息作为监视项(a watch)存储起来;响应装置,响应所述检查装置,当所述第二用户计算机的状态改变并显示当前可与其建立点对点通信时,所述响应装置向所述第一用户计算机发送消息,指出所述第二用户计算机已上线;其中,所述检查装置定期检查和更新到所述第二用户计算机的当前连接状态信息,若更新显示所述第二用户状态已变为在线,则检查是否存在对应的监视项,若是,则启动所述响应装置发送所述消息。
根据本发明第四方面的传输服务器具有一种机制,可监视目标接收方的连接状态,这种机制无需使用消息发送方的资源。然而这种机制可有效地监视所述目标接收方的连接状态,并且当连接状态改变从而使点对点通信变为可能时,可通知消息发送方。这种方式还支持数据消息传递,而不会在传递过程中在潜在不安全位置上存储所述数据消息。
本发明的第四方面也可通过一种方法实现,所述方法用于帮助在第一和第二用户计算机之间建立点对点数据通信如电子邮件通信,该方法包括从所述第一用户计算机接收请求连接到本地注册的所述第二用户计算机的连接请求;检查到所述第二用户计算机的连接的当前连接状态;当所述第二用户计算机的当前连接状态显示当前无法与其建立点对点通信时,将所述请求的详细信息作为监视项存储起来;若在上述检验步骤中发现所述第二用户计算机的状态改变并显示当前可与其建立点对点通信,则向所述第一用户计算机发送消息,指出所述第二用户计算机已上线;其中,所述检查步骤包括定期检查和更新到所述第二用户计算机的当前连接状态,若更新显示所述第二用户的状态已变为在线,则检查是否存在对应的监视项,若是,则启动所述响应装置发送所述消息。
本发明的第五方面可解决有关NAT和防火墙的问题,以支持点对点通信。本发明这一方面的原理是基于NAT的映射函数可通过发送一系列通信(调查)来确定,从而获知目标接收方的性能,包括确定所述接收方的真实本地地址,尽管该地址对位于远端通信一方的NAT而言通常是不可见的。在这些调查过程中将使用通信控制通道,更为重要的是,所述目标接收方将其本地地址作为数据封装在消息中,通过NAT发送,这样一来便可推断出NAT的转换函数。其他的调查过程包括将调查结果发往潜在的目标接收方。
有效地确定NAT的映射函数的好处在于,之后可向NAT发送合适的寻址通信(addressed communication)标记有特定地址的通信,然后由NAT将其映射到想要的一个接收位置。在这一过程中,NAT不知道其映射函数已被确定,这样便可支持直接的点对点通信。
另一种解决有关NAT和防火墙问题的方法是,使用所建立的到传输服务器的TCP/IP链路来创建UDP通信通道,以此来支持点对点通信。具体来说,根据本发明的第五方面,提供了一种通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信通道如电子邮件通信通道的方法,其中,至少所述第一用户计算机的通信由第一网络地址转换器(NAT)来处理,该方法包括请求建立通过所述第一NAT的所述第一用户计算机和传输服务器之间在已建立的传输控制协议/互联网络协议(TCP/IP)通信链路上的直接连接;在所述传输服务器上设置第一用户数据报协议(UDP)端口;通过所述TCP/IP通信链路将所述第一UDP端口地址报告给所述第一用户计算机;在所述第一用户计算机上打开第二UDP端口;通过所述第一NAT从所述第二UDP端口向所述第一UDP端口传送数据分组,以便所述传输服务器可确定所述第二UDP端口的第一NAT地址;从所述传输服务器上获取所述第二用户计算机的第三UDP端口地址;将其他用户计算机的UDP端口地址通知给所述第一和第二用户计算机,以便它们彼此之间建立安全的点对点通信。
在尝试建立点对点通信时,穿透NAT是非常重要的。本发明的第五方面提供了一种简单可行的方法,可在点对点通信过程中穿透NAT,即使NAT中的一方是非对称的。
本发明的第五方面还可扩展至一种传输服务器,用于帮助通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信通道如电子邮件通信通道,其中,至少所述第一用户计算机的通信由第一网络地址转换(NAT)来处理,所述方法包括请求接收装置,用于接收请求建立穿过所述第一NAT的所述第一用户计算机和传输服务器之间在已建立的传输控制协议/互联网络协议(TCP/IP)通信链路上的直接连接的请求;设置装置,用于在所述传输服务器上设置第一用户数据报(UDP)端口;报告装置,用于通过所述TCP/IP通信链路向所述第一用户计算机报告所述第一UDP端口的地址;数据分组接收装置,用于接收通过所述第一NAT从所述第一用户计算机上设置的第二UDP端口发往所述第一UDP端口的数据分组,所述传输服务器用于确定所述第二UDP端口的第一NAT地址;获取装置,用于从所述传输服务器上获取所述第二用户计算机的第三UDP端口地址;通知装置,用于将其他用户计算机的UDP端口地址通知给所述第一和第二用户计算机,以便它们彼此之间建立安全的点对点通信。
在穿透NAT过程中,最复杂的情况发生在防火墙策略非常苛刻或双方均使用非对称NAT时,这时,直接的点对点连接将不那么容易实现。在这种情况下,可通过建立“伪”点对点通信来穿透非对称NAT。具体来说,根据本发明的第六方面,提供了一种通过数据通信网络在第一和第二用户计算机之间建立安全的伪点对点数据通信通道如电子邮件通信通道的方法,其中,所述双方用户计算机的通信分别由第一和第二非对称网络地址转换器(NAT)处理,所述方法包括穿过各自的第一和第二非对称NAT,创建每个用户计算机到传输服务器的传输控制协议/互联网络协议(TCP/IP)通信链路;响应接收到的直接连接请求,在传输服务器上设置第一和第二用户数据报协议(UDP)端口,该请求是通过穿过所述第一NAT的所述第一用户计算机和传输服务器之间的TCP/IP通信链路收到的;分别通过双方各自的TCP/IP通信链路,向所述第一和第二用户计算机报告所述第一和第二UDP端口地址;在所述第一用户计算机上打开第三UDP端口,在所述第二用户计算机上打开第四UDP端口;通过所述第一NAT从所述第三UDP端口向所述第一UDP端口发送数据分组,通过所述第二NAT从所述第四UDP端口向所述第二UDP端口发送数据分组,这样便使所述传输服务器可确定所述第三UDP端口的第一NAT地址和所述第四UDP端口的第二NAT地址;通过所述第二UDP端口向所述第四UDP端口的NAT地址再次发送在所述第一UDP端口收到的数据分组,通过所述第一UDP端口向所述第三UDP端口的NAT地址再次发送在所述第二UDP端口收到的数据分组,这样一来,便借助所述传输服务器有效的转发数据分组,在所述第一和第二用户计算机之间建立伪点对点通信。
如上所述,该伪点对点通信是通过本发明本地传输服务器转发消息来实现的,其中,所述传输服务器充当受信的中间方(trusted intermediary)。这种方式减小了由于发送方未知而带来的问题,因为对于本地非对称NAT而言,本地传输服务器总是已知的,这样一来,哪怕在防火墙上设置有最苛刻的规则,也无法阻止这种间接伪点对点通信。此外,只要确保数据分组的转发由作为受信中间方的传输服务器执行,并只对数据分组进行最少量的分析且不进行存储,就可将这种非间接通信通道对安全性可能造成的影响降至最低。
在遇到防火墙采用愚蠢的(非常苛刻的)译码的情况下,本发明可在一个方向上建立一条真正的点对点通信,而在另一个方向上借助本地传输服务器的转发。这种变化是值得的,因为它可降低对安全性造成的影响。例如在传送电子邮件的情况中,这种方式是有优势的,直接发送电子邮件而转发返回确认。
本发明的第六方面也可扩展至一种传输服务器,用于帮助通过数据通信网络在第一和第二用户计算机之间建立安全的伪点对点数据通信通道如电子邮件通信通道,其中,所述双方用户计算机的通信分别由第一和第二非对称网络地址转换器(NAT)处理,该传输服务器包括创建装置,用于分别穿过所述第一和第二非对称NAT,创建从每个用户计算机到传输服务器的传输控制协议/互联网络协议(TCP/IP)通信链路;设置装置,用于响应接收到的直接连接请求,在所述传输服务器上设置第一和第二用户数据报协议(UDP)端口,该请求通过穿过所述第一NAT的所述第一用户计算机和所述传输服务器之间的TCP/IP通信链路接收到;报告装置,用于分别通过各自的TCP/IP通信链路,向所述第一和第二用户计算机报告所述第一和第二UDP端口的地址;接收装置,用于接收通过所述第一NAT从所述第一计算机上的第三UDP端口向所述第一UDP端口发送的数据分组,以及接收通过所述第二NAT从所述第二用户计算机上的第四UDP端口向所述第二UDP端口发送的数据分组,从而使所述传输服务器可确定所述第三UDP端口的第一NAT地址和所述第四UDP端口的第二NAT地址;转发装置,用于通过所述第二UDP端口向所述第四UDP端口的NAT地址再次发送在所述第一UDP端口收到的数据分组,以及通过所述第一UDP端口向所述第三UDP端口的NAT地址再次发送在所述第二UDP端口收到的数据分组,这样一来,便借助所述传输服务器有效地转发数据分组,在所述第一和第二用户计算机之间建立伪点对点通信。
根据本发明的第七方面,提供了一种将用户计算机连接到传输服务器分层连接网络的方法,用于帮助通过数据通信网络在发送方计算机和目标接收方计算机之间建立点对点通信,该方法包括接收描述信息,所述信息描述所述连接网络内与本地传输服务器位于同一层次上的多个同等传输服务器(peertransport servers)之中的每个同等传输服务器的当前负载;接收连接请求,请求将本地用户计算机连接到所述本地传输服务器;比较所述本地服务器和其他同等服务器的当前负载量;若所述本地传输服务器的负载量明显高于所述其他同等服务器中任意一个的负载量,则向所述本地用户计算机发送响应,指示其应该连接到所述其他同等服务器中负载量最低的一个同等服务器;若所述本地传输服务器的负载量并非明显高于所述其他同等服务器中任意一个的负载量,则接收该连接请求,并更新所述本地传输服务器的当前负载量。
本发明的这个方面解决了通信网络中的负载均衡问题。通过记录传输服务器特定层次上的本地服务器的当前负载量,总是可以有效的再分配点对点连接建立请求。通过保持通信负载均衡,网络本身可变得更有效率,所有对性能造成的影响都将降至最低。
根据本发明的第八方面,提供了一种将节点接入由已通过验证的通信服务器组成的网络中的方法,该网络用于在已注册到所述通信服务器上的用户计算机之间建立点对点数据通信,该方法包括使用从验证服务器收到的用户标识和密码向所述验证服务器验证所述节点;告知所选择的通信服务器的标识,所述节点需要连接到该通信服务器以便接入所述网络;向所述验证服务器请求所选择通信服务器和节点相关的特定数据,以便连接到所选择的通信服务器;接收所选择通信服务器和节点相关的特定数据以及由所述节点和所选择通信服务器共享的共享密钥;将由所述共享密钥加密后的所选择通信服务器和节点相关的特定数据和全局数据发往所选择通信服务器,从而使所选择通信服务器可以向所述网络验证所述节点,因而无需向所述验证服务器寻求验证便可将所述节点接入所述网络。
本发明的这一方面提供了一种非常安全的方式,来实现对希望加入网络的新节点的验证过程。在消息传递源希望加入点对点通信网络时,上述方式尤为重要,加入该网络后,所述消息传递源可自由的与所述通信网络中的其他成员进行通信。
根据本发明的第九方面,提供了一种将由互联传输服务器节点组成的第一分层区域连接到由互联传输服务器节点组成的第二分层区域的方法,该方法包括在每一分层区域中设置本地验证服务器,该验证服务器连接到各自分层区域中最高层级上的主节点,并用于控制本区域中所有服务器的验证问题;将所述第一分层区域的主节点注册到所述第二分层区域的验证服务器;向所述第二分层区域的验证服务器验证所述第一分层区域的主节点;告知最低节点服务器的标识,所述第一分层区域的主节点需要连接到该最低节点服务器以将两个分层区域连接起来;接收所述第二分层区域的最低节点服务器和所述第一分层区域的主节点所共用的共享数据和共享密钥;使用收到的共享数据和共享密钥,向所述第二分层区域的最低节点服务器验证所述第一分层区域的主节点,从而将所述第一和第二区域连接起来而无需向所述第二区域的验证服务器寻求验证。
本发明这一方面的优势在于,可将各自的通信网络(区域)连接起来,但却不会因此而降低安全性。同时,每个区域依然保持完整,因为只有较高区域的权限需要通过上述简单方式进行修改,这样便可将现实中可能非常庞大的网络连接起来。这也意味着完全处于不同组织内的人群也有可能借助点对点技术来实现非常安全的通信。


图1是根据本发明一个实施例的系统的结构示意图;图2是图1中系统在两个用户Bob和Alice之间建立点对点通信过程的流程图;图3是图1中个人电子邮件服务器所有操作方法的流程图;图4是图3方法中“客户端发起连接”子程序的流程图;图5是图3中“消息接收”子程序的流程图;图6是图3中“消息等待发送”子程序的流程图;图7是传输服务器与邮件服务器交互以确定目标接收方的唯一地址的过程的流程图;图8是不同实体对本系统的不同应用的示意图;图9a-图9f是TSM通过调查来确定目标接收方的唯一IP地址的一系列流程图;图9g-图9i是图9a-图9f中的调查应用于对称NAT和非对称NAT情况的示意图;图10是本发明第二实施例的树形架构所有功能的示意图;图11是展示图10的树形架构中管理层的分层特性的示意图;图12是图10的树形架构中传输服务器层的分层特性的示意图;图13是图12中传输服务器层的一个普通传输服务器的功能组件示意图;图14是图10中管理层采用负载均衡来处理新连接的流程图;图15是使用图10中第二实施例的网络建立点对点连接过程的第一阶段的流程图;图16是使用图10中第二实施例的网络建立点对点连接过程的第二阶段的流程图;图17是将Kerberos技术原理应用于本发明第三实施例的示意图;图18是第三实施例在寻找网络连接过程中的主要步骤的流程图;图19是注册到中心数据服务器的详细过程以及进而从安全角度来看网络是如何支持点对点通信的示意图;图20a是图19所示的分层网络中的父节点的结构示意图;图20b是图19所示的分层网络中的子节点的结构示意图;图21是在计算机X和Y之间建立点对点呼叫过程中跨区链路实现过程的示意图。
具体实施例方式
图1展示了本发明一个实施例的系统10。优选的,本文引用电子邮件通信来描述该实施例。但是,应了解,任何形式的电子通信传输如网络电话(VoIP)或即时消息传递逗同样适用。此外,尽管本实施例在本文的描述中是有关广域网如互联网上的通信,但本发明还可在局域网(LAN)或甚至通过移动电信网实现。
系统10包括位于不同位置的两台个人计算机(PC)12和14。第一PC为本地PC 12,第二PC为远端PC 14,而系统10支持在这两台计算机12和14之间进行点对点通信。PC 12和PC 14通信功能是相同的,因此只需要对其中的一台进行详细描述。
在本实施例中,PC 12和14通过各自的互联网网关18和20连接到互联网16。位于本地PC 12处的互联网网关18还包含NAT 22,因为本文中的本地PC 12是LAN 24上多台本地PC 12之中的一台,这些PC都要使用本地互联网网关18。远端PC 14位于LAN 26中,但在远端PC 14这边没有NAT,远端PC14具有唯一的IP地址。
图中还提供了数据服务器28,连接到互联网16。数据服务器28包含本地数据库30,其上存储有用户名32和IP地址34,由数据服务器28进行管理。本地数据库30中还存储有注册用户的连接状态信息36。这些用户名32和地址34包括本地和远端PC 12和14的相关内容,通过注册过程存储到数据库30中,至于注册过程本文将不再详细介绍,因为这种过程早已被大家熟知。应了解,数据服务器28并不参与注册的PC如本地和远端PC 12和14之间的点对点通信。它只是在PC 12和14注册了最新的地址信息34和该地址的状态信息36(也就是在线还是离线)后,对PC 12和14的相关内容进行更新。
图中还提供了多个传输服务器机制(TSM)40,它们都连接到互联网16。这些TSM 40可为本地和远端PC 12和14之间的点对点通信分配正确的地址34。每个TSM 40都关联到一个本地存储器42,用于存储与已注册的PC 12和14的每个可能地址有关的地址信息。具体来说,在这些本地存储器上存储有PC标识44的列表和对应的IP地址46的列表。在IP地址46的列表中,当由TSM 40本身负责为指定PC分配地址时,该表中包含直接IP地址46。若TSM不负责分配,则该表中包含的是负责分配的TSM 40的IP地址(或其他合适的标识)。TSM 40的操作,尤其是在进行NAT穿透时的操作,将在后面进行详细的描述。
每个本地和远端PC 12和14都包含邮件客户端50如Microsoft OutlookTM,它通过TCP/IP连接到个人邮件服务器52。邮件服务器52具有其自己的本地数据存储器54,并同样连接到网络接口56。邮件服务器52以软件下载的方式提供,并由用户进行安装,以便能够使用点对点通信协议。邮件服务器52存储有数据服务器28的网络地址,因为该邮件服务器52需要与数据服务器28联系,以使后者在前者上线后能够得到通知。所有的点对点通信都以透明方式由个人邮件服务器52进行路由,因此对邮件服务器50的操作不会产生影响。
本实施例中使用的网络接口56和互联网网关18和20都是现有技术,不需要进行过多的描述。
现在来描述系统10的常见操作模式。用户将其详细信息发往数据服务器28,完成服务注册过程后,下载个人电子邮件服务器52并安装在用户的PC 12和14本地。个人电子邮件服务器52连接到电子邮件客户端50和网络接口56,它们均已安装在PC 12和14上。所有发往和来自电子邮件客户端50的电子邮件通信都将经由个人电子邮件服务器52。
在发送消息时,用户创建电子邮件,并将其发往个人电子邮件服务器52。若目标接收方在线(由存储的有关目标接收方状态的当前信息显示),则该电子邮件消息将直接发往目标接收方PC 14。否则,电子邮件消息将存储到队列中,直到目标接收方PC 14上线(例如收到数据服务器28发来的更新后的上线状态消息)。
在发送消息前,目标接收方的真实当前IP地址34由TSM 40来确定。这一过程将在随后进行详细的描述。然而,只有目标接收方的当前IP地址34得到确认后,电子邮件消息的点对点通信才开始实施。
在图2中,将引用两个用户Alice 62和Bob 64来描述过程60是如何实现的。该过程60开始于步骤66,Alice的个人电子邮件服务器52向数据服务器28发送消息,通知其已上线,并且在步骤68,表示她想要向Bob 64发送消息。随后在步骤69,数据服务器28返回Bob的当前地址详细信息。Alice的个人电子邮件服务器52随后使用该信息来为其消息添加地址信息,并且在步骤70对其进行加密,在步骤72将其存储于本地,等待Bob上线后将其发出。
在随后的某个时刻,Bob上线(在步骤74向数据服务器28发送消息以表示其已上线),而此时Alice依然在线(在步骤66向数据服务器28发送消息以表示其目前在线),这时,数据服务器28在步骤76向所有用户发送消息,通知他们Bob 64已上线。该Bob已上线的消息被Alice的个人电子邮件服务器52接收,随后,存储的邮件消息便可在步骤78直接发往Bob 64了。在收到此条消息后,在步骤80,Bob的个人电子邮件服务器52存储该消息。在步骤82,Bob的电子邮件客户端50检查发来的消息(获取消息)时,在步骤84,将该消息解密,并在步骤86发往电子邮件客户端50,供Bob在步骤64阅读。
下面将参考图3-图6对每个个人邮件服务器52所执行的真实过程进行描述。
来看图3,现在来描述个人电子邮件服务器52的操作90。操作90开始于服务器52的开始步骤92,这将引发步骤94,建立到数据服务器(DS)28的连接。对于电子邮件服务器52而言,数据服务器28的地址为已知的且存储在其本地存储器54中。数据服务器28提供几个TSM 40的位置信息,系统10若想工作,则这些TSM其中之一必须是可用的。随后,在步骤96,邮件服务器52尝试建立到TSM 40的连接。在这一过程中,需要在步骤98检查TSM 40是否在线。若TSM 40不在线,则无法建立连接,这时,在步骤100,邮件服务器52被认为是离线的。过程90将继续进行随后的步骤,在步骤102重新连接到互联网16,并回到上述步骤94,连接到DS。
在另一方面,若在步骤104,TSM 40在线,则存在五种可用的不同选项(状态)。首先,第一种选项为,若在步骤106,PC 12和14关机,则在步骤108,过程90结束。第二种选项为,在步骤110强迫邮件服务器52登出(log out),则过程90转到上述离线状态100。第三种选项为,若在步骤112,邮件客户端50尝试连接到邮件服务器52,则步骤114中将根据预先存储的信息检查邮件客户端50的信用信息,若可接受,则允许客户端在步骤116建立连接(以下将结合图4进行详细描述)。若客户信用无法通过检验,则在步骤118,连接将被拒绝,这时邮件服务器52或者在步骤120回到在线状态,或者在步骤122被强行下线,然后回到步骤102,重新连接到互联网106以及启动过程90。
第四种选项(状态)为,在步骤124,邮件服务器52收到消息,并将该消息提供给邮件客户端52以便展示给用户。该过程124还将在随后结合图5进行详细的描述。
最后一种选项(状态)为,当邮件服务器在线,将开始发送消息。在步骤126,首先将检查是否存在等待发送的消息。若步骤128中没有等待发送的消息,则过程90结束,邮件服务器52返回到在线状态104。若存在等待发送的消息,则将执行“消息等待发送”过程130,这一过程将在下面结合图6进行详细描述。在执行完过程130后,邮件服务器52返回在线状态104。
来看图4,现在来描述一下“客户端发起连接”过程116。该过程116开始于步骤140,收到来自邮件客户端52(例如MS OutlookTM)的SMPT连接请求。出于安全性方面的考虑,在步骤142,过程116会判断邮件客户端52是否已被授权。若否,则在步骤144,权限验证失败,并且在步骤146向邮件客户端52发送消息,以通知用户。若是,则在步骤148,权限验证成功,并且在步骤150,邮件服务器52将收到来自邮件客户端52的电子邮件消息。这是一个包含多个阶段的过程,消息的内容将被陆续发送(例如首先传送的是‘from’后面的地址,然后是‘to’后面的地址,接下来是消息的主体部分)。这一过程一直持续到整条消息接收完毕。随后,在步骤152将检查是否还有其他消息需要传送,若是,则再次执行传输步骤150和152。若在步骤154,确定没有其他消息需要接收,则在步骤156,邮件服务器52断开与邮件客户端50的连接。
在对收到的消息进行处理之前,先在步骤158检查邮件客户端50是否具有发送权限。若在步骤160判断得出邮件客户端50不具备向特定目标接收方发送邮件的相关权限,则在步骤162,将不会发送电子邮件消息。然而,如果具备发送权限,则将在步骤164获取目的用户信息。这一步骤包括向数据服务器28请求及获取所有已注册目标接收方的地址信息。该数据还包含该用户的公共密钥(未示出),该用户使用该密钥对消息进行加密。如果最近刚刚在另一电子邮件消息中收到了地址信息,则该信息将暂时存储在缓存中。因此,需要检查缓存(未示出),以确定向DS 28获取地址信息之前,是否可在缓存中找到该目标接收方的地址信息。
随后,将在步骤166检查确定目标接收方是否是可识别的邮件用户。若在步骤168确定不可识别该用户,则邮件服务器52仅在步骤170通知邮件客户端50该消息无法发送,因为该地址对于系统而言是未知的。若在步骤172确定能够识别出该目标接收方为一注册用户,则在步骤174,使用先前获取的目标接收方的公共密钥对电子邮件消息进行加密,这样一来,就可使用公共密钥架构(PKI)加密技术来进行加密/解密。
加密的消息随后将发往“消息等待发送”过程130,该过程将在随后参考图6进行描述。
来看图5,现在来对“消息接收”过程124进行描述。在接收电子邮件消息时,邮件服务器52无需登陆,但需要连接到互联网16。在步骤180收到电子邮件消息后,在步骤182,用户将接到通知,这可通过在步骤184生成一通知接收弹出窗口来实现。收到的电子邮件消息存储在存储器54中,其状态为邮件客户端尚未“读取(取走)”。该存储器可以是计算机的硬盘,但最安全的办法是将收到的消息存储在RAM中,直到其被取走。同时,在步骤186进入等待状态,若出于某种原因,邮件服务器52需要在步骤188关闭,则未传送的消息将在步骤190存储到半永久存储器(通常为硬盘)中,随后在步骤192,过程124结束。
当在步骤194,邮件服务器52收到来自邮件客户端50的读取请求,则在步骤196,过程124将判断邮件客户端50是否已被授权。若否,则在步骤198,客户端验证失败,最终导致在步骤200中,邮件客户端50读取过程失败。在这之后,将在步骤202通知接收方用户和Amteus(对整个系统运行进行监视的授权方,用户便是注册在其上的)。
若在步骤204,邮件客户端50已授权,则将并行进行两项操作。在步骤206,将获取存储于本地的接收方私有密钥,以及在步骤208,获取未发送的电子邮件消息。随后在步骤210,将尝试使用获取的私有密钥对消息进行解密。若在步骤212解密失败,则在步骤214通知发送方。这一过程可通过邮件服务器52发送电子邮件给发送方声明发送失败来实现。随后,过程124继续进行,如同先前的客户端授权验证失败步骤198,也就是,在步骤200,邮件客户端的读取过程失败。在步骤202,将读取过程失败通知给接收方用户和Amteus。
但是,若在步骤216,解密成功,则解密的电子邮件消息将转发给邮件客户端,并展示给用户,也就是在步骤218,邮件客户端读取成功。随后,消息接收过程124将在步骤220检查是否还有其他消息需要传送。若在步骤222,没有其他消息,则在步骤192,消息接收过程124结束。若在步骤224,还有其他消息需要发送,则在步骤226,该过程返回到客户端授权验证成功的阶段,然后按照前面所述继续进行。
来看图6,现在来描述图3中的“消息等待发送”过程130。当在步骤230,队列中有电子邮件消息需要发送时,需要在步骤232判断目的端的状态。在步骤234,将检查缓存中是否存有目的端的当前状态信息。若是,则在步骤236,从缓存中读取该当前状态信息;若则在步骤238确定缓存中无当前状态信息,则在步骤240,从DS 28读取该当前状态信息,并使用读取的状态信息对缓存进行更新。
在步骤242,检查目的端的状态信息,判断目的端是否离线。若在步骤244发现其离线,则消息将无法发送,在步骤246,加密的消息将存储在消息等待队列中,以便过后尝试重传。然而,若目的端在线,则在步骤248,从队列中(RAM或硬盘上)读取加密的消息,并在步骤250,将其通过点对点通信直接发往目标接收方。至于电子邮件消息如何实现准确寻址以及消息是如何发送的,都将在随后的图7中进行描述。
在步骤252,将对消息的传输进行检查。若在步骤254中由于某种原因导致传输失败,则进入发送错误状态256,随后,将继续判断错误的类型。若在消息等待发送过程130的开始阶段,由于某种原因,邮件服务器52在步骤258停止工作,也会进入该发送错误状态256。在该发送错误状态256,将在判断错误类型的同时,在步骤260通知Amteus。在步骤262,将检查该错误是否是由目的端离线造成的。这种情况可能发生在目的接收端的状态刚刚发生变化。若在步骤244确定目的端离线,则将在步骤246对加密的消息进行存储,以便过后进行传送。这样就通过了消息等待传送过程130,尽管不是由过程130自身决定的,而电子邮件消息仍然留在队列中等待发送。
若错误不是由目的端离线造成的,则在步骤264确定存在其他错误,在步骤266,将检查发送失败是永久性的还是临时性的。若在步骤268,确定是永久性发送失败(例如该用户不再存在或者电子邮件太大),则在步骤270,邮件服务器收到一退回消息,显示该邮件消息无法发送。若在步骤272确定该错误是由临时性失败(如连接错误)造成的,则在步骤242,加密的电子邮件消息将重新回到队列中,随后消息等待发送过程130结束。
再来看电子邮件消息传输的结果,若在步骤274确认该消息已发送,则出于安全性的考虑,将在步骤276删除该电子邮件的本地副本。在步骤260,将向Amteus发送传送成功通知,并在步骤278,判断队列中是否还有其他电子邮件消息需要发送。若是,则过程130重新回到检查步骤232,检查电子邮件消息目的端(目标接收方)的状态,然后继续依照上文所述内容进行。若在步骤280确定没有其他消息需要处理,则消息等待发送过程130结束。
来看图7,现在来描述与TSM之间的操作和交互,具体来说,将描述如何执行点对点通信所需的目标接收方寻址(intended recipient addressing)。
首先,应了解,TSM是不断进行其地址调查过程的,因此无论在何时,只要是需要将电子邮件消息发往目标接收方,TSM都将掌握与目标接收方地址信息有关的最新当前信息。这种调查是通过修改后的UDP(用户数据报协议)来进行的,其中还包括试验,这将帮助建立用户真实直接的IP网络地址。这些试验可实现NAT穿透,其内容将在随后参考图9a-图9i进行详细描述。
确定并将接收方当前IP地址发给发送方的过程274开始于步骤290,发送方从存储TSM列表的主TSM 40处收到TSM列表。随后在步骤292,邮件服务器52尝试连接列表上的第一TSM 40,并在步骤294检查连接是否成功。若在步骤296确定连接不成功,则读取列表上的下一TSM 40,并再次尝试进行步骤292。这一过程一直持续到在步骤298连接成功。
在连接成功后,所选的TSM在步骤300通知所有其他TSM 40,其已经连接到邮件服务器52。这一连接可基于从负载均衡考虑TSM 40是最方便的来进行选择。随后,在步骤302,发送方邮件服务器52与相连的TSM 40进行通信,表示它希望连接目标接收方邮件服务器52。该目标接收方由用户ID来标识。随后将由TSM 40来确定该目标接收方邮件服务器52的IP地址。随后,在步骤304,所选择的TSM 40查看其地址列表(本地存储的),判断其是否具有到目标接收方邮件服务器52的直接连接。若具备直接连接,也就是说它知道接收方邮件服务器52的唯一地址,则在步骤306,将该地址发往发送方邮件服务器52。确定该地址时所使用的技术将在随后参考图9a-图9i进行描述。若其不具备唯一地址,则其至少具有TSM 40的地址。因此,在这种情况下,在步骤308,所选的TSM 40将该查询转发给正确的TSM40,后者查找目标接收方邮件服务器52的地址,然后在步骤306,将该地址发给发送方邮件服务器52。
发送方邮件服务器52收到目标接收方邮件服务器52的唯一直接IP地址后,在步骤310,直接连接接收方邮件服务器52,并在步骤312,使用标准的互联网协议发送电子邮件消息。也就是说,该电子邮件的发送方式与发往互联网16的传统IP通信所采用的方式相同,即将该消息分为多个分组,为每个分组添加各自的包头,然后将这些分组通过适当的路径发往接收方,在接收方,将这些分组重新组合,然后展示给目标接收方。
图8所示为用户320、其邮件客户端50、322以及管理员324的不同操作的示意图。在图中,各种不同操作已按相关功能进行分组展示。具体来说,用户320执行三组不同的相关功能,即建立操作326、支付操作328和文档相关操作330。邮件客户端50、322执行一组邮件服务器相关操作332。管理员324执行一组用户相关操作334。组成这几组操作的功能在图8中进行了描述,其内容对于本领域的技术人员而言是很清楚的,因此在这里不再进行详细解释。
图9a-图9f展示并解释了TSM 40所执行的动作的六个阶段,TSM 40执行这些动作来确定目标接收方的唯一IP地址。具体来说,图9a中展示了初始状态,在该状态下,客户端A 350通过NAT A 352与服务器S 354建立TCP/IP连接,客户端B 356通过NAT B 358与服务器S 354建立TCP/IP连接。在这一阶段(标记为阶段1),客户端A 350想要与客户端B 356建立点对点连接。
图9b中展示了阶段2A,客户端A 350通过NAT A 352向服务器S 354发送点对点请求。在收到该请求后,服务器S 354在IP地址S1端1.1s1362上打开一UDP端口360。随后,在图9c中展示的阶段2B,服务器S 354通过已建立的TCP/IP通信媒介364,将UDP端口360的地址(S1:s1)362发给客户端A 350。客户端A 350随后在地址A:a 368上打开其自己的UDP端口366。该端口地址368由NAT A 352转换为A1:a1370。尽管进行了转换,但UDP通信通道372已在客户端A 350和服务器S 354之间建立起来。
在图9d中展示的阶段3,服务器S 354在IP地址S2:s2378上打开第二UDP端口376,这样一来,它就可以使用图9c中描述的类似方式与客户端B 356建立UDP通道。随后,服务器S 354通过已经建立的TCP/IP通信媒介364,将UDP端口376的地址(S2:s2)378发给客户端B 356。客户端B 350随后在地址B:b 382上打开其自身UDP端口380。该端口地址382由NAT B 358转换为B1:b1384。尽管进行了转换,但如图9e所示,UDP通信通道386已在客户端B 356和服务器S 354之间建立起来。
现在具体来看图9e,其中展示了用于建立目标接收方唯一IP地址过程的阶段4,现在对客户端A和客户端B之间实现UDP通信的路径进行解释。客户端B从其UDP端口380的地址B:b 382向服务器UDP端口376的地址S2:s2378发送UDP数据分组。但是,在服务器S 354看来,这些分组是来自网络转换后的UDP端口地址B1:b1384。同理,从服务器UDP端口360的地址S1:s1362也将收到来自客户端A 350的UDP数据分组。
服务器S 354可将来自网络转换后的端口地址A1:a1370的数据分组转发给地址B1:b1384,将来自网络转换后的端口地址B1:b1384的数据分组转发给地址A1:a1370。这便使得客户端A 350和客户端B 356确信彼此之间存在一条直接的UDP连接。
图9f展示了上述过程的阶段5,并建立了常见类型的点对点通信。在这里,服务器S 354首先通知客户端A 350客户端B 356正在使用网络转换后的端口地址B1:b1384进行通信。同理,服务器S 354也会通知客户端B客户端A 350正在使用网络转换后的端口地址A1:a1370进行通信。这样一来,客户端A 350和客户端B 356便可直接通信,因为它们彼此都知道对方的网络转换后的地址370和384。但是,通信可通过UDP端口A:a 366和地址B1:b1384之间的第一UDP通道388进行,或要同时用到端口地址B1:b1384和S1:s1362,这取决于客户端A 350上运行的应用程序(未示出)。同理,依据客户端B 356上运行的应用程序(未示出),通信可通过UDP端口B:b 380和地址A1:a1370之间的第二UDP通道390进行,或还要同时用到端口地址A1:a1370和S2:s2378。
图9g中展示了图5中的常见情况是如何应用到双方NAT均为对称形式的情况下的。具体来说,在阶段6A,若NAT A 352是对称NAT,则客户端B将从网络转换后的端口地址A1:a1370接收UDP数据分组。类似的,若NAT B 358是对称NAT,则客户端A将从网络转换后的端口地址B1:b1384接收UDP数据分组。在探测到这种UDP分组流后,服务器S将接到通知,然后断开NAT A和其第一端口362之间以及NAT B和其第二端口376之间的UDP连接372,这便是图9g中描述的情况。同样在此之后,可断开客户端A和B与服务器S 354之间的TCP连接364,但这取决于客户端A和B上运行的应用程序。
图9h展示了为什么图9g中的方案无法适用于一端NAT为非对称的情况。具体来说,若NAT B 358为非对称的,则从端口地址B:b 382发往网络转换后的地址A1:a1370的UDP分组流将看起来是来自B2:b2392,但却仍被客户端A通过第二UDP通道390接收。然而,从网络转换后的地址A1:a1370发往网络转换后的地址B1:b1384的UDP分组流将被NAT B 358拦截,因为该端口B1:b1384已不再用于客户端B 356的通信了。
图9i展示了面对一端NAT为非对称情况时本发明一实施例的解决方案。具体来说,在阶段6B,客户端A所看到的UDP分组流是来自网络转换后的地址B2:b2392,而不是网络转换后的地址B1:b1384。因此,NAT A 352将发往网络转换后的地址B1:b1384的UDP分组流转发给网络转换后的地址B2:b2392。NAT A 352之所以可以这样操作,是因为NAT B 358已使用该地址来向NAT A 352的网络转换后的地址A1:a1370发送数据,所以该IP可以通过。通过这种方式,即使在存在一端NAT为非对称情况时,也可建立双向通信。
若NAT A 352是非对称的,NAT B 358是对称的,则只需参考图9i中描述进行相反的操作即可。
若NAT A 352和NAT B 358均为非对称的,那么将无法实现纯粹的点对点通信。通信需要通过服务器S 354充当媒介来继续或重新建立。应当注意的是,只要是NAT A 352和NAT B 358均可见的地址,都可用于充当媒介。应对这种情况的方式将在随后参考第二实施例进行详细介绍。
现在引用图10-图16来描述本发明的第二实施例。第二实施例在许多方面与第一实施例类似,因此下文将着重描述第一和第二实施例之间的不同之处。同时,在第一实施例中只是进行简略描述的一些方面,将在第二实施例中得到展开,以进行完整的描述。
在第二实施例中,安全通信系统400为分布式系统,其复杂度与其大小有关。一方面,如图10所示,其整体架构可认为是一分层树402。从系统400最高点依此向下的三个逻辑层次分别为系统管理层404、传输服务器层406和终端层408。图10中所示为逻辑功能框,其可通过多种不同的方式实现。
该分层树402的最顶层404涉及系统400的管理功能。最顶层404中包含数据库410(见图12),其中记录了有权使用系统400的所有计算机,并且一个点对点通信是否允许建立也由最顶层404进行控制。
管理层404还对安全性进行控制。低层的每次通信连接都需要得到管理层404的授权;一旦得到授权,则低层管理层便可在创建其他连接之前,在彼此之间协商密钥。
根据具体的定制要求,管理层404还可在连接创建时接到通知,并将发生在低层的事件记录下来。这些事件可包括小至尝试对网络进行访问这样的小事件。
管理层404还可生成与网络运行情况有关的管理报告,该报告对于控制和管理系统400非常有用。
位于最底层408上的是终端412。这些终端包括“软话机”(用于拨打VoIP电话的软件)以及本地电子邮件服务器。但是,终端412也可包括其他形式的数据通信工具。终端412为安装在用户计算机上用来访问系统400以及执行安全通信方法的关键组件。每个终端412本身都是安全的,因为它们位于用户处,因此,无论通过何种方式来将通信信息存储在终端412上,都不会威胁数据通信的安全性。
所谓的“分布式”传输层406由多个传输服务器414组成,该层位于管理层404和终端412之间。同时,该层406对于用户和管理员来说是不可见的,它是系统400的基本组件,用于实现两种类型通信的传输,即地址和状态确定通信和真实的点对点数据通信。终端412和管理层404只能通过组成传输层406的传输服务器414进行通信。这种方式具有简单和可扩展的优点。
来看图11,现在对管理层404进行详细描述。在图11所示的实施例中,管理层404具有分层树形结构,这种结构可对系统400的控制进行有效的管理。管理层的分布式特性在图11中进行了展示,从图中可以看到,位于分层结构最顶部的是Amteus全局管理节点416,它单独位于中心位置。然后是客户端管理节点418,图11中仅展示了一个客户端管理节点418,它可设置在公司和政府(未示出)等地的计算机上,这些地方往往希望对其注册用户之间的通信进行控制。如图11所示,位于客户所指定位置的客户端运行图11所示的一个客户端管理节点418。
该分层结构中的下一层是由管理特定客户的地区管理节点422组成的层420,图11中展示了三个特定客户。这些地区管理节点412通过分布式传输层406(仅由虚线标识)连接到终端412(EP1到EP3)。这个管理层中的最低层420是按照地理区域进行设置的,并且在如将要在下文描述的负载均衡等几个方面起到重要作用。类似的,在本实施例中,还存在一终端EP4412,该终端通过传输层406直接由Amteus全局管理节点416进行管理。
下面结合一个实施例来描述管理层404的工作方式。表示为终端412的每个用户注册在一个管理节点416、418、422上,通常注册到这些用户的地区管理节点422上。注册信息将沿分层管理树向上传递,这样一来,较高层上的每个管理节点418和416都将获得该注册详细信息。存储在这些管理节点418和416上的注册信息包含注册过程中收集的有关用户的所有详细信息,以及终端412的当前运行状态。是否允许终端412之间进行点对点通信的决定是在该分层结构的最低层上作出的,其上存储有通信双方用户的注册详细信息。这些终端412状态信息的改变随后将发给位于更高一层上的管理节点。
EP(终端)412通常为电话机和/或电子邮件用户。在图11所示的实施例中,EP1 412位于客户在伦敦的办公室中。其详细信息存储在伦敦地区管理节点422、以及更高层次上的所有管理节点416和418中。EP2和EP3 412位于客户在雅典的办公室中。其详细信息存储在雅典地区管理节点422、以及更高层次上的所有管理节点416和418中。EP4 412为Amteus私人用户,只有Amteus可以识别,因此,EP4 412只注册在Amteus全局管理节点416上。
假如EP2 412希望与EP3 412通信,而雅典地区管理节点422可识别想要通信的两个终端用户412,则该请求将由雅典管理节点422在雅典本地进行处理。出于信息记录等目的,详细信息将发往位于高层的管理节点416和418,然而位于高层的这些节点416和418并不参与期望通信通道的建立过程。
若EP1 412希望与EP2 412通信,他会向其位于伦敦的本地管理节点422发出请求。该伦敦地区管理节点422无法识别EP2 412,因此它将EP1的状态修改为呼叫建立状态,然后将该请求沿所述分层树向上传递给客户端管理节点418。
客户端管理节点418可识别此次呼叫的双方,因此它可以处理此次呼叫建立过程。该管理节点知道EP2 416是否处于忙碌状态,因为其上存储有最新的状态信息,然而,尽管可能性很小,但该状态信息也可能已过时,这种情况将在随后进行描述。若客户端管理节点418确定EP2 416处于忙碌状态,则它会通知伦敦的地区管理节点422,后者将通知EP1 412。这样一来,此次呼叫建立请求便以失败告终。
另一方面,客户端管理节点418还可将EP1的状态标记为“呼叫建立”,然后将该请求向下传送给雅典地区管理节点422。雅典地区管理节点422知道EP2416处于忙碌状态(也就是说客户端管理节点422上的状态信息确实过时了)。在这种情况下,它向客户端管理节点418返回“忙碌”失败代码,如前所述,后者随后取消此次通信通道建立请求。
另一方面,雅典地区管理节点422还可将呼叫请求转发给EP2412。由EP2412决定是否接听此次呼叫,然后沿到EP1 412的路径原路返回适当的响应信息。
若EP1 412希望与EP4 412通信,其过程与上面的情况类似。在这种情况下,初始请求将通过其地区管理节点422和客户端节点418一直向上传送到Amteus全局管理节点416。Amteus全局管理节点416随后直接与EP4 412通信,以建立此次连接。
应了解,上面用到的术语“本地”是指服务器所处地理范围内的地点。但是,更严格的说,该术语仅仅是指服务器和终端之间具有相对的直接连接,且终端注册在该服务器上,这便使得该终端位于该服务器的本地。
来看图12,图10中分层结构402中的传输层406由位于该分层树结构中相互连接的传输服务器414组成。每个传输服务器414都负责从一个位置(终端)412到另一位置的通信传输,且在该路径上不对消息进行存储。在该分层树的顶部,设置有主传输服务器424,它与Amteus全局管理节点410相连,后者位于管理分层结构的顶部。此外,还设置有热备份传输服务器426,用作主传输服务器424出现故障后的备份。如图所示,位于分层结构下一层430上的三个地区传输服务器1、2和3 428与主传输服务器424相连。这些地区传输服务器428下面还连接有各自的终端1.1、1.2、2.1和3.1 412。
上述传输层406表示的是一种动态结构,其结构并不预先确定,而是通过定义和设置一些规则来将这些传输服务器414连接起来,以动态的方式来构建网络。此外,在图10中按功能划分为另一层的管理层404实际上位于传输服务器406层中,用于建立点对点通信。最后,该网络还内置有安全壳(securityoverlay),用于提高网络的安全性。在本实施例中,该安全壳实现为一条适用于网络中所有节点的功能性规则,也就是节点无权与终端412通信,除非该节点可识别该终端412。若该节点自身无法识别想要通信的终端412的身份,则它会将该通信请求沿分层树向上传递。
来看图13,每个传输服务器414都具有一条到高层传输服务器414的客户链路(上行链路)430,和/或到管理(数据库)服务器410的客户链路432(为方便起见,两者均在图13中示出)。应当注意的是,若传输服务器414位于分成树的顶部,则上行链路430将连接到管理数据库服务器410,反之,其将连接到更高层传输服务器414。位于传输服务器树底层的是终端412,其在图12中已经进行了描述。每个传输服务器414还具有一条下行链路434,这是一条服务器连接,通过该连接,位于低层的传输服务器414以及终端412可发起到服务器414的连接。每个传输服务器414上的上行链路430为TCP/IP客户端;下行链路434是TCP/IP服务器端。
每个传输服务器414都运行在不需要进行网络地址转换的环境中。这就是说每个传输服务器414都有其自己的公共IP地址436,该地址可以是动态分配的,也可以是其自己的传输服务器ID 438。这些信息连同连接到该特定传输服务器414上的终端的终端ID列表442、到这些终端412的连接状态信息444以及每个终端414的权限,都存储在其本地数据库440中。数据库服务器448按要求读取并更新这些信息。存储在数据库440上的终端(用户)信息列表的作用将在下面进行描述。
数据库440中存储有两个列表,一个是本地注册用户中当前在线用户ID编码的列表444,另一个是本地注册终端412中记录有监视项的本地注册终端ID编码的列表450。当特定终端412已连接但不可进行通信时例如处于忙碌状态,便设定一条监视项。该监视项监视目的终端412的状态,当其可进行通信时,监视项中的触发机制将触发一通知程序。该通知程序向已登记的、对到期望目的终端连接状态的变化感兴趣的所有终端412和传输服务器414发送消息。此外,该状态的变化还将向上通知给分层网络中的更高层。
数据库440也为终端412存储有一组公共密钥451。这些密钥用于对来自不同终端412的加密消息进行解密,这将在随后进行详细描述。
传输服务器414还包括定位模块452,用于确定传输服务器414的当前地理位置,以及心跳监视器(heartbeat monitor)454,用于检查到分层网络中不同邻近传输服务器414的连接。服务器控制模块456以及数据库服务器448一同管理所有链路、模块和数据库的运行。
同终端一样,该网络中的传输服务器414必须得到管理系统404(如图11所示)的授权。如前所述,在数据库440中存储有每个传输服务器414的条目,其中包含其用作传输服务器414时的权限并具有用户ID。
定位模块452可确定传输服务器414的位置。这可通过多种不同办法来实现。例如,一种简单的办法就是将定位模块452窗口化,这样就可确定运行有该定位模块的系统的当前时区。
在使用心跳监视器454后,所有传输服务器414都向其父传输服务器414(如果存在的话)发送规律的心跳。心跳是一种信号,其中包含有与该传输服务器已注册连接(加载)有关的更新信息,用于确认在父、子传输服务器414之间存在通信链路。使用心跳监视器454的目的是对系统400的负载均衡进行控制。具体来说,该心跳信息包含有当前直接注册到发起方(地区)传输服务器414上的终端412的数量的计数(使用计数(usage count))。在收到心跳后,每个(父)传输服务器414返回一条消息,给出下行链路的IP地址和端口列表,以及同一层次上所有其他传输服务器的使用计数。因此(在图12中),当主传输服务器424收到来自传输服务器414的心跳后,将返回每个地区传输服务器1和3 412的各自地址和使用计数。
来看图14,现在来描述本发明一实施例中的负载均衡过程460。如图所示,当新客户端(终端412或较低层传输服务器414)想要连接到传输服务器414时,在步骤464,该传输服务器414将收到一条请求,其中包含新客户端的心跳信号。随后,在步骤466,该传输服务器414读取所存储的自身使用计数U1,以及与其位于同一层次且至少在地理上很接近(例如位于同一时区)的其他传输服务器414的使用计数U2、U3和U4。随后在步骤468和470,该传输服务器将其使用计数U1与同一层次中其他相邻传输传输服务器414的使用计数U2、U3和U4进行比较。若其使用计数U1远高于任一对端414的使用计数U2、U3和U4,则在步骤472向上述新客户端发送一条应答,通知其连接到当前具有最低使用计数的传输服务器414,以进行点对点通信。随后在步骤474,与当前传输服务器414的连接将断开,随后在步骤476,该负载均衡过程460结束。在另外一种情况下,在步骤478,将接受该连接请求,并在步骤480读取该客户端的用户计数,然后在步骤482将客户端的用户计数加入传输服务器414的本地使用计数上。随后,该负载均衡过程结束。
可将上述基本原理进行扩展至更为优化的复杂算法。例如,在收到连接请求的传输服务器414确定在其所处层次和地理位置可接受该请求后,可检查是否有更低层的传输服务器414在地理上与此条新连接接近、并能够更好的处理此条连接。这种做法更加合理,因为若用户是连接在传输服务器树末端的,这样做便可帮助提高总体系统性能。这是因为多数的点对点通信是网络电话数据流,这种数据流会占用很大带宽,但却通常发生在本地。因此,若能将这些主要的数据流都控制在本地传输服务器层,则这些数据流就不会增加整个分层系统406的负担,也就不会使系统400慢下来。
每个接受新连接的传输服务器414都会将其父传输服务器地址通知给其新的子用户。同时也会将此条新用户连接通知给其父传输服务器414。这样一来,该父传输服务器414就会认为该新用户已经与其建立连接。
连接成功后,新用户412便可向其传输服务器414发送如下类型的消息●管理请求传输服务器414在将其自身的传输地址/端口438添加到请求中后,将该请求发往其父传输服务器414。
●发往相连的传输服务器414的消息。这些消息将以传统方式通过TCP/IP发送,并不需要特别的处理。
●发往另一终端412和不同于其父传输服务器414的其他传输服务器414的消息。这种消息包含源终端和目的终端的用户ID。传输服务器414在当前连接用户(终端)列表中查找该用户ID。该列表是通过查看注册到该传输服务器414上的用户的列表442以及这些终端的状态444来创建的。若找到该用户,则可能通过一个或多个低层传输服务器414将消息发往该用户。若未能找到该用户,则将该消息发往该传输服务器的父传输服务器414。若已到达传输服务器树424顶部仍未找到目的终端,则向源终端发送失败消息。这一过程是通过从树顶用户ID向消息发起源发送应答消息来实现的。检查存储在每个传输服务器的父传输服务器414处的数据依赖于以下事实每个用户的注册信息均沿分层树向上传递给每个节点的父节点,使得分层树的最高点掌握所有的连接情况。因此,若需要连接的用户在树424的顶部都未能找到,则说明该用户没有注册到该网络。
应了解,若终端412失去了到其直接父传输服务器414的连接,则将尝试连接到其祖父传输服务器414。该祖父传输服务器414随后会在最初的层次上找到另一条替代连接。
在图10中分层网络402的终端层408上,每个终端412都有一条到其父传输服务器414的客户端TCP/IP连接。该连接也用来访问较高层传输服务器414和管理服务器410和404。
每个终端412都向用户提供通信接口(未示出),用于进行例如VoIP通信。在本实施例中,每个终端412还使用所谓的多媒体引擎(未示出)。该多媒体引擎包括麦克风、扬声器和耳机,以及音频播放器与录音器和视频播放器与录像器。该多媒体引擎还使用数字信号处理模块,用于将音频文件在不同波形格式之间转换、剪辑、放大和混合。该多媒体引擎将不再进行过多描述,因为该多媒体引擎的功能对于本领域的技术人员来说是很常见的,无需解释如何构建这种引擎。
来看图15和图16,现在来描述如何使用上述系统400来建立点对点连接。方法500是一个可分为两个阶段的过程,其中,第一阶段(在图15中描述),确定在指定的终端412之间是否可能建立期望的点对点连接;第二阶段(在图16中描述),在源终端412和目的终端412之间建立点对点连接。一旦点对点连接建立完成,便有可能使用标准互联网通信协议,在源终端412和目的终端412之间以一种安全方式来实现直接的双向通信,在本实施例中,这是通过一条专用UDP信道372来实现的。下面将对上述第一和第二阶段进行描述。
可在终端412之间建立点对点(P2P)连接。在本实施例中,该连接将用于发送音频、电子邮件以及其他形式的通信。
当一个终端用户决定向另一终端用户拨打VoIP电话呼叫时候,就需要在例如终端412处建立一条新P2P连接。在该阶段,连接的发起端(源)只知道需要通信的目的端的网络地址(目标用户ID),其并不知道目标用户的状态,也就是目标用户是否在线,是否处于忙碌状态等(通过其地址簿,他也许知道目标用户最近在线等,但无法确定目标用户的当前状态)。
来看图15,实现第一阶段的方法500开始于步骤502,源用户412向其传输服务器414发送请求,其内容为“我(用户S)希望与用户D通信”。传输服务器414查找记录有相连用户412的表442和444,然后在步骤506,确定是否能找到用户D。若发现连接有用户D 412,则在步骤508查看该用户D 412当前是否可用。若否,则在步骤510返回“失败-忙碌”响应信息,优选的,还可在步骤512对该用户D设定一监视项;最后,在步骤514,用户S在等待了预先确定的时间片后,尝试再次连接,和/或等待通知,显示当前传输服务器中的前述监视项已经被触发,表明用户D已进入可用状态。另一方面,若在步骤508判断用户D当前可用,则在步骤516,传输服务器414将用户S和用户D的状态同时修改为“呼叫建立过程中”状态。随后,在步骤518,传输服务器414可通过位于较低层上的其他传输服务器414,将该请求发往用户D。这时,在步骤520,便可认为用户D已找到并已连接,随后,过程500继续进行,随后将结合图16对其进行描述。
若用户D的状态随后发生改变,显示其当前可进行通信,则这种情况将通知用户D的本地传输服务器414,并触发为用户S设置的监视项。随后,在步骤514,会将用户D的可用状态通知用户S,接下来第一阶段将按上述步骤重新开始。作为选择,还可单独或结合使用下面这种方式,即在步骤514,用户S等待一个预先设定的时间片,然后重新按图15中的内容开始进行过程500。
若在步骤506判断得知用户D当时未连接到传输服务器(TS),则在步骤522会继续判断是否存在父传输服务器414。若存在,则在步骤524,该请求将转发给父TS 414。因此,在步骤526,便可认为该父传输服务器414就是当前传输服务器,随后该过程继续进行,当前传输服务器414在步骤504查找其已注册终端用户412列表。若在步骤522确认不存在父TS 414,则在步骤528,传输服务器将向终端发送应答信息,显示连接失败,然后在步骤530,本过程结束。
传输服务器414从高层传输服务器414收到呼叫请求时的处理方式与前述方式类似,区别仅在于当用户未连接时,将返回失败消息,而不是将请求发回其发送端。
来看图16,现在对通信过程500的第二阶段进行描述。在连接到用户D后,用户D需要将其当前IP地址和端口号发给用户S,这样便可建立直接连接,进而进行点对点通信。因此,若用户D在收到用户S的呼叫后仍然在线且可用,则将在步骤532将其状态改为“呼叫建立”。随后在步骤534,用户D向其父传输服务器(总是传输服务器414)发送RINGING1消息。RINGING1消息还包含有呼叫发起方(用户S)的用户ID,这样一来,媒介传输服务器414便可使用与处理发起呼叫请求时所使用机制相同的机制将其发回。
当在步骤536收到RINGING1消息后,传输服务器414首先在步骤536构建一UDP(用户数据报协议)信道372。随后在步骤540,传输服务器414创建一条RINGING2消息,其中包含该UDP信道的外部IP地址和端口号码,然后在步骤540将该消息同时发往终端用户D和呼叫发起方终端用户S。RINGING2消息中还包含有接收到RINGING1消息的传输服务器414的用户ID,其将用于建立点对点通信。
应了解,传输服务器414从不发送RINGING1消息。因此,应当认为在传输服务器处收到的RINGING1消息应总是直接来自终端412的。
在步骤542,终端412收到RINGING2消息,随后在步骤544,该终端检查自己已处于呼叫建立状态。若不在此状态,则在步骤546,其对此次呼叫的对端进行重设,在步骤530,过程500结束。另一方面,在步骤548,每个终端412建立一条UDP通道,并且在步骤550,开始定期向RINGING2消息中指定的端口发送消息。这将是距离被叫方最近的传输服务器414。除非发生常见的网络错误,否则多数消息都将正常到达。
当距离用户D最近的传输服务器414收到来自每个终端412的第一UDP消息,在步骤552,该传输服务器从该消息中提取出这些终端UDP信道372的网络地址(可能进行了转换,这种情况将在随后进行描述)和端口号。随后,该传输服务器414可向每个终端的UDP信道372发送(未示出)应答消息,其中包含其它终端UDP信道的UDP网络地址和端口号,哪怕在每个终端处设置有防火墙,也依然能够收到这些消息。(通常,终端处的防火墙策略将允许这种消息通过,因为最先是由终端向传输服务器发起通信的)。
在收到来自双方终端的数据分组后,传输服务器414便可知道这些终端的UDP端口号是如何外部编址的了。随后,在步骤554,传输服务器414向每个终端412发送TALKDIRECT消息,告诉它们彼此另一终端的地址。在步骤556收到这些UDP地址后,在步骤556,源终端412建立一条到达目的终端的直接UDP通信通道372,此后,这些终端412彼此之间便可进行通信了,随后,在步骤530,本过程500结束。
在多数情况下,都可以通过上述过程很容易的建立这种直接通信。然而,若终端处使用了网络地址转换器(NAT),并结合实施了某些防火墙策略,上述过程就会出现问题。通过参考图9a-图9i中第一实施例中描述的方法,许多情况下,这些问题都可得到解决。
下面还将详细讲述一种可同时应用于第一和第二实施例的方法,同时还将讲述一种可应对NAT 352和358的各种组合的机制。
网络地址转换器(NAT)352和358可归结为两种类型的转换功能对称和非对称。对于对称NAT而言,无论数据分组的目的端是什么,都将使用同一互联网地址和端口组合。而非对称NAT对不同目的端使用不同的互联网地址/端口组合。同时,尽管这样做的原因并不十分清楚,但通常认为之所以这样做是基于这样一种观点,即最好拦截来自未知源端的数据分组。
以下列出了有关这些NAT必要性的一点想法1.在无需使用NAT时,接收方可看到每一数据分组来自何处,并可根据需要轻松拒绝来自未知源端的数据分组;2.互联网数据分组中的IP地址和端口很容易仿冒。在许多情况下,NAT的这种严格策略也无法阻止黑客的入侵。
在建立点对点通信过程中,防火墙也会导致一些问题。通常的防火墙策略是施加一种“我不问你你别说话”的规则。若A和B想要与对方通话,则A或B中必须有一个要先说话。随后另一个作出应答。但是若A首先说话,但B位于防火墙后,则在B向A发送消息前将无法收到A发出的数据分组。
适度敏感的防火墙行为会要求安装上述规则。实际上,许多防火墙将上述规则解释为“不再听取没有对他说话便先讲话的人的讲话”。在试图创建点对点通信通道的过程中,这种行为将导致严重的问题。
在上述实施例中介绍的几个过程可解决这些情况。首先,应了解,在与新目的端通信时,非对称NAT通常不会打开任意一个端口;通常会是最初的端口+1(或2、3等,与第一和第二次通信之间发生了多少次有关)。在本发明中,在遇到非对称NAT时,将使用RINGING2消息中所含的端口地址之上的连续几个端口,来克服这种可能性。
一些制造商指出,一些防火墙/NAT通常设置有一种uPnP(通用即插即用)接口,通过这种接口可防火墙/NAT的活动进行询问、安全限制和修订。本发明实施例中包含一个uPnP(未示出)接口,它安装在传输服务器414上。
在一些情况下,由于苛刻的防火墙策略或由于双方均为非对称NAT 352和358,不太可能实现直接点对点连接。在这种情况下,本发明可通过用作受信媒介的本地传输服务器414进行消息转发。这种方式可解决未知发送者带来的问题,因为对于本地非对称NAT 352和358而言,本地传输服务器414总是已知的,这样一来,既便最苛刻的防火墙规则也无法阻止这种间接伪点对点通信。此外,由于数据分组是通过作为受信媒介的传输服务器414转发的,且其只进行少量分析且不进行存储,因此这种间接通信通道给安全性带来的可能影响也将降至最低。
在启动防火墙截获(非常苛刻)的情况下,本发明在一个方向上建立一条真正的点对点通信,而在另一个方向上借助本地传输服务器的转发。这种变化是值得的,因为它可降低对安全性造成的影响。例如在传送电子邮件过程中,直接发送电子邮件并通过转发返回确认的方式是非常有用。
下面描述一种系统10自动发现路径中存在非对称NAT 352和358或苛刻防火墙的方法。从更高的角度来说,当本地传输服务器414知道双方终端412的UDP端口地址时,如前面结合图16进行的描述,本地传输服务器414将发送TALKDIRECT消息给双方终端,告诉它们彼此对端的地址。一方终端412尝试进行直接通信,并设置一个定时器(未示出)。若数据分组被直接接收,则通知传输服务器414该连接可用,然后终止定时器并不再使用。然而,若定时器报警(也就是超出了预先设定的时间片),且没有收到任何数据分组,则将向传输服务器414进而向对端终端412发送TALKTHROUGH消息,显示此后发往目标目的终端412的通信需要直接发往本地服务器414。消息将在随后由位于期望终端412本地的传输服务器414转发。
系统10在被叫接受呼叫前开始建立点对点连接。若此次呼叫未被接受,则点对点连接将立即关闭。系统10只在呼叫被接受后才开始以下过程,其中执行了超时/TALKTHROUGH方法,这种方法可在建立语音链路过程中导致很长的延迟。这种情况也出现在多数呼叫/电子邮件是在当用户登陆后才被接受的时候。
现在结合图17-图20来描述本发明的第三实施例。第三实施例与第二实施例十分类似,区别仅出现在与安全性有关的一些问题上。具体来说,如下面将要讲述的一样,第三实施例使用更强的安全系统来替代存储在每个节点上的权限446。
现有技术中的不安全的通信系统是无法使用的,因为它们会向注册用户中引入有害用户。我们知道,不安全产品在用户数方面具有天然的缺陷,由于系统的使用者越多,用户信息越有用,这样便会引入入侵者,对“受欢迎”系统自身造成破坏。这一点更像是控制系统中的负反馈。
第三实施例通过在一开始就建立防范措施来缩小这一影响的范围。永远无法将入侵者从系统10中完全清除,但却可以构建有效的安全措施来阻止因其存在而给系统10和注册用户带来的威胁。应了解,设计一种可完全清除入侵者系统的想法将最终使设计者崩溃。
以下列出了第三实施例的安全性要求要求1节点必须通过系统10验证。
要求2从节点到TS链路上的通信必须是保密的。
要求3客户端必须通过彼此验证(相互验证)。
要求4从客户端到客户端连接上的通信必须是保密的。
满足安全性要求1&2以下用到的许多术语都来自RFC 1510,Kerberos验证系统。Kerberos是一种验证机制,用于验证用户和主机的身份,该机制也是Microsoft WindowsServer 2003中的优选验证方法。Kerberos验证协议提供了一种机制,用于在双方的连接打开之前,在客户端和服务器之间或一台服务器与另一台服务器之间提供相互验证。该协议假设客户端和服务器之间最初的事务是发生在不安全的通信网络中的。这种不安全的环境包括例如互联网,其中入侵者可轻易的装作客户端或者服务器,并偷听或控制合法客户端和服务器之间的通信。
Kerberos技术在很大程度上依赖于使用共享秘密的验证技术。基本的概念非常简单如果一个秘密只有两个人知道,则任何一方都可通过确认对方知道该秘密来验证其身份。密码通过使用密钥进行加密来保密。与共享密码不同,通信双方共享的是加密密钥,它们使用该密钥来验证对方的身份。为启用该技术,共享的密钥必须是对称的,也就是在加密和解密过程中使用同一密钥。一方通过使用该密钥对信息加密来证明其知道该密钥,而另一方通过解密来证明拥有该密钥。
这一基本原则可通过验证符(authenticator)以以下具体方式实现。一个使用密钥进行验证的简单协议开始于,某人位于通信过程以外,并且想要加入通信过程。为能加入,这个人出示验证符,其形式为一条使用密钥加密过的信息。在每次执行该协议时,验证符内的信息必须不同。否则,恰巧偷听到通信的其他人便可再次使用旧的验证符。
在收到验证符后,看门人对其进行解密,看看能否解密成功,从而得知里面的内容。若成功,则看门人便可知道出示该验证符的人拥有正确的密钥。只有两个人拥有正确的密钥,看门人是其中之一,所以出示验证符的人便是另外的一个。
若门外的人想要进行相互验证,则可反向执行同一协议,其中的区别很小。看门人可从原始验证符中提取出信息的一部分,将其加密成新的验证符,随后将新验证符交给等在门外的人。门外的人随后可对看门人的验证符解密,并将结果与原始内容进行比较。若二者匹配,则门外的人就可知道看门人能够解密原始内容,因此其必然拥有正确的密钥。
图17中展示了Kerberous技术是如何应用在本发明中的。在这里将用到服务器602、客户端604和密钥分发中心606。客户端604希望连接到服务器602,便先向密钥分发中心(KDC)606申请以获得用于建立到服务器602的有效连接的权证(ticket)。该权证用于向服务器602验证客户端604,而前者已经通过了系统600的验证。
以下列出的缩写将应用在随后参考图18和图19对本发明第三实施例中安全方法进行的详细描述中TS =传输服务器414。
NODE =客户端和TS的组合,它在某些时候是指客户端,在另一些时候是指TS,根据其在描述为NODE 608时所扮演的特定角色,将另一部分名称省去,但其对应功能仍然可用。
AS =验证服务器610。
KEY =基于分配给NODE608的密码生成的密钥值。
TGS =权证授予服务器612。
REALM 614=共享AS 610的NODE 608群。
首先,假设与包含一定数量NODE 608的特定REALM 614相关联的验证服务器610是可用的。AS 610将每个注册NODE 608的{用户名,密码}二元字(doublet)的等效值存储在其本地数据库616中。其次,假设(如图19所示)位于NODE_A 608处想要连接到网络的客户端,已通过互联网浏览器618连接到KDC 610的网页服务器620进行注册,并获取到了用户名“用户A”622和密码“pwdA”624。
下面将结合以下缩写来描述本过程的基本机制NODE_A=具有用户名A的NODE 608。
TGT_A =授予给NODE_A的权证626。
S_A=AS 610和NODE_A 608之间的会话密钥628。
K_AB =NODE_A和NODE_B之间的共享密钥630。
TICKET_AB =允许NODE_A访问NODE_B的权证632。
{X}K_Y =由密钥K_Y加密后的值X。
来看图18和图19,验证过程开始于NODE_A启动,并向系统600验证自己,具体过程如下1.NODE_A 608连接到TS 414,并向其所从属的REALM 614关联的AS 610发送AS_REQ 634消息(通常该消息沿分层网络向上传送,直到找到连接到AS 610的TS 414)。
2.AS 610生成会话密钥S_A 628,回复一条AS_RESP消息636,其中包含TGT_A626和S_A 628,二者均通过pwdA 624进行了加密。
为了进一步提高验证的安全性,AS 610还可回复一条加密的TIMESTAMP(时间戳,图中未示出)。这种方式假设AS 610通过网络时间协议(NTP)或简单NTP连接收到可靠时间源,以及在向系统600进行验证时,NODE 608与AS在时间上是同步的。NODE 608需将AS提供的TIMESTAMP与其当前Win32时间计数(tick count)相关联,并在需要生成其自己的的TIMESTAMP值时计算其新的当前时间,。
一旦NODE_A 608通过验证,便假设其收到网络发来的其加入网络(即能够建立和接收VoIP呼叫)必须链接的TS 414的名称,该目标TS 414称为NODE_B608。在使用了时间戳后,接下来的步骤如下1.向AS 610发送TGS_REQ消息638,该消息中包含TGT_A 626和NODE_B608的名称。
2.AS 610回复TGS_RESP消息640,该消息中包含K_AB 630(使用S_A 628进行了加密)和TICKET_AB 632。
3.NODE_A 608提取出K_AB 630的值,计算当前TIMESTAMP值,生成其对NODE_B 608的验证符{TIMESTAMP}K_AB。NODE_A 608向NODE_B 608发送AP_REQ消息642,该消息中包含有给NODE_B 608的{TIMESTAMP}K_AB和TICKET_AB 632。
4.为使NODE_A 608能连接到NODE_B 608,NODE_B必须对TICKET_AB 632进行解密,取出K_AB 630,然后解密{TIMESTAMP}K_AB,以检验该TIMESTAMP。假设上述过程成功完成,随后NODE_B 608回复AP_RESP消息644,该消息中包含{TIMESTAMP+1}K_AB,这使NODE_A 608可对NODE_B 608进行验证。
若不使用时间戳技术,上述过程对于本领域的技术人员来说是很明显的,因此,对不使用时间戳技术时上述步骤的执行不再进行详细描述。
此时,NODE_A 608已通过NODE_B 608连接到网络上(事实上,位于NODE_A上的客户端604正在由位于NODE_B 608上的TS 414提供服务)。
上述过程是基于Kerberos验证系统的一个适合的子集实现的,其中再次用到了基本的协议、消息和数据结构,但功能上有所区别,从而使得本实施例中新的验证技术可有效应用于本文中的点对点通信过程中。
满足安全性要求3&4下列缩写将应用在对验证过程这一阶段的描述当中DH_PK_A=客户端A的Diffie-Hellman公共密钥646。
DH_SK_A=客户端A的Diffie-Hellman私有密钥648。
DH_PK_B=客户端B的Diffie-Hellman公共密钥650。
DH_SK_B=客户端B的Diffie-Hellman私有密钥652。
KA_C =NODE_A和NODE_C共用的共享密钥654。
来看图19,当位于NODE_A 608处的已连接到网络的客户端A 604想要呼叫位于NODE_C 608处的客户端C 604,本实施例要求双方客户端604均对彼此进行验证,随后,二者之间任意直接连接(例如点对点连接)上的通信都将由共享密钥K_AC 654进行加密。
两种可能的客户端到客户端验证可以考虑使用在本实施例中。第一种称为“感觉验证(authentication by induction)”,若要在NODE_A 608和NODE_C608之间建立连接,则客户端A 604和客户端C 604之间必须存在一条已通过验证的链路,并且可在这条链路上实现有效地背载(piggy-backs)。具体过程如下1.客户端A 604生成Diffie-Hellman(DH)密钥对,并向客户端C 604发送包含DH_PK_A 646的消息。该消息通过连接二者且已通过验证的链路656(通信通道建立协议的一部分)传送。
2.在收到该消息后,客户端C 604假设该消息是由已验证源发出的(尽管客户端C 604未对该源进行正式的验证,这说明这种形式的验证还比较薄弱,因此称为“感觉验证”)。
3.客户端C 604生成Diffie-Hellman(DH)密钥对,并向客户端A 604发送包含DH_PK_B 650的消息。该消息也通过同一已通过验证的链路656(尽管也可通过其他可能链路)传回给客户端A 604。
4.现在,客户端A 604和客户端C 604均可独立计算共享密钥K_AC 654。任何截获DH_PK_A 646或DH_PK_B 650的人都无法计算K_AC 654,或者冒充为客户端A 604或客户端C 604。
5.客户端A 604和客户端C 604使用K_AC 654生成大量加密密钥,用于先进加密系统(AES)或用来进行秘密通信。
总体来说,“感觉验证”并不是真正的验证,更准确的说,这种方式等于说“我已经跟已通过验证的一方X建立了保密通话,这个人声称他叫X,尽管我无法确认这是否是真的”(尽管如此,但与电子邮件等相比,对于VoIP而言,这种方式引发的担心要小很多)。
还可以使用AS 610来生成可使得客户端A 604和客户端C 604对彼此进行验证的权证632,但在通信通道建立过程中实施这一操作所引发的暂时开销将非常大。因此,相比之下,应优先考虑“感觉验证”方式。
第二种可以考虑的验证方式可在Amteus系统600外部实施,但实施过程必须有Amteus系统600的参与。这种方式假设存在位于外部的公共密钥架构(PKI),而这些客户端可以使用公共密钥(PKE)。在这种情况下,上述协议可扩展是RSA加密算法,该算法对在客户端A 604和客户端C 604之间传送的消息进行数字签名,这样一来,便可实现强大的验证方法(对PKI将不做过多描述,因为这已是现有技术)。
本实施例采用安全性稍低但却更加实用的“感觉验证”方法。
验证服务器复制(Authentication Server Replication)在现有的Kerberos系统中,对用于验证过程的安全数据库的管理是越简单越好,本实施例也采用了这一原则。本实施例的特征如下-尝试只维护静态数据-避免存储任何会话或呼叫相关数据(也就是动态数据)。
-维护一主读/写副本,用于创建、修改和删除帐户。
-定期将主副本复制为一定量的只读副本。
跨区验证(Cross-realm Authentication)在本实施例中可包含多个REALM 614,将使用分层方式由管理系统404进行管理。这样便可实现不同REALM 614内NODE 608之间的验证(所谓的“跨区验证”)。
跨区验证结果将有效地背载(piggy-back)在上面描述的存在的TGS系统600上。若REALM_A 614内的NODE_A 608希望连接到REALM_B 614内的NODE_B608,则TGS_B 638、340必须注册到REALM_A 608关联的AS 610上。这样一来,NODE_A 608只需要在步骤634向TGS_A请求TGT 626,该TGT 626将被发往TGS_B以获取权证632,然后将该权证632发往NODE_B 608,以建立新链路。
尽管对区域614采用分层组织(见图21)的方式,但一般两个通信的区域614也有必要在对方上进行注册,而不是只在一个方向上进行注册即可。
下文将对跨区验证和授权进行详细描述。但是,在此之前,将首先参考图20a和20b中的描述,简要介绍一下本实施例中NODE的安全性操作。
通常来说,NODE 608是一组子系统的集合,图20a和图20b对其相关的子集进行了描述。连接或链路都是向NODE 608或者由NODE 608来发起的。以下给出临时且不要求NODE-NODE加密的简单连接与永久的、涉及加密密钥630、654的链路之间的区别。
图20a和图20b中展示了一些NODE 608,它们包含同样的子系统(也就是说它们是同一系统的不同实例)。父NODE 608(图20a)为一主NODE,其内的数据客户端(DC)656连接到数据服务器(DS)612,且KDC 610处于活跃状态。子NODE 608(图20b)不具有DS连接,因此DC 656和KDC 610处于非活跃状态。主NODE 608通过使用其安全性服务660来处理来起其子NODE的所有安全性请求。
客户端604和TS 414使用句柄(handles,图中未示出)来与SS 660通信。句柄与每条连接或链路(即每个活跃的服务流)相关联,不管其是到父NODE 608的客户端连接/链路662,或是来自子NODE 608的TS连接/链路664。
在NODE 608启动后,DC 656将尝试连接并登陆到DS 658。若成功,则KDC 610也将被初始化。应注意,主NODE 608无需向其KDC 610验证其身份,因为客户端604无法连接到同一REALM 614内的其他NODE 608(见下文)。
在多数情况下,客户端子系统会尝试建立到父NODE 608的链路662(对主NODE 608也是如此,在这种情况下,该链路将是跨区的,见下文)。SS 660接受指令,建立并向父NODE 608发送安全请求,以及处理来自父NODE 608的安全应答。一旦到父NODE 608的链路建立完成,客户端604便可呼叫SS 660,以便对链路消息进行加密或者解密。若客户端604收到安全性消息,则向SS660发起呼叫;若该NODE 608并非消息的目的端,则客户端604将消息发往TS 414,以便沿分层架构向下传递,直到到达所选的目的NODE 608,随后对消息进行处理。
子NODE 608向TS 414发送消息。若TS 414判断出该消息为安全性消息,则呼叫SS 660;若呼叫失败或目标在分层架构中的较高层,则TS 414将该安全性消息发往客户端604,以便向上传递给父NODE 608。
当在NODE 608处有可用的活跃(已连接到DS 658)KDC 610时,由于它是主NODE 608,接收自TS 414处的子DODE的安全性请求都将由NODE 608进行处理,而不再向更高层传递。
应注意,最简单的实现方式是为客户端604分配一些状态,以便对链路的建立过程进行管理。SS 660将不会回叫客户端604或者TS 414。假设子系统之间是高度集成在一起的,这样一来,客户端604和TS 414需要对状态进行维护,以便管理安全性请求和应答。
如上所述的REALM 614为一组注册用户的集合(类似Windows中的域),其中,每个用户都注册到该REALM 614(通常通过网络服务器),并且分配到一个帐户(未示出),该帐户由该REALM 614中的DS 612进行维护。
来看图21,DS(数据服务器)612存储有特定REALM 614的所有验证数据,而这些数据将不会传播到对应REALM 614以外。主NODE 666为REALM 614的安全性根节点,安全性请求将不会向该节点以上的更高层传递。
为使得动态数据可以在分层架构中上下传递,需要采取一些措施来将一个REALM 614中的子NODE 668连接到较高层REALM 614中的适当父节点670,这种树形拓扑的特点是只需要一条这样的链路672。图20和图21中展示了本实施例提供的解决方案,REALM A 614的主NODE 666允许连接到更高REALM B 614中的父NODE 670。这一链路672是可能存在的,因为在DS B 612中建立了一个帐户,使得REALM A 614的主NODE 666可以通过REALM B 614的验证,因此便可建立该链路672。
由于链路672是跨区链路,因此呼叫数据便可从REALM A 614传递到REALMB 614,以及向下传递到REALM C 614,从而允许例如NODE X 608向NODE Y 608发起跨区VoIP呼叫。
现在通过详细的方案来描述跨区连接是如何实现的。
主NODE启动假设数据服务器(DS)612已经处于运行中。主NODE 666在DS 612本地启动,通常向其输入指令参数,使其登陆到DS 612,为KDC生成密钥628(辅助NODE使用相同参数启动)。通过GUI提供的所有{用户名,密码}都是用于登陆到更高REALM 614中的帐户的。
1.启动程序引导DC(数据客户端)656登陆到本地DS 612。
2.启动程序调用进程SecurityService::Initialise()。KDC 610生成其自身密钥,并与DC 656握手。
3.用户输入{用户名,密码},使得客户端604可以连接到父NODE 670(位于另一REALM 614内)。
4.客户端604通过进程SecurityService::CreateSecurityContext()来获取用于到父节点656的新连接的句柄。
5.客户端604调用进程SecurityService::BuildAsReq()来构建AS_REQ消息634,随后将该消息发往父NODE 670。
6.客户端604收到AS_REP消息636,将其发往进程SecurityService::ProcessAsRep()。
7.客户端604使用其所希望连接的NODE的ID来调用进程SecurityService::BuildTgsReq(),这样一来,SS(安全性服务)660便可构建合适的TGS_REQ消息638。该消息随后将发往父NODE 670。
8.客户端604收到TGS_REP消息640,将其发往进程SecurityService::ProcessTgsRep()。
9.这时,客户端604或者将其现有连接修改为链路状态,或者重新连接一个不同的父NODE 670(但在任一情况下,目标NODE必须是进程BuildTgsReq()中指定的NODE)。客户端604调用进程SecurityService::BuildApReq()来构建AP_REQ消息642,随后,客户端604将该消息发往父NODE 670。
10.客户端604收到AP_REQ消息644,将其发往进程SecurityService::ProcessApRes()。调用成功完成后,SS 660便将拥有必要的安全性环境,以支持在连接到父NODE 670的链路672上的加密/解密操作。
非主NODE启动1.NODE 608未获得DS登陆参数,因此启动程序不会引导DC 656登陆到本地DS 612。
2.启动程序调用进程SecurityService::Initialise()。KDC 610未获得用来生成密钥的参数,DC 656显示其未连接到DS 612。
3.用户输入{用户名,密码},使得客户端604可连接到同一REALM 614内的父NODE(该链路可以是连接到主NODE 666的,也可以不是)。
4.客户端604通过进程SecurityService::CreateSecurityContext()获取到父节点的新连接的句柄。
5.客户端604调用进程SecurityService::BuildAsReq(),构建AS_REQ消息634,并将其发往父NODE。
6.客户端604收到AS_REQ消息636,将其发往进程SecurityService::ProcessAsReq()。
7.客户端604使用其所希望连接的NODE 608的ID来调用进程SecurityService::BuildTgsReq(),这样一来SS 660便可构建适当的TGS_REQ消息638。随后,该消息被发往父NODE。
8.客户端604收到TGS_REQ消息640,并将其发往进程SecurityService::ProcessTgsRep()。
9.这时,客户端604或者将其已有连接修改为链路状态,或者重新连接一个不同的父NODE(两种情况下,目标NODE都必须是进程BuildTgsReq()中指定的NODE 608)。客户端调用进程SecurityService::BuildApReq(),构建AP_REQ消息642,随后,客户端604将该消息发往父NODE 670。
10.客户端604收到AP_REP消息644,并将其发往进程SecurityService::ProcessApRes()。调用成功完成后,SS 660便将拥有必要的安全性环境,以支持连接到父NODE的链路上的加密/解密操作。
主NODE从子NODE接收AS_REQ或TGS_REQ请求假设主NODE 666已经初始化,并且具有可接受安全性请求的KDC 610。
1.TS 414从子NODE 668收到AS_REQ消息634。若该连接/链路具有安全环境(security context),则调用进程SecurityService::DecryptLinkData()对该消息进行解密。
2.TS 414将ASR_EQ消息634发往进程SecurityService::ProcessAsReq()。为完成该请求,KDC 610从AS_REQ消息634中提取出用户名,并使用该用户名来请求存储在DS612上的密码(哈希加密后)(通过DC 656)。
3.若成功获取该密码,则进程SecurityService::ProcessAsReq()返回AS_REP消息636。(应注意,SS 660处理请求过程中不需要安全环境,这与SS 660处理应答时的情况不同)。
4.TS 414向曾向其发送AS_REQ消息634的子NODE 608发送AS_REP消息636。
若主NODE 666收到TGS_REQ消息638,则执行相同的进程(只是此时想要连接的NODE 608的密码(哈希加密后)是从DS 612中获取的)。
非主NODE从子NODE接收AS_REQ或TGS_REQ消息1.TS 414从子NODE 668接受AS_REQ消息634。若该连接/链路具有安全性环境,则调用进程SecurityService::DecryptLinkData()对该消息634进行解密。
2.TS 414将AS_REQ消息634发往进程SecurityService::ProcessAsReq(),后者返回适当出错代码,显示活跃的KDC 610当前不可用。
3.TS 414将AS_REP消息636发往客户端604,以传递给父NODE 670。
主NODE或非主NODE接收AP_REQ任何接收到AP_REQ消息642的NODE 608都必须在本地成功处理该消息或返回出错消息,不能将该消息向上传递。
1.TS 414从子NODE 668收到AP_REQ消息642。若已有的安全性环境以及链路无法使用在此次连接上,则无需对该消息进行解密。
2.TS 414将AP_REQ消息642发往进程SecurityService::ProcessApReq(),后者使用其本地NODE密码(非KDC 610)处理该消息642,生成并返回适当的AP_REP消息644。若进程SecurityService::ProcessApReq()调用成功,则完整的安全性环境便已生成,到子NODE 668的连接修改为链路状态。
3.TS 414向子NODE 668返回AP_REP消息644。
主NODE或非主NODE从父NODE接收AS_REP或TGS_REP若在主NODE 666处的客户端604收到AS_REP消息636或者TGS_REP消息640,则主NODE 666一定是最初的AS_REQ消息634或TGS_REQ消息638的源端,这在上述启动情况中已进行了讨论(这里应该不是已有的安全性环境)。
若收到AS_REP消息636或TGS_REP消息640的NODE 608不是主NODE 666,则该请求将发往TS 414,以便传递到适当的子NODE 668。在这种情况下,到父NODE 670的链路672必须具有安全性环境,并应当调用进程SecurityService::DecryptLinkData()来对收到的消息进行解密。向下连接子NODE 668的链路672可以具有安全性环境,也可以没有(子NODE 668会将AS_REQ和TGS_REQ消息634和638发往更高层的KDC610,以便连接到该NODE608)。
主NODE或非主NODE从父NODE接收AP_REP此部分内容已在启动阶段进行了描述。
应了解,虽然上面的描述中参考了几个进程如SecurityService::DecryptLinkData(),但没有对这些进程的详细内容进行介绍,因为在实现上文描述的内容和功能时候,这些进程的功能显得不那么重要,并且属于本领域技术人员所掌握的内容。
上述实施例使用了push机制来发送在线注册用户的最新状态。然而,在其他实施例中,还可使用pull(拉播)机制,例如电子邮件服务器验证其所发送邮件的人的身份,并向DS请求这个人的状态信息。使用pull机制的好处在于,它可将数据服务器的传输开销降至最低。但是,push机制的优势在于,该机制对于电子邮件服务器而言更易于使用。
应了解,本发明并不局限于上述实施例。例如,可将电子邮件消息分割成多个部分,然后对每个部分分别加密。然后将每个部分单独发往各自的传输服务器。每个部分将独立路由至目的端,并且在目标接收方处解密以及重新组合。这样做的好处是既便截获并成功解密一条电子邮件消息不会泄漏整封邮件的内容。这是可用来提高消息传递安全性的一种非常有效的方式。通常,可对电子邮件文本进行采样,以获得即将发送消息的一部分,例如,若使用五个TSM,则可在邮件文本的每五个字母处进行采样,创建五分之一电子邮件消息。其他电子邮件消息也可每五个字母进行一次采样,但却可以使用与第一条电子邮件消息不相同的偏移量。
还应了解到,除使用有线网络外,本发明还适用于无线通信网络(如使用WIFI的网络)。此外,除计算机外,在点对点通信系统中,还可使用PDA(个人数字助理)和移动电话作为源端和目的端通信设备。
最后,本领域的技术人员还应了解,还可使用优于PKI的其他加密技术。
权利要求
1.一种通过数据通信媒介在第一远端计算机和第二远端计算机之间实现安全点对点数据通信如电子邮件通信的方法,其特征在于,所述方法包括接收每台远端计算机的地址详细信息,以及每台远端计算机到所述数据通信媒介的连接的当前状态信息;在所述第一远端计算机上创建所述数据通信;检查所述第二远端计算机的当前连接状态;只有在所述第二远端计算机连接状态显示当前其已连接到所述数据通信媒介时,才从所述第一远端计算机直接向所述第二远端计算机发送所述数据通信,且在路径中不对所述数据通信进行任何存储。
2.根据权利要求1所述的方法,其特征在于,每次在任一远端计算机的连接状态发生改变时,都将再次执行所述接收步骤。
3.根据权利要求1所述的方法,其特征在于,还包括向存储所述连接状态信息的数据服务器请求所述第二远端计算机的连接状态信息;响应所述请求步骤而执行所述接收步骤。
4.根据权利要求1至3任一项所述的方法,其特征在于,还包括向数据服务器提供所述第一远端计算机的地址详细信息和到所述数据通信媒介的连接的当前状态信息。
5.根据权利要求1至4任一项所述的方法,其特征在于,还包括使用与所述第二远端计算机有关的信息对所述数据通信进行加密,从而只有所述第二远端计算机可对收到的通信进行解密。
6.根据权利要求5所述的方法,其特征在于,所述接收步骤包括接收与所述第二远端计算机有关的所述信息,用于实现所述加密步骤。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述第一远端计算机包括位于所述第一远端位置的多台本地互连的安全计算机,由不同于执行所述接收、检查和发送步骤的计算机来执行所述创建步骤。
8.根据权利要求1至7任一项所述的方法,其特征在于,还包括存储一组有关所述远端计算机能否在彼此之间进行通信的权限信息;检查所述第一远端计算机是否有权与所述第二远端计算机进行通信;仅在所述检查步骤显示所述第一远端计算机有权与所述第二远端计算机通信时才执行所述发送步骤。
9.根据权利要求1至8任一项所述的方法,其特征在于,还包括检验在所述数据通信中指定为所述第二远端计算机的目标接收方的身份。
10.根据权利要求1至9任一项所述的方法,其特征在于,还包括若所述第二远端计算机的连接状态显示其当前无法通过所述数据通信媒介接收消息,则在所述检查步骤后,将所述数据通信临时存储在本地并等待一个预先确定的时间间隔;然后再次进行所述检查步骤和所述发送步骤。
11.根据权利要求1至10任一项所述的方法,其特征在于,还包括对从所述第一远端计算机到所述第二远端计算机的数据通信的传输进行评估,若传输失败,则确定传输失败的原因,然后根据确定的原因执行下列步骤之一在所述第一远端计算机上生成传输失败通知;或者等待一个预先确定的时间段,然后再次执行所述发送步骤。
12.根据权利要求1至11任一项所述的方法,其特征在于,还包括将所述数据通信分成多个单独的数据消息;所述发送步骤中还包括单独地向所述第二远端计算机发送每条数据消息,以此提高所述数据通信过程的安全性。
13.根据权利要求1至12任一项所述的方法,其特征在于,所述数据通信包括网络电话通信。
14.一种通信服务器,用于通过数据通信网络在第二远端计算机和包含所述服务器的第一远端计算机之间实现安全的点对点数据通信,其特征在于,所述服务器包括接收装置,用于接收每台远端计算机的地址详细信息、以及每台远端计算机到所述数据通信网络的连接的当前状态信息;消息生成模块,用于在所述第一远端计算机上建立所述数据通信;检查模块,用于检查所述第二远端计算机的当前连接状态;传输模块,用于在只有当所述第二远端计算机连接状态显示其已连接到所述数据通信网络时,才从所述第一远端计算机直接向所述第二远端计算机发送所述数据通信,且在路径中不对整个数据通信进行任何存储。
15.一种通信系统,其特征在于,包括多台如权利要求14所述的通信服务器;数据服务器,可通过所述数据通信网络连接至所述多台通信服务器;其中,所述数据服务器用于接收、比较和存储每台通信服务器到所述通信网络的连接的当前状态信息,以及每个通信服务器的当前网络地址信息,并将至少一部分上述信息发往所述多台通信服务器,使所述多台通信服务器可在彼此之间实现点对点通信。
16.根据权利要求15所述的通信系统,其特征在于,中心数据服务器用于使用用户数据报协议来调查所述多台通信服务器的当前地址信息。
17.一种通信服务器,用于帮助通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信如电子邮件通信,所述服务器位于包含多台通信服务器的服务器网络中的特定层次,所述服务器包括连接装置,用于使所述通信服务器可连接到所述服务器网络其他层次上的其他通信服务器;注册装置,用于将多台本地用户计算机注册到所述通信服务器上;数据存储装置,用于存储每个注册的本地用户计算机的注册详细信息,所述注册详细信息包括地址信息和每个本地用户计算机到所述数据通信网络的连接的当前状态信息;所述连接装置用于将所存储的注册详细信息发往所述服务器网络中上一较高层次上的邻近通信服务器,以及接收并存储所述分层网络中下一较低层次上相连通信服务器上所有本地用户计算机的注册详细信息。
18.根据权利要求17所述的通信服务器,其特征在于,所述存储的注册详细信息包括所述通信服务器的服务器网络标识、至少一个本地注册用户计算机的服务器网络标识,以及所述本地用户计算机到所述通信服务器的连接的当前状态信息。
19.根据权利要求17或18所述的通信服务器,其特征在于,所述存储的注册详细信息包括所述分层网络中较低层次上通信服务器的服务器网络标识,以及所述较低层次上通信服务器上注册的本地用户计算机的服务器网络标识。
20.根据权利要求18或19所述的通信服务器,其特征在于,所述存储的注册详细信息包括每个本地注册用户计算机的全局网络地址。
21.根据权利要求17至20任一项所述的通信服务器,其特征在于,所述存储的注册详细信息包括每个本地注册用户计算机的公共密钥。
22.根据权利要求17至21任一项所述的通信服务器,其特征在于,所述连接装置包括注册信息检查装置,用于在收到请求连接到所述第二用户计算机的请求后,在所述数据存储装置中查找所述第二用户计算机的本地注册信息,若所述本地数据存储装置中存有所述第二用户计算机的标识,则接收该请求。
23.根据权利要求22所述的通信服务器,其特征在于,若所述第二用户计算机未在本地注册,则所述注册信息检查装置引导所述连接装置将所述请求转发给邻近的通信服务器。
24.根据权利要求22或23所述的通信服务器,其特征在于,所述连接装置还包括状态信息检查装置,用于检查所述数据存储装置中注册用户计算机的状态信息;若所述第二用户计算机已注册,且其状态显示其可连接,则所述连接装置建立到所述第二用户计算机的通信。
25.根据权利要求22至24任一项所述的通信服务器,其特征在于,所述连接装置用于在接受请求连接到所述第二用户计算机的请求后,更新所述第二用户计算机的状态信息。
26.根据权利要求22至25任一项所述的通信服务器,其特征在于,所述连接装置用于在接受请求连接到所述第二用户计算机的请求后,将所述第一和第二用户计算机设置为数据通信状态。
27.根据权利要求17至26任一项所述的通信服务器,其特征在于,还包括响应装置,用于为请求连接到所述第二用户计算机的请求构建响应信息;所述响应装置用于将所述第二用户计算机的当前网络地址发给所述第一用户计算机,以及将所述第一用户计算机的当前网络地址发给所述第二用户计算机。
28.根据权利要求27所述的通信服务器,其特征在于,所述响应装置用于确定所述第二用户计算机的全局网络地址。
29.根据权利要求28所述的通信服务器,其特征在于,所述全局网络地址包括UDP信道地址。
30.根据权利要求17至29任一项所述的通信服务器,其特征在于,所述数据存储装置还包括一组有关所述远端计算机能否在彼此之间进行通信的权限信息;所述服务器还包括有使用所存储的权限信息来判断所述第一用户计算机是否有权与所述第二用户计算机通信的装置。
31.一种用于通过数据通信网络在多台用户计算机中选择的计算机之间建立安全的点对点数据通信如电子邮件通信的通信系统,其特征在于,所述系统包括设置于分层连接的服务器网络中的多台如权利要求17所述的通信服务器,每台通信服务器代表所述服务器网络中的一个节点,所述多台用户计算机可连接到所述服务器网络,以便支持在所述多台用户计算机中选择的计算机之间建立通信。
32.一种用于通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信如电子邮件通信的方法,所述方法在包括多台通信服务器的服务器网络中特定层次上的通信服务器上实现,其特征在于,所述方法包括建立到所述服务器网络其他层次上通信服务器的可操作网络连接;将多台本地用户计算机注册到所述通信服务器上;存储每个本地注册用户计算机的注册详细信息,所述注册详细信息包括地址信息和每台本地用户计算机到所述数据通信网络连接的当前状态信息;其中,所述建立步骤包括将所存储的注册详细信息发往所述服务器网络中上一较高层次上的邻近通信服务器,以及接收并存储所述分层网络中下一较低层次上相连通信服务器的所有本地用户计算机的注册详细信息。
33.一种用于搜索点对点通信中的目标接收方计算机的方法,用于通过数据通信网络在发送方计算机和所述目标接收方计算机之间建立安全的点对点数据通信如电子邮件通信,所述方法在由传输服务器组成的分层网络中实现,其特征在于,所述方法包括向本地服务器发送数据通信请求,所述请求包括所述目标接收方计算机的标识和所述发送方计算机的标识;判断所述目标接收方计算机对所述本地服务器而言是否是已知的;若所述目标接收方计算机对所述本地服务器而言是已知的,则获取所存储的与所述目标接收方计算机有关的详细信息,然后将这些信息发往所述发送方计算机;若所述目标接收方计算机对所述本地服务器而言是未知的,则将所述请求转发给所述服务器网络中上一较高层次上的邻近通信服务器,随后,所述邻近通信服务器变成所述本地服务器;再次进行上述判断、获取和转发步骤,直到找到所述目标接收方计算机,或者检查完位于所述分层网络顶部的服务器。
34.根据权利要求33所述的方法,其特征在于,还包括若所述目标接收方计算机的身份无法确定,或者已检查完位于所述分层网络顶部的服务器,则向所述发送方计算机返回连接失败通知。
35.根据权利要求33或34所述的方法,其特征在于,还包括若已确定所述目标接收方计算机的身份,则检查到所述目标接收方计算机的连接的状态信息。
36.根据权利要求35所述的方法,其特征在于,还包括若到所述目标接收方计算机的连接不可用,则向所述发送方计算机返回连接失败通知。
37.根据权利要求36所述的方法,其特征在于,还包括等待一个预先确定的时间段,以等待可能发生的状态改变,然后再次执行所述发送、判断、获取、转发步骤,以及再次进行的这些步骤的步骤。
38.根据权利要求33至37任一项所述的方法,其特征在于,所述获取步骤包括若所述目标接收方对于所述通信服务器是已知的,但并非注册在本地,则将所述请求发往位于所述分层网络中较低层次上、注册有所述目标接收方的通信服务器。
39.根据权利要求38所述的方法,其特征在于,所述获取步骤包括从所述目标接收方注册的本地服务器上存储的目标接收方详细信息中获取所述目标接收方的网络位置。
40.根据权利要求33至39任一项所述的方法,其特征在于,还包括在所述服务器上存储并执行监视功能,以便在查找所需的目标接收方计算机时继续使用,所述监视功能包括将加入所述本地服务器的任一新计算机的标识与所述目标接收方计算机的标识进行比较,并在匹配时通知所述发送方计算机。
41.根据权利要求33至40任一项所述的方法,其特征在于,还包括使用存储的一组权限判断发送方是否有权与所需的目标接收方计算机通信,并只有在存储的权限允许进行这种通信时,才允许执行所述发送步骤。
42.一种用于通过数据通信网络在发送方计算机和目标接收方计算机之间建立安全的点到点数据通信如电子邮件通信的方法,所述建立方法在包括多台通信服务器的分层服务器网络中实现,其特征在于,所述建立方法包括如权利要求33至41中任一项所述的一种搜索目标接收方计算机的方法;将所述目标接收方计算机的当前全局通信地址发往所述发送方计算机;将所述发送方计算机的当前全局通信地址发往所述目标接收方计算机;使用所述双方的全局通信地址在所述发送方和所述目标接收方计算机之间建立点对点通信通道。
43.根据权利要求42所述的方法,其特征在于,进一步包括存储一组有关所述远端计算机能否在彼此之间进行通信的权限信息;检查所述发送方计算机是否有权与所述目标接收方计算机进行通信;仅在所述检查步骤显示所述发送方计算机有权与所述目标接收方计算机通信时才执行所述第一和第二通信步骤以及所述发送步骤。
44.根据权利要求42或43所述的方法,其特征在于,还包括在所述发送方计算机和所述本地服务器之间建立第一直接通道。
45.根据权利要求44所述的方法,其特征在于,在所述第一直接通道上执行所述第二通信步骤。
46.根据权利要求42至45任一项所述的方法,其特征在于,还包括在所述目标接收方计算机和所述本地服务器之间建立第二直接通道。
47.根据权利要求46所述的方法,其特征在于,在所述第二直接通道上执行所述第一通信步骤。
48.根据权利要求44至47任一项所述的方法,其特征在于,建立第一或第二直接通道包括建立第一或第二UDP直接通道。
49.一种用于在第一和第二用户计算机之间建立点对点数据通信如电子邮件通信的传输服务器,其特征在于,所述传输服务器包括接收装置,用于从所述第一用户计算机接收请求连接到所述第二用户计算机的连接请求,所述第二用户计算机注册在所述传输服务器上;检查装置,用于检查到所述第二用户计算机的当前连接状态;数据存储装置,当所述第二用户计算机的当前连接状态显示当前无法与其建立点对点通信时,将所述请求的详细信息作为监视项存储;响应装置,响应所述检查装置,当所述第二用户计算机的状态显示当前可与其建立点对点通信时,向所述第一用户计算机发送消息,指示所述第二用户计算机已上线;其中,所述检查装置定期检查和更新到所述第二用户计算机的当前连接状态信息,若更新显示所述第二用户状态已变为在线,则检查是否存在对应的监视项,若存在,则启动所述响应装置发送所述消息。
50.根据权利要求49所述的传输服务器,其特征在于,所述数据存储装置用于存储所述第二用户计算机和所述第一用户计算机的标识。
51.根据权利要求49或50所述的传输服务器,其特征在于,所述接收装置用于接收请求连接到所述第二用户计算机的多个请求,所述数据存储装置用于将每个请求的详细信息存储在对应所述第二用户计算机的监视项中,所述响应装置用于在所述第二用户计算机的连接状态改变为在线时,向每个已请求连接到所述第二用户计算机的用户计算机发送消息。
52.根据权利要求49至51所述的传输服务器,其特征在于,所述传输服务器连接至传输服务器分层网络。
53.根据权利要求52所述的传输服务器,其特征在于,所述传输服务器用于向位于分层网络中较高层上的传输服务器发送其每个注册用户计算机连接状态的详细信息,所述响应装置用于向位于所述分层网络中较高层上的至少一台传输服务器发送消息,指示所述第二用户计算机已上线。
54.根据权利要求49至53任一项所述的传输服务器,其特征在于,所述数据存储装置用于存储对应于注册在所述传输服务器上不同用户计算机的多个不同的监视项;所述检查装置用于定期检查和更新所有注册用户计算机的当前连接状态,并在更新显示任意用户状态改变为在线时,在存储的多个监视项中检查是否存在对应的监视项,若是,则触发所述响应装置发送对应于所找到的监视项的消息。
55.根据权利要求49至54任一项所述的传输服务器,其特征在于,所述数据存储装置用于存储当前在线注册用户计算机列表;所述传输服务器进一步包括在线检查装置,用于在向所述数据存储装置中存储监视项之前,检查所述当前在线注册用户计算机列表。
56.根据权利要求55所述的传输服务器,其特征在于,进一步包括转换装置,用于当所述注册用户计算机的状态显示其己上线后,将受监视的用户计算机的标识写入所述当前在线注册用户计算机列表。
57.一种用于帮助在第一和第二用户计算机之间建立点对点数据通信如电子邮件通信的方法,其特征在于,所述方法包括从所述第一用户计算机接收请求连接到本地注册的所述第二用户计算机的连接请求;检查到所述第二用户计算机连接的当前连接状态;当所述第二用户计算机的当前连接状态显示当前无法与其建立点对点通信时,将所述请求的详细信息作为监视项存储;若在所述检查步骤中发现所述第二用户计算机的状态显示当前可与其建立点对点通信,则向所述第一用户计算机发送消息,指示所述第二用户计算机已上线;其中,所述检查步骤包括定期检查和更新到所述第二用户计算机的当前连接状态,若更新显示所述第二用户的状态已变为在线,则检查是否存在对应的监视项,若是,则启动所述响应装置发送所述消息。
58.一种通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信通道如电子邮件通信通道的方法,其中,至少所述第一用户计算机的通信由第一网络地址转换器进行处理,其特征在于,所述方法包括请求一条在已建立的穿过所述第一网络地址转换器的所述第一用户计算机和传输服务器之间的TCP/IP通信链路上的直接连接;在所述传输服务器上设置第一UDP端口;通过所述TCP/IP通信链路将所述第一UDP端口地址报告给所述第一用户计算机;在所述第一用户计算机上打开第二UDP端口;通过所述第一网络地址转换器从所述第二UDP端口向所述第一UDP端口传送数据分组,以便所述传输服务器可确定所述第二UDP端口的第一网络地址转换器地址;从所述传输服务器上获取所述第二用户计算机的第三UDP端口地址;将其他用户计算机的UDP端口地址通知给所述第一和第二用户计算机,这样在它们之间便可建立安全的点对点通信。
59.根据权利要求58所述的方法,其特征在于,进一步包括穿过所述第一网络地址转换器创建从所述第一用户计算机到传输服务器的TCP/IP通信链路。
60.根据权利要求59所述的方法,其特征在于,所述创建步骤包括在传输服务器网络中搜索并确定注册有所述第二用户计算机的本地传输服务器,并连接到该本地传输服务器。
61.根据权利要求58至60任一项所述的方法,其特征在于,所述第二用户计算机注册在所述传输服务器上,并且在二者之间建立有一条穿过第二网络地址转换器的TCP/IP通信链路,所述获取步骤进一步包括在所述传输服务器上设置第四UDP端口;通过所述TCP/IP通信链路向所述第二用户计算机报告所述第四UDP端口地址;在所述第二用户计算机上打开第三UDP端口;通过所述第二网络地址转换器从所述第三UDP端口向所述第四UDP端口发送数据分组,从而使所述传输服务器便可确定所述第二用户计算机的第三UDP端口的第二网络地址转换器地址。
62.根据权利要求58至61任一项所述的方法,其特征在于,还包括所述第一用户计算机将所述第二UDP端口的目的地址从第一UDP端口改为第三UDP端口。
63.根据权利要求62所述的方法,其特征在于,所述第一用户计算机从所述第二UDP端口直接向所述第二用户计算机的第三UDP端口发送点对点消息。
64.根据权利要求58至63任一项所述的方法,其特征在于,进一步包括所述第二用户计算机将所述第三UDP端口的目的地址从所述第四UDP端口改为所述第二UDP端口。
65.根据权利要求64所述的方法,其特征在于,所述第二用户计算机从所述第三UDP端口直接向所述第二用户计算机的第二UDP端口发送点对点消息。
66.根据权利要求58至65任一项所述的方法,其特征在于,进一步包括在所述第一和第二用户计算机之间的点对点通信建立后,检测所述第一UDP端口是否处于非活跃状态;当所述第一UDP端口处于非活跃状态时,关闭所述第一UDP端口,以此断开与所述第一用户计算机的连接。
67.根据权利要求66所述的方法,其特征在于,进一步包括所述传输服务器关闭与所述第一用户计算机之间的TCP/IP连接。
68.根据权利要求58至67任一项所述的方法,其特征在于,进一步包括在所述第一和第二用户计算机之间的点对点通信建立后,检测所述第四UDP端口是否处于非活跃状态;当所述第一UDP端口处于非活跃状态时,关闭所述第四UDP端口,以此断开与所述第二用户计算机的连接。
69.根据权利要求68所述的方法,其特征在于,进一步包括所述传输服务器关闭与所述第二用户计算机之间的TCP/IP连接。
70.根据权利要求58至69任一项所述的方法,其特征在于,所述第一或所述第二网络地址转换器为非对称网络地址转换器,从而对应不同目的端的UDP端口互不相同,所述方法进一步包括记录与所述非对称网络地址转换器之间连接的新地址;将所述UDP端口输出数据重新寻址为所述非对称网络地址转换器的新地址。
71.一种用于通过数据通信网络在第一和第二用户计算机之间建立安全的点对点数据通信通道如电子邮件通信通道的传输服务器,其中至少所述第一用户计算机的通信由第一网络地址转换器进行处理,其特征在于,所述方法包括请求接收装置,用于接收直接连接请求,请求一条在已建立的穿过所述第一网络地址转换器的所述第一用户计算机和传输服务器之间的TCP/IP通信链路上的直接连接;设置装置,用于在所述传输服务器上设置第一UDP端口;报告装置,用于通过所述TCP/IP通信链路向所述第一用户计算机报告所述第一UDP端口的地址;数据分组接收装置,用于接收通过所述第一NAT从所述第一用户计算机上设置的第二UDP端口发往所述第一UDP端口的数据分组,所述传输服务器用于确定所述第二UDP端口的第一网络地址转换器地址;获取装置,用于从所述传输服务器上获取所述第二用户计算机的第三UDP端口地址;通知装置,用于将其他用户计算机的UDP端口地址通知给所述第一和第二用户计算机,从而使它们之间可建立安全的点对点通信。
72.一种通过数据通信网络在第一和第二用户计算机之间建立安全的伪点对点数据通信通道如电子邮件通信通道的方法,其中所述双方用户计算机的通信分别由第一和第二非对称网络地址转换器进行处理,其特征在于,所述方法包括穿过各自的第一和第二非对称网络地址转换器,创建每个用户计算机到传输服务器的TCP/IP通信链路;在收到直接连接请求后,在传输服务器上设置第一和第二UDP端口,所述请求是通过穿过所述第一NAT的所述第一用户计算机和传输服务器之间的TCP/IP通信链路收到的;分别通过双方各自的TCP/IP通信链路,向所述第一和第二用户计算机报告所述第一和第二UDP端口地址;在所述第一用户计算机上打开第三UDP端口,在所述第二用户计算机上打开第四UDP端口;通过所述第一网络地址转换器从所述第三UDP端口向所述第一UDP端口发送数据分组,通过所述第二网络地址转换器从所述第四UDP端口向所述第二UDP端口发送数据分组,从而使所述传输服务器可确定所述第三UDP端口的第一网络地址转换器地址和所述第四UDP端口的第二网络地址转换器地址;通过所述第二UDP端口向所述第四UDP端口的网络地址转换器地址再次发送在所述第一UDP端口收到的数据分组,通过所述第一UDP端口向所述第三UDP端口的网络地址转换器地址再次发送在所述第二UDP端口收到的数据分组,从而借助所述传输服务器有效的转发数据分组,在所述第一和第二用户计算机之间建立伪点对点通信。
73.根据权利要求72所述的方法,其特征在于,所述再次发送步骤包括在再次发送前,对收到的数据分组进行短暂的存储。
74.根据权利要求72或73所述的方法,其特征在于,所述创建步骤包括在传输服务器网络中搜索并确定注册有所述第二用户计算机的本地传输服务器,并连接到该本地传输服务器。
75.根据权利要求72至74任一项所述的方法,其特征在于,进一步包括在所述伪随机点对点通信建立后,所述传输服务器关闭与所述第一和第二用户计算机之间的TCP/IP连接。
76.一种用于帮助通过数据通信网络在第一和第二用户计算机之间建立安全的伪点对点数据通信通道如电子邮件通信通道的传输服务器,其中所述双方用户计算机的通信分别由第一和第二非对称网络地址转换器进行处理,其特征在于,所述传输服务器包括创建装置,用于分别穿过所述第一和第二非对称网络地址转换器,创建从每个用户计算机到传输服务器的TCP/IP通信链路;设置装置,用于在收到直接连接请求后,在所述传输服务器上设置第一和第二UDP端口,所述请求是穿过所述第一网络地址转换器通过所述第一用户计算机和所述传输服务器之间TCP/IP通信链路收到的;报告装置,用于分别通过各自的TCP/IP通信链路,向所述第一和第二用户计算机报告所述第一和第二UDP端口的地址;接收装置,用于接收通过所述第一网络地址转换器从所述第一计算机上的第三UDP端口向所述第一UDP端口发送的数据分组,以及接收通过所述第二网络地址转换器从所述第二用户计算机上的第四UDP端口向所述第二UDP端口发送的数据分组,从而使所述传输服务器可确定所述第三UDP端口的第一网络地址转换器地址和所述第四UDP端口的第二网络地址转换器地址;再次转发装置,用于通过所述第二UDP端口向所述第四UDP端口的网络地址转换器地址再次发送在所述第一UDP端口收到的数据分组,以及通过所述第一UDP端口向所述第三UDP端口的网络地址转换器地址再次发送在所述第二UDP端口收到的数据分组,从而借助所述传输服务器有效的转发数据分组,在所述第一和第二用户计算机之间建立伪点对点通信。
77.一种将用户计算机连接到传输服务器分层连接网络的方法,用于帮助通过数据通信网络在发送方计算机和目标接收方计算机之间建立点对点通信,其特征在于,所述方法包括接收描述信息,所述信息描述所述连接网络中与本地传输服务器处于同一层次上的多个同级传输服务器中每个同级传输服务器的当前负载;接收连接请求,请求将本地用户计算机连接到所述本地传输服务器;比较所述本地服务器和每个所述同级服务器的当前负载;若所述本地传输服务器的负载量明显高于所述同级服务器中任意一个的负载量,则向所述本地用户计算机发送响应,指示其应该连接到所述同级服务器中负载量最低的一个;若所述本地传输服务器的负载量并非明显高于所述同级服务器中任意一个的负载量,则接受所述连接请求,并更新所述本地传输服务器的当前负载量。
78.根据权利要求77所述的方法,其特征在于,传输服务器的当前负载量通过注册在所述传输服务器上的用户计算机的数量决定。
79.根据权利要求77或78所述的方法,其特征在于,还包括将本地传输服务器的当前负载量转发给位于所述分层网络中较高层次上的传输服务器。
80.根据权利要求79所述的方法,其特征在于,所述转发步骤包括发送所述本地传输服务器的当前IP地址和端口。
81.根据权利要求79或80所述的方法,其特征在于,所述转发步骤包括以规律的间隔发送心跳信号,每个心跳信号提供有关于所述本地传输服务器的当前负载量的最新当前信息。
82.根据权利要求77至81任一项所述的方法,其特征在于,所述接收步骤包括接收描述所述多个同级传输服务器中每一个的当前IP地址和端口的描述信息。
83.根据权利要求77至82任一项所述的方法,其特征在于,所述接收步骤包括定期接收每个所述同级传输服务器的心跳信号,所述心跳信号包括所述同级传输服务器的标识和描述所述同级传输服务器当前负载量的信息。
84.根据权利要求77至83任一项所述的方法,其特征在于,还包括确定所述本地传输服务器的地理位置。
85.根据权利要求84所述的方法,其特征在于,所述接收步骤包括接收有关每个所述同级传输服务器地理位置的信息。
86.根据权利要求84或85所述的方法,其特征在于,所述地理位置信息包括有关本地或同级传输服务器的时区信息。
87.根据权利要求85或86所述的方法,其特征在于,所述比较步骤包括比较所述本地服务器和与所述本地用户位于相同地理位置的每个同级服务器的当前负载量;若所述本地传输服务器的负载量远大于同一地理位置处所述同级服务器中任一个的负载量,则所述发送步骤包括向所述本地用户计算机发送响应,指示其应该连接到其所处地理位置处具有最低负载量的同级传输服务器。
88.根据权利要求77至87任一项所述的方法,其特征在于,所述发送步骤包括向所述本地传输服务器发送位于所述连接网络内相邻且较高层次上的父传输服务器的通信地址。
89.根据权利要求77至88任一项所述的方法,其特征在于,进一步包括获取并评估连接到所述本地传输服务器且位于所述分层连接网络中较低层次上的所有子传输服务器的负载量;比较所述本地服务器和每个子服务器的当前负载量;若所述本地传输服务器的负载量远大于任一子服务器的负载量,则向所述本地用户计算机发送响应,指示其应该连接到具有最低负载量的子服务器。
90.根据权利要求89所述的方法,其特征在于,还包括确定所述本地传输服务器的地理位置,并且所述获取步骤包括接收有关每个子传输服务器的地理位置的信息。
91.根据权利要求90所述的方法,其特征在于,还包括所述地理位置信息包括所述本地或子传输服务器的时区信息。
92.根据权利要求90或91所述的方法,其特征在于,所述评估步骤包括比较所述本地服务器和与所述本地用户位于同一地理位置的每个子服务器的当前负载量;若所述本地传输服务器的负载量远大于所述本地用户计算机所处地理位置处任一子服务器的负载量,则所述发送步骤包括向所述本地用户计算机发送响应,指示其应该连接到与其位于同一地理位置处的具有最低负载量的子传输服务器。
93.一种将节点接入由通过验证的通信服务器组成的网络的方法,所述网络用于在已注册到所述通信服务器上的用户计算机之间建立点对点数据通信,其特征在于,所述方法包括使用从验证服务器收到的用户标识和密码向所述验证服务器验证所述节点;接收通知,其中包含所选择通信服务器的标识,所述节点需要连接到该通信服务器以接入所述网络;向所述验证服务器请求与所选择通信服务器和节点相关的特别数据,以便连接到所选择通信服务器;接收与所选择通信服务器和节点相关的特别数据,以及由所述节点和所选择通信服务器共享的共享密钥;将由所述共享密钥加密后的与所选择通信服务器和节点相关的特别数据和全局数据发往所选择通信服务器,从而使所选择通信服务器可以向所述网络验证所述节点,因而无需向所述验证服务器请求验证信息,就可将所述节点连接到所述网络。
94.根据权利要求93所述的方法,其特征在于,还包括从所选择的通信服务器接收使用所述共享密钥加密后的确认数据,使得所述节点获得可用于验证所选择数据通信服务器的信息。
95.根据权利要求93或94所述的方法,其特征在于,进一步包括将所述节点注册到所述网络的验证服务器,以此获取用户ID和密码。
96.根据权利要求93至95任一项所述的方法,其特征在于,所述通知步骤包括接收用在所述请求步骤之中的权证生成权证。
97.根据权利要求96所述的方法,其特征在于,所述通知步骤包括获取用在所述接收步骤之中的所述节点的会话密钥。
98.根据权利要求93至97任一项所述的方法,其特征在于,所述权证生成权证和所述会话密钥由所述密码进行了加密,且所述方法进一步包括解密所述权证生成权证和所述会话密钥。
99.根据权利要求96至98任一项所述的方法,其特征在于,所述请求步骤包括将所述权证生成权证和所选择通信服务器的标识发往所述验证服务器。
100.根据权利要求93至99任一项所述的方法,其特征在于,所述接收步骤包括获取对应于所选择通信服务器和节点的特定权证。
101.根据权利要求100所述的方法,其特征在于,所述权证包含有所述共享密钥的副本。
102.根据权利要求101所述的方法,其特征在于,还包括解密由所述会话密钥进行加密的共享密钥。
103.根据权利要求93至102任一项所述的方法,其特征在于,还包括计算用作所述全局数据的时间戳的值。
104.根据权利要求93至103任一项所述的方法,其特征在于,还包括所选择的通信服务器使用所述共享密钥解密收到的数据。
105.根据权利要求93至104任一项所述的方法,其特征在于,进一步包括所选择通信服务器验证收到数据的有效性。
106.根据权利要求104或105所述的方法,其特征在于,还包括所选择通信服务器发送确认信息,显示解密后的接收数据是可接受的。
107.根据权利要求93至106任一项所述的方法,其特征在于,还包括接收使用预先定义的方式修改后的验证数据。
108.根据权利要求107所述的方法,其特征在于,对所述修改后的验证信息进行加密,且所述方法还包括解密所述修改后的验证信息。
109.一种使第一用户计算机与第二用户计算机进行安全通信的方法,其中所述第二用户计算机是已验证的通信服务器网络的一部分,所述方法用于在注册到所述通信服务器上的用户计算机之间建立点对点数据通信,其特征在于,所述方法包括按权利要求1至16所描述的方法,将所述第一计算机接入所述网络;在所述第一和第二用户计算机上创建公共和私有密钥;通过所述网络在所述第一和第二用户计算机之间交换公共密钥;从所述第一和第二用户计算机的所述非共享私有密钥和所述共享公共密钥创建共享的加密/解密密钥;使用所述共享的加密密钥对所述第一和第二用户计算机之间通过其间已建立的点对点连接直接传送的数据消息进行加密。
110.一种将由互联的传输服务器节点组成的第一分层区域连接到由互联的传输服务器节点组成的第二分层区域的方法,其特征在于,所述方法包括在每个区域中设置本地验证服务器,所述验证服务器连接到各自分层区域中最高层次上的主节点,用于控制本区域中与所有服务器有关的验证问题;将所述第一分层网络的主节点注册到所述第二分层区域的验证服务器;向所述第二分层区域的验证服务器验证所述第一分层区域的主节点;接收通知,其中包含最低节点服务器的标识,所述第一分层区域的主节点需要连接到该最低节点服务器,以将两个分层区域连接起来;接收所述第二分层区域的最低节点服务器和所述第一分层区域主节点共同使用的共享数据和共享加密密钥;使用收到的共享数据和共享加密密钥,向所述第二分层区域的最低节点服务器验证所述第一分层区域的主节点,从而将所述第一和第二区域连接起来而无需向所述第二区域的验证服务器请求验证信息。
111.根据权利要求110所述的方法,其特征在于,进一步包括向所述验证服务器请求与所述第一分层区域主节点和所述第二分层区域最低节点服务器有关的数据,用于连接到所述第二分层区域内所选的最低节点服务器。
112.根据权利要求110或111所述的方法,其特征在于,进一步包括将由所述共享加密密钥加密的共享数据和全局数据发往所述最低节点服务器,从而使所述最低节点服务器可向所述第二分层区域验证所述主节点。
113.根据权利要求110至112任一项所述的方法,其特征在于,所述验证步骤通过所述第二分层区域的最低节点服务器实现。
114.根据权利要求110至113任一项所述的方法,其特征在于,进一步包括将所述第二分层区域的主节点注册到所述第一分层区域的验证服务器上;向所述第一分层区域的验证服务器验证所述第二分层区域的主节点。
115.一种使连接到由传输服务器组成的第一区域的第一用户计算机与连接到由传输服务器组成的第二区域的第二用户计算机进行安全通信的方法,用于在注册到所述通信服务器上的用户计算机之间建立点对点数据通信,其特征在于,所述方法包括按权利要求110至114将所述第一区域内的第一用户计算机连接到由传输服务器组成的第二区域;确定所述第一和第二用户计算机在互连区域内的网络位置;使用确定的网络位置在所述第一和第二用户计算机之间建立点对点通信通道;通过建立的点对点通信通道发送加密的数据通信。
116.根据权利要求115所述的方法,其特征在于,所述使用步骤包括在所述第一和第二用户计算机上创建公共和私有密钥;通过所述网络在所述第一和第二用户计算机之间交换公共密钥;从所述第一和第二用户计算机的非共享私有密钥和共享公共密钥创建共享加密/解密密钥;使用所述共享加密密钥对所述第一和第二用户计算机之间通过其间已建立的点对点连接直接传送的数据消息进行加密。
全文摘要
本申请介绍了一种通过数据通信媒介在第一远端计算机和第二远端计算机之间实现安全的点对点数据通信如电子邮件通信的方法。该方法包括接收每一远端计算机的地址详细信息和到所述数据通信媒介的连接的当前状态信息;在所述第一远端计算机上创建所述数据通信;检查所述第二远端计算机的当前连接状态;仅在所述第二远端计算机的连接状态显示其当前连接到所述数据通信媒介时,才从所述第一远端计算机直接向所述第二远端计算机发送所述数据通信,且在所述数据通信的路径中不对所述数据通信进行任何存储。
文档编号H04L29/06GK101053239SQ200580025071
公开日2007年10月10日 申请日期2005年6月28日 优先权日2004年6月28日
发明者杰弗里·莫里斯, 埃里克·富特, 罗伯特·巴尔, 拉纳尔德·沃伯顿 申请人:阿姆特斯安全通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1