具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种通信的建立方法,解决了IP地址伪造、仿冒等IP地址欺骗问题,解决或者减轻了由于IP地址欺骗引起的一系列网络安全问题。
本发明实施例在IPv6(Intemet Protocol version 6,因特网协议版本6)扩展头中增加CGA(Cryptographically Generated Addresses,加密生成地址)扩展头,该CGA扩展头包括CGA Request(CGA请求)、CGA Params(CGA参数)、CGA Sig(CGA签名)。
如图1所示,为本发明实施例通信的建立方法的流程图,具体包括:
步骤S101,发送CGA请求至第一通信方。具体可以为:
第二通信方接收第一通信方发送的会话请求,并对该会话请求进行检查,当该会话请求中的IPv6扩展头不包括CGA扩展头,或者该会话请求包括内容为空的CGA扩展头时,第二通信方发送CGA请求至第一通信方。
步骤S102,接收第一通信方回复的CGA参数和CGA签名。
在接收到第二通信方发送的CGA请求之后,第一通信方向第二通信方回复CGA参数和CGA签名。本发明实施例在IPv6扩展头中增加CGA扩展头,第一通信方回复的CGA参数和CGA签名携带在IPv6扩展头的CGA扩展头中。
步骤S103,对CGA参数和CGA签名进行验证,在验证成功之后,与第一通信方建立通信。
另外,在第二通信方接收第一通信方回复的CGA参数和CGA签名的同时,该第二通信方还可以接收第一通信方发送的CGA请求,在验证第一通信方回复的CGA参数和CGA签名成功之后,第二通信方向第一通信方回复该第二通信方的CGA参数和CGA签名。在第一通信方验证该第二通信方的CGA参数和CGA签名成功之后,第二通信方与第一通信方建立通信。这时,第一通信方和第二通信方相互验证了对方CGA的真实性。
上述通信的建立方法,在建立通信的过程中,通信方通过验证CGA扩展头所包括的CGA参数和CGA签名,确定CGA的真实性,有效防止了IP地址欺骗,防止或减轻了由于IP地址欺骗引起的一些网络安全问题。
如图2所示,为本发明通信的建立方法实施例一的流程图,在实施例一中,第一通信方为应答方,第二通信方为发起方。具体包括:
步骤S201,发起方向应答方发送CGA请求。
步骤S202,应答方收到CGA请求后,向发起方回复CGA参数、CGA签名。
步骤S203,发起方验证CGA参数及CGA签名,在验证成功之后,开始后续通信。如果验证失败,则停止通信过程。
上述通信的建立方法,发起方向应答方发送CGA请求,在接收到应答方回复的CGA参数及CGA签名之后,发起方验证CGA参数及CGA的签名,确定应答方CGA的真实性,从而防止了IP地址欺骗,防止或减轻了由于IP地址欺骗引起的一些网络安全问题。
如图3所示,为本发明通信的建立方法实施例二的流程图,实施例二中,第一通信方为发起方,第二通信方为应答方。具体包括:
步骤S301,发起方发起会话请求。
步骤S302,应答方收到会话请求后,检查IP扩展头中是否有CGA扩展头,如果有,则进一步判断该CGA扩展头的内容是否为空,当该CGA扩展头的内容不为空时,执行步骤S304;如果IP扩展头中没有CGA扩展头,或者会话请求中的CGA扩展头的内容为空时,应答方发送CGA请求至发起方。
步骤S303,发起方接收CGA请求,如果发起方支持CGA扩展,则回复CGA参数、CGA签名;如果发起方不支持CGA扩展,则该发起方丢弃该CGA请求。
步骤S304,应答方收到发送方回复的CGA参数、CGA签名后,验证该CGA参数及CGA签名,在验证成功之后,开始后续通信。如果验证失败,则应答方丢弃发送方回复的CGA参数和CGA签名。
上述通信的建立方法,在应答方收到发起方的会话请求之后,应答方向发起方发送CGA请求,并验证发起方回复的CGA参数及CGA签名,确定发起方CGA的真实性,从而防止了IP地址欺骗,防止或减轻了由于IP地址欺骗引起的一些网络安全问题。
如图4所示,为本发明通信的建立方法实施例三的流程图,实施例三中,第一通信方为发起方,第二通信方为应答方。具体包括:
步骤S401,发起方发起会话请求,该会话请求包括内容为空的CGA扩展头。
步骤S402,应答方收到会话请求后,发送CGA请求至发起方。
步骤S403,发起方收到CGA请求后,向应答方回复CGA参数、CGA签名,并向应答方发送CGA请求。
步骤S404,应答方收到发起方发送的CGA请求后,应答方先验证发起方回复的CGA参数及CGA签名,在验证成功之后,应答方向发起方回复该应答方的CGA参数及CGA签名;如果验证失败,则应答方丢弃发起方发送的CGA参数、CGA签名和CGA请求。
步骤S405,发起方收到应答方回复的CGA参数,CGA签名后,验证CGA参数及CGA签名,在验证成功之后,开始后续通信。如果验证失败,则发起方丢弃该CGA参数,CGA签名。
上述通信的建立方法,在应答方收到发起方的会话请求之后,应答方向发起方发送CGA请求,并验证发起方回复的CGA参数及CGA签名,同时发起方也向应答方发送CGA请求,验证应答方回复的CGA参数及CGA签名,发起方和应答方相互确定对方CGA的真实性,从而防止了IP地址欺骗,防止或减轻了由于IP地址欺骗引起的一些网络安全问题。
本发明实施例通过增加CGA扩展头,在建立通信的过程中,要求通信方在消息中添加包括CGA参数和CGA签名的扩展头,用于验证CGA的真实性,防止IP地址欺骗,防止或减轻由于IP地址欺骗引起的一些网络安全问题。
以TCP(Transmission Control Protocol,传输控制协议)-SYN(Synchronization,同步)洪水攻击为例,攻击者通过僵尸网络发起大量虚假地址的SYN请求。
应用本发明实施例,服务器收到SYN请求后,不会立即回应SYN-ACK(Acknowledgement,确认)并建立半连接状态,而是先检查SYN请求里面有没有CGA扩展头。1)如果SYN请求没有CGA扩展头,服务器发送CGA请求且不需要为该SYN请求建立状态信息,由于SYN请求中的源地址为虚假地址,所以服务器不会再收到回应;2)如果SYN请求中带有CGA扩展头,服务器会先验证CGA的有效性,如果SYN请求中的源地址为虚假地址,服务器只需做简单的哈希运算,即可判断该SYN请求是非法的,丢弃该SYN请求即可。应用本发明实施例,虽然服务器仍需要为虚假地址的SYN请求耗费一些资源,但相对于回应SYN-ACK并建立半连接状态,资源消耗很小,并且不需要为虚假地址的请求保持半连接状态,很大程度上解决了TCP-SYN洪水攻击问题。
以中间人攻击为例:
“中间人”(主机C,攻击者)处于通信发起方(主机A)与应答方(主机B)之间,同时冒充发起方和应答方的地址,分别与主机A、主机B通信。若主机A知道主机B的地址,那么在应用本发明实施例时,攻击者无法篡改主机B发给主机A的消息,因为通过应用CGA签名,将主机B的身份和CGA进行绑定,攻击者不知道主机B的私钥,无法得出篡改后消息的正确签名。
本发明实施例还提供了一种传输帧格式,该传输帧格式包括CGA请求数据,用于在两个通信方采用本发明实施例提供的通信的建立方法建立通信的过程中,在两个通信方之间传输CGA请求。在通信过程中,通信任意一方均可以通过发送包括了CGA请求选项的IP数据包来向对方请求CGA参数和CGA签名。接收到该IP数据包的通信方需要在回复的数据包中包括CGACGA参数、CGA签名。
本发明实施例提出的CGA请求选项的格式如图5所示,该CGA请求选项包括:
类型(Type)字段,为8比特无符号整数,在本实施例中,当该类型字段的数值为193时,表明该数据包为CGA请求。在其它实施例中,也可用其它数值表明该数据包为CGA请求。
预留域(Reserved)字段,长度为24比特,以备将来扩展使用。该预留域字段必须设为0。
序列号(Sequence Number)字段,为32比特随机数,包括防止重放攻击的信息。
本发明实施例还提供了一种传输帧格式,该传输帧格式包括CGA参数数据,用于在两个通信方采用本发明实施例提供的通信的建立方法建立通信的过程中,在两个通信方之间传输CGA参数,接收到CGA参数的通信方根据该CGA参数对CGA进行验证。
本发明实施例提出的CGA参数选项的格式如图6所示,该CGA参数选项包括:
类型(Type)字段,为8比特无符号整数。在本实施例中,当该类型字段的数值为194时,表明该数据包为CGA参数。在其它实施例中,也可用其它值表明该数据包为CGA参数。
长度(Length)字段,为8比特无符号整数,以字节为单位,表明整个CGA参数的长度,为类型字段、长度字段、填充长度字段、预留域字段、序列号字段、CGA参数字段以及填充字段等各字段长度的总和。
填充长度(Pad Length)字段,为8比特无符号整数,表示填充字段的长度,单位为字节。
预留域(Reserved)字段,长度为8比特字段,以备将来扩展使用。该预留域字段必须设为0。
序列号(Sequence Number)字段,为32比特整数,包括防止重放攻击的信息。如果该CGA参数用于响应CGA请求,该序列号字段的值为CGA请求中的序列号的值加1;否则,将该序列号字段置为0。
参数(Parameters)字段,长度可变,包括CGA参数信息。
填充(Padding)字段,可变长度域,用于使数据包长度为8字节的整数倍。该填充字段的内容必须为0。
本发明实施例还提供一种传输帧格式,该传输帧格式包括CGA签名数据,用于在两个通信方采用本发明实施例提供的通信的建立方法建立通信的过程中,在两个通信方之间传输CGA签名,CGA签名用于发送使用CGA参数中的公钥所对应的私钥对数据包的签名。
本发明实施例提出的CGA签名选项的格式如图7所示,该CGA签名选项包括:
类型(Type)字段,为8比特无符号整数。在本实施例中,若类型字段的数值为195时,表明该数据包为CGA签名。在其它实施例中,也可用其它数值表明该数据包为CGA签名。
长度(Length)字段,为8比特无符号整数,以字节为单位表明整个CGA签名的长度,为类型字段、长度字段、填充长度字段、预留域字段、CGA签名字段和填充字段等各字段长度的总和。
填充长度(Pad Length)字段,为8比特无符号整数,表示填充字段的长度,单位为字节。
预留域(Reserved)字段,长度为8比特,以备将来扩展使用。该预留域字段必须设为0。
签名(Signature)字段,为可变长度字段,包括用发送者私钥对数据包内容的签名。
填充(Padding)字段,为可变长度字段,用于使数据包长度为8字节的整数倍。该填充字段的内容必须为0。
如图8所示,为本发明实施例通信的建立系统的结构图,包括:
第一通信方81,用于接收CGA请求,并回复CGA参数和CGA签名;
第二通信方82,用于发送CGA请求至第一通信方81,接收第一通信方81回复的CGA参数和CGA签名,并对该CGA参数和CGA签名进行验证,在验证成功之后,与第一通信方81建立通信。
在本发明的另一实施例中,如图9所示,第二通信方82可以包括:
发送模块821,用于发送CGA请求至第一通信方81;
接收模块822,用于接收第一通信方81回复的CGA参数和CGA签名;
验证模块823,用于对接收模块822接收的CGA参数和CGA签名进行验证;
通信建立模块824,用于在验证模块823验证成功之后,与第一通信方81建立通信。
该发送模块821可以包括:
会话请求接收子模块8211,用于接收第一通信方81发送的会话请求;
CGA请求发送子模块8212,用于当会话请求接收子模块8211接收的会话请求的IPv6扩展头中不包括CGA扩展头,或者该会话请求包括内容为空的CGA扩展头时,发送CGA请求至第一通信方81。
该第二通信方82还可以包括:
CGA请求接收模块825,用于在接收模块822接收第一通信方81回复的CGA参数和CGA签名的同时,接收第一通信方81发送的CGA请求;
CGA回复模块826,用于在CGA请求接收模块825接收到第一通信方81发送的CGA请求,且验证模块823验证CGA参数和CGA签名成功之后,向第一通信方81回复第二通信方82的CGA参数和CGA签名。
上述通信的建立系统,在建立通信的过程中,第二通信方82通过验证第一通信方81回复的CGA参数和CGA签名,确定第一通信方81CGA的真实性,有效防止了IP地址欺骗,防止或减轻了由于IP地址欺骗引起的一些网络安全问题。
如图10所示,为本发明实施例通信设备10的结构图,包括:
发送模块101,用于发送CGA请求至另一通信设备;
接收模块102,用于接收另一通信设备回复的CGA参数和CGA签名;
验证模块103,用于对接收模块102接收的CGA参数和CGA签名进行验证;
通信建立模块104,用于在验证模块103验证成功之后,与另一通信设备建立通信。
在本发明的另一实施例中,如图11所示,发送模块101可以包括:
会话请求接收子模块1011,用于接收另一通信设备发送的会话请求;
CGA请求发送子模块1012,用于当会话请求接收子模块1011接收的会话请求的IPv7扩展头中不包括CGA扩展头,或者该会话请求包括内容为空的CGA扩展头时,发送该CGA请求至另一通信设备。
该通信设备10还可以包括:
CGA请求接收模块105,用于在接收模块102接收另一通信设备回复的CGA参数和CGA签名的同时,接收所述另一通信设备发送的CGA请求;
CGA回复模块106,用于在CGA请求接收模块105接收到另一通信设备发送的CGA请求,且在验证模块103验证CGA参数和CGA签名成功之后,向另一通信设备回复该通信设备的CGA参数和CGA签名。
上述通信设备,在与另一通信设备建立通信的过程中,发送模块101发送CGA请求至另一通信设备,接收模块102接收另一通信设备回复的CGA参数和CGA签名,验证模块103对接收模块102接收的CGA参数和CGA签名进行验证,确定第一通信方51CGA的真实性,在验证模块103验证成功之后,通信建立模块104与另一通信设备建立通信。使用本发明实施例提供的上述通信设备,可以有效防止IP地址欺骗,防止或减轻由于IP地址欺骗引起的一些网络安全问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。