CN101938500A - 源地址验证方法及系统 - Google Patents
源地址验证方法及系统 Download PDFInfo
- Publication number
- CN101938500A CN101938500A CN2010102989602A CN201010298960A CN101938500A CN 101938500 A CN101938500 A CN 101938500A CN 2010102989602 A CN2010102989602 A CN 2010102989602A CN 201010298960 A CN201010298960 A CN 201010298960A CN 101938500 A CN101938500 A CN 101938500A
- Authority
- CN
- China
- Prior art keywords
- main frame
- address
- key
- private key
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明实施例公开了一种源地址验证方法及系统,包括:主机通过MAC地址向私钥生成中心PKG注册;通过与所述PKG进行参数交互获取主机公钥和主机私钥;根据所述主机公钥生成基于身份密码的IP地址,将所述IP地址作为所述主机的源地址;主机根据所述主机私钥和会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中;安全网关根据所述数据包中的认证信息对所述源地址进行验证。本发明实施例采用基于身份的密码体制构建接入子网的密码系统,避免了对PKI的依赖;在每个数据包中加入了关于源地址的认证信息,可以防止源地址被篡改,通过流认证方法,提高了源地址的验证安全性和验证效率。
Description
技术领域
本申请涉及网络通信技术领域,尤其涉及一种源地址验证方法及系统。
背景技术
现有互联网内的设备之间通常基于报文的目的地址进行报文转发,而对源地址不做检查,因此使得源地址被频繁伪造,成为许多网络攻击行为的根源。为了克服源地址容易被伪造的缺陷,现有技术中可以按照如下方式对源地址进行验证:在接入子网边界设置了一个安全网关,每个主机向接入子网外发送的数据包都要通过这个安全网关的源地址验证,当主机想要访问互联网时,它首先向安全网关进行认证;主机生成一个会话密钥,并通过某个密钥交换机制将会话密钥发送给安全网关,安全网关将此会话密钥与主机的IP地址绑定;当主机向接入子网外发送数据包时,使用哈希摘要算法来为每个数据包生成一个消息认证码,这个消息认证码在IP地址的扩展首部中携带;安全网关认证数据包中携带的消息认证码,以此来验证数据包的源地址。
发明人在对现有技术的研究过程中发现,现有对源地址的检测方式中没有具体描述如何构建接入子网内的密码系统,导致很难验证其安全性和可用性;并且主机与安全网关之间的密钥协商需要依赖公钥基础设施PKI,方案的可用性不高,而且容易遭受重放攻击。
发明内容
本申请实施例的目的是提供一种源地址验证方法及系统,以解决现有技术中源地址的验证安全性不高,且容易遭受重放攻击的问题。
为解决上述技术问题,本申请实施例提供如下技术方案:
一种源地址验证方法,包括:
主机通过MAC地址向私钥生成中心PKG注册;
通过与所述PKG进行参数交互获取主机公钥和主机私钥;
根据所述主机公钥生成基于身份密码的IP地址,将所述IP地址作为所述主机的源地址;
主机根据所述主机私钥和随机产生的会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中;
安全网关根据所述数据包中的认证信息对所述源地址进行验证。
还包括:
PKG运行初始设置算法获得系统公开参数、主公钥和主私钥,并将所述主私钥保存在可信平台模块TPM中;
所述安全网关初始化,通过与所述PKG通信获得所述主公钥和系统公开参数。
所述主机通过MAC地址向PKG注册包括:
主机向PKG发送包含MAC地址的注册请求;
PKG为所述主机生成随机数,并将所述MAC地址与所述随机数的对应关系通过静态列表保存;
PKG将所述随机数、主公钥和系统公开参数返回给所述主机。
所述通过与PKG进行参数交互获取主机公钥和主机私钥包括:
主机通过用户公钥算法,根据所述主公钥、系统公开参数和所述MAC地址计算主机公钥;
通过所述主公钥对所述随机数进行加密生成加密信息;
主机将所述MAC地址和所述加密信息发送至PKG,用于请求主机私钥;
接收并验证所述PKG返回的主机私钥。
所述接收并验证所述PKG返回的主机私钥包括:
PKG根据所述MAC地址和主私钥生成主机私钥;
将所述主机私钥与所述随机数进行异或运算,并通过主私钥对MAC地址及所述异或运算后的值串联后进行私钥运算;
向所述主机发送包含所述私钥运算的结果的响应消息;
主机通过主公钥对所述响应信息进行解密运算,如果解密信息的MAC地址与所述主机的MAC地址一致,则将所述解密信息中除所述MAC地址的剩余部分与所述主机保存的随机数进行异或操作,得到主机私钥。
还包括:
PKG根据所述MAC地址查找静态列表,获得与所述MAC地址对应的随机数;
PKG通过主私钥对所述加密信息进行解密,并将解密后的信息与所述随机数进行比较;
当所述解密后的信息与所述随机数一致时,执行所述根据所述MAC地址和主私钥生成主机私钥的步骤。
所述根据主机公钥生成基于身份密码的IP地址包括:
主机从接入子网的边界路由器所发布的公告信息中获得子网前缀;
运行密码产生地址算法,根据主机公钥、子网前缀和调节参数生成所述主机的IP地址。
还包括:
主机运行安全邻居发现协议;
根据所述安全邻居发现协议的运行结果判断所述IP地址是否与其它主机的IP地址冲突,若是,则调整所述调节参数,并重新执行所述主机运行密码产生地址算法生成一个地址的步骤;否则,将所述IP地址做为所述主机的源地址。
所述主机根据所述主机私钥和随机产生的会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中包括:
主机在向安全网关发送普通数据包之前,主机通过密钥发生器生成会话密钥;
根据所述会话密钥、主机私钥和源地址生成签名;
向所述安全网关发送携带所述签名的签名数据包,并记录当前时刻。
所述安全网关根据数据包中的认证信息对所述源地址进行验证包括:
安全网关根据主公钥、系统公开参数和所述签名数据包中携带的主机MAC地址计算主机公钥;
通过密码产生地址算法CGA中的地址验证方法,验证所述签名数据包中的源地址;
安全网关根据所述主机公钥对所述签名数据包中的签名进行验证,并在动态缓存列表中记录验证通过的签名数据包的认证信息。
所述主机根据所述主机私钥和会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中包括:
主机生成会话密钥及普通数据包;
将根据所述会话密钥计算的认证信息添加到所述普通数据包中;
判断当前时刻与发送前一组数据包的时刻之间的时间差是否大于预设阈值,若是,则向所述安全网关发送所述普通数据包,否则,暂停发送数据包。
所述安全网关根据数据包中的认证信息对源地址进行验证包括:
根据普通数据包中的源地址在动态缓存表中查找认证信息;
根据所述认证信息验证所述普通数据包中的源地址是否合法,并转发验证合法的普通数据包。
一种源地址验证系统,包括:主机、私钥生成中心PKG和安全网关,
所述主机,用于通过MAC地址向私钥生成中心PKG注册,通过与所述PKG进行参数交互获取主机公钥和主机私钥,根据所述主机公钥生成基于身份密码的IP地址,将所述IP地址作为所述主机的源地址,根据所述主机私钥和随机产生的会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中;
所述安全网关,用于根据所述数据包中的认证信息对所述源地址进行验证。
所述PKG,用于运行初始设置算法获得系统公开参数、主公钥和主私钥,并将所述主私钥保存在可信平台模块TPM中;
所述安全网关,还用于初始化时通过与所述PKG通信获得所述主公钥和系统公开参数。可见,本申请实施例中主机通过MAC地址向私钥生成中心PKG注册,通过与PKG进行参数交互获取主机公钥和主机私钥,根据主机公钥生成基于身份密码的IP地址,将IP地址作为主机的源地址,主机根据主机私钥和会话密钥生成源地址的认证信息,并将认证信息携带在向安全网关发送的数据包中,安全网关根据数据包中的认证信息对所述源地址进行验证。本申请实施例采用基于身份的密码体制构建接入子网的密码系统,避免了对PKI的依赖;在每个数据包中加入了关于源地址的认证信息,可以防止源地址被篡改,通过流认证方法,提高了源地址的验证安全性和验证效率,避免安全网关成为系统的瓶颈;由于采用不同的会话密钥生成认证信息,因此可以抵抗对合法数据包的重放攻击;通过签名数据包为普通数据包的验证提供信息,进一步提高了验证的可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请源地址验证方法的第一实施例流程图;
图2为本申请源地址验证系统的架构示意图;
图3为本申请源地址验证方法的第二实施例流程图;
图4A为本申请源地址验证方法的第三实施例流程图;
图4B为本申请第三实施例中签名数据包的结构示意图;
图5为本申请源地址验证方法的第四实施例流程图;
图6为本申请源地址验证方法的第五实施例流程图。
具体实施方式
本申请实施例提供一种源地址验证方法及系统。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
在详细描述本申请实施例之前,首先对本申请实施例中可能涉及的符号进行如下说明:
MAC:主机MAC地址
MAC(K,D):通过密钥K和数据D生成的消息认证码
KMP:私钥生成中心产生的主公钥
KMS:私钥生成中心产生的主私钥
KS:主机私钥
KP:主机公钥
Ki:主机使用的会话密钥,用于生成源IP地址及相关信息的消息认证码
F(·):伪随机函数
SIP:源IP地址
DIP:目的IP地址
LMAC:私钥生成中心中保存的静态表,以主机MAC地址为索引
LIP:安全网关中的一个动态缓存表,以主机IP地址为索引
参见图1,为本申请源地址验证方法的第一实施例流程图:
步骤101:主机通过MAC地址向私钥生成中心PKG注册。
在步骤101之前,进一步的,PKG运行初始设置算法获得系统公开参数、主公钥和主私钥,并将所述主私钥保存在可信平台模块TPM中;安全网关初始化,通过与所述PKG通信获得所述主公钥和系统公开参数。
具体的,主机向PKG发送包含MAC地址的注册请求,PKG为主机生成随机数,并将MAC地址与随机数的对应关系通过静态列表保存,PKG将随机数、主公钥和系统公开参数返回给主机。
步骤102:通过与PKG进行参数交互获取主机公钥和主机私钥。
具体的,主机通过用户公钥生成算法,根据主公钥、系统公开参数和MAC地址计算主机公钥,通过主公钥对随机数进行加密生成加密信息,主机将MAC地址和加密信息发送至PKG,用于请求主机私钥,接收并验证PKG返回的主机私钥。
在接收并验证所述PKG返回的主机私钥时,PKG根据MAC地址查找静态列表,获得与MAC地址对应的随机数,PKG通过主私钥对加密信息进行解密,并将解密后的信息与随机数进行比较,当解密后的信息与随机数一致时,PKG根据MAC地址和主私钥生成主机私钥,将主机私钥与随机数进行异或运算,把MAC地址和主机私钥与随机数异或运算后的值串联起来,并通过主私钥对串联起来的值进行私钥运算,向主机发送包含所述私钥运算的结果的响应消息,主机通过主公钥对响应信息进行解密验证,如果响应信息解密后的MAC地址与主机的MAC地址一致,则将响应信息解密后除MAC地址的剩余部分与主机保存的随机数进行异或操作,得到主机私钥。
步骤103:根据主机公钥生成基于身份密码的IP地址,将IP地址作为主机的源地址。
主机从接入子网的边界路由器所发布的公告信息中获得子网前缀,运行密码产生地址算法,根据主机公钥、子网前缀和调节参数生成主机的IP地址。
进一步,主机运行安全邻居发现协议,根据安全邻居发现协议的运行结果判断IP地址是否与其它主机的IP地址冲突,若是,则调整调节参数,并重新执行主机运行密码产生地址算法生成地址的步骤;否则,将IP地址做为主机的源地址。
步骤104:主机根据主机私钥和随机产生的会话密钥生成源地址的认证信息,并将认证信息携带在向安全网关发送的数据包中。
首先,主机在向安全网关发送普通数据包之前,主机通过密钥发生器生成会话密钥,根据会话密钥、主机私钥和源地址生成签名,向安全网关发送携带签名的签名数据包,并记录当前时刻;
其次,主机生成会话密钥及普通数据包,将根据会话密钥计算的认证信息添加到普通数据包中,判断当前时刻与发送前一组数据包的时刻之间的时间差是否大于预设阈值,若是,向安全网关发送普通数据包,否则,暂停发送数据包,等待时间差大于预设阈值后再发送。
步骤105:安全网关根据数据包中的认证信息对源地址进行验证。
验证签名数据包时,安全网关根据主公钥、系统公开参数和签名数据包中携带的主机MAC地址计算主机公钥,安全网关根据主机公钥对签名数据包中的签名进行验证,并在动态缓存列表中记录验证通过的签名数据包的认证信息;
验证普通数据包时,根据普通数据包中的源地址在动态缓存表中查找认证信息,根据认证信息验证普通数据包中的源地址是否合法,并转发验证合法的普通数据包。
参见图2,为应用本申请源地址验证方法的系统架构示意图:
该系统架构应用在接入子网中,包含PKG(Private Key Generator,私钥生成中心)210、主机220和安全网关230。其中,PKG210设置在接入子网内的可信计算机,可信计算机是在主板上嵌入了TPM(Trusted Platform Module,可信平台模块)的计算机,TPM是可信计算技术的核心,是一个含有密码运算部件和存储部件的小型片上系统,通过总线嵌入到硬件主板上,主要用于生成系统公开参数,生成并安全保存主私钥,对主机进行身份注册,生成主机私钥,并向主机分发该主机私钥;安全网关230是设置在子网边界的安全网络设备,用于验证向子网外转发数据包的主机的源IP地址;主机220中包含有密钥发生器,用于生成会话密钥。
其中,所述PKG210,用于运行初始设置算法获得系统公开参数、主公钥和主私钥,并将所述主私钥保存在可信平台模块TPM中;
所述主机220,用于通过MAC地址向私钥生成中心PKG210注册,通过与所述PKG210进行参数交互获取主机公钥和主机私钥,根据所述主机公钥生成基于身份密码的IP地址,将所述IP地址作为所述主机的源地址,根据所述主机私钥和会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关230发送的数据包中;
所述安全网关230,用于初始化时通过与所述PKG210通信获得所述主公钥和系统公开参数,根据所述数据包中的认证信息对所述源地址进行验证。
下面结合图2,对本申请中的源地址的验证过程分别进行描述:
参见图3,为本申请地址验证方法的第二实施例,该实施例示出了主机与PKG之间的交互,包含系统初始化和主机IP地址产生的过程:
步骤301:PKG初始化,通过运行初始设置算法生成系统公开参数、主公钥和主私钥。
在接入子网内设置一台可信计算机作为PKG,PKG运行初始设置算法,输入一个安全参数,输出系统公开参数、主公钥KMP和主私钥KMS,其中系统公开参数包括明文空间、密文空间、哈希函数等。上述输出的参数均在接入子网中公开,主私钥保存在TPM中,用于生成主机私钥。
需要说明的是,本申请实施例涉及的初始设置算法、用户私钥生成算法、加密和解密算法等均可以使用现有的算法,本申请实施例对此不进行限制。
步骤302:主机通过MAC地址向PKG进行注册。
每台主机在准备连接到子网内时,将自身的MAC地址作为身份信息向PKG进行注册。
步骤303:私钥生成中心生成随机数,并向主机返回随机数、主公钥及系统公开参数。
PKG接收到主机发送的包含自身MAC地址的注册请求后,记录该主机的MAC地址,并为该主机生成一个随机数Random;同时,PKG将该主机的MAC地址和所生成的随机数Random进行对应,并将上述对应关系保存在静态列表LMAC中;然后PKG将随机数Random、主公钥KMP和系统公开参数发送给主机。
步骤304:主机通过用户公钥生成算法生成主机公钥KP。
主机接收到PKG发送的参数后,使用IBE用户公钥生成算法,根据接收到的主公钥KMP和系统公开参数,结合其MAC地址计算出主机公钥KP。
步骤305:主机对随机数Random进行加密,并将加密信息及MAC地址发送至PKG,请求主机私钥KS。
主机用主公钥KMP对随机数Random进行加密,生成加密信息(Random),以防止随机数Random在发送过程中被篡改;然后,主机将MAC地址及该加密信息(Random)发送给PKG,用于申请主机私钥KS。
步骤306:PKG对主机的请求进行验证。
PKG收到主机发送的请求主机私钥KS的请求后,根据该请求中的MAC地址信息查找保存的列表LMAC,如果能够在列表LMAC中找到对应的表项,则表明该MAC地址为向PKG注册过的主机的MAC地址,则进行下一步验证,否则,说明该MAC地址未向PKG注册过,因此丢弃该请求;在列表LMAC中找到对应的表项后,使用主私钥KMS对所接收信息的剩余部分(即加密信息(Random))进行解密,将解密得到的信息与所述查找到的表项中的随机数进行比较,如果二者匹配,则说明发送请求的主机为注册过的合法主机,验证成功,如果匹配不成功,则丢弃该请求。
步骤307:PKG根据主机MAC地址和主私钥KMS生成主机私钥KS,并向主机发送包含主机私钥KS的响应信息。
当PKG验证成功后,PKG根据主机私钥KS与所查找到的表项中的随机数Random进行异或运算,把MAC地址与异或运算结果串联起来,然后使用主私钥KMS对串联值进行私钥运算,将私钥运算结果作为相应信息发送给主机。上述异或运算可以防止重放攻击,因此即使重放合法的主机私钥请求,攻击者在不知道随机数的情况下,也无法得到PKG相应信息中的主机私钥KS。
步骤308:主机通过主公钥KMP对响应信息进行验证。
主机收到响应信息后,使用主公钥KMP对响应信息进行验证,如果响应信息验证结果中的MAC地址与主机的MAC地址一致,则确认该响应信息来自PKG,将响应信息中除MAC地址的剩余部分与所保存的随机数Random进行异或运算,得到主机私钥KS,并将该主机私钥KS进行保存,如果响应信息中的MAC地址与主机的MAC地址不一致,则丢弃该响应信息,由主机重新向PKG请求主机私钥KS。
步骤309:主机根据主机公钥KP生成基于身份密码的IP地址。
接入子网的边界路由器定期向子网内发布公告,这些公告信息中有一个字段包含本子网的子网前缀,主机从路由器公告中获取子网前缀。然后主机采用CGA(Cryptographically Generated Address,密码产生地址)算法,输入主机公钥KP、子网前缀和调节参数,运行CGA算法即可输出一个基于密码产生的IP地址。其中,调节参数为128位的无符号整数,可以采用任意值。
步骤310:主机运行安全邻居发现协议,验证IP地址在本地链路上的唯一性。
主机生成源IP地址后,运行安全邻居发现协议,该协议使用一系列IP控制信息报文来实现相邻节点的交互管理,并在一个子网内保持网络层地址和链路层地址之间的映射;运行该协议后,如果IP地址不与其它主机的IP地址冲突,则主机使用该IP地址作为源地址,如果IP地址与其它主机的IP地址冲突,则调整CGA算法中的调节参数,生成新的IP地址,再次运行安全邻居发现协议,直到所生成的IP地址不与其它主机的IP地址冲突为止。
参见图4A,为本申请地址验证方法的第二实施例,该实施例示出了数据包中的源IP地址认证信息的产生和验证过程:
步骤401:安全网关进行初始化。
安全网关与PKG建立通信获取主公钥KMP和系统公开参数,并与接入子网中的所有主机共用一个伪随机函数F;每个主机分别估算与安全网关通信所需要的时间,即数据包从主机发送到安全网关的时间,将该时间记为T,由每个主机各自保存。
其中,伪随机函数F由安全网关选择产生,并将该伪随机函数F作为公开参数发布给子网内的所有主机;在估算通信时间时,由主机向安全网关发送一个数据包,并记录下发送的时间,然后收到安全网关返回的回应数据包后,再次记录下接收的时间,然后将接收的时间与发送的时间的差值的一半作为该估计的通信时间。
步骤402:主机以安全网关为目的地址发送签名数据包,并记录发送完成的时刻T0。
主机在向接入子网外发送普通数据包之前,首先向安全网关发送一个签名数据包,该签名数据包如图4B所示,该签名数据包用于向后续传递的普通数据包提供地址认证信息;另外,为了防止攻击重放,如果主机超过预设时间阈值未发送签名数据包,则在主机再次发送普通数据包时,需要重新发送签名数据包。
在生成签名数据包时,主机使用密钥发生器生成两个会话密钥K0和K1,并计算F(K0)和F(K1),然后使用主机私钥KS对源IP地址SIP和F(K0)进行签名,得到(SIP,F(K0)),使用k0和D1计算一个消息认证码MAC(K0,D1),其中D1={SIP,F(K1)},将F(K0)和MAC(K0,D1)作为数据,生成一个数据包,将签名S添加到IP地址的扩展首部,SIP为该签名数据包的源IP地址,DIP为该签名数据包的目的IP地址,然后主机将该签名数据包发送到安全网关。
步骤403:安全网关对签名数据包进行验证,并在验证通过后记录该签名数据包中的数据和源IP地址。
安全网关接收到签名数据包后,在数据链路层处理时记录该签名数据包的源MAC地址,然后将该签名数据包交由应用层处理。
安全网关根据主公钥KMP、系统公开参数和所记录的MAC地址计算主机公钥KP;然后调用公开的CGA地址验证算法验证源IP地址,如果验证通过则继续后续的验证,如果不通过则丢弃该签名数据包。
验证通过后安全网关用公钥KP对签名数据包扩展首部中的签名进行验证,将得到的SIP、F(K0)与签名数据包的源IP地址SIP、数据F(K0)分别进行比较;如果都一致,则验证通过,记录签名数据包中的数据F(K0)、MAC(K0,D1)和SIP,并用列表的形式保存,该列表称为LIP;列表LIP以SIP为索引,表项中的F(K0)和MAC(K0,D1)的值会随着安全网关所接收的签名数据包的认证信息的变化而不断更新。
步骤404:主机生成普通数据包,并判断是否可以发送生成的普通数据包。
主机在发送完签名数据包后,生成会话密钥K2,并计算F(K2)和MAC(K1,D2),D2={SIP,F(K2)}。当主机需要发送普通数据包时,在其扩展首部中添加{flag,K0,F(K1),MAC(K1,D2)},其中flag是1比特的标志位,其值为0或1,用来区分相邻的两组普通数据包,我们设第1组普通数据包的标志位为0。
步骤405:主机顺序将普通数据包发送到安全网关。
当主机监听到信道空闲,准备发送普通数据包时,首先计算当前时刻T1与签名数据包的发送时刻T0的差值ΔT=T1-T0,判断如果ΔT>T,则认为之前发送的签名数据包已经到达安全网关,可以将生成的普通数据包全部发送出去(即第1组数据包);否则,直到ΔT>T时再发送普通数据包。
第1组普通数据包发送完之后,主机记录下发送完成的时刻,然后生成一个新的会话密钥K3,计算出F(K3)和MAC(K2,D3),D3={SIP,F(K3)}。在待发送的第2组普通数据包的扩展首部中添加{flag,K1,F(K2),MAC(K2,D3)},第2组普通数据包准备发送时,也需要将发送时刻与上一组数据包发送完成时刻的差值与T进行比较,根据比较结果来决定是否能发送该第2组普通数据包。
当第2组普通数据包发送完之后,主机记录下发送完成的时刻,并为下一组普通数据包计算需要添加的扩展首部信息,依此类推,为第i组普通数据包添加的数据包扩展首部信息为{flag,Ki-1,F(Ki),MAC(Ki,Di+1)},其中Di+1={SIP,F(Ki+1)}。本实施例中将两次信道空闲之间所准备发送的普通数据包划分为一组。
步骤406:安全网关对普通数据包进行验证,并转发验证通过的数据包。
安全网关收到某主机发送的第1组普通数据包后,需要对其中的每个数据包分别进行验证,对每个数据包的验证过程基本相同,即根据数据包中的源IP地址在动态缓存表LIP中找到对应的F(K0)和MAC(K0,D1),再使用数据包扩展首部中的K0来计算F(K0),将此计算结果与表LIP中的F(K0)进行比较,如果比较结果一致,则说明数据包中携带的K0合法,然后通过K0来验证表LIP中的MAC(K0,D1),如果验证通过,则认为第1组普通数据包通过了源地址验证,将数据包扩展首部去除后向安全网关外转发。
对于该第1组普通数据包中第1个验证成功的数据包,在执行完上述验证后,还要在表LIP的对应表项中添加F(K1)和MAC(K1,D2),即在执行完前述验证后,还要查看表LIP中的对应表项是否存在F(K1)和MAC(K1,D2),若不存在,则说明该数据包为第1个验证成功的数据包。
当该组数据包验证结束后,还要将表LIP对应表项中的F(K0)和MAC(K0,D1)删除,即在执行完上述验证后,需要检查下一个数据包的标志位,若具有此源IP地址的数据包队列为空,或者具有此源IP地址的下一个数据包的标志位为1,则说明第1组普通数据包已经验证完毕。类似的,对之后收到的该主机传输的普通数据包,安全网关执行类似的验证过程,并进行转发。
参见图5,为本申请源地址验证方法的第三实施例流程图,该实施例从主机的角度描述了发送数据包的处理过程:
步骤501:主机生成签名数据包。
主机使用其密钥发生器来生成两个会话密钥K0、K1,并通过伪随机函数F计算F(K0)、F(K1);然后使用主机私钥KS对源IP地址和F(K0)进行签名,得到(SIP,F(K0)),使用K0和D1计算一个消息认证码MAC(K0,D1),其中D1={SIP,F(K1)}。
主机将F(K0)和MAC(K0,D1)作为数据,生成一个签名数据包,并将签名S添加到IP扩展首部。
步骤502:主机发送签名数据包给安全网关,并记录下发送完成的时刻T0。
步骤503:主机生成第i(i≥1)组普通数据包。
主机生成会话密钥Ki+1,(Ki在第i-1组时生成)计算出F(Ki)和MAC(Ki,Di+1),其中Di+1={SIP,F(Ki+1)};主机为准备发送的数据包添加一个扩展首部{{flag,Ki-1,F(Ki),MAC(Ki,Di+1)},其中flag的初始值为0。
步骤504:主机监听是否空闲,若空闲,则执行步骤505;否则,返回步骤503。
步骤505:主机计算当前时刻Ti与上一组数据包的发送时刻Ti-1的差值ΔT=Ti-Ti-1,若ΔT>t,则说明距离发送上一组数据包的时间已经比较长,需要重新发送签名数据包,返回步骤501;若ΔT<T,则说明上一组数据包还未到达安全网关,则执行步骤503;若t>ΔT>T,执行步骤506。
步骤506:主机发送第i组数据包给安全网关。
步骤507:主机设置i=i+1,返回步骤503。
参见图6,为本申请源地址验证方法的第四实施例流程图,该实施例从安全网关的角度描述了对主机源IP地址进行验证的过程:
步骤601:安全网关收到主机发送的数据包后,在数据链路层处理时记录下该帧的源MAC地址,然后再将其交付上层处理。
步骤602:安全网关判断接收到的数据包的类型,若为签名数据包,则执行步骤603;若为普通数据包,则执行步骤607。
步骤603:安全网关验证签名数据包时,安全网关根据主公钥KMP、系统公开参数及记录下来的MAC地址来计算出一个主机公钥KP。
步骤604:安全网关采用CGA地址验证算法验证签名数据包的源IP地址,如果验证通过,则执行步骤605;否则,执行步骤616。
步骤605:安全网关用公钥KP对签名数据包扩展首部中的签名进行验证,将得到的SIP、F(K0)与数据包源IP地址、数据包中的数据F(K0)分别进行比较,如果都一致,则验证成功,执行步骤606;否则,执行步骤616。
步骤606:查看表LIP中是否存在关于此源IP地址的表项,若不存在,记录下数据包的数据F(K0)、MAC(K0,D1)及源IP地址,返回步骤601;若存在,则返回步骤601。
步骤607:安全网关验证第i组数据包中的某个数据包,根据接收数据包中的源IP地址,在表LIP中找到对应的F(Ki-1)和MAC(Ki-1,Di)。
步骤608:安全网关根据数据包扩展首部中的Ki-1来计算F(Ki-1),将此计算结果与表LIP中的F(Ki-1)进行比较,如果比较结果一致,则说明传递过来的Ki-1是合法的,验证成功并执行步骤609;否则,执行步骤616。
步骤609:安全网关用Ki-1来验证表LIP中的MAC(Ki-1,Di),如果此验证成功,则认为这个数据包通过了源IP地址验证,执行步骤610;否则,执行步骤616。
步骤610:安全网关将数据包扩展首部去除后向外转发。
步骤611:安全网关在表LIP中查看此IP地址的对应表项,检查F(Ki)和MAC(Ki,Di+1)是否存在,如果否,则执行步骤612;如果是,则执行步骤613。
步骤612:将F(Ki)和MAC(Ki,Di+1)添加到此对应表项。
步骤613:安全网关查看具有此源IP地址的数据包队列是否为空,若是,则执行步骤615;否则,执行步骤614。
步骤614:安全网关查看具有此IP源地址的下一个数据包的flag,判断下一个数据包的flag与该数据包的flag是否相同,若是,则返回步骤601;否则,执行步骤615。
步骤615:安全网关将表LIP中对应IP地址的表项值F(Ki-1)和MAC(Ki-1,Di)删除,返回步骤601。
步骤616:丢弃签名数据包。
通过以上的实施方式的描述可知,本申请实施例中主机通过MAC地址向私钥生成中心PKG注册,通过与PKG进行参数交互获取主机公钥和主机私钥,根据主机公钥生成基于身份密码的IP地址,将IP地址作为主机的源地址,主机根据主机私钥和会话密钥生成源地址的认证信息,并将认证信息携带在向安全网关发送的数据包中,安全网关根据数据包中的认证信息对所述源地址进行验证。本申请实施例采用基于身份的密码体制构建接入子网的密码系统,避免了对PKI的依赖;在每个数据包中加入了关于源地址的认证信息,可以防止源地址被篡改,通过流认证方法,提高了源地址的验证安全性和验证效率,避免安全网关成为系统的瓶颈;由于采用不同的会话密钥生成认证信息,因此可以抵抗对合法数据包的重放攻击;通过签名数据包为普通数据包的验证提供信息,进一步提高了源地址信息验证的可靠性。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (14)
1.一种源地址验证方法,其特征在于,包括:
主机通过MAC地址向私钥生成中心PKG注册;
通过与所述PKG进行参数交互获取主机公钥和主机私钥;
根据所述主机公钥生成基于身份密码的IP地址,将所述IP地址作为所述主机的源地址;
主机根据所述主机私钥和随机产生的会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中;
安全网关根据所述数据包中的认证信息对所述源地址进行验证。
2.根据权利要求1所述的方法,其特征在于,还包括:
PKG运行初始设置算法获得系统公开参数、主公钥和主私钥,并将所述主私钥保存在可信平台模块TPM中;
所述安全网关初始化,通过与所述PKG通信获得所述主公钥和系统公开参数。
3.根据权利要求2所述的方法,其特征在于,所述主机通过MAC地址向PKG注册包括:
主机向PKG发送包含MAC地址的注册请求;
PKG为所述主机生成随机数,并将所述MAC地址与所述随机数的对应关系通过静态列表保存;
PKG将所述随机数、主公钥和系统公开参数返回给所述主机。
4.根据权利要求3所述的方法,其特征在于,所述通过与PKG进行参数交互获取主机公钥和主机私钥包括:
主机通过用户公钥算法,根据所述主公钥、系统公开参数和所述MAC地址计算主机公钥;
通过所述主公钥对所述随机数进行加密生成加密信息;
主机将所述MAC地址和所述加密信息发送至PKG,用于请求主机私钥;
接收并验证所述PKG返回的主机私钥。
5.根据权利要求4所述的方法,其特征在于,所述接收并验证所述PKG返回的主机私钥包括:
PKG根据所述MAC地址和主私钥生成主机私钥;
将所述主机私钥与所述随机数进行异或运算,并通过主私钥对MAC地址及所述异或运算后的值串联后进行私钥运算;
向所述主机发送包含所述私钥运算的结果的响应消息;
主机通过主公钥对所述响应信息进行解密运算,如果解密信息的MAC地址与所述主机的MAC地址一致,则将所述解密信息中除所述MAC地址的剩余部分与所述主机保存的随机数进行异或操作,得到主机私钥。
6.根据权利要求5所述的方法,其特征在于,还包括:
PKG根据所述MAC地址查找静态列表,获得与所述MAC地址对应的随机数;
PKG通过主私钥对所述加密信息进行解密,并将解密后的信息与所述随机数进行比较;
当所述解密后的信息与所述随机数一致时,执行所述根据所述MAC地址和主私钥生成主机私钥的步骤。
7.根据权利要求1所述的方法,其特征在于,所述根据主机公钥生成基于身份密码的IP地址包括:
主机从接入子网的边界路由器所发布的公告信息中获得子网前缀;
运行密码产生地址算法,根据主机公钥、子网前缀和调节参数生成所述主机的IP地址。
8.根据权利要求7所述的方法,其特征在于,还包括:
主机运行安全邻居发现协议;
根据所述安全邻居发现协议的运行结果判断所述IP地址是否与其它主机的IP地址冲突,若是,则调整所述调节参数,并重新执行所述主机运行密码产生地址算法生成一个地址的步骤;否则,将所述IP地址做为所述主机的源地址。
9.根据权利要求2所述的方法,其特征在于,所述主机根据所述主机私钥和随机产生的会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中包括:
主机在向安全网关发送普通数据包之前,主机通过密钥发生器生成会话密钥;
根据所述会话密钥、主机私钥和源地址生成签名;
向所述安全网关发送携带所述签名的签名数据包,并记录当前时刻。
10.根据权利要求9所述的方法,其特征在于,所述安全网关根据数据包中的认证信息对所述源地址进行验证包括:
安全网关根据主公钥、系统公开参数和所述签名数据包中携带的主机MAC地址计算主机公钥;
通过密码产生地址算法CGA中的地址验证方法,验证所述签名数据包中的源地址;
安全网关根据所述主机公钥对所述签名数据包中的签名进行验证,并在动态缓存列表中记录验证通过的签名数据包的认证信息。
11.根据权利要求10所述的方法,其特征在于,所述主机根据所述主机私钥和会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中包括:
主机生成会话密钥及普通数据包;
将根据所述会话密钥计算的认证信息添加到所述普通数据包中;
判断当前时刻与发送前一组数据包的时刻之间的时间差是否大于预设阈值,若是,则向所述安全网关发送所述普通数据包,否则,暂停发送数据包。
12.根据权利要求11所述的方法,其特征在于,所述安全网关根据数据包中的认证信息对源地址进行验证包括:
根据普通数据包中的源地址在动态缓存表中查找认证信息;
根据所述认证信息验证所述普通数据包中的源地址是否合法,并转发验证合法的普通数据包。
13.一种源地址验证系统,其特征在于,包括:主机、私钥生成中心PKG和安全网关,
所述主机,用于通过MAC地址向私钥生成中心PKG注册,通过与所述PKG进行参数交互获取主机公钥和主机私钥,根据所述主机公钥生成基于身份密码的IP地址,将所述IP地址作为所述主机的源地址,根据所述主机私钥和随机产生的会话密钥生成所述源地址的认证信息,并将所述认证信息携带在向安全网关发送的数据包中;
所述安全网关,用于根据所述数据包中的认证信息对所述源地址进行验证。
14.根据权利要求13所述的系统,其特征在于,
所述PKG,用于运行初始设置算法获得系统公开参数、主公钥和主私钥,并将所述主私钥保存在可信平台模块TPM中;
所述安全网关,还用于初始化时通过与所述PKG通信获得所述主公钥和系统公开参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010298960 CN101938500B (zh) | 2010-09-28 | 2010-09-28 | 源地址验证方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010298960 CN101938500B (zh) | 2010-09-28 | 2010-09-28 | 源地址验证方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101938500A true CN101938500A (zh) | 2011-01-05 |
CN101938500B CN101938500B (zh) | 2012-12-12 |
Family
ID=43391628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010298960 Expired - Fee Related CN101938500B (zh) | 2010-09-28 | 2010-09-28 | 源地址验证方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101938500B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017011947A1 (zh) * | 2015-07-17 | 2017-01-26 | 华为技术有限公司 | 一种通信方法、装置和系统 |
CN107197055A (zh) * | 2017-08-01 | 2017-09-22 | 成都鼎智汇科技有限公司 | 一种在云端实现存储资源分配的装置 |
CN107241448A (zh) * | 2017-08-01 | 2017-10-10 | 成都鼎智汇科技有限公司 | 一种云存储节点负载均衡方法 |
CN108737096A (zh) * | 2017-04-25 | 2018-11-02 | 杭州弗兰科信息安全科技有限公司 | 一种用于群组通信的密钥管理系统 |
CN110224980A (zh) * | 2019-05-05 | 2019-09-10 | 清华大学 | 一种可信mptcp传输方法及系统 |
CN111131550A (zh) * | 2019-12-30 | 2020-05-08 | 江苏大周基业智能科技有限公司 | 基于密码算法的局域网内ip地址计算方法 |
CN113300927A (zh) * | 2015-08-31 | 2021-08-24 | 松下电器(美国)知识产权公司 | 网关装置、车载网络系统以及转送方法 |
CN113904807A (zh) * | 2021-09-08 | 2022-01-07 | 北京世纪互联宽带数据中心有限公司 | 一种源地址认证的方法、装置、电子设备及存储介质 |
CN113904809A (zh) * | 2021-09-08 | 2022-01-07 | 北京世纪互联宽带数据中心有限公司 | 一种通信方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039182A (zh) * | 2007-03-07 | 2007-09-19 | 广东南方信息安全产业基地有限公司 | 认证系统及用户标识证书发放方法 |
US20090204808A1 (en) * | 2002-05-15 | 2009-08-13 | Microsoft Corporation | Session Key Security Protocol |
CN101582761A (zh) * | 2008-05-15 | 2009-11-18 | 郑建德 | 采用口令防火墙的身份认证系统 |
-
2010
- 2010-09-28 CN CN 201010298960 patent/CN101938500B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204808A1 (en) * | 2002-05-15 | 2009-08-13 | Microsoft Corporation | Session Key Security Protocol |
CN101039182A (zh) * | 2007-03-07 | 2007-09-19 | 广东南方信息安全产业基地有限公司 | 认证系统及用户标识证书发放方法 |
CN101582761A (zh) * | 2008-05-15 | 2009-11-18 | 郑建德 | 采用口令防火墙的身份认证系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107113295B (zh) * | 2015-07-17 | 2020-02-14 | 华为技术有限公司 | 一种通信方法、装置和系统 |
CN107113295A (zh) * | 2015-07-17 | 2017-08-29 | 华为技术有限公司 | 一种通信方法、装置和系统 |
WO2017011947A1 (zh) * | 2015-07-17 | 2017-01-26 | 华为技术有限公司 | 一种通信方法、装置和系统 |
CN113300927B (zh) * | 2015-08-31 | 2024-03-22 | 松下电器(美国)知识产权公司 | 网关装置、车载网络系统以及转送方法 |
CN113300927A (zh) * | 2015-08-31 | 2021-08-24 | 松下电器(美国)知识产权公司 | 网关装置、车载网络系统以及转送方法 |
CN108737096A (zh) * | 2017-04-25 | 2018-11-02 | 杭州弗兰科信息安全科技有限公司 | 一种用于群组通信的密钥管理系统 |
CN107241448A (zh) * | 2017-08-01 | 2017-10-10 | 成都鼎智汇科技有限公司 | 一种云存储节点负载均衡方法 |
CN107197055A (zh) * | 2017-08-01 | 2017-09-22 | 成都鼎智汇科技有限公司 | 一种在云端实现存储资源分配的装置 |
CN110224980A (zh) * | 2019-05-05 | 2019-09-10 | 清华大学 | 一种可信mptcp传输方法及系统 |
CN111131550A (zh) * | 2019-12-30 | 2020-05-08 | 江苏大周基业智能科技有限公司 | 基于密码算法的局域网内ip地址计算方法 |
CN111131550B (zh) * | 2019-12-30 | 2022-07-15 | 江苏大周基业智能科技有限公司 | 基于密码算法的局域网内ip地址计算方法 |
CN113904807A (zh) * | 2021-09-08 | 2022-01-07 | 北京世纪互联宽带数据中心有限公司 | 一种源地址认证的方法、装置、电子设备及存储介质 |
CN113904809A (zh) * | 2021-09-08 | 2022-01-07 | 北京世纪互联宽带数据中心有限公司 | 一种通信方法、装置、电子设备及存储介质 |
CN113904807B (zh) * | 2021-09-08 | 2023-11-21 | 北京世纪互联宽带数据中心有限公司 | 一种源地址认证的方法、装置、电子设备及存储介质 |
CN113904809B (zh) * | 2021-09-08 | 2024-03-22 | 北京世纪互联宽带数据中心有限公司 | 一种通信方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101938500B (zh) | 2012-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11323276B2 (en) | Mutual authentication of confidential communication | |
CN101938500B (zh) | 源地址验证方法及系统 | |
US10015159B2 (en) | Terminal authentication system, server device, and terminal authentication method | |
EP2416524B1 (en) | System and method for secure transaction of data between wireless communication device and server | |
US7774594B2 (en) | Method and system for providing strong security in insecure networks | |
US8285989B2 (en) | Establishing a secured communication session | |
JP5345675B2 (ja) | トークンとベリファイアとの間の認証のためのネットワーク・ヘルパー | |
CN110971415A (zh) | 一种天地一体化空间信息网络匿名接入认证方法及系统 | |
US7480939B1 (en) | Enhancement to authentication protocol that uses a key lease | |
WO2017147503A1 (en) | Techniques for confidential delivery of random data over a network | |
US20170085543A1 (en) | Apparatus and method for exchanging encryption key | |
CN104506534A (zh) | 安全通信密钥协商交互方案 | |
CN112351037B (zh) | 用于安全通信的信息处理方法及装置 | |
JP2009529832A (ja) | 発見不可能、即ち、ブラック・データを使用するセキュアなデータ通信 | |
CN107483429B (zh) | 一种数据加密方法和装置 | |
JP2016514913A (ja) | セッション鍵を確立する方法および装置 | |
CN108964895B (zh) | 基于群组密钥池和改进Kerberos的User-to-User身份认证系统和方法 | |
Niu et al. | A novel user authentication scheme with anonymity for wireless communications | |
CN114513339A (zh) | 一种安全认证方法、系统及装置 | |
CN101827106A (zh) | 一种dhcp安全通信方法、装置和系统 | |
CN110832806A (zh) | 针对面向身份的网络的基于id的数据面安全 | |
CN110417722B (zh) | 一种业务数据通信方法、通信设备及存储介质 | |
CN114928503B (zh) | 一种安全通道的实现方法及数据传输方法 | |
KR101880999B1 (ko) | 사물 인터넷 네트워크의 엔드 투 엔드 데이터 암호화 시스템 및 방법 | |
JP2004194196A (ja) | パケット通信認証システム、通信制御装置及び通信端末 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121212 Termination date: 20190928 |
|
CF01 | Termination of patent right due to non-payment of annual fee |