一种消息认证方法、系统和装置与流程

文档序号:14730783发布日期:2018-06-19 19:31阅读:135来源:国知局
一种消息认证方法、系统和装置与流程
本发明涉及通信网络中的路由安全技术,尤其涉及一种消息认证方法、系统和装置。
背景技术
:现有数据网络大多以互联网协议(IP,InternetProtocol)技术为基础,路由器是以IP技术为基础的网络上的核心设备,它通过运行在其上的路由协议,维护一套路由表,并根据路由表转发接收到的IP数据包。发送者发出的IP数据包经多个路由器转发后,被传输到目的地。为了维护一套路由表,不同路由器上的路由协议之间需要交互路由消息,以实现路由表信息的创建、更新、学习功能。由于路由消息在公共网络中传输,其信道由多个网络节点共享,因此攻击者可以很容易的拦截并伪造或篡改路由消息。路由器一旦接收这种错误的路由消息,将产生错误的路由表;路由协议根据错误的路由表转发IP数据包时,将无法把数据包传输到目的地。为解决这一问题,必须为路由协议提供完整性保护机制,以防止攻击者伪造或篡改路由消息。完整性保护机制的基本思路是使用密钥材料为路由消息生成消息认证码(这一过程通常使用单向函数或限门单向函数),并将消息认证码随同消息一起发送给接收者,接收者收到路由消息和认证码后,使用对应的密钥材料对消息和其认证码进行验证,只有通过验证的路由消息才是未被攻击者篡改的正确消息。由于攻击者没有密钥材料,其将无法伪造、篡改消息,并生成正确的消息认证码。这种机制使得只有拥有密钥材料的路由器生成的路由消息才能通过验证,没有密钥材料的攻击者生成的路由消息将无法通过验证,从而有效防止了攻击者伪造和篡改路由消息。传输控制协议认证选项(TCP-AO,TransmissionControlProtocolAuthenticationOption)是很多路由协议如边界网关协议(BGP,BorderGatewayProtocol)、路径计算单元(PCE,PathComputationElement)、标签分发协议(LDP,LabelDistributionProtocol)、组播源发现协议(MSDP,MulticastSourceDiscoveryProtocol)等的完整性保护机制。它定义了一个新的TCP选项:authentication(认证)选项。路由协议将生成的消息认证码存储在该选项中,随着路由协议一起传输给对端,对端则通过验证authentication选项的正确性来判断路由协议数据是否被修改了。TCP-AO技术采用sequencenumber(序列号)来防止replay(重放)攻击。TCP协议头有一个序列号(sequencenumber)字段,该字段长度为32bit。在建立连接时,TCP协议会随机生成一个初始序列号,之后每次收发数据序列号都会相应的增加。这样每次发送路由协议数据包时,TCP的序列号都不同。TCP-AO就是利用这种机制防止重放攻击的。然而,这种基于序列号的技术存在如下问题:一、当sequencenumber在序列号取值范围中取遍所有的值时,TCP-AO协议将会重复使用之前的序列号,此时攻击者将可使用之前相同序列号的数据包对路由协议执行重放攻击;二、当路由器之间的TCP连接断开后又重新连接时,断链前后的序列号可能有重叠部分,此时攻击者也可能实行重放攻击;三、当路由器重启时,重启前后建立的TCP连接的序列号也可能重叠,此时攻击者也可能实行重放攻击。也就是说,当sequencenumber重复出现时,攻击者可以用具有同样sequencenumber的旧的数据报文代替新的数据报文,发起重放攻击。由于报文中包含有路由协议数据,接收者将会收到一个旧的路由协议数据;而如果这个旧的路由协议数据是一个路由更新消息,则接收者将使用旧的路由更新消息来取代目前的路由信息,即路由协议将采用过时的路由信息进行路由,从而导致路由失败。由此可以看出,解决重放攻击的问题,对路由协议的安全非常关键。目前解决此问题的一种方法是增加sequencenumber字段的长度,以减少sequencenumber字段的重叠。从理论上说,只要sequencenumber字段足够长,就不会有sequencenumber重叠的问题,也就不会出现重放攻击的安全隐患。然而,无限制的增大sequencenumber字段将会增加通信开销。而在实际应用中,由于sequencenumber不可能真正无限大,因此,理论上说,增大sequencenumber字段并不能从根本上解决重放攻击的问题。技术实现要素:有鉴于此,本发明的主要目的在于提供一种消息认证方法、系统和装置,以解决现有TCP-AO技术中存在的重放攻击问题。为达到上述目的,本发明的技术方案是这样实现的:本发明提供了一种消息认证方法,该方法包括:发送端和接收端为每个建立的连接保存初始化的时间戳,并定期更新所述时间戳,所述时间戳包括发送时间戳和接收时间戳;在需要通过所述连接发送数据时,发送端依据待发送的数据报文、保存的发送时间戳和密钥材料,生成消息认证码,并将生成的消息认证码随同发送数据的消息一起发送给接收端;接收端收到所述消息时,依据保存的接收时间戳、密钥材料和消息中的数据报文,认证所述消息认证码的正确性。所述发送端和接收端为每个建立的连接保存初始化的时间戳,具体为:所述发送端和接收端通过三次握手协议的流程建立连接,并交互各自的时间戳;交互完毕后,所述发送端和接收端为建立的连接保存初始化的时间戳,且发送端保存的发送时间戳的取值与接收端保存的接收时间戳的取值相同,发送端保存的接收时间戳的取值与接收端保存的发送时间戳的取值相同。所述定期更新时间戳具体为:所述发送端和接收端的其中一方在设置的定时器到期时,发起时间戳的更新过程,在更新过程中,所述发送端和接收端交互各自的新时间戳;交互完毕后,所述发送端和接收端更新各自保存的时间戳,且所述发送端的新的发送时间戳的取值与接收端的新的接收时间戳的取值相同,发送端的新的接收时间戳的取值与接收端的新的发送时间戳的取值相同。本发明还提供了一种消息认证系统,该系统包括:发送端和接收端,发送端和接收端,用于为每个建立的连接保存初始化的时间戳,并定期更新所述时间戳,所述时间戳包括发送时间戳和接收时间戳;发送端还用于,在需要通过所述连接发送数据时,依据待发送的数据报文、保存的发送时间戳和密钥材料,生成消息认证码,并将生成的消息认证码随同发送数据的消息一起发送给接收端;接收端还用于,在收到所述消息时,依据保存的接收时间戳、密钥材料和消息中的数据报文,认证所述消息认证码的正确性。所述发送端和接收端进一步用于,通过三次握手协议的流程建立连接,并交互各自的时间戳;交互完毕后,所述发送端和接收端为建立的连接保存初始化的时间戳,且发送端保存的发送时间戳的取值与接收端保存的接收时间戳的取值相同,发送端保存的接收时间戳的取值与接收端保存的发送时间戳的取值相同。所述发送端和接收端的其中一方在设置的定时器到期时,发起时间戳的更新过程,在更新过程中,所述发送端和接收端交互各自的新时间戳;交互完毕后,所述发送端和接收端更新各自保存的时间戳,且所述发送端的新的发送时间戳的取值与接收端的新的接收时间戳的取值相同,发送端的新的接收时间戳的取值与接收端的新的发送时间戳的取值相同。本发明还提供了一种消息认证装置,包括:时间戳处理模块,用于为每个建立的连接保存初始化的时间戳,并定期更新所述时间戳,所述时间戳包括发送时间戳和接收时间戳;发送处理模块,用于在所述装置作为发送端需要通过所述连接发送数据时,依据待发送的数据报文、保存的发送时间戳和密钥材料,生成消息认证码,并将生成的消息认证码随同发送数据的消息一起发送给接收端;接收处理模块,用于在所述装置作为接收端收到来自发送端的消息时,依据保存的接收时间戳、密钥材料和消息中的数据报文,认证消息认证码的正确性。发送端的时间戳处理模块与接收端的时间戳处理模块,通过三次握手协议的流程建立连接,并交互各自的时间戳;交互完毕后,发送端的时间戳处理模块和接收端的时间戳处理模块为建立的连接保存初始化的时间戳,且发送端的时间戳处理模块保存的发送时间戳的取值与接收端的时间戳处理模块保存的接收时间戳的取值相同,发送端的时间戳处理模块保存的接收时间戳的取值与接收端的时间戳处理模块保存的发送时间戳的取值相同。发送端和接收端的时间戳处理模块的其中一方在设置的定时器到期时,发起时间戳的更新过程,在更新过程中,发送端和接收端的时间戳处理模块交互各自的新时间戳;交互完毕后,发送端和接收端的时间戳处理模块更新各自保存的时间戳,且发送端的新的发送时间戳的取值与接收端的新的接收时间戳的取值相同,发送端的新的接收时间戳的取值与接收端的新的发送时间戳的取值相同。本发明所提供的一种消息认证方法、系统和装置,利用时间戳的不同来防止sequencenumber重复出现时带来的重放攻击问题;由于时间戳定期更新,因此即使sequencenumber相同,而由于时间戳不同,生成的消息认证码也会不同,从而可以很好的解决现有TCP-AO技术中存在的重放攻击问题。附图说明图1为本发明实施例的一种消息认证方法的流程图;图2为本发明实施例中为建立的连接保存初始化的时间戳的流程图;图3为本发明实施例中定期更新时间戳的流程图。具体实施方式下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。本发明实施例提供的一种消息认证方法,如图1所示,主要包括:步骤101,发送端和接收端为每个建立的连接保存初始化的时间戳,并定期更新该时间戳,该时间戳包括发送时间戳和接收时间戳。本发明的实施例扩展TCP协议,定义了一种新的TCP-AO时间戳选项,如下表1所示:KindLengthData表1其中,Kind为选项的类型定义,长度为一个字节,目前50以后的类型定义都没有定义,因此,本发明实施例定义新的TCP-AO时间戳选项内容如下:TCP_AO_T的取值为50,用以标识该类型为TCP-AO时间戳选项;Length为TCP-AO时间戳选项的数据段长度,本发明实施例中定义TCP-AO时间戳选项的数据段长度为10字节;Data字段包含两个时间数据,Time1和Time2,其中,Time1为发送时间戳,Time2为接收时间戳。Time1和Time2的时间格式可以取任意不超过5字节长度的标识形式,例如,取1979年1月1日到当前的时间的秒数等等。任何时间格式的Time1和Time2都属于本发明的保护范围。如此一来,TCP-AO时间戳选项的基本形式如下表2所示:5010Time1Time2表2本发明的实施例不重用现有的TCP时间戳选项,而是定义新的TCP-AO时间戳选项,目的是防止现有TCP协议栈在进行往返时间测量(RTTM,RoundTripTimeMeasurement)和防止序号环绕(PAWS,ProtectionAgainstWrappedSequencenumber)过程时引起TCP-AO的处理流程,而导致路由协议的TCP-AO处理流程出错。本发明的实施例定义了TCP-AO时间戳选项后,TCP-AO的防重放攻击技术就会与现有的RTTM和PAWS过程完全区分开来,这样就不用再改动现有的TCP协议栈代码了,向后兼容性好。当然,如果采用另一种方式,即修改现有的TCP时间戳选项定义,使其区分现有时间戳的用处,然后修改TCP协议栈的处理流程,使其能按照不同的方式处理TCP时间戳选项。这种方式也是可行的,但这种方式对现有TCP协议改动较大,会带来兼容性问题。本发明的实施例也涵盖这种方式。本发明的实施例还定义了TCP-AO的时间戳数据结构,即在每个路由器上为每个TCP连接建立两个时间戳存储空间,一个是发送数据的时间戳,一个是接收数据的时间戳,如下表3所示:源端口号目的端口号发送时间戳(SendT)接收时间戳(RecvT)表3其中,源端口号和目的端口号都是16位的数字,用于标识一对TCP连接,SendT和RecvT的格式说明与表2中的Time1和Time2分别相同,分别表示发送时间戳和接收时间戳。需要说明的是,本发明的实施例定义了TCP-AO的时间戳数据结构的格式,而实际应用中,也可以将SendT和RecvT字段合并在TCPCB数据结构中。本发明的实施例涵盖这种方式。时间戳选项和时间戳数据结构的区别在于:时间戳选项是用来发送时间戳的,时间戳数据结构是TCP-AO用来生成消息认证码的。步骤102,在需要通过该连接发送数据时,发送端依据待发送的数据报文、保存的发送时间戳和密钥材料,生成消息认证码,并将生成的消息认证码随同发送数据的消息一起发送给接收端。步骤103,接收端收到该消息时,依据保存的接收时间戳、密钥材料和消息中的数据报文,认证消息认证码的正确性。上述步骤103中,发送端和接收端为每个建立的连接保存初始化的时间戳,具体可采用以下方式:发送端和接收端通过三次握手协议的流程建立连接,并交互各自的时间戳;交互完毕后,发送端和接收端为建立的连接保存初始化的时间戳,且发送端保存的发送时间戳的取值与接收端保存的接收时间戳的取值相同,发送端保存的接收时间戳的取值与接收端保存的发送时间戳的取值相同。下面以TCP客户端和TCP服务器的交互为例进行说明,当TCP连接建立时,初始化本发明实施例中的时间戳数据结构的具体流程如图2所示,主要包括:步骤201,TCP客户端向TCP服务器发送同步(SYN)包,同时发送自身的时间戳。该时间戳可以从系统时钟获取。其中,Syn=j,TCP客户端发送Syn包(Syn=j)到TCP服务器时,序列号的值j是0-232之间随机产生的一个数据;TCP客户端发送的TCP-AO-T选项(TCP-AO-T1)中的Time1为TCP客户端发送SYN包时的当前时间,Time2的值为0。TCP客户端发送完后,进入SYN_SEND状态,等待TCP服务器确认。步骤202,TCP服务器向TCP客户端返回确认,包含以下内容:Ack=j+1,Syn=k,TCP-AO-T2,TCP-AO。其中,Ack=j+1表示TCP服务器确认TCP客户端的Syn;Syn=k表示TCP服务器自己也发送一个SYN包,其中的序列号的值k是0-232之间随机产生的一个数;TCP-AO-T2是一个TCP-AO-T选项,该选项中的Time1为TCP服务器返回确认时的当前时间,Time2的取值与步骤201中TCP-AO-T选项(TCP-AO-T1)的Time1字段的取值相同。TCP服务器返回确认后,进入SYN_RECV状态,等待TCP客户端的确认。步骤203,TCP客户端向TCP服务器返回确认,包含以下内容:Ack=k+1,TCP-AO-T3,TCP-AO。其中,Ack=k+1表示TCP客户端确认TCP服务器的Syn;TCP-AO-T3是一个TCP-AO-T选项,该选项中的Time1为0,Time2的取值与步骤202中TCP-AO-T选项(TCP-AO-T2)的Time1字段的取值相同。TCP客户端返回确认后,进入ESTABLISHED状态,完成握手过程。之后双方就可以交互路由协议数据了。TCP客户端和TCP服务器交互的时间戳,在得到确认后,将被保存到各自的数据结构(表3所示)中,TCP客户端和TCP服务器的序列号则保存在TCPCB数据结构的对应字段中。本实施例在TCP连接建立时,初始化时间戳信息,从而为解决如下问题做准备:路由器之间的TCP连接重新建立前后、或者路由器重启前后,序列号sequencenumber可能重复,存在重放攻击的危险。另外,当TCP连接很长时间时,sequencenumber可能重复,一旦重复则将可能带来重放攻击的隐患。因此,本申请的实施例需要定期更新时间戳,具体可以采用以下方式:发送端和接收端的其中一方在设置的定时器到期时,发起时间戳的更新过程,在更新过程中,发送端和接收端交互各自的新时间戳;交互完毕后,发送端和接收端更新各自保存的时间戳,且发送端的新的发送时间戳的取值与接收端的新的接收时间戳的取值相同,发送端的新的接收时间戳的取值与接收端的新的发送时间戳的取值相同。下面以TCP客户端和TCP服务器的交互为例进行说明,定期更新时间戳的具体流程如图3所示,主要包括:步骤301,TCP客户端向TCP服务器发送路由协议数据,同时发送自己的新时间戳。其中,TCPHD为TCP协议头,一般包含sequencenumber;TCP-AO为TCP认证选项;RPD为路由协议的数据,也就是TCP协议承载的路由协议数据。TCP-AO-T4是一个TCP-AO-T选项,该选项中的Time1为TCP客户端发送时的当前时间,Time2的值为0。步骤302,TCP服务器应答TCP客户端的新时间戳,同时发送自己的新时间戳。其中,TCPHD为TCP协议头,一般包含sequencenumber;TCP-AO为TCP认证选项;RPD为路由协议的数据,也就是TCP协议承载的路由协议数据;TCP-AO-T5是一个TCP-AO-T选项,该选项中的Time1为TCP服务器应答时的当前时间,Time2的值为步骤301中TCP-AO-T选项(TCP-AO-T4)的Time1字段的值。步骤303,TCP客户端应答TCP服务器的新时间戳。其中,TCPHD为TCP协议头,一般包含sequencenumber;TCP-AO为TCP认证选项;RPD为路由协议的数据,也就是TCP协议承载的路由协议数据;TCP-AO-T6是一个TCP-AO-T选项,该选项中的Time1为0,Time2的值为步骤302中TCP-AO-T选项(TCP-AO-T5)的Time1字段的值。需要说明的是,上述实施例中定期更新时间戳数据结构的操作是从TCP客户端发起的,当然,实际应用中也可以先从TCP服务器发起。操作的触发条件可以是定时器,在发起方设置定时器,当定时器到期时,发起方向对端发送时间戳更新的选项。定时器的时间可以由运营商自行配置调整。TCP客户端和TCP服务器交互的时间戳,在得到确认后,将被保存到各自的数据结构(表3所示)中。更新时间戳数据结构的过程对sequencenumber的处理没有影响。本实施例更新各路由器的时间戳,能有效避免以下问题:路由器之间的TCP连接保持很长时间后,sequencenumber重复情况,会带来重放攻击隐患。前述实施例的主要目的是为了维护一个TCP-AO的时间戳数据结构,维护此TCP-AO的时间戳数据结构用以完成路由协议的完整性保护。发送端在需要通过建立的连接发送数据时,其生成消息认证码的方法如下:MAC=MAC_alg(traffic_key,message,SendT)其中,MAC表示发送端计算所得的消息认证码,MAC_alg表示消息认证码的计算方法,traffic_key表示密钥材料,message表示TCP数据报文,SendT表示发送端保存的对应该连接的发送时间戳。接收端验证消息认证码正确性的方法如下:MAC=MAC_alg(traffic_key,message,RecvT)其中,MAC表示接收端计算所得的消息认证码,MAC_alg表示消息认证码的计算方法,traffic_key表示密钥材料,message表示TCP数据报文,RecvT表示接收端保存的对应该连接的接收时间戳。经过图2和图3所示的实施例后,可以保证发送端保存的SendT与接收端保存的RecvT相同。将接收端计算所得的消息验证码与发送端发送的消息验证码进行比较,如果两者一致,则验证正确;否则,验证错误。由此可以看出,本发明的实施例可以很好的解决现有TCP-AO技术的以下几个问题:一、当TCP连接重启时(包括路由器系统重启和TCP连接断开后重连两种情况),sequencenumber可能会重叠,引起重放攻击;二、当TCP连接时间过长时,sequencenumber可能会重叠,引起重放攻击。对于第一个问题,根据本发明的实施例,由于每次重新建立TCP连接时,都会重新取当前的系统时间为时间戳,而每次取得系统时间是不同的,且必然会递增。因此,将时间戳加入到生成消息认证码的过程中后,就算sequencenumber重叠,由于时间戳不同,生成的消息认证码也不同。这样就可以很好的解决TCP连接重启时的重放攻击问题。对于第二个问题,根据本发明的实施例,当TCP连接时间过长时会更新时间戳,只要在sequencenumber出现重叠前更新时间戳,生成的消息认证码就会不同,从而解决了TCP连接时间过长时的重放攻击问题。另外,在本发明的实施例中,时间戳只会定期更新并通过TCP-AO时间戳选项发送,因此,本发明的实施例可以节省传输的开销。在本发明的实施例中,TCP-AO自身设计的基于sequencenumber的防重放攻击机制并没有被丢弃,因此本发明的实施例是对现有TCP-AO机制的增强,而不会对现有TCP-AO机制造成太大影响。本本发明的实施例只改变消息认证码的生成机制,而不改变增加TCP-AO时间戳选项后的TCP协议交互流程,因此添加本实施例的功能后,TCP协议在使用TCP-AO选项时的做法与现有标准没有区别。本发明的实施例使得消息认证码的值不仅由sequencenumber和路由协议信息决定,还由时间戳决定,从而防止了sequencenumber重复时的重放攻击问题。综上所述,本发明的实施例可以解决现有技术存在的问题,使得Internet安全关联和密钥管理协议(ISAKMP,InternetSecurityAssociationandKeyManagementProtocol)可以借助EAP(身份验证)协议和diameter协议进行多种方式的认证过程,以满足不同拓扑结构的路由器网络进行密钥管理的需要。另外,对应本发明实施例的消息认证方法,本发明的实施例还提供了一种消息认证系统,包括:发送端和接收端。发送端和接收端,用于为每个建立的连接保存初始化的时间戳,并定期更新所述时间戳,所述时间戳包括发送时间戳和接收时间戳;发送端还用于,在需要通过该连接发送数据时,依据待发送的数据报文、保存的发送时间戳和密钥材料,生成消息认证码,并将生成的消息认证码随同发送数据的消息一起发送给接收端;接收端还用于,在收到该消息时,依据保存的接收时间戳、密钥材料和消息中的数据报文,认证消息认证码的正确性。较佳的,发送端和接收端可进一步用于,通过三次握手协议的流程建立连接,并交互各自的时间戳;交互完毕后,发送端和接收端为建立的连接保存初始化的时间戳,且发送端保存的发送时间戳的取值与接收端保存的接收时间戳的取值相同,发送端保存的接收时间戳的取值与接收端保存的发送时间戳的取值相同。较佳的,发送端和接收端的其中一方在设置的定时器到期时,发起时间戳的更新过程,在更新过程中,发送端和接收端交互各自的新时间戳;交互完毕后,发送端和接收端更新各自保存的时间戳,且发送端的新的发送时间戳的取值与接收端的新的接收时间戳的取值相同,发送端的新的接收时间戳的取值与接收端的新的发送时间戳的取值相同。本发明的实施例还提供了一种消息认证装置,具备发送端和接收端的功能,该装置包括:时间戳处理模块、发送处理模块和接收处理模块。其中,时间戳处理模块,用于为每个建立的连接保存初始化的时间戳,并定期更新所述时间戳,所述时间戳包括发送时间戳和接收时间戳;发送处理模块,用于在所述装置作为发送端需要通过连接发送数据时,依据待发送的数据报文、保存的发送时间戳和密钥材料,生成消息认证码,并将生成的消息认证码随同发送数据的消息一起发送给接收端;接收处理模块,用于在所述装置作为接收端收到来自发送端的消息时,依据保存的接收时间戳、密钥材料和消息中的数据报文,认证消息认证码的正确性。较佳的,发送端的时间戳处理模块与接收端的时间戳处理模块,通过三次握手协议的流程建立连接,并交互各自的时间戳;交互完毕后,发送端的时间戳处理模块和接收端的时间戳处理模块为建立的连接保存初始化的时间戳,且发送端的时间戳处理模块保存的发送时间戳的取值与接收端的时间戳处理模块保存的接收时间戳的取值相同,发送端的时间戳处理模块保存的接收时间戳的取值与接收端的时间戳处理模块保存的发送时间戳的取值相同。较佳的,发送端和接收端的时间戳处理模块的其中一方在设置的定时器到期时,发起时间戳的更新过程,在更新过程中,发送端和接收端的时间戳处理模块交互各自的新时间戳;交互完毕后,发送端和接收端的时间戳处理模块更新各自保存的时间戳,且发送端的新的发送时间戳的取值与接收端的新的接收时间戳的取值相同,发送端的新的接收时间戳的取值与接收端的新的发送时间戳的取值相同。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1