基于时钟的重发保护的制作方法

文档序号:7635547阅读:160来源:国知局

专利名称::基于时钟的重发保护的制作方法
技术领域
:本发明一般地涉及网络系统。更具体地说,本发明涉及网络安全性。
背景技术
:这一部分中描述的方法可以实现,但是不一定是先前己想到或己实现的方法。因此,除非另外指出,否则这一部分中描述的方法不是该申请的权利要求的现有技术,并且也不应当因为被包括在这一部分中而看作是现有技术。如因特网任务工程组的请求注释(RFC)2030中所述的简单网络时间协议可以被用来在可容忍时间范围内对网络设备的时钟进行同步。在SNTP中和其他现有方法中,网络中的时钟同步取决于中央服务器、或者一组协作的服务器,从这些服务器系统可以获得相同的主或者"壁挂时钟"(wallclock)时间。SNTP的主要用途是利用在服务器和客户端之间发送的时间戳来同步时钟。RFC1510的Kerberos协议使用时间戳来声明在分组中包括的Derberos"票据"(ticket)的新鲜度。但是,Kerberos时间戳并不被用于发送者和接收者之间的同步。智能安全因特网服务器(IS-IS)路由选择协议利用序列号而不是时间戳对网络中的包括协议数据单元(PDU)的链接状态分组(LSP)进行自同步。在IS-IS中,序列号被与特定的LSP相关联。从邻居接收到具有较高序列号的LSP指示LSP的更近版本。从邻居接收到具有较低序列号的LSP导致路由器利用其LSP的最近版本作出响应。这些方法中的每种都有缺点。例如,SNTP和其他时间同步机制在群组包括大量的成员时并且/或者群组成员分布在广域网上时难以使用。另外,存在许多联网场景,在这些场景中,时间服务不可用,或者得不到执行认证服务的设备支持。在数据加密协议,例如RFC2401和其他RFC中所述的因特网协议安全性(IPSec)中,通常接收者将接受由发送者发送的有效分组不超过一次。接受有效分组仅一次有助于实现检测和挫败敌对方有意重发(replay)的分组,以及检测并丢弃网络中偶然复制的分组。如果接收者不检测重发的分组,则攻击者可以利用该重发的分组来使接收者接受陈旧的数据,如同该数据是新鲜数据一样。如果分组中的信息是时间敏感的,则这种重发可能是灾难性的。此外,对重发的分组进行处理浪费了资源。重发的分组可能导致密码末端不必要地花费CPU或存储器资源,这种资源被攻击者用于恶意目的。例如,重发的分组可能被用于拒绝服务(DoS)攻击以及寻求欺骗接收者的攻击。与将陈旧数据误认为新鲜数据相关联的问题、以及与由重发分组可能导致的资源浪费相关联的问题在分组被发送向群组时可能被极大地放大。例如,具有1000个接收者的IP多播组对于攻击者可能是尤其有吸引力的目标,因为多播分组的单个流的重发将影响到所有1000个接收者。如果陈旧的数据被重发,则整个群组都受到愚弄从而接受不正确的信息,这对攻击者有利。在DoS攻击的情形中,整个接收者群组都可能由于资源耗尽而不能使用。类似地,偶然重发的多播分组也向所有接收者提供不正确的数据或者使资源变紧张。IPSec包括用于保护分组流的协议,以及用于交换建立安全流时使用的加密密钥的协议。用于保护分组流的一种IPSec协议是在RFC2406中所述的封装安全性有效载荷(ESP),该协议对分组流进行加密。RFC2402的IPSec认证头部(AH)向分组流提供认证和消息完整性保证(但是不提供秘密性(confidentiality))。ESP和AH协议提供重发保护来检测系统之间的重复分组。但是,重发保护是针对恰好两个系统之间的逐对(pair-wise)通信设计的。当IPSec被用于保护多发送者群组流量时,重发保护就变的有问题了。ESP和AH通过使用序列号来提供重发保护。但是,当IPSec被应用于具有多于一个发送者的群组流量时,多个发送者可能使用同一个序列号。结果,IPSec序列号对于防止重发是无效的,因为序列号的唯一性属性被违背,因此接收到具有相同序列号的两个分组并不指示重发。本发明在附图中以示例方式而非以限制方式示出,在附图中相似的标号指代类似的元件,在附图中-图1是可以用来实现一个实施例的通信系统的框图。图2是包括伪时间戳的分组认证头部的格式的实施例的框图。图3是由发送者执行的算法的示例的流程图的框图,该算法可以在ESP处理的完整性校验值(ICV)计算阶段期间被执行。图4是在ESP处理的ICV验证阶段期间在发送者上执行的算法的示例的流程图的框图。图5是示出了图4的算法步骤的基于时钟的重发检査的示例的伪时间线。图6是由接收者执行的用于对接收者和发送者的时钟进行同步的算法的示例的流程图的框图。图7是示出了可在其上实现本发明实施例的计算机系统的框图。具体实施例方式下面描述用于检测重发的分组的方法和装置。在下面的描述中,出于说明目的,给出了大量特定细节以提供对本发明的完全理解。然而,本领域技术人员应当清楚,没有这些特定细节也可以实施本发明。在其他实例中,公知的结构和设备以框图形式示出以避免不必要地混淆本发明。这里根据以下提纲对实施例进行描述1.0综述2.0结构和功能概述3.0基于时钟的重发保护3.1概述3丄1伪时间(pseudo-time)3丄2伪时间戳3丄3IPSec变换中的伪时间戳放置3.2与IPSec认证一起使用3.2.1包括伪时间戳的HMAC-SHA-13.2.2包括伪时间戳的GCM3.2.3包括伪时间戳的RSA-SIGS3.3处理3.3.1SA创建3.3.2完整性校验值计算3.3.3完整性校验值验证3.3.4对IPSec硬件加速模块的影响3.4群组同步3.4.1自同步3.4.2同步后信道(backchannel)3.4.3利用密钥管理同步3.5密钥管理接口4.0实现机构-硬件概述5.0扩展和替换尽管提供了标题,但是在具有该标题的部分中不能找到的与特定标题相关的信息也可以在本说明书的其他部分找到。1.0综述在本发明中实现了在前述
背景技术
中给出的需要以及将从下面的描述中变清楚的其他需要和目的,本发明在一个方面中包括一种用于确定检测进入网络的重发分组的方法。某些实施例提供了可以彼此独立地使用或者与其他特征的任意组合一起使用的特征。尽管许多特征是由上述问题激起的,但是这些实施例无需解决全部或者任何上述问题。在一个实施例中,被称为伪时间戳的时间戳被包括在分组中。在一个实施例中,第一次接收到分组的时间(其可以被称作伪时间)被确定为代表该分组被发送的时间,并且第二时间(其也可以被称作伪时间)被确定为代表分组被接收到的时间。如果第二时间与第一时间之间的差大于预定量,则认为该分组是陈旧的,并且不被处理,从而阻止了分组重发。在一个实施例中,多个系统中的每个都维护它们自己的时钟,并且每个时钟维护其自己的伪时间。为了保持不同时钟的伪时间同步,如果与接收到的分组的伪时间戳相关联的伪时间比接收者处的伪时间晚一定量,则接收者时钟被向前设置某一量,该量被预期使得接收者和发送者的时钟在预定容限内同步。这里所述的伪时间戳、重发保护方法和自同步方法可以被独立且彼此分离地使用,或者彼此结合地使用,或者以彼此任意组合的方式使用。在本说明中,伪时间可以是代表时间中的时刻的任意一组值,类似地,伪时间戳是从其可以确定该组值之一的信息。对于具体的实施例,时间值的特定集合可以被替代,例如"壁挂时钟"的时间值集合或者壁挂时钟的时间值集合之外的时间值集合可以被替代。术语"壁挂时钟"指提供参考或主时间的时钟。2.0结构和功能概述图1是可以用来实现一个实施例的通信系统的框图。两个或更多个通信节点102、104在网络106内被通信耦合或者被通信耦合到网络106。为了实现这里的技术,节点102、104每个都包括伪时间时钟108、重发保护逻辑IIO和同步逻辑112。时钟108、逻辑IIO和逻辑112可以利用一个或多个计算机程序、过程、其他软件元素,或者软件、固件和硬件的任意组合实现。操作系统114监督与时钟108、逻辑110和逻辑112相关联的输入/输出操作。OS114也可以监督或者容纳诸如IPSec过程116之类的协议应用。节点102、104中的每个都可以被实现为数据处理系统,所述数据处理系统或者充当网络末端站,例如,个人计算机、工作站等,或者充当基础设施元件,例如,路由器、交换机、网关等。例如,图7中示出的通用数据处理硬件结构可以与用于实现时钟108、逻辑110和逻辑112的适当的软件元素一起用于一种实现方式。在这种布置中,提供了针对基于时钟的重发的群组保护,用于在诸如IPSec之类的协议控制下的通信。建立有规律地前进的一个或多个时钟。这些时钟无需与任何其他特定时钟同步,尽管这些时钟应当在可接受的容限内彼此同歩。这些时钟可以以与壁挂时钟不同的速率运转。因此,这些时钟所跟踪的时间被称作伪时间。因此,伪时间与系统时间或壁挂时钟时间全然不同。例如,伪时间可以开始于"0"或任何其他任意值。伪时间可以被与特定的群组加密密钥相关联,或者与一组群组加密密钥相关联。但是,壁挂时钟或系统时钟也可以用作在实现基于时钟的重发保护方法时的时钟。网络中的每个系统通过具有其自己的时钟或者从例如中央时钟获得伪时间来独立地跟踪伪时间。术语"系统"广泛地指代需要参考时钟的任何信息处理元件,包括网络设备、任何其他处理设备、软件元素、过程或者它们的任何组合。另外,设置这样的可配置窗口,期望其比发送和接收分组的伪时间之间的最大等待时间的两倍加上分组在网络中行进所花费的任何其他可能的时间差异都要大。该窗口例如被用来确定一个分组应当被处理还是被丢弃,或者时钟是否需要被同步。在一个实施例中,窗口被设置为任意两个发送者和接收者之间的预期最大网络等待时间的两倍加上两个系统的伪时间中的任何其他预期差异的最大值。在一个特定实施例中,IPSec分组的发送者将伪时间戳包括在分组中,该伪时间戳记录指示该分组被发送的时间的伪时间。分组的接收者将伪时间戳与它们各自的当前伪时间进行比较,然后基于至少三种结果之一采取响应动作。1.该分组中的伪时间戳相对于接收者的伪时间处于过去(mthepast),并且该伪时间戳的伪时间与该分组的接收者的伪时间之间的差比窗口小。如果该分组的伪时间处于过去,并且伪时间之间的差比窗口小,则认为该分组是"新鲜"(fresh)分组,并且该分组被进一步处理。2.该分组中的伪时间戳相对于接收者的伪时间处于过去,并且该伪时间戳的伪时间与该分组的接收者的伪时间之间的差比窗口大。如果该伪时间处于过去,并且伪时间之间的差比窗口大,则认为该分组是陈旧(stale)的,并且该分组立即被丢弃。3.该分组中的伪时间戳与该分组的接收者处的当前伪时间相同,或者该伪时间戳的伪时间相对于该接收者处的伪时间处于将来(inthefliture)。如果这些伪时间相同或者该伪时间戳处于将来,则发送者和接收者时钟不同步。取决于本地策略,接收者可以接受或者丢弃分组。可选地,接收者也可以对其时钟进行同步。IPSecESP和AH协议不包括用于伪时间戳的字段。但是,ESP禾nAH都被定义为框架,可以向该框架添加特定的IPSec安全性变换。ESP和AH的现有安全性变换文档描述了特定加密或认证算法的语义。这里的基于时钟的重发保护方法包括用于向IPSec认证变换(authenticationtransform)添加时间戳的方法。IPSec认证变换在AH和ESP中指定认证数据字段的格式。这里的方法使用包括伪时间戳的认证变换,其中伪时间戳具有与认证变换相关联的认证值。在一个实施例中,伪时间戳被添加到认证变换。因此,不同于传统的IPSec变换,经认证的伪时间戳被包括在IPSec认证变换中,从而除一般由IPSec认证变换提供的认证之外,还形成了提供基于时钟的重发保护的认证变换。基于时钟的重发保护在接收者确定分组是在可配置的时间窗口内最近被发送的时起作用。或者,额外的字段被包括在AH或ESP分组格式中,并且存储伪时间戳。利用这里所定义的窗口,可以保护大的群组的成员之间的通信不重发分组。基于时钟的重发保护可以在不存储每个发送者信息或者不存储群组中每个系统的状态的情况下实现。存储每个发送者信息或者存储群组中每个系统的状态对于任意大的群组来说是不可扩展的。此外,还为系统提供了一种方法,用于基于由对等系统发送的分散(decentralized)通信进行自同步的方法。自同步方法假设利用包含时间戳(例如,上述伪时间戳)的协议,该时间戳声明分组被发送的时间。这种时间戳无需包含壁挂时钟时间,但是可以表示伪时间。在一个实施例中,伪时间戳被认证,使得伪时间戳可以被验证为准确的;但是,对伪时间戳的认证是可选的。这种认证可以利用具有上述基于时钟的重发保护的IPSec协议提供。但是,也可以利用其他认证协议作为替代。在一个实施例中,为了自同步,时间戳被定义为在特定时间点处有规律前进的时钟(例如,利用伪时间)。自同步方法所使用的时间戳也被称作伪时间戳;但是,由自同步方法所使用的时间戳和基于时钟的重发保护方法所使用的时间戳不需要相同,并且这两种方法每个都可以彼此独立地使用。在自同步方法中,每个系统维护其自己的基于时钟的伪时间。每个系统将其自己的时钟与其他系统的时钟进行同步。在接收到分组时,接收者可以将该分组的伪时间戳中的伪时间与接收者的时钟的伪时间相比较。比较的结果是以下至少三种可能结果之一。1.该分组中的伪时间戳比接收者处的当前时钟早预定量。2.该分组中的伪时间戳与接收者处的当前时钟(在预定时间量内)几乎相同。3.该分组中的伪时间戳领先于接收者处的当前时钟。如果伪时间戳较早或者领先于时钟,则发送者和接收者的时钟可能未同步。如果伪时间戳比接收者的时钟早很多(例如,早预定量,该预定量可以是窗口的大小),则发送者的时钟可能正滞后。该说明的其余部分主要结合自同步过程来讨论伪时间戳领先于接收者,的时钟的情形。但是,在一个实施例中,自同步过程也被用于在发送者时钟与接收者时钟相比远落后或者比接收者时钟大预定量时。在上述情形(2.)中,接收者无需采取响应动作。在上述情形(3.)中,当接收到的分组的伪时间戳比接收者的伪时间时钟早某一大于允许量的量时,接收者将其时钟与估计的发送者时钟的当时当前(then-current)时间(其是从数据分组中的伪时间戳导出的)重同步。因此,这里的自同步方法使用伪时间戳用于自同步,其根据本地时钟前进。本地时钟的当前设置可以考虑网络等待时间或者发送者和接收者的时钟的伪时间的其他预期差异。例如,如果接收到的分组的伪时间戳是A,并且在接收到分组时接收者的时钟设置为B,并且如果最大允许的伪时间差(例如,从任意发送者到任意接收者的行进的最大伪时间等待时间)为C,其中A-B>C,则接收者可以使其时钟前进IA-(B+C)1。在一个实施例中,如果伪时间戳比允许的伪时间差大预定量,从而使伪时间戳离得太远,则接收者可以忽略该分组,而不是将其时钟同步到该分组中的伪时间加p截。在上述情形(1.)中,接收者诱使发送者利用下面的方法对发送者的伪时间时钟重同步。在一个实施例中,系统不会将其时钟设置成比其自己的当前伪时间早的伪时间,因为将其时钟设置为较早的伪时间可能允许攻击者将接收者的时钟重置为过去的伪时间。将伪时间重置到过去可能导致依赖于伪时间戳的安全性应用的问题。例如,将时钟设置到较早的伪时间可能绕过这里所述的基于时钟的重发保护方法。不过,利用这里的方法,接收系统可以强制发送系统重同步到准确的伪时间。假设网络设备S发送了由网络设备R接收到的分组,并且R确定接收到的分组的伪时间比R的伪时间指针早很多,如上述情形(1.)。作为响应,R向S发送包含基于R的本地时钟的伪时间戳。设备S确定其已接收到具有远远领先于S的本地时间的伪时间戳的分组;这就是上述情形(3.)。因此,作为响应,S使其时钟前进到估计的R的时钟当时当前伪时间。利用这种方法,具有远滞后于其本地时钟的时间戳的分组的接收者给予发送者一个机会来重同步其时钟,同时防止恶意攻击。此外,发送者和接收者不会与滞后于所有其他时钟的时钟相隔离。或者,在情形(1.)中,基于本地策略,接收者可以默默地忽略分组中的早的多的伪时间,或者可以发送如上所述校正的伪时间戳分组仅仅有限次数。这些替换方式确保恶意的发送者不能执行通过发送都具有较早的伪时间值的分组泛洪来诱使接收者作出响应而实现的DoS攻击。这里的自同步时钟的方法对于防范试图将系统的时间改变到较早时间的中间人(man-in-the-middle)的攻击是有效的。在一个实施例中,伪时间戳被认证,使得它们在在网络中通过时免受改变。攻击者可能延迟分组的发送,但是因为没有接收者将其伪时间设置为较早的伪时间,所以接收经延迟的分组不可能影响系统的时钟。因此,这里的自同步方法不会受到来自中间人攻击者的攻击的显著不利影响。此外,这里的自同步方法对于防范流氓(rogue)发送者也是有效的。如果流氓发送者发送具有过去的伪时间戳的分组,则接收系统可以忽略该流氓发送者的分组或者伪时间戳值。如果流氓发送者发送具有将来的伪时间戳的分组,则该流氓发送者的分组可能导致接收者自同步到将来的某个时间。但是,基于本地策略,接收者可能丢弃分组或者忽略在将来大于预定量的伪时间戳值。在不存在这种策略时,流氓发送者发送的比预定量大的伪时间戳可能导致临时分组丢失。不过,一旦系统都自同步到该伪时间戳值,就不会再有分组丢失发生,因此这种攻击不会有长期效果。因此,这里的方法使得设备能够基于分散通信实现自同步。自同步在以下时刻发生系统将其本地时钟的伪时间与从发送者接收到的伪时间戳进行比较,确定接收到的伪时间值领先,并且将系统时钟重置到在分组中接收到的伪时间戳,或者重置到预期在预定容限内使接收者的时钟与发送者的时钟同步的值。在一个实施例中,接收者的时钟从不会被递增超过预自同步方法可以被用在任何网络中,在这种网络中系统传输伪时间戳值,并且对于这种网络时间同步对系统是有用的。包含伪时间戳的数据分组可以利用IP单播、多播、广播或者任何其他通信技术被传输。自同步方法不要求群组成员与集中的时间同步服务接触。但是,实现这里的自同步方法的系统也可以使用集中的时间同步服务。尽管这里的基于时钟的重发保护方法和自同步方法可以用于服务器和客户端之间的通信,但是客户端无需与专用时间协议服务器同步,因为同步过程在已直接通信的网络对等方之间的通信期间发生。3.0用于IPSec的基于时钟的重发保护利用基于时钟的方法提供了用于IPSec的重发保护。这里的基于时钟的重发保护方法提供了对由作为IPSec的一部分提供的基于序列号的重发保护的有效替换。基于时钟的重发保护例如在序列号不实际时是合适的,例如,在单个IPSec安全性关联(SA)保护大的群组之间的流量时。群组流量的一个示例是其中许多成员可以发送数据的IP多播群组。在一个实施例中,当基于时钟的重发保护被用于SA时,基于序列号的重发保护被禁用。3.1概述基于时钟的重发保护使用利用特定IPSecSA的恒定数目的状态独立发送者。在许多正出现的应用需要是状态独立的时,这些应用使用单个ESPSA来对系统群组(例如,IP多播组)之间发送的分组进行保护。在本说明中,发送者是准备用于发送的分组并且发送该分组的系统。发送者可以对分组的一些或全部内容进行加密。接收者是接收分组并对分组中的信息进行处理的系统。接收者可以执行解密。基于时钟的重发保护依赖于外部系统,例如,群组密钥管理系统,来在最初向作为群组成员的系统分发伪时间戳值。RFC3547描述了一种示例群组密钥管理系统。在稍后部分中进一步讨论密钥管理问题。在基于时钟的重发保护中,实现强壮的重发保护是可选的,并且在该选项未被选择或者实现时提供松散的保护。如果强壮保护被实现或者被选择,则强壮的重发保护在SA的整个持续期间被应用到该SA。3丄1伪时间基于时钟的重发保护使用有规律地前进的时钟,但是该时钟不一定被与任何特定的壁挂时钟同步。该时钟可以以与壁挂时钟稍稍不同的速率运行。该时钟可以是基于系统的硬件系统时钟的。该时钟跟踪的时间被称作"伪时间"。该时钟的一个间隔的持续被称作一个"滴答"(tick)。使用基于时钟的重发保护的每个IPSecSA被与用于跟踪其伪时间的特定时钟相关联。3丄2伪时间戳每个基于时钟的重发保护ESP分组包括一个伪时间戳,该伪时间戳包含发送者创建该分组的伪时间。接收者利用伪时间戳来确定该分组是否是利用指定处理规则的重发分组。伪时间戳的大小在实现方式中可以变化。与伪时间戳的大小相关的问题是IPSecSA生存期(lifetime)和一个滴答所代表的时间长度。具体而言,在一个实施例中,(1)伪时间戳必须足够大,以表示在IPSecSA的整个生存期期间流逝的所有时间,以及(2)每个唯一的伪时间戳值之间的时间差(即,一个滴答的大小)必须能够表示分组将被利用相同伪时间戳发送的期间的最小持续时间。在一个实施例中,IPSec分组中的伪时间戳值的长度可以变化,但是必须是滴答之间的持续时间差和IPSecSA的生存期的函数。表1示出了取决于滴答长度的伪时间戳的可能大小(以壁挂时钟时间表示)。表1—伪时间戳的大小<table>tableseeoriginaldocumentpage17</column></row><table>表1基于以下公式(滴答之间的持续时间)*2A(伪时间戳中的位数)2(IPSecSA生存期)。相反,将两边都除以(滴答之间的持续时间),然后对两边以2为底取对数,获得这样的关系(伪时间戳中的位数)2LOG2(IPSecSA生存期)/(滴答之间的持续时间)。基于表1中的表格,32位的伪时间戳字段大小适于小于一毫秒的滴答间持续时间。尽管针对表1描述的公式假设滴答之间的壁挂时钟时间总是相同的,但是表1的公式即使在这种假设不成立时也是合适的。在滴答之间的持续时间周期性不同时,滴答之间的平均时间加上考虑到这种变化的容限被用作"持续时间"。但是,在许多情形中,持续时间的容限是个相对较小的数,因此可以被忽略。3丄3IPSec变换中的伪时间戳放置在各种实施例中,伪时间戳被结合到IPSec变换的各个部分中。在一个实施例中,新的字段被添加到ESP或AH,并且承载伪时间戳值。在另一种实施例中,现有字段被替换或者重载来承载伪时间戳值。例如,一些IPSec变换不针对IV字段指定特定构造。示例包括高级加密标准(AES)计数器模式变换(AES-CTR),以及AESGalois/计数器模式(GCM)变换(AES-GCM)。在一个实施例中,这种变换的IV字段可以承载伪时间戳值。此外,认证数据字段也可以承载伪时间戳值。更一般地,用于伪时间戳的算法可以被定义为IPSec认证算法的一部分。认证数据字段的格式取决于被实现的特定IPSec认证变换。因此,在本方法中,创建了新的IPSec认证变换,该认证变换是对现有认证变换的补充。另外,在认证变换的实现方式中,识别出认证失败的计算机程序代码还包括使指示重发的分组的条件组成认证失败的代码。利用这种方法,基于时钟的重发保护被无缝地集成到IPSec标准中。3.2与IPSEC认证一起使用基于时钟的重发保护可以被与若干种IPSec认证一起使用。例如,基于时钟的重发保护可以被实现在认证算法(例如SHA-1)中,或者实现在组合的加密/认证算法(例如GCM或CCM)中。在这种方法中,在ESP完整性校验值(ICV)处理期间引入了额外的数据和步骤。在检测到重发时,组合算法指示认证失败(例如,如RFC2406的第3.4.4部分所述)。图2是包括伪时间戳的分组认证头部的格式的实施例。位标签204指示遵循图2的格式的分组中数据的位位置。伪时间戳字段206保存伪时间戳。认证值208对遵循该格式的分组进行认证,并且由多个变换中的任何一个确定。在一个实施例中,认证字段210可以包括伪时间戳206的一部分和认证值208的一部分。因此,伪时间戳206可以被接合到认证值208,如图2所示,或者可以以其他方式被包括或编码在认证字段210内。3.2.1包括伪时间戳的HMAC-SHA-1HMAC-SHA-1(RFC2404)是一种广泛使用的IPSec认证方法,并且在许多现有的IPSec硬件加速设备中都得到支持。一种将基于时钟的重发保护添加到HMAC-SHA-1的方法是定义认证字段,以使得认证值208(图2)由HMAC-SHA-1确定。伪时间戳被添加到在RFC2404中描述的认证变换,从而创建新的变换。3.2.2包括伪时间戳的GCMAES-GCM定义ESP加密和认证二者。AES-GCM认证包括ESP认证字段中的认证标签。一种利用具有GCM的基于时钟的重发保护的方法是实现GCM,以使得GCM认证值被用于认证值208。GCM的一个输出是认证标签,因此伪时间戳可以以与SHA1中相同的方式被承载,与认证标签共处一起。3.2.3包括伪时间戳的RSASIGS在一个实施例中,这里所述的方法与被称作RSASigs(如IETF文档Internet-Draftdraft-IETF-msec-ipsec-signatures-03.txt中所述)的基于RSA的数字签名方法结合使用。在RSASigs中,RSA签名被用作IPSec认证方法来实现大的群组中的源发起认证。重发保护是利用这种方法的一个特殊问题,因为执行RSA验证的成本要明显大于针对HMAC的成本。因此,希望将重发保护添加到RSA签名。将基于时钟的重发保护添加到RSA签名的一种方法是定义认证字段,以使得RSA签名被用于认证值208。3.3处理在基于时钟的重发保护的一些实施例中可以执行额外的数据处理步骤。3.3.1SA仓键对于加密密钥的管理,希望在SA创建期间提供关于基于时钟的重发保护被使能的指示。在一个实施例中,如果基于时钟的重发保护被定义为认证方法的一部分,则IPSecSA认证算法值按照IPSec注册方法被分配,如http:〃www.iana.org/assignments/ipsec-registry处的文档^^的。在具有基于时钟的重发保护的SA被使能时,SA被填充以该群组的伪时间,并且密钥管理系统可以被用来将伪时间最初分发到该群组的成员。3.3.2完整性校验(integritycheck)值计算图3是由发送者执行的用于检查的流程300的过程算法的流程图,该过程可以在例如ESP处理的完整性校验值(ICV)计算阶段期间被执行。在步骤302中,计算当前的伪时间戳。该计算可以是基于SA中存储的值的,并且被置于例如认证字段的伪时间戳部分中。在步骤304中,确定完整性校验值。步骤304可以包括如RFC2460的第3.3.4部分所述的计算ICV,并且是基于所挑选的认证方法的。通过例如将伪时间戳接合到ICV计算的其他输入,伪时间戳206可以被包括进来作为ICV计算的输入的一部分。3.3.3完整性校验值验证图4是在ESP过程的ICV验证阶段期间,由发送者执行的示例过程的流程图400。在步骤402中,按照所挑选的认证方法,对于在RFC2406第3.4.4部分中描述的整个字段计算ICV。另外,在接收者处,确定出伪时间戳的伪时间值。例如,伪时间可以从伪时间戳读出或者以其他方式确定。为了获得接收者时钟的伪时间,该时钟可以在检测到接收到分组时生成伪时间值,或者可以读取紧接着接收该分组之前或者接收该分组之后生成的伪时间值。与接收者的时钟相关联的伪时间和伪时间戳的伪时间被进行比较。在步骤404中,确定认证校验是失败还是成功。例如,取决于所使用的认证方法,在接收者处计算出的ICV和认证字段中的ICV可以被进行比较来查看它们是否相同。在步骤406中,如果认证失败,则分组被拒绝(例如,不被处理或者被丢弃)。在步骤408中,检查伪时间戳中的伪时间,来利用基于时钟的重发检查验证分组是否是重发分组。如果基于时钟的重发检查指示该分组是被重发的,则在步骤410中,该分组被拒绝。否则,如果基于时钟的重发检查未指示出该分组是重发的,则在步骤412中,该分组被处理。在替换实施例中,还可以包括其他步骤,也可以以不同的顺序执行上面的步骤,并且/或者上面的步骤中的一些步骤可以被省略或替换。例如,伪时间和ICV的确定可以在在需要它们之前的任何时刻被执行。认证和确定分组是否预期是重发的可以同时被执行或者相对彼此以任何顺序被执行。图5示出了在图4的步骤408处执行的示例的基于时钟的重发检查。在图5中,符号t-2、t-l、t、t+l和t+2代表伪时间线上不同的伪时间值。另外,P表示接收到的分组的伪时间戳的值,L表示在该分组的接收者处的本地时间,并且W表示分组将被接收的期间的时间长度。如果P<L-W,则该分组作为重发的分组而被拒绝。否则,如果P2L-W,则认为验证成功。但是,在一个实施例中,如果P>T+L-W,其中T是伪时伺的预定持续时间,则该分组也被丢弃,因为预期该分组不大可能由于发送者时钟漂移而具有比T+L-W大的伪时间戳。-v3.3.4对IPSec硬件加速模块的影响发送者和接收者时钟的同步减小了不必要的分组丢失的可能性。下面部分描述可以用来使群组伪时间保持同步的方法。3.4群组同步一组伪时间时钟(其中每个时钟被与一组节点中的每个相关联)可以被同步。每个节点可以是独立的设备或者是多个设备的系统。3.4.1自同步所使用的一种自同步方法是接收者可以基于发送者使用的伪时间来调节其时钟。换言之,如果接收者识别出发送者的伪时间领先于接收者时钟的伪时间和伪时间戳的伪时间之间的预定差(即,如果伪时间戳领先于接收者的伪时间),则接收者识别出发送者的时钟在它自己的前面。例如,在图5中,接收者识别出在伪时间大于t+l时,发送者的时钟相对于接收者而言是超前的。在一个实施例中,用于确定接收到的分组是否是重发分组所使用的窗口与为了确定是否对时钟进行同步的伪时间之间的允许时间差相同。在替换实施例中,用于确定接收到的分组是否是重发分组所使用的窗口与用于是否对时钟进行同步的伪时间之间的允许时间差不同。如果接收到包含伪时间戳的IPSec分组,并且本地伪时间值超前于分组中的伪时间字段的值,则预期接收者的本地时钟正滞后于正确的伪时间。作为响应,接收者通过将其本地伪时间设置成从该分组的伪时间戳导出的值,来对其本地伪时间进行调节。在一个实施例中,接收者不将其伪时间向后设置,因为将接收者的时钟向后设置使将来对基于时钟的重发保护的尝试无效。接收者对其时钟进行调节的时间量取决于实现方式。例如,一种实现方式可以挑选将接收者的时间设置为基于时钟的重发保护窗口中的任何位置。在一个实施例中,接收者从不使其时间向前超过预定在一个实施例中,如果伪时间戳指示接收者的时钟预期滞后于发送者的时钟多于预定量,则不进行校正,或者仅进行非常少量的校正,作为在发送者试图恶意破坏时钟的同步的情形中的预防。这样,恶意发送者仅可以使群组中的伪时间向前递增足够小的量,从而使得任何破坏都不显著。3.4.2同步后信道在具有多个发送者的群组中,自同步可能对并非也是作为其他群组成员的接收者的发送者造成影响。即,并非是接收者的发送者将没有机会将它们的时钟与其他群组成员相比较。在这种情形中,如果发送者的时钟比一个群组中的所有接收者的所有时钟都滞后多于预定量,则其他群组成员将连续丢弃该发送者的分组,如同它们是重发的分组一样。在与群组SA相匹配的流量正以单向方式在两个群组成员之间流动时,则可能存在与由接收者接收到的分组中的伪时间戳相关联的值,其向接收者表明发送者看起来与该群组不同步。如果接收到包含伪时间戳的ESP分组,并且本地伪时间值比该分组中的伪时间字段的值大允许的量(例如,比基于时钟的重发保护窗口或者另一个预定量大某一因子),则发送者的本地时钟可能正滞后于正确的伪时间。如果接收者没有任何分组要发回发送者,则该接收者可以向发送者发送具有零长度有效载荷或者没有有效载荷的分组。向发送者发送分组具有这样的效果触发原始分组的发送者使其正滞后的时钟向前。包含滞后伪时间的分组可能指示其发送者具有滞后的时钟,但是该分组也可能仅仅是重发的分组。在一个实施例中,实现基于时钟的重发保护ESP的设备并不在每次其观察到明显滞后的时钟时都发送回分组。相反,接收者可以以不消耗额外带宽的方式有选择地作出响应。接收者可以使用任何对其可用的试探法来确定对滞后时钟的答复是否是合适的。一种这样的方法是随机挑选是否要进行答复,其概率被挑选为限制对可接受值的答复速率。这种方法限制了由于伪时间不同步而导致的预期的分组丢失,同时提供了简单并且无状态的试探法,该试探法也限制了用于时钟同步的答复消息所消耗的带宽。另外,在一个实施例中,如果伪时间戳指示发送者时钟正滞后大于预定限度,则不发送答复。图6是由接收者执行的用于对发送者和接收者的时钟进行同步的示例过程的流程图。在步骤602中,接收者基于由发送者发送的分组中的诸如伪时间戳之类的信息,确定发送者时钟的伪时间。例如,伪时间可以从伪时间戳中被读取或者以其他方式从伪时间戳确定。接收者还根据与该接收者相关联的时钟确定接收到该分组的伪时间。例如,时钟可以在检测到接收到分组时生成伪时间值,或者可以读取紧接着接收到该分组之前或者之后生成的伪时间值。与接收者的时钟相关联的伪时间和伪时间戳的伪时间被进行比较。在步骤604中,确定从该分组导出的伪时间是否比基于接收者处的伪时间的第一预定伪时间大预定量。如果从该分组导出的伪时间比第一预定伪时间大预定量,则方法前进到步骤606,因为假设接收者的时钟比发送者的时钟滞后。在步骤606中,使接收者的时钟向前,使得预期其在给定容限内与发送者的时钟同步。该方法可以在此点结束。或者,在一个实施例中,在步骤606中使时钟向前后,该方法可选地前进到步骤612。在此替换中,分组被正常地处理,因为通过基于该分组调节接收者的时钟,接收者实质上正将该分组作为合法的而接受。如果从该分组导出的伪时间小于预定量,则该方法前进到步骤608。在步骤608中,检查从伪时间戳导出的伪时间,来查看其是否在也是基于接收者的时钟但是比第一预定伪时间早的第二预定伪时间之前。如果从伪时间戳导出的伪时间在第二预定伪时间之前,则该方法前进到步骤610。在步骤610中,接收者向发送者发送分组,并且重复方法600,除了在接收者处检查发送者的时钟是否滞后于接收者的时钟之外。否则,如果从伪时间戳导出的伪时间在第二预定伪时间之前,则方法600在步骤612处结束。在替换实施例中,可以包括其他步骤,可以以不同顺序执行上述步骤,并且/或者上面的步骤中的一些步骤可以被省略或替换。例如,每个伪时间的确定可以在需要每个伪时间之前的任何时刻被执行。针对方法400执行的用于确定伪时间的步骤可以作为方法600中的用于确定伪时间的步骤。方法400和600可以共享用于确定伪时间的步骤,并且对于两种方法,伪时间仅需要被确定一次。3.4.3利用密钥管理同步在自动群组密钥管理可用时,其可以被周期性地用来对群组进行重同步。例如,GDOI协议包括被周期性地发送到群组成员来更新该群组的状态的Rekey消息。Rekey消息可以被修改来将每个SA的"当前"伪时间发送到该群组的每个成员。3.5密钥管理接口在一个实施例中,密钥管理向安全性群组中的每个成员提供了下面的信息作为将对其应用基于时钟的重发保护的每个SA的一部分(1)指示基于时钟的重发保护被使能的属性;(2)群组的当前伪时间;以及(3)可选地,伪时间戳和接收者时钟之间的最大允许伪时间差的值。最大允许伪时间差的值可以与基于时钟的重发保护窗口大小相同,如果该变换支持可变窗口大小的话。4.0硬件概述图7示出了计算机系统700的框图,计算机系统700仅是可以在其上实现本发明的实施例的机器的一个示例。计算机系统700包括总线702或用于传输信息的其他通信机制,以及于总线702相耦合来处理信息的处理器704。计算机系统700还包括主存储器706,例如,随机存取存储器(RAM)或其他动态存储设备,主存储器706耦合到总线702用于存储信息和要由处理器704执行的指令。主存储器706还可以用于在执行要由处理器704执行的指令期间存储临时差异或其他中间信息。计算机系统700还包括只读存储器(ROM)708或其他静态存储设备,它们耦合到总线702用于存储静态信息和用于处理器704的指令。诸如磁盘或光盘之类的存储设备710被提供并被耦合到总线702来存储信息和指令。计算机系统700可以经由总线被耦合到显示器712,例如,阴极射线管(CRT),用于向计算机用户显示信息。包括字母数字和其他按键的输入设备714被耦合到总线702用于将信息和命令选择传输到处理器704。另一类用户输入设备是光标控制设备716,例如,鼠标、轨迹球、或者光标方向键,用于向处理器传输方向信息和命令选择,并且用于控制光标在显示器712上的移动。输入设备一般具有在两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,这允许设备指定平面上的位置。本发明涉及对用于基于时钟的重发保护的计算机系统700的使用。根据本发明一个实施例,基于时钟的重发保护由计算机系统700响应于处理器704执行主存储器706中包含的一条或多条指令的一个或多个序列。这种指令可以从另一种计算机可读介质(例如,存储设备710)中读入到主存储器706中。执行主存储器706中包含的指令序列致使处理器704执行这里所述的处理步骤。多处理器布置中的一个或多个处理器也可以被用来执行主存储器706中包含的指令序列。在替换实施例中,硬连线电路可以别用来替换软件指令或者与软件指令组合来实现本发明。因此,本发明的实施例不限于硬件电路和软件的任意特定组合。这里所使用的术语"计算机可读介质"指参与向处理器704提供指令以执行的任何介质。这种介质可以采用许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如光或磁盘,例如,存储设备710。易失性介质包括动态存储器,例如,主存储器706。传输介质包括同轴线缆、铜缆和光纤,包括包含总线702的线路。传输介质也可以采用声波或光波的形式,例如,在无线电波和红外数据通信期间生成的那些。计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带、或者任何其他磁介质,CD-ROM、任何其他光介质,穿孔卡、纸带、具有孔状图案的任何其他物理介质,RAM、PROM、EPROM、FLASH-EPROM、任何其他存储器芯片或盒带,如下文所述的载波,或者计算机可从其读取的任何其他介质。计算机可读介质仅是可在实现本发明实施例的机器中使用的机器可读介质的一个示例。各种形式的计算机可读介质可用来传送一条或多条指令的一个或多个序列到处理器704以执行。例如,这些指令最初可能被存储在远程计算机的磁盘上。远程计算机可以将指令载入到其动态存储器中,然后利用调制解调器通过电话线发送这些指令。计算机系统700本地的调制解调器可以接收电话线上的数据,并且使用红外反射器来将数据转换成红外信号。耦合到总线702的红外探测器可以接收以红外信号形式传送的数据,并且将该数据放置到总线702上。总线702将数据传送到主存储器706,处理器704从主存储器706取回并且执行指令。主存储器706接收到的指令可以可选地在被处理器704执行之前或之后被存储在存储设备710上。计算机系统700还包括耦合到总线702的通信接口718。通信接口718提供耦合到被连接到本地网络702的网络链接720的双向数据通信。例如,通信接口718可以是综合业务数字网(ISDN)卡或者调制解调器,用于提供到相应类型的电话线的通信连接。作为另一个示例,通信接口718可以是局域网(LAN)卡,用于提供到兼容LAN的数据通信连接。也可以实现无线连接。在任何这种实现方式中,通信接口718发送和接收传送代表各种类型信息的数字数据流的电、电磁或光信号。网络链接720—般通过一个和多个网络提供到其他数据设备的数据通信。例如,网络设备720可以提供通过本地网络722到主机计算机724的连接或者到由因特网服务提供商(ISP)726运营的数据装备的连接。ISP726又通过现在通常被称作"因特网"728的广域分组数据通信网络提供数据通信服务。本地网络722和因特网728二者都是传送数字数据流的电、电磁或者光信号。通过各种网络的信号和网络链接720上并且通过通信接口718的信号(其传送去往和来自计算机系统700的数字数据)都是传输信息的载波的示例形式。计算机系统700可以通过一个或多个网络、网络链接720和通信接口718发送消息和接收数据,包括程序代码。在因特网示例中,服务器730可以通过因特网728、ISP726、本地网络722和通信接口718发送所请求的应用程序代码。根据本发明,一种这样下载的应用提供这里所述的基于时钟的重发保护。所接收到的代码可在其被接收时由处理器704执行,并且/或者存储在存储设备710或者其他非易失性存储设备中用于以后执行。这样,计算机系统700可以获得载波形式的应用代码。5.0扩展和替换在前面的说明书中,已结合本发明的特定实施例描述了本发明。但是,将清楚在不脱离本发明的宽广的精神和范围的情况下,可以对其作出各种修改和改变。因此,说明书和附图应当被认为是说明性的而非限制性的。权利要求1.一种用于检测重发的分组的机器实现方法,包括确定与在接收者处对由发送者发送的分组的接收相关联的第一伪时间;基于所述分组中的信息确定第二伪时间;以及基于对所述第一伪时间和所述第二伪时间的比较,确定是否处理所述分组;其中,所述第一伪时间和所述第二伪时间中的每个是由所述接收者和所述发送者分别从代表真实时间中的时刻序列的值序列独立确定的。2.如权利要求1所述的机器实现方法,其中,所述确定是否处理包括确定所述第二伪时间是否比所述第一伪时间早多于预定量。3.如权利要求1所述的机器实现方法,还包括如果所述第二伪时间比所述第一伪时间早多于预定量,则拒绝所述分组。4.如权利要求1所述的机器实现方法,还包括如果所述第二伪时间不比所述第一伪时间早多于预定量,则处理所述分组。5.如权利要求1所述的机器实现方法,还包括设置用于在所述确定是否处理所述分组时使用的窗口大小,并且其中所述确定是否处理所述分组至少包括确定所述第二伪时间是否比所述第一伪时间早多于一个窗口大小。6.如权利要求1所述的机器实现方法,其中,所述第二伪时间是从所述分组的字段中的伪时间戳确定的。7.如权利要求1所述的机器实现方法,其中,所述第二伪时间是从所述分组的认证字段中的伪时间戳确定的,其中所述分组的认证字段还包含可以用来对所述分组进行认证的认证信息。8.如权利要求1所述的机器实现方法,其中,所述发送者和接收者参与包括多个其他发送者和多个其他接收者的网络,并且其中确定是否处理所述分组是基于由所述第一伪时间和所述第二伪时间所代表的恒定量的状态信息并且在不针对每个发送者维护其他状态信息的情况下执行的。9.一种用于检测重发的分组的机器实现方法,包括确定与分组的接收相关联的第一伪时间;基于所述分组中的信息确定第二伪时间;以及基于所述第一伪时间和所述第二伪时间确定是否处理所述分组;其中,所述第一伪时间和所述第二伪时间是从被生成来代表时间中的时刻序列的数字序列挑选出的;其中,所述第一伪时间是从与所述分组相关联的伪时间戳确定的;其中,所述伪时间戳是在所述分组的可从其确定伪时间的伪时间戳中包括的信息;其中,所述分组包括认证字段,所述认证字段包括可用来认证分组的信息;并且其中,所述伪时间戳字段是与所述认证字段分离的字段。10.—种用于检测重发的分组的机器实现方法,包括确定与分组的接收相关联的第一时间值,其中,所述第一时间值是从作为代表时间中的吋刻序列的数字序列的一组时间值中选出的;基于所述分组中的信息确定第二时间值,其中,所述第二时间值是从所述一组时间值中选出的;以及基于所述第一时间值和所述第二时间值确定是否处理所述分组。11.如权利要求IO所述的机器实现方法,其中,所述一组时间值是壁挂时钟的一组时间值。12.—种用于检测重发的分组的装置,包括用于确定与在接收者处对由发送者发送的分组的接收相关联的第一伪时间的装置;用于基于所述分组中的信息确定第二伪时间的装置;以及用于基于对所述第一伪时间和所述第二伪时间的比较确定是否处理所述分组的装置;其中,所述第一伪时间和所述第二伪时间中的每个是由所述接收者和所述发送者分别从代表真实时间中的时刻序列的值序列独立确定的。13.如权利要求12所述的装置,还包括用于设置用于在所述确定是否处理所述分组时使用的窗口大小的装置,并且其中所述确定是否处理所述分组至少包括确定所述第二伪时间是否比所述第一伪时间早多于一个窗口大小。14.一种用于检测重发的分组的装置,包括一个或多个处理器;通信耦合到所述一个或多个处理器的计算机可读介质;在所述计算机可读介质中存储的一个或多个指令序列,其中所述一个或多个指令序列在被所述一个或多个处理器执行时使所述一个或多个处理器执行以下步骤确定与在接收者处对由发送者发送的分组的接收相关联的第一伪时间;基于所述分组中的信息确定第二伪时间;以及基于对所述第一伪时间和所述第二伪时间的比较,确定是否处理所述分组;其中,所述第一伪时间和所述第二伪时间中的每个是由所述接收者和所述发送者分别从代表真实时间中的时刻序列的值序列独立确定的。15.如权利要求14所述的装置,其中,所述确定是否处理包括确定所述第二伪时间是否比所述第一伪时间早多于预定量。16.如权利要求14所述的装置,还包括如果所述第二伪时间比所述第一伪时间早多于预定量,则拒绝所述分组。17.如权利要求14所述的装置,还包括如果所述第二伪时间不比所述第一伪时间早多于预定量,则处理所述分组。18.如权利要求14所述的装置,还包括设置用于在所述确定是否处理所述分组时使用的窗口大小,并且其中所述确定是否处理所述分组至少包括确定所述第二伪时间是否比所述第一伪时间早多于一个窗口大小。19.如权利要求14所述的装置,其中,所述第二伪时间是从所述分组的字段中的伪时间戳确定的。20.如权利要求14所述的装置,其中,所述第二伪时间是从所述分组的认证字段中的伪时间戳确定的,其中所述分组的认证字段还包含可以用来对该分组进行认证的认证信息。21.如权利要求14所述的装置,其中,所述发送者和接收者参与包括多个其他发送者和多个其他接收者的网络,并且其中确定是否处理所述分组是基于由所述第一伪时间和所述第二伪时间所代表的恒定量的状态信息并且在不针对每个发送者维护其他状态信息的情况下执行的。全文摘要网络中的节点(102、104)在消息或分组中包括从本地伪时间时钟(108)导出的伪时间戳(206)。当接收到分组时,确定代表发送该分组的时间的第一时间,并且确定代表接收到该分组的第二时间。如果第二时间和第一时间之间的差大于预定量,则认为该分组是陈旧的并且被拒绝(410),从而阻止了重发。因为每个节点维护其自己的时钟和时间,所以为了保持时钟相对同步,如果与接收到的分组的时间戳相关联的时间比接收者处的时间晚一定量,则接收者的时钟被向前(606)设置某一量,该量被预期使得接收者和发送者的时钟同步。但是,接收者从不将其时钟向后设置,以防止攻击。文档编号H04L12/56GK101099320SQ200680001665公开日2008年1月2日申请日期2006年2月6日优先权日2005年2月15日发明者大卫·A·麦格鲁,布雷恩·E·威斯申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1