专利名称:包含安全性关联处理器的虚拟专用网络机制的利记博彩app
技术领域:
本发明涉及数据通信系统,更具体地说涉及实现包括安全性关联数据库和相关处理器的虚拟专用网络(VPN)的机制。
背景技术:
近年来,全球目睹了因特网的爆发性增长。每年越来越多的主机加入因特网,同时用户数目似乎无限制地增长。因特网能够实现利用不同技术(包括远程计算机登录、文件传送、万维网(WWW)浏览、电子邮件等)的通信。设计出各种各样的协议,并且这些协议在因特网上用于处理各种通信。例如,文件传送协议(FTP)用于文件传送,超文本置标语言(HTML)用于web通信等。通常,在包括OSI通信栈各层协议在内的协议的传输控制协议/网际协议(TCP/IP)组的保护下,对和因特网通信相关的协议分组。
因特网的关键特征在于它是几乎具有计算机、电话线和因特网服务提供者(ISP)账户的任何人可访问的公共网络。这种大规模公众可接入性的最终趋势是它便于黑客和意图对因特网上的一个或多个主机采取恶意行动的其它人接近因特网上的一个或多个主机。对于设法侵入远程网络的计算机并成功窃取通信数据的黑客来说,诸如恶意用户窃取保密信息或者删除重要文件之类非法行为是可能的。通过在允许因特网上的安全事务的IPv6中包括诸如加密和鉴权之类安全特征,因特网体系结构委员会解决了关于安全性的需要。
为了对抗黑客的威胁和保护专用网络,目前通常在公司或机制的专用网络的入口处设置防火墙。防火墙采用某一形式的分组过滤器,分组过滤器强制实现用户定义的安全策略。防火墙是位于机制的本地网络和全球因特网之间边界处的系统。它实现所有数据通信的过滤,以便防止信息泄漏到外部网络,或者防止从外部未经授权访问内部网络。防火墙对接收的每个分组进行拒绝/许可判定。
同时,对无线服务(即蜂窝电话机、双向寻呼机、无绳设备等)和诸如膝上型计算机、PDA之类个人计算设备的需求日益增多。这些个人计算设备中的多数都包含无线通信电路,以便它们能够通过无线网络(例如蜂窝或者其它宽带方案)与诸如因特网之类WAN网络通信。从而,越来越多的PDA和蜂窝电话机正在连接到因特网上,从而这些设备存在安全风险。这些设备最好采用某一类型的防火墙防范对该设备的未经授权的访问。但是,目前多数防火墙以软件形式实现,需要整个桌上型计算机的计算资源,导致在诸如蜂窝电话机或PDA之类便携式计算设备中使用它们的成本很高或者不切实际。
从而,需要一种易于用适于包含在诸如蜂窝电话机和无线连接PDA之类小型便携式电子计算设备中的小尺寸硬件实现的防火墙或分组过滤器。
发明内容
本发明提供一种新颖的有用虚拟专用网络(VPN)机制,以便提供实现加密/解密和鉴权必需的安全参数。VPN机制适合于以较低的成本用硬件实现,从而能够费用低廉地将本发明结合到与因特网或其它广域网连接的便携式电子通信设备中,例如蜂窝电话机、个人数字助手(PDA)、膝上型计算机等。
本发明可和适于连接因特网的便携式计算设备,例如蜂窝电话机和无线连接PDA中基于硬件或软件的防火墙一起使用。还可用软件或硬件和软件的组合实现本发明的VPN机制。
从而,VPN机制可被用于实现,例如通过WAN的安全分局(branch office)连接性、通过WAN的安全远程访问或者通过WAN的安全电子商务交易。
VPN机制包括适于提供实现加密/解密和鉴权的安全性规范的IPSec组所需参数的安全性关联数据库(SAD)和相关电路。数据库中的每个安全性关联(SA)入口包括根据IPSec规范接收和传送VPN分组所需的所有参数。
本发明对输入分组流进行涉及安全性关联(SA)的处理。注意输入分组流可包括入站分组和出站分组。通常,本发明被置于WAN(即因特网)和本地LAN之间。这种情况下,VPN机制过滤从WAN发送给LAN的入站分组和从LNA发送给WAN的出站分组。
本发明的VPN机制保持称为SAD的安全参数表,用于保存和单向连接相关的安全参数。对于双向连接,需要产生两个SA。新的安全性关联被添加到SA数据库中,并且一旦被产生,根据关于特定SA保存在数据库中的参数,处理与该SA相关的后续分组。根据该分组和SA参数,分组可被加密、解密、鉴权或丢弃。注意只有当分组符合在SA数据库中规定的安全性时,才许可该分组。
虽然本发明特别适合于用硬件实现,不过也可用软件实现本发明。在一个实施例中,包括处理器、存储器等的计算机执行适于实现本发明的VPN机制和安全性关联处理的软件。
根据本发明,提供一种安全性关联处理器电路,包括存储多个安全性关联的安全数据的安全性关联数据库,每个入口包括和唯一套接字对应的安全性关联数据,当收到未在安全性关联数据库中找到的套接字时,打开新的安全性关联的装置,根据分组的套接字搜索和识别与之相关的安全性关联的装置,从安全性关联数据库检索多个安全参数的装置,和将多个安全参数转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理的装置。
根据本发明,还提供一种虚拟专用网络(VPN)电路,包括保存多个安全性关联的安全数据的安全性关联数据库装置,每个入口包括和唯一套接字对应的安全性关联数据,多个安全引擎,每个安全引擎适合于执行安全处理,当收到未在安全性关联数据库装置中找到的套接字时,打开新的安全性关联的装置,根据输入分组的套接字搜索和识别与之相关的安全性关联的装置,从安全性关联数据库装置检索多个安全参数的装置,将多个安全参数转发给至少一个安全引擎,以便以此执行安全处理的装置,和适合于利用输入分组和安全处理的结果,根据特定的安全模式构建输出分组的分组建立装置。
根据本发明,还提供一种便携式计算设备,包括适于连接该设备和通信网络的通信装置,包括易失性和非易失性存储器的存储器装置,非易失性存储器适于保存程序代码,与存储器装置和通信装置耦接,执行程序代码的处理器,和虚拟专用网络(VPN)电路,所述虚拟专用网络(VPN)电路包括保存多个安全性关联的安全数据的安全性关联数据库装置,每个入口包括和唯一套接字对应的安全性关联数据,多个安全引擎,每个安全引擎适合于执行安全处理,当收到未在安全性关联数据库装置中找到的套接字时,打开新的安全性关联的装置,根据输入分组的套接字搜索和识别与之相关的安全性关联的装置,从安全性关联数据库装置检索多个安全参数的装置,将多个安全参数转发给至少一个安全引擎,以便以此执行安全处理的装置,和适合于利用输入分组和安全处理的结果,根据特定的安全模式构建输出分组的分组建立装置。
根据本发明,还提供一种安全性关联处理器电路,包括保存多个安全性关联的安全数据的安全性关联数据库,每个入口包括和唯一套接字对应的安全性关联数据,当收到未在安全性关联数据库中找到的套接字时,适于打开新的安全性关联的管理单元,适于根据输入分组的套接字,搜索和识别与之相关的安全性关联的识别单元,适于从安全性关联数据库检索多个安全参数,并将它们转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理的主处理器单元,和包含散列函数和相关散列表,简化保存的安全性关联的搜索的散列单元。
根据本发明,还提供一种安全性关联的方法,所述方法包括下述步骤建立适于保存多个安全性关联的安全数据的安全性关联数据库,安全性关联数据库内的每个入口对应于一个套接字,当收到未在安全性关联数据库中找到的套接字时,打开新的安全性关联,根据分组的套接字,搜索和识别与之相关的安全性关联,从安全性关联数据库检索多个安全参数,并将所述多个安全参数转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理。
根据本发明,还提供一种计算机可读存储介质,具有包含于其中的计算机可读程序代码单元,当在计算机上执行这种程序时,使适当编程的计算机实现安全关联性机制,所述计算机可读存储介质包括使计算机建立适于保存多个安全性关联的安全数据的安全性关联数据库的计算机可读程序代码单元,安全性关联数据库内的每个入口包括对应于唯一套接字的安全性关联数据,当收到未在安全性关联数据库中找到的套接字时,使计算机打开新的安全性关联的计算机可读程序代码单元,使计算机根据分组的套接字,搜索和识别与之相关的安全性关联的计算机可读程序代码单元,使计算机从安全性关联数据库检索多个安全参数的计算机可读程序代码单元,和使计算机将所述多个安全参数转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理的计算机可读程序代码单元。
下面参考附图,举例说明本发明,其中图1是图解说明在WAN或因特网环境中,本发明的虚拟专用网络机制的几种例证应用的方框图;图2是图解说明包括与本发明的虚拟专用网络机制通信的本地和远程LAN、WAN和拨号用户的例证网络的方框图;图3是更详细地图解说明本发明的虚拟专用网络机制的方框图;图4A和4B是图解说明本发明的主SA处理器方法的流程图;图5图解说明了确定与输入分组相关的SA的散列技术;图6是图解说明本发明的SA识别过程的散列方法的流程图;图7图解说明了在主SA处理器进行的检查中执行的防重放窗口机制;图8是图解说明本发明的防重放窗口方法的流程图;图9图解说明了用于跟踪SA失效(staleness)的最近最少使用的链路列表结构;图10是图解说明当识别与输入分组相关的SA时,更新LRU链接列表的方法的流程图;图11是图解说明本发明的SA管理模块的处理的流程图;图12是图解说明由本发明的SA管理模块执行的打开SA的处理的流程图;图13是图解说明由本发明的SA管理模块执行的关闭SA的处理的流程图;图14图解说明了与每个SA记录相关的最后打开的会话指针;图15图解说明了前一和下一会话指针,和匹配与每个会话记录相关的SA指针;图16图解说明单一会话和单一SA记录之间的例证关系;图17图解说明多个会话和单一SA记录之间的例证关系;图18是图解说明适于实现本发明的VPN机制和相关的安全关联处理的例证计算机处理系统-平台的方框图。
具体实施例方式
全文中使用的符号本文献中自始至终使用下述符号术语 定义ARP 地址解析协议ARW 防重放窗口ASIC 专用集成电路ADSL 非对称数字用户线AH 鉴权信头CPU 中央处理器CRC 循环冗余检验CBC 密码分组链接DES 数据加密标准DAT 数字音频带DSP 数字信号处理器
DSL 数字用户线DVD 数字通用光盘EEPROM 电可擦可编程只读存储器EEROM 电可擦除只读存储器ECB 电子密码本ESP 封装安全载荷ED 加密/解密EPROM 可擦可编程只读存储器FPGA现场可编程门阵列FTP 文件传送协议HMAC信头消息鉴权代码HDSL高位速率数字用户线HTML超文本置标语言IAB 因特网体系结构委员会ICMP因特网控制消息协议IKE 因特网密钥交换IP 网际协议ISP 因特网服务提供商IV 初始向量IPSec IP安全性LRU 最近最少使用的LAN 局域网MTU 最大传输单元MAN 城域网MRU 最近最多使用的NIC 网络接口卡OSI 开放系统互连PB 分组建立器PC 个人计算机
PDA个人数字助手PDU协议数据单元RAM随机存取存储器RIP远程IPROM只读存储器SA 安全关联SAP安全关联处理器SPD安全策略数据库SPI安全参数索引TCP传输控制协议UDP用户数据报协议VDSL 超高位速率数字用户线VPN虚拟专用网络WAN广域网WWW万维网本发明的详细说明本发明提供一种新的有用虚拟专用网络(VPN)机制,以便提供执行加密/解密和鉴权所需的和安全相关的参数。VPN机制适合于以低成本硬件实现,从而使得能够费用低廉地将本发明结合到诸如蜂窝电话机、个人数字助手(PDA)、膝上型计算机之类与因特网或其它广域网连接的便携式电子通信设备中。本发明可和诸如蜂窝电话机和无线连接PDA之类适于连接到因特网的便携式计算设备中,基于硬件或软件的防火墙一起使用。也可用软件或者硬件和软件的组合,实现本发明的VPN机制。
VPN机制包括适于提供实现关于加密/解密和鉴权的安全规范的IPSec组所需参数的安全关联数据库(SAD)和相关电路。数据库中的每个安全关联(SA)入口包括根据IPsec规范接收和传送VPN分组所需的全部参数。注意最初在因特网密钥交换(IKE)过程中协商SA。虽然可用软件实现本发明,不过本发明的VPN机制特别适合于用能够提供大大加速的安全处理的硬件实现。用硬件实现SAD和相关处理使得能够在硬件中进行所有IPSec加密/解密和鉴权处理。注意这适用于其中已建立SA的VPN会话。要指出的是还未建立SA的VPN会话非常少,从而对系统性能的影响可忽略不计。
通过使系统能够选择所需的安全协议,选择要使用的算法,并将提供服务所需的密钥投入使用,IPSec提供IP层的安全服务。IPSec中使用两种协议提供安全性,包括表示成鉴权信头(AH)的鉴权协议和表示成封装安全载荷(ESP)的组合加密/解密协议。安全关联或SA用在AH和ESP机制中。SA被定义成发送者和向其上携带的通信提供安全服务的接收者之间的单向关系。注意对于双向安全交换来说,需要两个SA。
本发胆对输入分组流执行和安全关联(SA)相关的处理。注意输入分组流既可包括入站分组又可包括出站分组。通常,本发明的VPN机制安置在WAN(即因特网)和本地LAN之间。这种情况下,VPN机制发挥作用,既过滤从WAN发送给LAN的入站分组,又过滤从LAN发送给WAN的出站分组。
注意输入流可包括和特定应用相符的任意类型的输入数据,例如帧、分组、字节、PDU等。只是出于举例说明的目的,输入数据流被看作是一系列的分组。
要指出的是VPN机制和举例说明的相关模块只是作为一个例子给出,并不打算限制本发明的范围。在不脱离本发明的范围的情况下,利用这里说明的本发明的原理,本领域的技术人员可用硬件、软件或者硬件和软件的组合构成其它VPN模块,完成与安全性相关的处理和VPN实现。
本发明的VPN机制保持称为安全关联数据库(SAD)的安全参数表,以便保存和单向连接相关的安全参数。对于双向连接,需要产生两个SA。新的安全关联被加入SA数据库中,并且一旦产生,则根据数据库中保存的关于特定SA的参数,处理与该SA相关的后续分组。根据分组和SA参数,分组可能被加密、解密、鉴权或丢弃。注意只有当分组符合在SA数据库中规定的安全性时才许可该分组。
本发明的VPN机制在许多不同类型的系统中有着广泛应用。图1中表示了图解说明在WAN或因特网的环境中,本发明的VPN机制的几种例证应用的方框图。一般来说,和防火墙一起构成并使用VPN机制,以便防止未经许可访问受保护网络,如这里表示的三个例子中每个例子所示。
在第一例子中,VPN机制14和防火墙16一起使用,防火墙16实现于与网络10进行有线或无线通信的个人计算设备12中,网络10可以是WAN或者因特网。个人计算设备可包括任意设备,例如个人数字助手(PDA)(例如手持式掌上机),蜂窝电话机,无线手持机等。本例中,VPN机制和相关防火墙对在WAN/因特网和设备之间流动的分组进行双向安全处理。
在第二例子中,VPN机制20和防火墙22一起使用,从而VPN机制20和防火墙22都实现于与WAN或因特网10进行有线或无线通信的电缆插头适配器18中。设备18通常位于WAN/因特网和宽带调制解调器24之间,宽带调制解调器24连接LAN 26和WAN/因特网。电缆插头适配器中的VPN机制对从WAN/因特网发送给LAN的分组,以及从LAN发送给WAN/因特网的分组进行安全处理。宽带调制解调器适合于调制和解调诸如xDSL(例如ADSL、HDSL、VDSL等)、卫星、陆基RF、微波之类宽带信号。
在第三例子中,VPN机制30和防火墙32一起使用,其中VPN机制30和防火墙32都实现于独立的计算机28上,例如个人计算机(PC)、膝上型计算机等,计算机28与WAN或因特网进行有线或无线通信。包含防火墙的计算机位于WAN/因特网和要保护的LAN 34之间。VPN机制对从WAN/因特网发送给LAN的分组,以及从LAN发送给WAN/因特网的分组进行安全处理。
图2中表示了图解说明包括与本发明的虚拟专用网络机制通信的本地和远程LAN、WAN和拨号用户的例证网络的方框图。该例证网络40包括两个LAN,一个本地LAN 42和一个远程LAN 52。三个计算机A、B和C与该网络连接并相互通信。计算机A、B和C可包括主机、工作站、用户等。VPN网关48和防火墙46位于本地LAN的入口处,VPN网关56和防火墙58同样位于远程LAN的入口处。两个LAN通过WAN/因特网50连接。
用户C也通过适当的装置,例如拨号调制解调器,xDSL调制解调器接入等,与WAN/因特网连接,并且可包括VPN最终用户,在VPN最终用户中,它包含VPN网关或者可以是非VPN连接。
根据本发明,VPN机制适于进行安全处理,包括产生、保存和管理在进行加密、解密、鉴权等情况下,一个或多个安全处理器所需的安全参数。VPN机制既处理从WAN/因特网接收的指定给LAN的入站分组,又处理源于LAN,并指定给WAN/因特网的出站分组。
操作中,从LAN输出的明文被VPN加密,并通过WAN传送。类似地,从WAN入站的密文被VPN解密成明文,并通过LAN转发给接收者。根据本发明,VPN机制适于提供实现IPSec规范所需的安全参数。
本发明包括由多个部件构成的VPN模块,所述多个部件一起发挥作用,从而实现VPN机制。图3中表示了更详细地图解说明本发明的VPN模块的方框图。VPN模块70包括总线接口72、缓存器/寄存器74、安全关联处理器(SAP)75、VPN安全处理器88和分组建立器92。
安全关联处理器包括SA识别模块76、包括CPU接口79的主SA处理模块78、SA管理模块80、散列表82、SA最近最少使用(LRU)电路84和SA数据库86,所有这些都通过总线与VPN安全处理器中的安全引擎和分组建立器通信。
VPN安全处理器包括多个安全引擎90,每个安全引擎90被修改和配置成执行特定的涉及安全的操作。例如,VPN安全处理器包括进行加密、解密、鉴权、DES算法、信头消息鉴权代码(HMAC)等的独立安全引擎。
VPN模块通过总线接口,在总线107上与主设备/CPU 96、信头解码器100、静态过滤器102、动态过滤器104和内容搜索单元106通信。
注意在本文献中,假定VPN模块通常位于WAN和LAN之间,并且既对入站分组又对出站分组执行安全处理。入站分组指的是从WAN接收的去往LAN的分组,出站分组指的是从LAN接收的去往WAN的分组。从而,输入分组流既可包括入站分组,又可包括出站分组。
输入分组流98由主设备/CPU接收,其内容被转发给信头解码器,信头解码器译解(或解析)分组的信头部分。信头解码器抽取由VPN模块使用的关心字段。信头解码器抽取的数据通过总线被转发给其它模块,包括静态过滤器,动态过滤器和VPN模块。该数据包括两个散列值,两个套接字(分别用于动态过滤器和SA处理)和分组的类型,例如ICMP、ARP、TCP、UDP等。用于SA和VPN处理的套接字包括SPI、RIP和协议。用于动态过滤的套接字包括源和目的地IP地址,源和目的地端口和协议。注意取决于实现,信头解码器可构成为外部模块,或者与VPN模块结合。
操作中,VPN模块打开新SA,包括建立与LRU的连接和散列链接列表,确定输入分组对应于哪个SA,在成功处理分组之后更新SA的状态,和从连接表中去除未使用的SA。注意SA数据库被实现和安排成以致能够容易并快速地进行SA识别和指针管理。
主SA处理模块起安全关联处理器的主处理块的作用。它打开新的SA,处理现有SA和跟踪SA的状态。它还包括适合于实现防重放机制的电路,所述防重放机制包括更新入站分组的防重放窗口,递增出站分组的序列号/更新入站分组的序列号,检测序列号溢出。
主SA处理模块还适合于更新与SA相关的状态,包括保持一组标记,序列编号,递减使用期变量,和在处理每个分组之后更新状态寄存器。对于每个接收的分组,主SA处理器循环工作。该循环包括从SA数据库检索SA参数,处理分组,即加密、解密等,和一旦完成处理,就更新SA数据库。注意只有当分组的安全处理不会导致错误并且该分组未被拒绝时,才更新SA数据库。
主SA处理模块还适合于计数按分组在每个SA上传送的字节的数目,并且当SA的使用期溢出时,产生通知。当检测到溢出时,管理器关闭(即删除)该SA。
SA识别模块接收套接字,并在SA数据库中搜索和该套接字匹配的SA。套接字用于识别SA,并且包括安全参数索引(SPI),远程IP(RIP)和安全协议标识符。SPI包括在参考特定SA的IKE过程之后,由CPU产生的32位随机数。在AH和ESP信头中传送SPI,以使接收站能够选择按其处理接收分组的SA。远程IP是SA的目的地端点的IP地址,该SA可以是最终用户或VPN网关或者具有VPN能力的任意设备。安全协议标识符指示SA是AH还是ESP SA。
SA管理模块保持SA数据库。利用最近最少使用(LRU)双重链接表管理SA数据库,并利用散列表访问SA数据库。另外,管理器在入站和出站分组流上将新的SA插入数据库。管理器还使与匹配分组相关的SA the MRU,就请求产生适用于CPU的多个未用SA,在时间方面检查一个或多个SA的使用期,当删除SA时,更新LRU和散列链接表,并通知动态过滤器与该SA相关的会话将被删除。
SA数据库保存套接字和其它SA相关数据,包括SA状态和当前状态,供VPN模块的各个处理模块使用。散列表被用于加速SA的识别。下面更详细地说明这些组件。
主SA处理下面更详细地说明主SA处理。图4A和4B中表示了图解说明本发明的主SA处理器方法的流程图。构成VPN模块和安全关联处理器,以便分三阶段处理分组数据,其中在第一阶段中,从SA数据库读取分组,随后在第二阶段中处理数据,并在第三阶段中,将处理结果写回SA数据库。在处理阶段中,对分组执行一个或多个安全程序,并根据处理跟踪SA状态。
首先检查接收的分组是入站分组还是出站分组(步骤110)。如果是出站分组,则检查动态过滤器是否找到SA(步骤154)。通常,动态过滤器搜索其数据库,寻找具有和接收分组的套接字相符的套接字的会话。对于每个会话,在动态过滤器中的会话数据库中保存有相应的SA。当找到匹配的会话时,读出对应的SA并将其输入SA处理器。在美国专利申请序列号No.09/851768(申请日2001年5月9日)“Dynamic Packet Filter Using Session Tracking”中更详细地说明了动态过滤器的操作,该专利申请同样被转让并作为参考整体包含于此。
如果关于该分组未找到SA(步骤154),则该分组被拒绝(步骤168),因为没有SA,就不能处理该分组,随后更新状态寄存器(步骤146)。这种情况下,CPU打开新的SA,并将相对于该SA的指针保存在动态过滤器中的会话数据库中。随后重新拒绝该分组,但是这次动态过滤器识别出该会话,并将SA传递给SA处理器。
如果找到SA,则从SA数据库检索一个或多个安全参数,分组最大传送单元(MTU)和上标记(upper flag)被传送给VPN安全处理器中的一个或多个安全引擎(步骤156)。MTU代表允许无分段传送的分组的最大大小。
加密/解密(ED)和信头消息鉴权代码(HMAC)是对分组数据执行安全功能的安全引擎的例子。传送给ED安全引擎的数据包括IPSec模式,特定的加密算法(例如DES、3DES等)、CBC或ECB、填充流类型(即0或递增)、3DES中每个DES的类别、加密初始矢量(IV)(只适用于CBC模式)、加密密钥和来自信头解码器的加密/解密指令。
传送给HMAC安全引擎的数据包括IPSec模式、鉴权算法(例如SHA1、MD5等)、鉴权信头大小(即96或160位)和鉴权密钥。
套接字随后被传送给分组建立器,以便装配成分组(步骤158)。传送给PB的数据包括特定的IPSec模式、远程IP(如果实现隧道模式,则是网关IP)、SPI、递增1的序列号和路径MTU。
随后从SA数据库读取序列号和使用期字段(步骤160)。随后检查序列号和使用期(步骤162)。检查序列号是否发生了溢出。序列号溢出可以是硬溢出或软溢出。如果发生硬溢出,则关闭SA(步骤164),拒绝该分组(步骤168),并据此更新状态寄存器(步骤146)。如果发生软溢出,则通过修改下标记中的软序列(SEQ)位,通知CPU,处理继续步骤120。如果没有发生序列号溢出,则控制转到步骤120。
对于使用期,检查是否发生了使用期溢出。注意主SA处理只依据字节检查使用期。SA管理执行依据字节的使用期检查。从使用期的当前值减去接收分组的大小,结果核实溢出。小于0的结果表示溢出。溢出可以是硬溢出或软溢出。如果发生了硬溢出,则关闭SA(步骤164),拒绝该分组(步骤168),并据此更新状态寄存器(步骤146)。如果发生了软溢出,则通过修改下标记中的软使用期(SLT)位通知CPU,处理继续执行步骤S120。如果没有发生使用期溢出,则控制转到步骤120。
如果接收的分组是入站分组(步骤110),对该分组执行安全关联识别(步骤112),如下更详细所述。通过散列SPI、远程IP/网关IP和协议识别SA。识别结果被返回给主SA处理器。如果在识别过程中没有发现任何匹配SA入口,则拒绝该分组(和SA仍然不存在时的情况一样)。如果识别找到匹配SA,则译解该分组。动态过滤器将该分组识别成第一分组,打开新会话并连接该会话和SA。
如果IPSec模式失败(步骤114),则拒绝该分组(步骤152),并更新状态寄存器(步骤146)。如果IPSec模式未失败,则将上标记传递给安全引擎,例如ED、HMAC,和分组建立器(步骤116)。分组建立器装配明文形式的分组,以便通过LAN转发。
传送给ED安全引擎的数据包括IPSec模式、加密算法(例如DES、3DES等)、CBC或ECB、填充流类型、3DES中每个DES的类别、加密密钥和来自信头解码器的加密/解密指令(即是要进行加密还是解密)。
传送给HMAC安全引擎的数据包括IPSec模式、鉴权算法(例如SHA1、MD5等)、鉴权信头和鉴权密钥。
如果任意安全引擎产生错误(例如,如果填充失败,由ED产生错误,或者如果鉴权失败,由HMAC产生错误,等等),则拒绝该分组(步骤114)。
随后执行防重放窗口方法(步骤118),下面更详细地说明。如果接收的序列号超过防重放窗口(ARW),则更新和改变接收的序列号以便调整接收的序列号。
如果SA是AH(步骤120),则AH密钥被传送给鉴权安全引擎(步骤148),控制转到步骤140。SA可以是(1)AH单一SA或者(2)为ESP和AH SA束(bundle)一部分的AH SA。在后一情况下,在首次通过该方法的过程中,指针指向所述束的ESP部分,在第二次通过该方法的过程中,指针指向所述束的AH部分。
如果SA不同于AH SA,则检查分组是否是入站分组(步骤122)以及是否是CBC(步骤124)。如果是,则IV被传递给ED安全引擎(步骤126)。如果分组不是入站分组或者不是CBC,则将ESP密钥传送给ED安全引擎(步骤128)。
如果接收的分组是ESP/AU分组(带有鉴权的ESP)(步骤130),则将AH密钥传送给鉴权安全引擎(步骤148)。如果否,并且分组不是ESP(步骤132),而是入站分组(步骤136),则关于ESP和AH类分组指向AH SA部分(步骤137),控制随后转到步骤118。如果分组是出站分组,则控制转到步骤162。如果接收分组不是ESP/AU分组(步骤130),而是ESP分组(步骤132),出站分组(步骤134)和CBC分组(步骤138),则将加密IV保存在SA数据库中(步骤139)。
如果分组是入站分组(步骤134),则将ARW保存在SA数据库中(步骤140),将更新的序列号保存在SA数据库中(步骤142),更新下标记(步骤144),更新状态寄存器(步骤146)。在状态寄存器更新之后,可出现中断,发信号向CPU或者其它主设备通知主SA处理的完成。
安全关联识别现在详细说明SA识别过程。图5中图解说明确定与输入分组相关的SA的散列技术。每个SA对应于一个独特的套接字。通过比较接收分组的套接字和与保存在SA数据库中的先前打开的SA相关的套接字,识别SA。为了加速SA的识别,使用了散列表,所述散列表保存SA数据库中的SA记录的散列指针,并允许快速查找对应于接收套接字的SA。
新的SA被保存在SA数据库中,VPN模块、SA处理器或者CPU计算关于套接字的散列。散列指针保存在散列表170(图5)中散列结果指向的位置。如果一个以上的SA被保存在该位置,则将该SA添加到链接列表中。注意散列表中的各入口最初被初始化成NULL。
当收到分组时,套接字172被输入散列计算器176,散列计算器176产生并输出散列结果178。散列结果被用作散列表170的索引,散列表170包括分别包含散列指针的多个入口180。散列指针指向SA数据库中的SA 182的链接列表。记录在数据库中的每个SA记录包括前一指针186和后一指针184,从而实现双重链接列表。如果命中套接字,则必须检查链接列表中的每个SA,直到找到与接收分组的套接字的匹配为止。
最好,选择散列函数以便横越散列表产生散列结果的尽可能均匀的展形(Spread)。散列函数可以是任意适当的函数,例如XOR函数或CRC。和简单的XOR散列函数相比,在一个实施例中,通过使用随机矢量174,根据下述等式计算散列结果,可提高性能。
SOCK1SOCK2SOCK3···SOCKN1×N⊗RV1RV2RV3···RVNRV2RV3RV4···RVN-1RV3RV4RV5···RVN-2···············RVRRVR+1RVR+2···RVR+N-1N×R=OUT1OUT2OUT3···OUTR1×R----(1)]]>其中运算符被如下定义OUTi=(RVi1AND SOCK1)(RVi2AND SOCK2)...(RViNAND SOCKN)(2)OUTi代表输出矩阵的第i个字节;SOCKk代表输入矩阵的第k个字节;RVik代表随机矢量矩阵的i,j字节;表示XOR函数;从而利用随机矢量和输入套接字数据产生输入套接字数据1。
图6中表示了图解说明本发明的SA识别过程的散列方法的流程图。第一步是从信头解码器获得接收分组的散列指针(通常由信头解码器提供),套接字和序列号(步骤190)。散列值由散列计算器176产生。另一方面,信头解码器或其它实体可计算散列指针。查寻散列表,从散列表读取散列指针(步骤191)。如果散列指针等于NULL(步骤192),则拒绝该分组。
如果散列指针不是NULL,则使用散列指针读取和散列指针相关的链接列表中的第一SA和对应于该SA的套接字(步骤194)。将该SA的套接字和接收分组中的套接字进行比较(步骤196)。如果套接字匹配(步骤197),则发现SA匹配(步骤202),并向主SA过程报告。如果套接字不匹配(步骤197),从链接列表读取下一散列指针(步骤198),该方法从步骤192开始重复,直到最后的散列指针指向NULL或者发现SA匹配为止。
注意即使在链接列表中只保存一个SA的情况下,也总是对套接字进行完全比较。另外注意本发明的范围不受哪个实体更新和保持链接列表(即或者SA处理器或者CPU更新和保持链接列表)限制。散列表的深度可以是任意所需值。但是通常根据同时要保持的SA的数目设置深度。散列入口的数目最好是SA数目的一倍或两倍,因为完全套接字比较费时,副本过多是不可取的。
安全关联数据库现在更详细地说明SA数据库86(图3)。如前所述,SA数据库保存多个安全关联性的涉及安全性的数据。SA数据库的大小可根据实现和系统要求而变化。下表1中列举了构成数据库的每个记录的字段。
表1SA数据库记录字段字段号 字段说明 长度(位)1上标记 162路径MTU 163远程IP地址/网关地址 324安全参数索引(SPI) 32
5 下一SA束指针 166 前一SA束指针 167 下一散列指针 168 前一散列指针 169 下一LRU指针 1610 前一LRU指针 1611 下标记1612 最后匹配会话指针 1613 序列号3214 防重放窗口(127:0) 12815 加密初始值(63:0) 6416 加密密钥(191:0) 19217 鉴权密钥/散列密钥输入(159:0) 16018 散列密钥输出(159:0) 16019 软/硬使用期 32字段1和11分别保存上标记和下标记,上下标记包含后面更详细说明的多个状态位。路径MTU保存在字段2中,代表关于包括所有信头的分组允许的最大大小。字段3中的远程IP/网关IP地址和字段4中的SPI构成SA套接字及安全协议标识符。下一SA指针和前一SA指针(字段5和6)用于构成均与相同的安全策略数据库(SPD)相关的SA的双重链接列表。字段7和8保存前面说明的散列链接列表内的下一和前一散列指针。在分组的SA识别过程中,使用散列链接列表。字段9和10保存LRU链接列表中的下一和前一LRU指针,用于按照陈旧性对SA排序。下面更详细地说明LRU链接列表操作。
相对于具有该SA的最后打开的会话的指针保存在字段12中。该SA的当前序列号保存在字段13中。字段14保存在ARW机制中用于拒绝重放分组的128位防重放窗口。字段15保存64位加密初始值(IV),字段16保存192位的加密密钥,字段17保存160位的鉴权密钥/散列密钥输入(HKI)。字段18保存160位散列密钥输出(HKO)值。字段19保存SA的软/硬使用期,它被用于确定何时关闭特定SA。
HKI和HKO是在鉴权过程中产生的中间结果。它们都保存在该表中,以便当收到后续分组时节省处理时间。HKI和HKO都由鉴权密钥和预定填充值的散列计算得到。HKI值保存在SA数据库中鉴权密钥的位置,因为一旦计算得到HKI值,就不再需要初始密钥。另一方面,鉴权密钥、HKI和HKO值可单独保存在数据库中。SA数据库从HMAC安全引擎接接收收首次使用SA时的HKI和HKO值。
如上所述,SA数据库包括上标记和下标记,用于相对于CPU传送状态信息。上标记状态包括如下表2中所示的多个位。
表2上标记位标记定义 大小 值 描述0000 无VPN0001 传送AH0010 隧道AH0011 传送ESP0100 隧道ESP0101 传送ESP/AUIPM IPSed模式4位0110 隧道ESP/AU0111 传送ESP传送AH1000 隧道ESP传送AH1001 传送ESP空(仅AU)1010 隧道ESP空(仅AU)1011 鉴权产生/检查1100 加密/解密1101 加密/解密+鉴权DET DES类型 1位 0 DES1 3DESDEM DES模式 1位 0 ECB1 CBC
PAM PAD模式 1位 0 填充0的ESP1 填充递增值的ESP000EEE001EED010EDE3DE 3DES类别 3位 011EDD100DEE101DED110DDE111DDDAHT AH类型1位 0 MD51 SHA1KEY密钥的首次使用1位0 这是同一密钥1 该密钥的首次使用-产生HKI和HKOAHS AH大小1位 0 AH大小为961 AH大小为160AH AH或ESP1位 0 该SA是ESP1 该SA是AHDIR 目录 1位 0 出站分组的SA1 入站分组的SAEMP 空1位 0 该SA被使用(SA有效)1 该SA为空(SA无效)所有上标记由CPU设置并由SA处理器读取。EMP标记也可由SA处理器设置。当SA为空,即无效时,SA处理器将该位设置为1。当SA有效时,CPU将该位设置成0。IPM位指示具体的IPSec模式,即ESP、ESP/AU、仅AU、传送、隧道等。可选的是,最后三种IPSec模式可用于实现辅助安全标准,例如安全套接字层(SSL),从而对某一文件加密等。在这些模式中,单独使用VPN引擎,而不具有分组建立功能。从而,VPN引擎起软件加速器的作用,软件加速器实现DES/3DES加密/解密引擎模式(IPM=1100),SHA-1/MD-5鉴权引擎模式(IPM=1011)或者加密和鉴权引擎模式(IPM=1101)。
DET位指示DES的类型或者为DES或者为3DES。DEM位指示DES模式或者为ECB或者为CBC。PAM位指示填充0的ESP或填充递增值的ESP。3DE位指示特定的3DES类别。AHT位指示AH鉴权的类型或者为MD5或者为SHA1。AHS位指示AH的大小或者为96位或者为160位,AH位指示SA或者为ESP或者为AH,DIR位指示SA是用于出站分组还是用于入站分组。
SA数据库还包括下标记状态寄存器,用于相对于CPU传送状态信息。下标记状态信息包括下表3中所示的多个位。
表3下标记位标记 定义 大小 值 描述00禁止防重放01防重放窗口=32ARW ARW大小2位 10防重放窗口=6411防重放窗口=128HSH HSAH中的第一个 1位 0 这不是本HASH入口中的第一SA1 这是本HASH入口中的第一SAHLD保持1位 01 不删除本会话MAN手动键入1位 0 无关于该SA的手动键入1 关于该SA的手动键入SAL SA使用期模式 1位 0 以秒测量SA使用期1 以64字节为单位测量SA使用期SOH 软或硬使用期 1位 0 该SA中的使用期为软使用期1 该SA中的使用期为硬使用期SLT软使用期1位 01 SA使用期达到软溢出SEQ软序列 1位 0
1 SA序列达到软溢出ARW位位指示防重放窗口的大小(如果存在防重放窗口)。HLD位指示不删除特定的SA。该标记使SA入口免被SA处理器硬件删除。MAN位指示是否存在关于SA的手动键入。如果配置了手动键入,则当达到0xFFFFFFFF时,序列翻转,因为手动键入不允许被SA处理器删除。SAL位指示是用时间还是用数据,即用秒还是64字节单位测量SA使用期。SOH位指示使用期是软使用期还是硬使用期。SLT位指示在软使用期内是否发生了软溢出。SEQ位指示在SA序列中发生了软溢出。注意ARW、HLD、MAN、SAL和SOH标记由CPU设置并由SA处理器读取。SLT和SEQ标记由SA处理器设置并由CPU读取。除非设置了HLD或MAN标记,否则当序列溢出时(0xFFFFFFFF),删除该SA。
防重放窗口机制根据本发明,主SA处理适合于实现防重放机制,从而拒绝重放分组。防重放窗口机制跟踪分组中的序列号,并拒绝其序列号小于许可的最小序列号的分组。图7中表示了图解说明检查过程中,由主SA处理器执行的防重放窗口机制。
x轴代表SA序列号,最小序列号为0x00000000,最大序列号为0xFFFFFFFF。产生一个窗口,称为代表许可序列号的防重放窗口(ARW)(段212)。其序列号低于该窗口的接收分组被拒绝(段210)。另外,每个序列号只允许一个分组。从而,ARW包括落入其内的每个序列号的一位。当收到分组时,设置相应的序列号位。其序列号位已被设置的接收分组被拒绝。
图8中表示了图解说明本发明的防重放窗口方法的流程图。首先从接收的分组读取序列号(步骤280)。从SA数据库检索防重放窗口的当前位置(步骤282)。如果序列号在窗口内(步骤284),则检查是否已收到具有该序列号的分组(步骤286)。如果是,则拒绝该分组(步骤290)。如果否,则ARW机制允许该分组。
如果接收分组中的序列号在窗口之外(步骤284),则检查它是低于还是高于ARW(步骤288)。如果低于窗口,则拒绝该分组。如果高于窗口,则许可该分组,并将ARW向上调节到新的序列号,即向右移动。
1 SA管理模块根据本发明,SA管理模块保持双重链接列表,双重链接列表按照最近最少使用顺序保存SA。SA管理模块实现与SA数据库的保持和控制相关的几种功能。SA管理模块根据来自CPU的命令,检查SA数据库中SA的SA入口(即使用期)的有效性。当收到检查使用期的命令时,检查SA数据库中每个记录的使用期字段。向CPU报告软使用期溢出,在硬使用期溢出的情况下,删除相应的SA。对SA进行使用期检查,以便清洗已变得陈旧和由于某一原因未正常关闭的SA。例如,如果某一SA对应于违反了安全规则的分组,则该SA可能变得陈旧。
当SA被删除时,SA管理模块通过保持LRU和散列指针关系,保持和更新SA束,并通知动态过滤器模块应关闭哪个对应会话,以便确保使用该SA的会话将被关闭。
SA管理模块还应请求向CPU提供未使用的(即空的并且可用的)SA。操作中,CPU请求一个或多个新的SA,SA管理模块搜索并将一个或多个索引返回给CPU。通过断开最近最少使用的SA束(即传送方向和接收方向的SA)和所有相关连接会话,从LRU列表获得SA。类似地,SA管理模块还断开不再使用的SA。SA管理模块还打开新的SA,其中散列表和SA数据库中的LRU指针和散列指针被更新。
图9中图解说明了用于跟踪SA使用的最近最少使用(LRU)链接列表结构。当打开SA时,通过CPU将安全性关联入口输入SA数据库中。CPU向SA管理模块请求SA索引。下一SA束指针和前一SA束指针被用于连接彼此相关的SA。为了将SA插入数据库中,使用前导SA的索引将新SA插入LRU中。另外,CPU计算新SA的套接字的散列值,并将其写入寄存器中标记其散列值。
注意在这里给出的例证实施例中,主机或外部CPU在IKE过程中配置SA的涉及安全性的参数,例如密钥分配、HMAC的长度、填充等。SA管理模块依据CPU或主机的命令实现SA的实际插入。
每次认出(即存取)某一SA,并且对应分组不被SA处理器拒绝时,该SA被置于LRU链接列表的尾部,代表最近最多使用的SA。双重链接列表220包括多个SA 226,每个SA 226具有下一指针222和前一指针224。tail_LRU_index_reg寄存器228的内容指向位于LRU链接列表尾部的SA。该寄存器指向的SA代表最近最多使用的SA。位于LRU链接列表头部的SA由head_LRU_index_reg寄存器227的内容指向。
在SA数据库充满的情况下,LRU链接列表被用于确定当加入新SA时,要删除哪个SA。这种情况下,关闭最近最少使用的SA,该空间用于保存新SA。
图10中表示了图解说明当认出与输入分组相关的SA时,更新LRU链接列表的方法的流程图。每次存取匹配SA并且许可相应分组时,执行该更新方法。参见图9,尤其是标记为前一SA、匹配SA和下一SA的SA,匹配SA从其在列表中的位置移动到尾部,从而变成最近最多使用的SA。通过(1)将前一SA的下一LRU指针设置成匹配SA的下一LRU指针,和(2)将下一SA的前一LRU指针设置成匹配SA的前一LRU指针,删除匹配SA(步骤230)。
随后通过(1)将匹配SA的下一LRU指针设置成NULL,(2)将匹配SA的前一LRU指针设置成tail_LRU_index_reg寄存器的内容,和(3)将tail_LRU_index_reg寄存器设置成匹配SA的索引,使匹配SA成为最近最多使用的SA(步骤232)。
图11中表示了图解说明本发明的SA管理模块的处理的流程图。SA管理处理开始于等待步骤241,并根据事件转移到下一步骤。就来自CPU的‘获得未使用SA’指令来说,取出最近最少使用SA的状态(步骤242)。如果该SA在使用(步骤246),则关闭该SA和所有相关的连接会话(步骤244)。如果该SA未使用,则将head_LRU_index_reg设置成最近最少使用SA的下一LRU指针,并将下一(前一LRU指针)设置成NULL(步骤248)。随后将删除的SA的下一和前一LRU指针设置成NULL,从而从LRU链接列表中删除最近最少使用的SA(步骤250)。unused_sa变量被设置成刚刚断开的SA,通知CPU的标记因此被设置成‘1’(步骤252)。该该过程随后返回等待状态(步骤254)。
来自CPU的‘检查使用期’命令使SA管理器开支检查所有现用SA的使用期。递增index_counter(步骤260),取出SA的状态(即index_counter)(步骤262)。如果该SA目前正在使用(步骤264),从SA数据库取出SA使用期(步骤372)。如果使用期已溢出(用时间或字节数测量)(即SA已到期)(步骤272),则关闭该SA和所有相关的连接会话(步骤274)。
如果该SA未被使用或者如果该SA还未到期,则检查index_counter是否小于最后索引(步骤266)。如果是,则递增index_counter(步骤268),该方法继续执行步骤262。如果否,则通过主SA处理模块通知CPU使用期检查结束(步骤258),该方法返回等待状态(步骤254)。
图12中表示了图解说明本发明的SA管理模块执行的打开SA的处理的流程图。当SA被打开时,该SA被置于LRU链接列表的尾部(步骤330)。该SA还被置于散列链接列表中的适当位置(步骤332)。该方法随后返回等待状态(步骤334)。
图13中表示了图解说明本发明的SA管理模块执行的关闭SA的处理的流程图。如果SA可关闭或者发生了序列号溢出(步骤340),则在不修改LRU指针的情况下清除该SA(步骤342)。随后关闭与该SA相关的所有会话(步骤344)。该方法随后返回等待状态(步骤359)。
如果该SA不能被关闭以及没有发生序列号溢出(步骤340),并且关闭请求起源于使用期检查(步骤346),则不关闭该SA(步骤358),该方法返回等待状态(步骤359)。如果关闭请求不是起源于使用期检查,则取出最近最少使用列表指向的下一SA状态(步骤348)。如果该SA不能被关闭(步骤350),该方法继续执行步骤348,重复该过程,直到找到能够被关闭的SA为止。如果找到能够被关闭的SA,则将该SA配置成LRU(步骤352)。随后除了LRU指针之外,清除该SA(步骤354),清除与该SA相关的所有会话,该方法返回等待状态(步骤359)。
如上所述,SA管理模块还将指向关于该SA使用的最后打开会话的指针保持在SA数据库中。图14中表示了与每个SA记录相关的最后打开会话指针。每个SA入口可包括指向不同的最后打开会话的指针。每打开一个会话时,更新该指针。注意最后打开会话总是位于相关会话列表的头部。
动态过滤器中的会话数据库适合于保存数个指针,包括LRU指针、散列指针、族指针和SA指针。SA指针指向该会话使用的SA。图15中表示了与每个会话记录相关的前一会话指针、下一会话指针和匹配SA指针。会话数据库中的会话记录包括将用于该会话的匹配SA的指针和使用相同SA的会话的前一和下一族指针。当SA被关闭时,并且要关闭与该SA相关的所有会话时,使用会话入口中的下一和前一指针。SA入口中的最后打开指针被用于指向使用该SA的一个或多个会话的列表。当该SA被关闭时,还必须关闭相关会话。注意当SA被关闭时,传送和接收SA被删除,所有连接会话也被删除,除非它们是某一族的一部分。这种情况下,它们被标记成要删除的候选者(即设置会话数据库标记中的PSV位)。
图16中表示了单一会话和单一SA记录之间的例证关系。本例中,只有一个会话入口使用该SA。前一和下一指针从而指向NULL。SA入口包含该SA的最后打开会话的指针。
图17中表示了多个会话和单一SA记录之间的例证关系。本例中,三个会话使用相同的SA。从而,所有三个会话的匹配SA指针指向相同SA。每个会话的下一和前一指针被配置成形成包括这三个会话的双重链接列表。链接列表逻辑连接使用相同SA的会话。该SA入口包括该SA的最后打开会话的指针,该指针指向链接列表头部。
计算机实施例在另一实施例中,计算机执行适于实现本发明的VPN机制或其任意部分(例如安全关联处理器)的软件。图18中表示了图解说明适于实现本发明的VPN机制的例证计算机处理系统-平台的方框图。该系统可包含在诸如PDA、蜂窝电话机、电缆调制解调器、宽带调制解调器、膝上型计算机、PC、网络传输或交换设备、网络设备之类通信设备,或者任意其它有线或无线通信设备中。可利用硬件和/或软件的任意组合构成该设备。
计算机系统300包括处理器304,处理器304可被实现成微控制器、微处理器、微计算机、ASIC核心、FPGA核心、中央处理器(CPU)或者数字信号处理器(DSP)。系统还包括均与处理器通信的静态只读存储器(ROM)302和动态主存储器(例如RAM)308。处理器还通过总线326与也包含在计算机系统中的许多外围设备通信。
该设备通过WAN接口316与诸如因特网之类WAN 318连接。另一方面,网络318可包括基于光学以太网的MAN或者其它类型的MAN,取决于位置。接口包括相对于一个或多个WAN通信通道的有线和/或无线接口。通信I/O处理314在WAN接口和处理器之间传送数据。计算机系统还通过适合于处理正被使用的特定网络协议,例如铜线或光纤以太网、令牌环等各种协议之一的网络接口卡(NIC)310连接LAN 312。操作中,计算机系统如前所述动态过滤从WAN到LAN的入站分组和从LAN到WAN的出站分组。
可选的用户接口320响应用户输入,并提供反馈和其它状态信息。主机接口322连接主计算设备324和系统。主机适于配置、控制和维持系统的操作。系统还可包括保存应用程序和数据的磁存储设备306。系统包括计算机可读存储介质,计算机可读存储介质可包括任意适当的存储装置,包括(但不限于)磁性存储装置、光学存储装置、CD-ROM驱动器、ZIP驱动器、DVD驱动器、DAT磁带、半导体易失性或非易失性存储器、生物存储装置、或者其它任意存储装置。
实现本发明的VPN机制的功能或其任意部分,例如安全性关联处理器的软件适合于驻留在计算机可读介质上,例如磁盘驱动器内的磁盘或者任意其它易失性或非易失性存储器。另一方面,计算机可读介质可包括软盘、快速存储卡、EPROM、EEROM、EEPROM存储器,磁泡存储器、ROM存储器等。适于实现本发明的VPN机制或其任意部分,例如安全性关联处理器的软件还可整体或部分地驻留于计算机系统的处理器内的静态或动态主存储器或者固件内(即在微控制器、微处理器、微计算机、DSP等的内部存储器内)。
在备选实施例中,本发明的方法适于用集成电路、现场可编程门阵列(FPGA)、芯片集或专用集成电路(ASIC)、DSP电路、无线实现和其它通信系统产品实现本发明。
附加的权利要求意图覆盖落入本发明精神和范围内的本发明的所有特征和优点。由于本领域的技术人员易于想到各种修改和变化,因此本发明并不局限于这里描述的有限实施例。因此,可采用落入本发明精神和范围内的所有适当变化、修改和等同物。
权利要求
1.一种安全性关联处理器电路,包括存储多个用于安全性关联的安全数据的安全性关联数据库,每个入口包括和唯一套接字对应的安全性关联数据;当收到未在所述安全性关联数据库中找到的套接字时,打开新的安全性关联的装置;根据分组的套接字,搜索和识别与之相关的安全性关联的装置;从所述安全性关联数据库检索多个安全参数的装置;和将所述多个安全参数转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理的装置。
2.按照权利要求1所述的电路,还包括根据所述安全处理的结果,更新所述安全性关联数据库的内容的装置。
3.按照权利要求1所述的电路,其中与所述安全性关联相关的参数由位于所述电路之外的实体配置,其中所述电路包括将对应于所述安全性关联数据库中的所述新的安全性关联的安全数据,以及根据与所述新安全性关联相关的套接字所计算的散列值,保存在所述安全性关联数据库中的装置。
4.按照权利要求1所述的电路,其中所述安全性关联由位于所述电路之外的实体打开,其中所述电路包括将所述新安全性关联的指针插入最近最少使用(LRU)链接列表中的装置。
5.按照权利要求1所述的电路,还包括从所述安全性关联数据库中去除未使用的安全性关联的装置。
6.按照权利要求1所述的电路,还包括当超过最大超时时,从所述安全性关联数据库中去除未使用的安全性关联的装置。
7.按照权利要求1所述的电路,还包括当超过最大字节计数时,从所述安全性关联数据库中去除未使用的安全性关联的装置。
8.按照权利要求1所述的电路,其中所述搜索和识别安全性关联的装置包括根据与将被识别的安全性关联相关的套接字来计算散列值的装置;利用散列结果作为索引,在散列表中查寻散列指针的装置;根据所述散列指针,从所述安全性关联数据库检索数据的装置;如果所检索的数据和与分组相关的套接字相符,则识别所述安全性关联的装置。
9.按照权利要求1所述的电路,其中所述VPN安全处理器包括进行加密的装置。
10.按照权利要求1所述的电路,其中所述VPN安全处理器包括进行解密的装置。
11.按照权利要求1所述的电路,其中所述VPN安全处理器包括进行鉴权的装置。
12.按照权利要求1所述的电路,其中所述VPN安全处理器包括执行IPSec规定服务的装置。
13.按照权利要求1所述的电路,还包括对入站分组应用防重放机制的装置。
14.按照权利要求1所述的电路,还包括跟踪入站分组的序列号的装置。
15.按照权利要求1所述的电路,还包括建立并保持具有头部和尾部的最近最少使用(LRU)双重链接列表的装置,其中最近最多使用的安全性关联保存在尾部,最近最少使用的安全性关联保存在头部。
16.按照权利要求15所述的电路,其中在所述LRU列表充满的情况下,删除位于头部的安全性关联,将新的安全性关联加在尾部。
17.按照权利要求1所述的电路,其中所述套接字包括安全参数索引(SPI)、远程IP和协议组件。
18.按照权利要求1所述的电路,其中所述安全性关联数据包括下述值任意之一或者它们的组合IPSec模式、加密算法、加密密钥。
19.按照权利要求1所述的电路,其中所述安全性关联数据包括下述值任意之一或者它们的组合IPSec模式、鉴权算法、鉴权密钥。
20.按照权利要求1所述的电路,还包括如果从所述VPN安全处理器收到误码,则拒绝所述分组的装置。
21.按照权利要求1所述的电路,其中利用专用集成电路(ASIC)实现所述电路。
22.按照权利要求1所述的电路,其中利用现场可编程门阵列(FPGA)实现所述电路。
23.按照权利要求1所述的电路,其中利用数字信号处理器(DSP)实现所述电路。
24.一种虚拟专用网络(VPN)电路,包括保存多个用于安全性关联的安全数据的安全性关联数据库装置,每个入口包括和唯一套接字对应的安全性关联数据;多个安全引擎,每个安全引擎用于执行安全处理;当收到未在所述安全性关联数据库装置中找到的套接字时,打开新的安全性关联的装置;根据输入分组的套接字,搜索和识别与之相关的安全性关联的装置;从所述安全性关联数据库装置检索多个安全参数的装置;将所述多个安全参数转发给至少一个所述安全引擎,以便以此执行安全处理的装置;和利用所述输入分组和所述安全处理的结果,根据特定的安全模式构建输出分组的分组建立装置。
25.按照权利要求24所述的电路,其中至少一个所述安全引擎用于实现IPSec隧道模式服务。
26.按照权利要求24所述的电路,其中至少一个所述安全引擎用于实现IPSec传送模式服务。
27.按照权利要求24所述的电路,其中至少一个所述安全引擎用于进行加密。
28.按照权利要求24所述的电路,其中至少一个所述安全引擎用于进行鉴权。
29.按照权利要求24所述的电路,其中至少一个所述安全引擎用于进行一种或多种IPSec服务。
30.按照权利要求24所述的电路,其中利用专用集成电路(ASIC)实现所述电路。
31.按照权利要求24所述的电路,其中利用现场可编程门阵列(FPGA)实现所述电路。
32.按照权利要求24所述的电路,其中利用数字信号处理器(DSP)实现所述电路。
33.一种便携式计算设备,包括用于连接所述设备和通信网络的通信装置;包括易失性和非易失性存储器的存储器装置,所述非易失性存储器用于保存程序代码;与所述存储器装置和所述通信装置耦接、执行所述程序代码的处理器;和虚拟专用网络(VPN)电路,所述虚拟专用网络(VPN)电路包括保存多个用于安全性关联的安全数据的安全性关联数据库装置,每个入口包括和唯一套接字对应的安全性关联数据;多个安全引擎,每个安全引擎用于执行安全处理;当收到未在所述安全性关联数据库装置中找到的套接字时,打开新的安全性关联的装置;根据输入分组的套接字,搜索和识别与之相关的安全性关联的装置;从所述安全性关联数据库装置检索多个安全参数的装置;将所述多个安全参数转发给至少一个所述安全引擎,以便以此执行安全处理的装置;和用于利用所述输入分组和所述安全处理的结果,根据特定的安全模式构建输出分组的分组建立装置。
34.按照权利要求33所述的设备,其中所述通信网络包括广域网(WAN)。
35.按照权利要求33所述的设备,其中所述通信网络包括局域网(LNA)。
36.按照权利要求33所述的设备,其中所述通信网络包括因特网。
37.按照权利要求33所述的设备,其中所述通信网络包括公共交换电话网(PSTN)。
38.按照权利要求33所述的设备,其中至少一个所述安全引擎用于进行加密。
39.按照权利要求33所述的设备,其中至少一个所述安全引擎用于进行解密。
40.按照权利要求33所述的设备,其中至少一个所述安全引擎用于进行鉴权。
41.按照权利要求33所述的设备,其中至少一个所述安全引擎用于执行IPSec服务。
42.按照权利要求33所述的设备,其中利用专用集成电路(ASIC)实现所述VPN电路。
43.按照权利要求33所述的设备,其中利用现场可编程门阵列(FPGA)实现所述VPN电路。
44.按照权利要求33所述的设备,其中利用数字信号处理器(DSP)实现所述VPN电路。
45.一种安全性关联处理器电路,包括保存多个用于安全性关联的安全数据的安全性关联数据库,每个入口包括和唯一套接字对应的安全性关联数据;当收到未在所述安全性关联数据库中找到的套接字时,用于打开新的安全性关联的管理单元;用于根据输入分组的套接字,搜索和识别与之相关的安全性关联的识别单元;用于从所述安全性关联数据库检索多个安全参数,并将它们转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理的主处理器单元;和包含散列函数和相关散列表、用于搜索所保存的安全性关联的散列单元。
46.按照权利要求45所述的电路,还包括最近最少使用(LRU)链接列表,用于提供保存在所述安全性关联数据库中的所述安全性关联的使用频率的列表。
47.按照权利要求45所述的电路,还包括用于利用所述输入分组和所述一个或多个安全处理的结果,根据特定的安全模式来构建输出分组的分组建立器。
48.按照权利要求45所述的电路,其中所述VPN安全处理器包括进行加密的装置。
49.按照权利要求45所述的电路,其中所述VPN安全处理器包括进行解密的装置。
50.按照权利要求45所述的电路,其中所述VPN安全处理器包括进行鉴权的装置。
51.按照权利要求45所述的电路,其中所述VPN安全处理器包括实现IPSec服务的装置。
52.按照权利要求45所述的电路,其中利用专用集成电路(ASIC)实现所述电路。
53.按照权利要求45所述的电路,其中利用现场可编程门阵列(FPGA)实现所述电路。
54.按照权利要求45所述的电路,其中利用数字信号处理器(DSP)实现所述电路。
55.一种安全性关联的方法,所述方法包括下述步骤建立用于保存多个安全性关联的安全数据的安全性关联数据库,所述安全性关联数据库内的每个入口对应于一个套接字;当收到未在所述安全性关联数据库中找到的套接字时,打开新的安全性关联;根据分组的套接字,搜索和识别与之相关的安全性关联;从所述安全性关联数据库检索多个安全参数;和将所述多个安全参数转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理。
56.按照权利要求55所述的方法,还包括根据所述安全处理的结果,更新所述安全性关联数据库的内容的步骤。
57.按照权利要求55所述的方法,其中打开新的安全性关联的所述步骤包括将对应于所述新安全性关联的安全数据保存在所述安全性关联数据库中;根据与所述新的安全性关联相关的套接字来计算散列值;和将所述散列值保存在散列表中。
58.按照权利要求55所述的方法,其中所述打开新的安全性关联的步骤包括将所述新安全性关联的指针插入最近最少使用(LRU)链接列表中。
59.按照权利要求55所述的方法,还包括从所述安全性关联数据库去除未使用的安全性关联的步骤。
60.按照权利要求55所述的方法,还包括当超过最大超时时,从所述安全性关联数据库去除未使用的安全性关联的步骤。
61.按照权利要求55所述的方法,还包括当超过最大字节计数时,从所述安全性关联数据库去除未使用的安全性关联的步骤。
62.按照权利要求55所述的方法,其中所述搜索并识别安全性关联的步骤包括下述步骤根据与将被识别的安全性关联相关的套接字来计算散列值;利用散列结果作为索引,在散列表中查寻散列指针;根据所述散列指针,从所述安全性关联数据库中检索数据;如果所检索的数据和与分组相关的套接字相符,则识别所述安全性关联。
63.按照权利要求55所述的方法,其中所述VPN安全处理器用于进行加密。
64.按照权利要求55所述的方法,其中所述VPN安全处理器用于进行解密。
65.按照权利要求55所述的方法,其中所述VPN安全处理器用于进行鉴权。
66.按照权利要求55所述的方法,其中所述VPN安全处理器用于执行IPSec规定服务。
67.按照权利要求55所述的方法,还包括对从远程网络接收的分组应用防重放机制的步骤。
68.按照权利要求55所述的方法,还包括跟踪从远程网络接收的分组的序列号的步骤。
69.按照权利要求55所述的方法,还包括建立并保持具有头部和尾部的最近最少使用(LRU)双重链接列表的步骤,其中最近最多使用的安全性关联保存在尾部,最近最少使用的安全性关联保存在头部。
70.按照权利要求69所述的方法,其中在所述LRU列表充满的情况下,删除位于头部的安全性关联,将新的安全性关联加在尾部。
71.按照权利要求55所述的方法,其中所述套接字包括安全参数索引(SPI)、远程IP和协议组件。
72.按照权利要求55所述的方法,其中所述安全性关联数据包括下述值任意之一或者它们的组合IPSec模式、加密算法、加密密钥。
73.按照权利要求55所述的方法,其中所述安全性关联数据包括下述值任意之一或者它们的组合IPSec模式、鉴权算法、鉴权密钥。
74.按照权利要求55所述的方法,还包括如果从所述VPN安全处理器收到误码,则拒绝所述分组的步骤。
75.按照权利要求55所述的方法,其中利用专用集成电路(ASIC)实现所述方法。
76.按照权利要求55所述的方法,其中利用现场可编程门阵列(FPGA)实现所述方法。
77.按照权利要求55所述的方法,其中利用数字信号处理器(DSP)实现所述方法。
78.一种计算机可读存储介质,具有包含于其中的计算机可读程序代码单元,当在所述计算机上执行这种程序时,使适当编程的计算机实现安全关联性机制,所述计算机可读存储介质包括使所述计算机建立用于保存多个安全性关联的安全数据的安全性关联数据库的计算机可读程序代码单元,所述安全性关联数据库内的每个入口包括对应于唯一套接字的安全性关联数据;当收到未在所述安全性关联数据库中找到的套接字时,使计算机打开新的安全性关联的计算机可读程序代码单元;使所述计算机根据分组的套接字,搜索和识别与之相关的安全性关联的计算机可读程序代码单元;使所述计算机从所述安全性关联数据库检索多个安全参数的计算机可读程序代码单元;和使所述计算机将所述多个安全参数转发给虚拟专用网络(VPN)安全处理器,以便以此执行一个或多个安全处理的计算机可读程序代码单元。
全文摘要
一种新颖的有用虚拟专用网络(VPN)机制和相关的安全性关联处理器,用于保持实现诸如加密、解密和鉴权之类安全功能所需的安全参数。安全性关联数据库(SAD)和相关电路适合于提供实现关于加密/解密和鉴权的IPSec组安全规范必需的参数。数据库中的每个安全性关联(SA)包括根据IPSec规范接收和传送VPN规范所需的全部参数。
文档编号H04L12/66GK1600011SQ02815510
公开日2005年3月23日 申请日期2002年7月10日 优先权日2001年7月10日
发明者亚尼夫·沙菲拉, 卓瑞·肖哈特, 摩施·泽扎克, 尼夫·格尔博 申请人:意大利电信股份公司