CN101610255B - 基于密码学生成地址的源地址验证装置 - Google Patents
基于密码学生成地址的源地址验证装置 Download PDFInfo
- Publication number
- CN101610255B CN101610255B CN200910088189A CN200910088189A CN101610255B CN 101610255 B CN101610255 B CN 101610255B CN 200910088189 A CN200910088189 A CN 200910088189A CN 200910088189 A CN200910088189 A CN 200910088189A CN 101610255 B CN101610255 B CN 101610255B
- Authority
- CN
- China
- Prior art keywords
- address
- module
- signature
- cga
- message
- 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.)
- Active
Links
Images
Abstract
本发明提出了一种源地址验证装置,包括主机模块和网关模块。其中,所述主机模块部署于主机上,用于生成公私钥对,生成密码学产生地址CGA地址,控制获取其他源地址,以及控制数据报文的发送;所述网关模块部署在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中的签名。本发明所提出的源地址验证装置可以不依赖于底层网络设备,具有主机级别粒度,并且支持所有源地址分配方式。
Description
技术领域
本发明一般地涉及互联网技术领域,更具体地涉及源地址验证技术。
背景技术
互联网上的采用伪造IP(Internet Protocol,互联网协议)源地址的攻击相当泛滥,据互联网观测组织的统计,每周至少有4000起采用伪造源地址的拒绝服务攻击。这类攻击具有容易发起但是难以追溯的的特点,这是造成伪造源地址攻击泛滥的原因。
目前已经有很多技术被提出来希望能控制这类攻击。它们可以分为以下三类:
路径过滤类(Filtering,过滤),这一类技术主要是使用路由信息来过滤掉一部分伪造源地址的报文。典型的例子如入口过滤(Ingress filtering),就是通过检查网关上接收到的报文其源地址是否在接入子网的地址空间范围内,从而判断报文是否合法;
端到端认证类(End-to-End Approach,端到端方法),这一类技术在源端给报文加入标记,这一标记在报文的目的端被检查用来判断报文中所含源地址的真实性;
回溯类(Traceback,回溯),回溯类技术是一种被动的技术。它希望获取报文在互联网上所经过的路径,在攻击发生时,通过分析报文路径来获取攻击源的地址。
IPv6(Internet Protocol version 6,因特网协议版本6)的部署越来越广泛,保护IPv6源地址不被伪造也成了新的需求。但是,目前还没有针对IPv6源地址的细粒度路径过滤方案。由于IPv6源地址数量更多,前缀级别的过滤方案无法有效遏制伪造源地址攻击,因此,需要一种主机粒度的IPv6源地址验证方案。尽管对交换机的修改可以达到主机粒度的IPv6源地址验证,但是这一类方案需要升级大量的二层设备,并且对网络的构建有很多限制。
因此,目前需要一种不依赖于底层接入设备的源地址验证方案。
发明内容
为了解决上述问题之一,本发明提出了一种源地址验证装置,包括主机模块和网关模块。其中,所述主机模块部署于主机上,用于生成公私钥对,生成CGA(Cryptographically Generated Address,密码学产生地址)地址,控制获取其他源地址,以及控制数据报文的发送;所述网关模块部署在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中的签名。
本发明所提出的源地址验证装置可以不依赖于底层网络设备,具有主机级别粒度,并且支持所有源地址分配方式。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明的一个实施例的源地址验证装置的示意图;以及
图2为根据本发明的一个实施例的源地址验证装置操作的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
如图1所示为根据本发明的一个实施例的源地址验证装置的示意图。作为本发明的一个实施例,该源地址验证装置包括主机模块和网关模块,其中:主机模块部署于主机上,用于生成公私钥对,生成CGA(Cryptographically Generated Address,密码学产生地址)地址,控制获取其他源地址,以及控制数据报文的发送;网关模块部署在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中的签名。
作为本发明的一个实施例,所述验证网关包括部署在本地流量往外的出口处的网络设备和/或部署在靠近主机的路由器上的路由器模块。
在图1所示的实施例中,网关模块被配置在接近主机的第一跳路由器上。主机和路由器首先分别产生自己的公私钥对和CGA地址,其后主机向路由器申请地址An的使用权。路由器发现该地址没有被使用,向主机发送一个签名种子SeedAn。此后主机和路由器分别根据签名种子产生第一个签名SigAn。在主机向外发送报文时,里面会附加上签名SigAn,路由器经过查表发现An和SigAn已经被记录,则转发报文。对于攻击者发送的源地址An的报文,由于其中没有签名,路由器认为是攻击报文,丢弃报文。
作为本发明的一个实施例,所述主机模块包括密钥生成模块、CGA地址生成模块、地址分配模块、地址注册模块和报文发送模块。其中:
密钥生成模块用于生成公私钥对,并采用一个单向的哈希函数在公钥上进行计算,获得公钥比特串;
CGA地址生成模块用于从路由器公告中获取一个地址前缀,或者使用链路本地地址的地址前缀,以这个前缀结合所述公钥比特串生成CGA地址;
地址分配模块用于使用所述CGA地址作为源地址,进行地址分配,获取普通地址;
地址注册模块用于向所述网关模块注册所述普通地址,并交换密钥种子;
报文发送模块用于根据所述签名种子产生签名,在所需要发送的数据报文中添加此签名,并发送该报文。
作为本发明的一个实施例,地址分配模块包括无状态地址分配模块、DHCPv6(Dynamic Host Configuration Protocol version 6,动态主机配置协议版本6)地址分配模块、CGA地址分配模块和静态地址分配模块,其中,
无状态地址分配模块用于在处于无状态的地址分配方式时,使用所述CGA地址作为源地址,希望使用的地址作为目标地址,发送NeighborSolicitation(邻居恳求)报文,所述邻居恳求报文附加CGA选项头,其中包含产生所述CGA地址的公钥以及RSA(Ron Rivest,Adi Shamir,and Leonard Adleman,里韦斯特-沙米尔-阿德尔曼公钥加密算法)选项头,其中包含所述密钥生成模块所产生的私钥计算的对报文的签名;如果在一定时间内,该模块没有收到针对所述邻居恳求的邻居宣告报文,则将希望使用的地址配置到本地接口;如果收到相应的邻居宣告报文,则重新生成一个地址,再次发送所述邻居恳求报文;
DHCPv6地址分配模块用于使用所述CGA地址作为源地址发送DHCPv6请求/确认报文,所述DHCPv6请求/确认(DHCPv6Request/Confirm)报文附加CGA选项头,其中包含产生所述CGA地址的公钥以及RSA选项头,其中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;
CGA地址分配模块用于在主机使用CGA地址时,使用所述CGA地址作为目标地址发送邻居恳求报文,报文附加CGA选项头,其中包含产生所述CGA地址的公钥,以及RSA选项头,其中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;
静态地址分配模块用于在主机使用静态地址时,将地址配置到本地接口。
作为本发明的一个实施例,地址注册模块包括ICMP(Internet ControlMessage Protocol,互联网控制报文协议)报文发送模块、ICMP报文验证模块和解密模块,其中,
ICMP报文发送模块用于使用所述CGA地址作为源地址,所述验证网关的地址为目的地址,发送第一ICMP报文,所述第一ICMP报文中包括希望使用的地址、CGA选项头(CGA Option Header)、RSA选项头(RSAOption Header)以及CGA标识选项头和随机字段,其中所述CGA选项头中包含产生所述CGA地址的公钥,所述RSA选项头中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;
ICMP报文验证模块用于在所述地址被所述验证网关认为可以被所述主机使用时,从验证网关接收针对其希望使用的地址的第二ICMP报文,所述第二ICMP报文的目的地址是所述主机产生的CGA地址,源地址是所述验证网关的CGA地址,所述第二ICMP报文中包括说明所述ICMP报文针对的主机申请的地址的字段,所述第二ICMP报文包括CGA选项头和相应的RSA选项头,以及使用所述主机的公钥加密之后的签名种子;在没有收到回复的报文时,重新发送所述第一ICMP报文或换用其他地址重新发送所述第一ICMP报文;
解密模块用于使用所述密钥生成模块所产生的私钥对所述签名种子解密,获得明文的签名种子。
作为本发明的一个实施例,CGA标识选项头,为CGA地址,对于静态地址的情况,为对用户标识、随机值和公钥的哈希值,其中所述用户标识是一个任意长字段,在静态地址被分配时由用户和验证网关双方共同保存,且不能泄露给其他用户。
作为本发明的一个实施例,报文发送模块包括签名生成模块和签名更新模块,其中:
签名生成模块用于使用伪随机数生成算法,根据所述签名种子产生签名,在报文中增加选项头,在其中放入所述签名并发送所述报文;
签名更新模块用于在一个签名使用一个生命周期之后,根据所述伪随机数生成算法生成下一个签名,并使用所述更新的签名发送报文。
作为本发明的一个实施例,所述网关模块包括配置模块、密钥种子分配模块和验证模块,其中,
配置模块用于通过监听地址分配或手动配置建立源地址和所述主机的CGA标识或用户标识的绑定关系;
密钥种子分配模块用于接收所述主机对于源地址的申请,验证所述主机是否可以使用申请的地址,并向所述主机分配密钥种子;
验证模块用于检查所述主机发送的报文中所包括的签名,对所述报文的源地址进行验证。
作为本发明的一个实施例,所述配置模块包括静态方式分配模块、DHCPv6方式分配模块以及无状态和CGA方式分配模块,其中,
静态方式分配模块用于在静态地址方式时,手动配置用户标识和静态地址的对应关系;
DHCPv6方式分配模块用于在DHCPv6地址进行分配时,监听DHCPv6请求/确认报文,记录其中的CGA标识,在DHCP服务器返回DHCPv6回复之后,记录其中的地址,并将所述地址和之前记录的所述CGA标识绑定;
无状态和CGA方式分配模块用于对于无状态分配的地址和CGA地址不进行预先的绑定操作。
作为本发明的一个实施例,所述密钥种子分配模块包括检查模块和分配模块,其中,
检查模块用于接收到达本地的特定类型的ICMP报文,检查其中的RSA签名的正确性以及CGA选项头和CGA标识对应关系的正确性;若检查不通过,则丢弃该报文,若检查通过,则检查具有所述CGA标识的主机是否具有权力使用其申请的地址,若是申请的是静态地址,使用的CGA标识是否是公钥、对应用户标识和随机数的正确哈希值,若是申请的是无状态地址或者CGA地址,是否是所述地址的第一个申请者,若是DHCP地址,是否是所述配置模块所记录的绑定关系;
分配模块用于在判断所述主机有使用该地址的权力时,产生随机值,作为分配给所述主机的签名种子,并从收到的ICMP报文中获取所述主机的公钥,使用所述公钥对签名种子进行加密,产生ICMP报文,ICMP报文的源地址是所述验证网关的CGA地址,目的地址是所述主机的CGA地址,所述ICMP报文中用来存放加密后的签名种子的字段,以及所述验证网关的CGA选项头和RSA签名,将所述ICMP报文发送给所述主机;在判断所述主机没有使用其申请地址的权力时,丢弃所述主机发送的ICMP报文,不进行进一步处理。
作为本发明的一个实施例,验证模块包括签名绑定模块、签名验证模块和签名更新模块,其中,
签名绑定模块用于使用和所述主机相同的算法通过签名种子产生签名,并将报文申请的源地址和所述签名以及报文的CGA地址进行绑定;
签名验证模块用于根据所述配置模块确定的绑定检查数据报文中源地址和签名的一致性;如果数据报文中源地址和签名不一致,或者不具有签名,则丢弃报文,如果数据报文中源地址和签名一致,则从报文中去除签名之后转发;
签名更新模块用于在签名使用一个生命周期之后,通过签名种子产生下一个签名,并使用新产生的签名对报文源地址进行验证。
如图2所示为根据本发明的一个实施例的源地址验证装置操作的流程图。如图所示,包括以下步骤:
步骤(1),在主机部署主机模块。所述主机模块具有如下功能:生成公私钥对、生成CGA地址、控制获取其他源地址、控制数据报文的发送;该模块按照如下步骤完成功能:
步骤(1.1),在配置所述主机模块之后,该模块首先生成一个随机的公私钥对(Kp,Ks);所述公私钥对不得暴露给其他主机;此后,该模块利用上述公钥,采用一个单向的哈希函数hash,该函数可以任何单向hash函数,例如对RSA摘要取前64位,在该公钥上进行计算,获得一个64位的比特串;
步骤(1.2),该模块从路由器公告中获取一个地址前缀P,或者使用链路本地地址的地址前缀P,以这个前缀结合步骤(1.1)中生成的64位比特串,生成一个CGA地址,即Ah=P+hash(Kp);
步骤(1.3),该模块使用该CGA地址作为源地址,进入地址分配过程,获取一个普通地址An;各种地址分配方式下的工作流程如下:
步骤(1.3.1),对于无状态的地址分配方式,该模块使用该CGA地址作为源地址,希望使用的地址作为目标地址,发送一个Neighbor Solicitation报文,报文需要附加一个CGA选项头,其中包含产生该CGA地址的公钥,同是还有一个RSA选项头,其中包含使用步骤(1.1)生成的私钥计算的对整个报文的签名;如果在一段时间内(例如,配置为2秒),该模块没有收到针对该Neighbor Solicitation(邻居恳求)的Neighbor Advertisement(邻居宣告)报文,将希望使用的地址配置到本地接口;如果收到相应的Neighbor Advertisement报文,重新生成一个地址,再次发送上述格式的Neighbor Solicitation报文;
步骤(1.3.2),对于DHCPv6方式的地址分配,该模块使用CGA地址作为源地址发送DHCPv6 Request/Confirm报文,报文需要附加一个CGA选项头,其中包含产生该CGA地址的公钥,同是还有一个RSA选项头,其中包含使用步骤(1.1)生成的私钥计算的对整个报文的签名;
步骤(1.3.3),对于主机使用CGA地址的情况,主机可以直接使用该CGA地址作为目标地址发送Neighbor Solicitation报文,报文需要附加一个CGA选项头,其中包含产生该CGA地址的公钥,同是还有一个RSA选项头,其中包含使用步骤(1.1)生成的私钥计算的对整个报文的签名;
步骤(1.3.4),对于主机使用静态地址的情况,可以直接将地址配置到本地接口;
步骤(1.4),该模块向验证网关注册步骤(1.3)中获取的普通地址An,并交换一个密钥种子SeedAn;所述验证网关,是指对源地址进行检查的网络设备,在步骤(2)中将对其进行描述;所述密钥种子,是一个256位的比特串;本步骤的详细描述如下:
步骤(1.4.1),该模块使用步骤(1.2)中生成的CGA地址Ah作为源地址,验证网关的地址为目的地址,发送一个ICMP报文,报文中使用一个字段包含希望使用的地址,报文需要附加一个CGA选项头,其中包含产生该CGA地址的公钥Kp,一个RSA选项头,其中包含使用步骤(1.1)生成的私钥Ks计算的对整个报文的签名,另外还有一个CGA标识选项头和一个字段包含一个随机值;所述CGA标识选项头,一般情况下使用的是步骤(1.2)中CGA地址本身Ah,对于静态地址的情况,使用的是对用户标识、上述随机值和公钥的哈希值;所述用户标识是一个任意长字段,它在静态地址被分配时由用户和验证网关双方共同保存,且不能泄露给其他用户;
步骤(1.4.2),在发送ICMP报文之后,如果该地址被验证网关认为可以被该主机使用,该主机模块将从验证网关收到一个针对其希望使用的地址的ICMP报文,报文的目的地址是该主机产生的CGA地址,源地址是验证网关的CGA地址,报文中具有一个字段说明该报文针对的是主机申请的哪一个地址,同时包含一个CGA Option Header和一个相应的RSA OptionHeader,报文另外包含一个字段,其中是使用主机的公钥加密之后的签名种子;如果没有收到回复的报文,主机需要重发步骤(1.4.1)中的ICMP报文,或者换用其他地址再次发送该报文;
步骤(1.4.3),主机使用步骤(1.1)中产生的私钥对签名种子解密,获得明文的签名种子;
步骤(1.5),主机模块根据签名种子产生签名SigAn,在所需要发送的数据报文中添加此签名,并发送该报文;报文中的签名将被验证网管检查,判断其源地址的真实性;具体的步骤如下:
步骤(1.5.1),主机模块使用一个伪随机数生成算法Pseudo,该算法可以是现实已经存在的伪随机数生成算法,例如Fortuna(福特图纳)算法,根据签名种子产生一个签名,即SigAn=Pseudo(SeedAn);在报文中增加一个选项头,在其中放入该签名;转发报文;
步骤(1.5.2),每当一个签名使用一个生命周期之后,主机模块根据上述伪随机数生成算法生成下一个签名,并开始使用这个签名;所述生命周期是一段固定的时间,该时间可以被配置,验证网关和主机必须使用相同的生命周期;
作为本发明的一个实施例,验证网关模块的工作方式如下:
步骤(2),在网络中部署验证网关模块,该网关模块可以是独立的网络设备,部署在本地流量向外的出口处,或者是一个路由器模块,部署在靠近主机的第一跳路由器上;该网关模块完成网关CGA地址的产生,授权地址使用,分配密钥种子,验证报文中签名的功能;该网关模块按照如下步骤进行工作:
步骤(2.1),验证网关生成一个公私钥对(p,s),或者手动配置一个公私钥对;基于公钥和预先配置的单向哈希函数hash,该函数可以任何单向hash函数,例如对RSA摘要取前64位,产生一个64位的比特串;基于手动配置或者其他协议获取的网络前缀P,结合前面产生的比特串,生成一个CGA地址Ar=P+hash(p);使用这个CGA地址Ar作为源地址,向网络进行RA公告,RA公告里面需要加上CGA选项头和RSA签名;此步骤没有在权利要求书和发明内容中进行对应,因为这部分是基本配置,属于已经广泛存在的内容,因此不要求进行保护。
步骤(2.2),验证网关通过监听地址分配过程或者手动配置建立起源地址和主机的CGA地址(或用户标识)的绑定关系;对于静态地址,验证网关需要事先手动配置用户标识和静态地址的对应关系;对于其他类型的地址,步骤描述如下:
步骤(2.2.1),对于DHCPv6分配的地址,验证网关监听所有的DHCPv6Request/Confirm报文,记录其中的CGA标识;在DHCP服务器返回DHCPv6Reply之后,记录其中的地址,并将这个地址和前面记录的CGA标识绑定起来;
步骤(2.2.2),对于无状态分配的地址和CGA地址,验证网管不进行预先的绑定操作;
步骤(2.3),验证网关接收主机对于源地址的申请,验证主机是否可以使用申请的地址,并向主机分配密钥种子SeedAn;详细的步骤描述如下:
步骤(2.3.1),验证网关接收到达本地的特定类型的ICMP报文,检查其中RSA签名的正确性以及CGA选项头和CGA标识对应关系的正确性;若检查不通过,丢弃该报文,否则,检查具有该CGA标识的主机是否具有权力使用其申请的地址,即:若是申请的是静态地址,使用的CGA标识是否是公钥、对应用户标识和随机数的正确哈希值,若是申请的是无状态地址或者CGA地址,是否是该地址的第一个申请者,若是DHCP地址,是否是步骤(2.1.1)中记录的绑定关系;
步骤(2.3.2),如果验证网关经过检查判断主机有使用该地址的权力,将产生一个随机值,作为分配给主机的签名种子,并从收到的ICMP报文中拿出主机的公钥,使用这个公钥对签名种子进行加密;然后,验证网关产生一个ICMP报文,其源地址是自己的CGA地址,目的地址是主机的CGA地址,报文中包含一个字段用来存放加密后的签名种子,另外还需要加上验证网关的CGA Option Header和RSA签名;产生该ICMP报文之后,将该报文发送给主机;如果验证网管判断主机没有使用其申请地址的权力,将直接丢弃主机发送的ICMP报文,不进行进一步处理;
步骤(2.4),验证网关检查主机发送的数据报文中所含的有的签名SigAn,对报文的源地址进行验证;详细的步骤描述如下:
步骤(2.4.1),验证网关使用和主机相同的算法通过签名种子产生签名,并将报文申请的源地址和该签名,以及报文的CGA地址进行绑定;
步骤(2.4.2),验证网关依赖(2.3.1)建立的绑定检查数据报文中源地址和签名的一致性;如果发现数据报文中存在源地址和签名不一致的情况,或者不具有签名,直接丢弃报文,否则,从报文中去除签名之后转发;
步骤(2.4.3),每当一个签名使用一个生命周期之后,通过签名种子产生下一个签名,并使用新产生的签名对报文源地址进行验证。
作为本发明的一个实施例,主要的数据结构是验证网关模块所使用的过滤表,验证网关模块利用该表对报文的签名进行检查。该表的表项具有如下表1的结构:
表1:验证网关所使用的过滤表
授权的源地址 | 当前签名 | 前一个签名 | CGA地址 | CGA公钥 | 地址生存期 | 签名种子 | 随机数 |
128比特 | 128比特 | 128比特 | 128比特 | 384比特 | 32比特 | 256比特 | 32比特 |
作为本发明的一个实施例,过滤表以授权的源地址和CGA公钥作为索引。
作为本发明的一个实施例,步骤(1.4.1)中,主机发送给验证网关的ICMP报文具有如下表2的格式:
表2:主机发送给验证网关的ICMP报文格式
作为本发明的一个实施例,步骤(2.3.1)中,验证网关发送给主机的ICMP报文具有如下表3所示的格式:
表3:验证网关发送给主机的ICMP报文格式
本发明的实施例提出了一种可以不依赖于底层网络设备的、具有主机级别粒度的、支持所有源地址分配方式的IPv6源地址验证方案。其使用CGA技术,在不引入PKI(Public Key Infrastructure,公钥基础设施)的基础上达到安全的密钥使用,并使用轻量的签名技术对报文的源地址进行验证。它可以作为独立的专用网络设备实现,也可以嵌入路由器作为扩展部件。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (9)
1.一种源地址验证装置,其特征在于,包括主机模块和网关模块,其中,
所述主机模块部署于主机上,用于生成公私钥对,生成密码学产生地址CGA地址,控制获取其他源地址,以及控制数据报文的发送;以及
所述网关模块部署在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中的签名;
所述验证网关包括部署在本地流量往外的出口处的网络设备和/或部署在靠近主机的路由器上的路由器模块;
所述主机模块包括密钥生成模块、CGA地址生成模块、地址分配模块、地址注册模块和报文发送模块,其中,
所述密钥生成模块用于生成公私钥对,并采用一个单向的哈希函数在公钥上进行计算,获得公钥比特串;
所述CGA地址生成模块用于从路由器公告中获取一个地址前缀,或者使用链路本地地址的地址前缀,以这个前缀结合所述公钥比特串生成CGA地址;
所述地址分配模块用于使用所述CGA地址作为源地址,进行地址分配,获取普通地址;
所述地址注册模块用于向所述网关模块注册所述普通地址,并交换密钥种子;
所述报文发送模块用于根据签名种子产生签名,在所需要发送的数据报文中添加此签名,并发送该报文;
所述网关模块包括配置模块、密钥种子分配模块和验证模块,其中,
所述配置模块用于通过监听地址分配或手动配置建立源地址和所述主机的CGA标识或用户标识的绑定关系;
所述密钥种子分配模块用于接收所述主机对于源地址的申请,验证所述主机是否有使用申请的地址的权利,并向所述主机分配密钥种子;
所述验证模块用于检查所述主机发送的报文中所包括的签名,对所述报文的源地址进行验证。
2.根据权利要求1所述的源地址验证装置,其特征在于,所述地址分配模块包括无状态地址分配模块、动态主机配置协议版本6DHCPv6地址分配模块、CGA地址分配模块和静态地址分配模块,其中,
所述无状态地址分配模块用于在处于无状态的地址分配方式时,使用所述CGA地址作为源地址,希望使用的地址作为目标地址,发送邻居恳求报文,所述邻居恳求报文附加CGA选项头,其中包含产生所述CGA地址的公钥以及里韦斯特-沙米尔-阿德尔曼公钥加密算法RSA选项头,RSA选项头中包含所述密钥生成模块所产生的私钥计算的对报文的签名;如果在一定时间内,该模块没有收到针对所述邻居恳求的邻居宣告报文,则将希望使用的地址配置到本地接口;如果收到相应的邻居宣告报文,则重新生成一个地址,再次发送所述邻居恳求报文;
所述DHCPv6地址分配模块用于使用所述CGA地址作为源地址发送DHCPv6请求/确认报文,所述DHCPv6请求/确认报文附加CGA选项头,其中包含产生所述CGA地址的公钥以及RSA选项头,RSA选项头中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;
所述CGA地址分配模块用于在主机使用CGA地址时,使用所述CGA地址作为目标地址发送邻居恳求报文,报文附加CGA选项头,其中包含产生所述CGA地址的公钥,以及RSA选项头,RSA选项头中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;
所述静态地址分配模块用于在主机使用静态地址时,将地址 配置到本地接口。
3.根据权利要求1所述的源地址验证装置,其特征在于,所述地址注册模块包括互联网控制报文协议ICMP报文发送模块、ICMP报文验证模块和解密模块,其中,
所述ICMP报文发送模块用于使用所述CGA地址作为源地址,所述验证网关的地址为目的地址,发送第一ICMP报文,所述第一ICMP报文中包括希望使用的地址、CGA选项头、RSA选项头以及CGA标识选项头和随机字段,其中所述CGA选项头中包含产生所述CGA地址的公钥,所述RSA选项头中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;
所述ICMP报文验证模块用于在所述地址被所述验证网关认为可以被所述主机使用时,从验证网关接收针对其希望使用的地址的第二ICMP报文,所述第二ICMP报文的目的地址是所述主机产生的CGA地址,源地址是所述验证网关的CGA地址,所述第二ICMP报文中包括说明所述ICMP报文针对的主机申请的地址的字段,所述第二ICMP报文包括CGA选项头和相应的RSA选项头,以及使用所述主机的公钥加密之后的签名种子;在没有收到回复的报文时,重新发送所述第一ICMP报文或换用其他地址重新发送所述第一ICMP报文;
所述解密模块用于使用所述密钥生成模块所产生的私钥对所述签名种子解密,获得明文的签名种子。
4.根据权利要求3所述的源地址验证装置,其特征在于,
所述CGA标识选项头,一般情况下为所述CGA地址,对于静态地址的情况,为对用户标识、随机值和公钥的哈希值,其中所述用户标识是一个任意长字段,在静态地址被分配时由用户和验证网关双方共同保存,且不能泄露给其他用户。
5.根据权利要求1所述的源地址验证装置,其特征在于,所述报文发送模块包括签名生成模块和签名更新模块,其中
所述签名生成模块用于使用伪随机数生成算法,根据所述签 名种子产生签名,在报文中增加选项头,在其中放入所述签名并发送所述报文;
所述签名更新模块用于在一个签名使用一个生命周期之后,根据所述伪随机数生成算法生成下一个签名,并使用所述更新的签名发送报文。
6.根据权利要求1所述的源地址验证装置,其特征在于,所述配置模块包括静态方式分配模块、DHCPv6方式分配模块以及无状态和CGA方式分配模块,其中,
所述静态方式分配模块用于在静态地址方式时,手动配置用户标识和静态地址的对应关系;
所述DHCPv6方式分配模块用于在DHCPv6地址进行分配时,监听DHCPv6请求/确认报文,记录其中的CGA标识,在DHCP服务器返回DHCPv6回复之后,记录其中的地址,并将所述地址和之前记录的所述CGA标识绑定;
所述无状态和CGA方式分配模块用于对于无状态分配的地址和CGA地址不进行预先的绑定操作。
7.根据权利要求1所述的源地址验证装置,其特征在于,所述密钥种子分配模块包括检查模块和分配模块,其中,
所述检查模块用于接收到达本地的特定类型的ICMP报文,检查其中的RSA签名的正确性以及CGA选项头和CGA标识对应关系的正确性;若检查不通过,则丢弃该报文,若检查通过,则检查具有所述CGA标识的主机是否具有权利使用其申请的地址,若申请的是静态地址,则继续检查使用的CGA标识是否是公钥、对应用户标识和随机数的正确哈希值,若申请的是无状态地址或者CGA地址,则继续检查是否是所述地址的第一个申请者,若是DHCP地址,则继续检查是否是所述配置模块所记录的绑定关系;
所述分配模块用于在判断所述主机有使用该地址的权利时,产生随机值,作为分配给所述主机的签名种子,并从收到的ICMP报文中获取所述主机的公钥,使用所述公钥对签名种子进行加密, 产生ICMP报文,ICMP报文的源地址是所述验证网关的CGA地址,目的地址是所述主机的CGA地址,所述ICMP报文中用来存放加密后的签名种子的字段,以及所述验证网关的CGA选项头和RSA签名,将所述ICMP报文发送给所述主机;在判断所述主机没有使用其申请地址的权利时,丢弃所述主机发送的ICMP报文。
8.根据权利要求1所述的源地址验证装置,其特征在于,所述验证模块包括签名绑定模块、签名验证模块和签名更新模块,其中,
所述签名绑定模块用于使用和所述主机相同的算法通过签名种子产生签名,并将报文申请的源地址和所述签名以及报文的CGA地址进行绑定;
所述签名验证模块用于根据所述配置模块确定的绑定检查数据报文中源地址和签名的一致性;如果数据报文中源地址和签名不一致,或者不具有签名,则丢弃报文,如果数据报文中源地址和签名一致,则从报文中去除签名之后转发;
所述签名更新模块用于在签名使用一个生命周期之后,通过签名种子产生下一个签名,并使用新产生的签名对报文源地址进行验证。
9.根据权利要求1-8任一项所述的源地址验证装置,其特征在于,所述源地址包括IPv6源地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910088189A CN101610255B (zh) | 2009-07-10 | 2009-07-10 | 基于密码学生成地址的源地址验证装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910088189A CN101610255B (zh) | 2009-07-10 | 2009-07-10 | 基于密码学生成地址的源地址验证装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101610255A CN101610255A (zh) | 2009-12-23 |
CN101610255B true CN101610255B (zh) | 2012-10-24 |
Family
ID=41483837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910088189A Active CN101610255B (zh) | 2009-07-10 | 2009-07-10 | 基于密码学生成地址的源地址验证装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101610255B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8832238B2 (en) * | 2011-09-12 | 2014-09-09 | Microsoft Corporation | Recording stateless IP addresses |
CN106487740A (zh) * | 2015-08-24 | 2017-03-08 | 湖南大学 | 一种基于icmp协议的文件安全传输方法 |
CN107124278B (zh) * | 2017-03-30 | 2021-03-30 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置以及数据共享系统 |
CN109120611B (zh) * | 2018-08-03 | 2021-07-06 | 下一代互联网重大应用技术(北京)工程研究中心有限公司 | 用于地址生成服务器的用户认证方法、设备、系统及介质 |
CN110493367B (zh) * | 2019-08-20 | 2020-07-28 | 清华大学 | 无地址的IPv6非公开服务器、客户机与通信方法 |
CN111131550B (zh) * | 2019-12-30 | 2022-07-15 | 江苏大周基业智能科技有限公司 | 基于密码算法的局域网内ip地址计算方法 |
CN114598471A (zh) * | 2022-03-18 | 2022-06-07 | 北京启明星辰信息安全技术有限公司 | 一种连接发起主机到控制器的单包授权种子分发方法及装置 |
CN116668408B (zh) * | 2023-08-01 | 2023-10-13 | 华中科技大学 | 一种IPv6容器云平台真实地址编码验证与溯源方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008082768A1 (en) * | 2006-12-26 | 2008-07-10 | Motorola, Inc. | Method and apparatus for facilitating network mobility |
CN101299668A (zh) * | 2008-06-30 | 2008-11-05 | 华为技术有限公司 | 一种通信的建立方法、系统和装置 |
-
2009
- 2009-07-10 CN CN200910088189A patent/CN101610255B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008082768A1 (en) * | 2006-12-26 | 2008-07-10 | Motorola, Inc. | Method and apparatus for facilitating network mobility |
CN101299668A (zh) * | 2008-06-30 | 2008-11-05 | 华为技术有限公司 | 一种通信的建立方法、系统和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101610255A (zh) | 2009-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101610255B (zh) | 基于密码学生成地址的源地址验证装置 | |
Liu et al. | Passport: Secure and Adoptable Source Authentication. | |
US8098823B2 (en) | Multi-key cryptographically generated address | |
Arkko et al. | Secure neighbor discovery (SEND) | |
US8181014B2 (en) | Method and apparatus for protecting the routing of data packets | |
US7653813B2 (en) | Method and apparatus for address creation and validation | |
Goyal et al. | An efficient solution to the ARP cache poisoning problem | |
US8843751B2 (en) | IP address delegation | |
US8650397B2 (en) | Key distribution to a set of routers | |
CN104219239B (zh) | 一种基于邻居发现的LoWPAN节点安全接入控制方法 | |
EP2259542B1 (en) | Method, apparatus and system for processing dynamic host configuration protocol message | |
CN102132532A (zh) | 用于避免不需要的数据分组的方法和装置 | |
Praptodiyono et al. | Security mechanism for IPv6 stateless address autoconfiguration | |
Srinath et al. | Detection and Prevention of ARP spoofing using Centralized Server | |
US6948074B1 (en) | Method and system for distributed generation of unique random numbers for digital tokens | |
US8364949B1 (en) | Authentication for TCP-based routing and management protocols | |
KR100856918B1 (ko) | IPv6 기반 네트워크상에서의 IP 주소 인증 방법 및IPv6 기반 네트워크 시스템 | |
Ahmed et al. | Secure neighbor discovery (SeND): Attacks and challenges | |
Schridde et al. | TrueIP: prevention of IP spoofing attacks using identity-based cryptography | |
CN110401646B (zh) | IPv6安全邻居发现过渡环境中CGA参数探测方法及装置 | |
Chang et al. | Using resource public key infrastructure for secure border gateway protocol | |
Song et al. | Anonymous-address-resolution model | |
Kempf et al. | Ip address authorization for secure address proxying using multi-key cgas and ring signatures | |
Su et al. | Secure DHCPv6 that uses RSA authentication integrated with self-certified address | |
Murugesan et al. | Security mechanism for IPv6 router discovery based on distributed trust management |
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 |