基于密码学生成地址的源地址验证装置的制作方法

文档序号:7701233阅读:122来源:国知局
专利名称:基于密码学生成地址的源地址验证装置的制作方法
技术领域
本发明 一般地涉及互联网技术领域,更具体地涉及源地址验证技术。
背景技术
互联网上的采用伪造IP (Internet Protocol,互联网协议)源地址的攻 击相当泛滥,据互联网观测组织的统计,每周至少有4000起采用伪造源地 址的拒绝服务攻击。这类攻击具有容易发起但是难以追溯的的特点,这是 造成伪造源地址攻击泛滥的原因。
目前已经有很多技术被提出来希望能控制这类攻击。它们可以分为以 下三类
路径过滤类(FUtering,过滤),这一类技术主要是使用路由信息来过滤 4卓一部分伪造源地址的净艮文。典型的例子如入口过滤(Ingress filtering),就 是通过检查网关上接收到的报文其源地址是否在接入子网的地址空间范围 内,从而判断报文是否合法;
端到端i/^L类(End-to-End Approach,端到端方法),这一类4支术在源端 给报文加入标记,这一标记在报文的目的端被检查用来判断报文中所含源 地址的真实性;
回溯类(Traceback,回溯),回溯类纟支术是一种^皮动的4支术。它希望获 取报文在互联网上所经过的路径,在攻击发生时,通过分析报文路径来获 取攻击源的;也址。
IPv6 (Internet Protocol version 6,因特网协议版本6 )的部署越来越广 泛,保护IPv6源地址不被伪造也成了新的需求。但是,目前还没有针对IPv6 源地址的细粒度^^径过滤方案。由于IPv6源地址^:量更多,前缀级别的过 滤方案无法有效遏制伪造源地址攻击,因此,需要一种主机粒度的IPv6源 地址l企证方案。尽管对交换机的修改可以达到主机粒度的IPv6源地址-验证,但是这一类方案需要升级大量的二层设备,并且对网络的构建有很多限制。 因此,目前需要一种不依赖于底层接入设备的源地址验证方案。

发明内容
为了解决上述问题之一,本发明提出了一种源地址验证装置,包括主 机模块和网关模块。其中,所述主机模块部署于主机上,用于生成公私钥
对,生成CGA ( Cryptographically Generated Address,密码学产生地址)地
址,控制获取其他源地址,以及控制数据报文的发送;所述网关模块部署 在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中 的签名。
本发明所提出的源地址验证装置可以不依赖于底层网络设备,具有主 机级别粒度,并且支持所有源地址分配方式。


本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描 述中将变得明显和容易理解,其中
图1为根据本发明的一个实施例的源地址验证装置的示意图;以及 图2为根据本发明的 一个实施例的源地址验证装置操作的流程图。
具体实施例方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出。下 面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解 释为对本发明的限制。
如图1所示为根据本发明的一个实施例的源地址验证装置的示意图。 作为本发明的一个实施例,该源地址验证装置包括主机模块和网关模块, 其中主机模块部署于主机上,用于生成公私钥对,生成CGA (Cryptographically Generated Address, 密码学产生地址)地址,控制获取 其他源地址,以及控制数据报文的发送;网关模块部署在验证网关上,用 于完成授权地址使用,分配密钥种子,以及验证报文中的签名。作为本发明的 一 个实施例,所述验证网关包括部署在本地流量往外的 出口处的网络设备和/或部署在靠近主机的路由器上的路由器模块。
在图l所示的实施例中,网关模块被配置在接近主机的第一跳路由器
上。主机和路由器首先分别产生自己的公私钥对和CGA地址,其后主机向 路由器申请地址An的使用权。路由器发现该地址没有被使用,向主机发送 一个签名种子SeedAn。此后主机和路由器分别根据签名种子产生第一个签 名SigAn。在主机向外发送报文时,里面会附加上签名SigAn,路由器经过 查表发现An和SigAn已经被记录,则转发报文。对于攻击者发送的源地 址An的报文,由于其中没有签名,路由器认为是攻击报文,丢弃报文。
作为本发明的一个实施例,所述主机模块包括密钥生成模块、CGA地 址生成模块、地址分配模块、地址注册模块和报文发送模块。其中
密钥生成模块用于生成公私钥对,并采用 一个单向的哈希函数在公钥 上进行计算,获得公钥比特串;
CGA地址生成模块用于从路由器公告中获取一个地址前缀,或者使用 链路本地地址的地址前缀,以这个前缀结合所述公钥比特串生成CGA地
址;
地址分配模块用于使用所述CGA地址作为源地址,进行地址分配,获 耳又普通i也址;
地址注册模块用于向所述网关模块注册所述普通地址,并交换密钥种
子;
报文发送模块用于根据所述签名种子产生签名,在所需要发送的数据 才良文中添加此签名,并发送该报文。
作为本发明的一个实施例,地址分配模块包括无状态地址分配模块、
DHCPv6 ( Dynamic Host Configuration Protocol version 6, 动'态主才几酉己置十办 议版本6)地址分配模块、CGA地址分配模块和静态地址分配模块,其中, 无状态地址分配模块用于在处于无状态的地址分配方式时,使用所述 CGA地址作为源地址,希望使用的地址作为目标地址,发送Neighbor Solicitation (邻居恳求)报文,所述邻居恳求报文附加CGA选项头,其中 包含产生所述CGA地址的公钥以及RSA ( Ron Rivest, Adi Shamir,and Leonard Adleman,里韦斯特-沙米尔-阿德尔曼公钥加密算法)选项头, 其中包含所述密钥生成模块所产生的私钥计算的对报文的签名;如果在一 定时间内,该模块没有收到针对所述邻居恳求的邻居宣告报文,则将希望 使用的地址配置到本地接口;如果收到相应的邻居宣告报文,则重新生成 一个地址,再次发送所述邻居恳求报文;
DHCPv6地址分配模块用于使用所述CGA地址作为源地址发送 DHCPv6请求/确认报文,所述DHCPv6请求/确认(DHCPv6 R叫uest/Confirm )报文附加CGA选项头,其中包含产生所述CGA地址的 乂〉钥以及R S A选项头,其中包含使用所述密钥生成模块所产生的私钥计算 的对报文的签名;
CGA地址分配模块用于在主机使用CGA地址时,使用所述CGA地址 作为目标地址发送邻居恳求报文,报文附加CGA选项头,其中包含产生所 述CGA地址的公钥,以及RSA选项头,其中包含使用所述密钥生成模块 所产生的私钥计算的对报文的签名;
静态地址分配模块用于在主机使用静态地址时,将地址配置到本地接口 。
作为本发明的一个实施例,地址注册才莫块包括ICMP (Internet Control Message Protocol,互联网控制报文协议)报文发送模块、ICMP报文验证 模块和解密模块,其中,
ICMP报文发送模块用于使用所述CGA地址作为源地址,所述验证网 关的地址为目的地址,发送第一ICMP报文,所述第一 ICMP报文中包括 希望使用的地址、CGA选项头(CGA Option Header ) 、 RSA选项头(RSA Option Header )以及CGA标识选项头和随才几字段,其中所述CGA选项头 中包含产生所述CGA地址的公钥,所述RSA选项头中包含使用所述密钥 生成模块所产生的私钥计算的对报文的签名;
ICMP净艮文验证模块用于在所述地址被所述验证网关认为可以被所述 主冲几使用时,从验证网关接收针对其希望使用的地址的第二 ICMP报文, 所述第二ICMP报文的目的地址是所述主机产生的CGA地址,源地址是所 述验证网关的CGA地址,所述第二 ICMP报文中包括说明所述ICMP报文
10针对的主机申请的地址的字段,所述第二 ICMP报文包括CGA选项头和相 应的RSA选项头,以及使用所述主机的公钥加密之后的签名种子;在没有 收到回复的报文时,重新发送所述第一 ICMP报文或换用其他地址重新发 送所述第一ICMP报文;
解密模块用于使用所述密钥生成模块所产生的私钥对所述签名种子解 密,获得明文的签名种子。
作为本发明的一个实施例,CGA标识选项头,为CGA地址,对于静 态地址的情况,为对用户标识、随机值和公钥的哈希值,其中所述用户标 识是一个任意长字段,在静态地址被分配时由用户和验证网关双方共同保 存,且不能泄露给其他用户。
作为本发明的一个实施例,报文发送模块包括签名生成模块和签名更 新模块,其中
签名生成模块用于使用伪随机数生成算法,根据所述签名种子产生签 名,在报文中增加选项头,在其中放入所述签名并发送所述报文;
签名更新模块用于在一个签名使用 一个生命周期之后,根据所述伪随 机数生成算法生成下一个签名,并使用所述更新的签名发送报文。
作为本发明的一个实施例,所述网关模块包括配置模块、密钥种子分 配模块和验证模块,其中,
配置模块用于通过监听地址分配或手动配置建立源地址和所述主机的 CGA标识或用户标识的绑定关系;
密钥种子分配模块用于接收所述主机对于源地址的申请,验证所述主 机是否可以使用申请的地址,并向所述主机分配密钥种子;
验证模块用于检查所述主机发送的报文中所包括的签名,对所述报文 的源地址进4于-验证。
作为本发明的 一个实施例,所述配置模块包括静态方式分配模块、 DHCPv6方式分配才莫块以及无状态和CGA方式分配冲莫块,其中,
静态方式分配模块用于在静态地址方式时,手动配置用户标识和静态 ;也址的又于应关系;
DHCPv6方式分配模块用于在DHCPv6地址进行分配时,监听DHCPv6请求/确认报文,记录其中的CGA标识,在DHCP服务器返回DHCPv6回 复之后,记录其中的地址,并将所述地址和之前记录的所述CGA标识绑定;
无状态和CGA方式分配模块用于对于无状态分配的地址和CGA地址 不进行预先的绑定操作。
作为本发明的一个实施例,所述密钥种子分配模块包括检查模块和分 配模块,其中,
检查模块用于接收到达本地的特定类型的ICMP报文,检查其中的RSA 签名的正确性以及CGA选项头和CGA标识对应关系的正确性;若4全查不 通过,则丟弃该报文,若检查通过,则检查具有所述CGA标识的主机是否 具有权力使用其申请的地址,若是申请的是静态地址,使用的CGA标识是 否是公钥、对应用户标识和随机数的正确哈希值,若是申请的是无状态地 址或者CGA地址,是否是所述地址的第一个申请者,若是DHCP地址,是 否是所述配置模块所记录的绑定关系;
分配模块用于在判断所述主机有使用该地址的权力时,产生随机值, 作为分配给所述主机的签名种子,并从收到的ICMP报文中获取所述主机 的公钥,使用所述公钥对签名种子进行加密,产生ICMP报文,ICMP报文 的源地址是所述验证网关的CGA地址,目的地址是所述主机的CGA地址, 所述ICMP报文中用来存放加密后的签名种子的字段,以及所述验证网关 的CGA选项头和RSA签名,将所述ICMP报文发送给所述主机;在判断 所述主机没有使用其申请地址的权力时,丢弃所述主机发送的ICMP报文, 不进行进一步处理。
作为本发明的一个实施例,验证模块包括签名绑定模块、签名验证模 块和签名更新模块,其中,
签名绑定模块用于使用和所述主机相同的算法通过签名种子产生签 名,并将报文申请的源地址和所述签名以及报文的CGA地址进行绑定;
签名验证模块用于根据所述配置模块确定的绑定检查数据报文中源地 址和签名的一致性;如果数据报文中源地址和签名不一致,或者不具有签 名,则丢弃报文,如果数据报文中源地址和签名一致,则从报文中去除签 名之后转发;签名更新模块用于在签名使用 一个生命周期之后,通过签名种子产生 下一个签名,并使用新产生的签名对报文源地址进行验证。
如图2所示为根据本发明的一个实施例的源地址验证装置操作的流程
图。如图所示,包括以下步骤
步骤(l),在主机部署主机模块。所述主机模块具有如下功能生成公 私钥对、生成CGA地址、控制获取其他源地址、控制数据报文的发送;该 模块按照如下步骤完成功能
步骤(l.l),在配置所述主机模块之后,该模块首先生成一个随机的公 私钥对(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地址作 为源地址,希望4吏用的地址作为目标地址,发送一个Neighbor Solicitation 报文,报文需要附加一个CGA选项头,其中包含产生该CGA地址的公钥, 同是还有一个RSA选项头,其中包含使用步骤(1.1 )生成的私钥计算的对 整个报文的签名;如果在一段时间内(例如,配置为2秒),该模块没有 收到4十对该Neighbor Solicitation(邻居恳求)的Neighbor Advertisement(邻 居宣告)报文,将希望使用的地址配置到本地接口 ;如果收到相应的 Neighbor Advertisement报文,重新生成一个地址,再次发送上述才各式的 Neighbor Solicitation报文;
步骤(1.3.2),对于DHCPv6方式的地址分配,该模块使用CGA地址作 为源地址发送DHCPv6 R叫uest/Confirm报文,报文需要附加一个CGA选 项头,其中包含产生该CGA地址的/>钥,同是还有一个RSA选项头,其
13中包含使用步骤(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报文之后,如果该地址被验证网关"i人为可以 被该主机使用,该主机模块将从验证网关收到一个针对其希望使用的地址 的ICMP报文,才艮文的目的地址是该主机产生的CGA地址,源地址是验证 网关的CGA地址,报文中具有一个字段说明该报文针对的是主机申请的哪 一个i也址,同时包含一个CGA Option Header和一个相应的RSA Option Header,报文另外包含一个字段,其中是使用主机的公钥加密之后的签名 种子;如果没有收到回复的报文,主机需要重发步骤(1.4.1)中的ICMP报文, 或者换用其他地址再次发送该报文;
步骤(1.4.3),主机使用步骤(l.l)中产生的私钥对签名种子解密,获得明文的签名种子;
步骤(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分配的地址,验证网关监听所有的DHCPv6 R叫uest/Confirm报文,记录其中的CGA标识;在DHCP服务器返回DHCPv6 Reply之后,记录其中的地址,并将这个地址和前面记录的CGA标识绑定 起来;
步骤(2.2.2),对于无状态分配的地址和CGA地址,验证网管不进行预 先的绑定操作;
步骤(2.3),验证网关接收主机对于源地址的申请,-验证主机是否可以 使用申请的地址,并向主机分配密钥种子SeedAn;详细的步骤描述如下 步骤(2.3.1),验证网关接收到达本地的特定类型的ICMP报文,检查其
冲全查不通过,丟弃该才艮文,否则,4企查具有该CGA标识的主4几是否具有权 力使用其申请的地址,即若是申请的是静态地址,使用的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)建立的绑定4企查数据报文中源地址和签名的一致性;如果发现数据报文中存在源地址和签名不一致的情况,或 者不具有签名,直接丢弃报文,否则,从报文中去除签名之后转发;
步骤(2.4.3),每当一个签名使用一个生命周期之后,通过签名种子产生 下一个签名,并使用新产生的签名对报文源地址进行验证。
作为本发明的一个实施例,主要的数据结构是验证网关模块所使用的 过滤表,验证网关模块利用该表对报文的签名进行检查。该表的表项具有 如下表1的结构
表l:验证网关所使用的过滤表
授权的 源地址当前签 名前一个 签名CGA地 址CGA公 钥地址生 存期签名种 子随机 数
128 比 特128 比 特128 比 特128比特384比特32比特256比 特32 比 特
作为本发明的 一个实施例,过滤表以授权的源地址和CGA公钥作为索引。
作为本发明的一个实施例,步骤(1.4.1)中,主机发送给验证网关的 ICMP l艮文具有如下表2的才各式
表2:主机发送给验证网关的ICMP报文格式
类型(l字节)类型(l字节)校验和(2字节)
申请使用的地址(16字节)
随机数(4字节) CGA选项头(可变长)
RSA签名(可变长)
作为本发明的一个实施例,步骤(2.3.1)中,验证网关发送给主机的 ICMP报文具有如下表3所示的格式表3:-险证网关发送给主机的ICMP报文格式
类型(l字节)类型(l字节)校验和(2字节)
申请使用的地址(16字节)
签名种子(32字节)
CGA选项头(可变长)
RSA签名(可变长)
本发明的实施例提出了一种可以不依赖于底层网络设备的、具有主机 级别粒度的、支持所有源地址分配方式的IPv6源地址验证方案。其使用 CGA技术,在不引入PKI (Public Key Infrastructure,公钥基础设施)的基 础上达到安全的密钥使用,并使用轻量的签名技术对报文的源地址进行验 证。它可以作为独立的专用网络设备实现,也可以嵌入路由器作为扩展部 件。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员 而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例 进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等 同限定。
权利要求
1、一种源地址验证装置,其特征在于,包括主机模块和网关模块,其中,所述主机模块部署于主机上,用于生成公私钥对,生成密码学产生地址CGA地址,控制获取其他源地址,以及控制数据报文的发送;以及所述网关模块部署在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中的签名。
2、 根据权利要求1所述的源地址验证装置,其特征在于,所述验证网 关包括部署在本地流量往外的出口处的网络设备和/或部署在靠近主机的 路由器上的路由器模块。
3、 根据权利要求1所述的源地址验证装置,其特征在于,所述主机模 块包括密钥生成模块、CGA地址生成模块、地址分配模块、地址注册模块 和报文发送模块,其中,所述密钥生成模块用于生成公私钥对,并采用一个单向的哈希函数在 公钥上进行计算,获得公钥比特串;所述CGA地址生成模块用于从路由器公告中获取一个地址前缀,或者 4吏用4连路本地地址的地址前缀,以这个前缀结合所述公钥比特串生成CGA 地址;所述地址分配模块用于使用所述CGA地址作为源地址,进行地址分 配,获取普通地址;所述地址注册模块用于向所述网关模块注册所述普通地址,并交换密 钥种子;所述报文发送模块用于根据所述签名种子产生签名,在所需要发送的 数据报文中添加此签名,并发送该报文。
4、 根据权利要求3所述的源地址验证装置,其特征在于,所述地址分 配模块包括无状态地址分配模块、动态主机配置协议版本6 DHCPv6地址 分配模块、CGA地址分配模块和静态地址分配才莫块,其中,所述无状态地址分配模块用于在处于无状态的地址分配方式时,使用所述CGA地址作为源地址,希望使用的地址作为目标地址,发送邻居恳求 报文,所述邻居恳求报文附加CGA选项头,其中包含产生所述CGA地址 的公钥以及里韦斯特-沙米尔-阿德尔曼公钥加密算法RSA选项头,其中包 含所述密钥生成模块所产生的私钥计算的对报文的签名;如果在一定时间 内,该模块没有收到针对所述邻居恳求的邻居宣告报文,则将希望使用的 地址配置到本地接口;如果收到相应的邻居宣告报文,则重新生成一个地 址,再次发送所述邻居恳求报文;所述DHCPv6地址分配模块用于使用所述CGA地址作为源地址发送 DHCPv6请求/确认报文,所述DHCPv6请求/确认报文附加CGA选项头, 其中包含产生所述CGA地址的乂>钥以及RSA选项头,其中包含使用所述 密钥生成模块所产生的私钥计算的对报文的签名;所述CGA地址分配才莫块用于在主机使用CGA地址时,使用所述CGA 地址作为目标地址发送邻居恳求报文,报文附加CGA选项头,其中包含产 生所述CGA地址的7>钥,以及RSA选项头,其中包含使用所述密钥生成 模块所产生的私钥计算的对报文的签名;所述静态地址分配模块用于在主机使用静态地址时,将地址配置到本 地接口 。
5、根据权利要求3所述的源地址验证装置,其特征在于,所述地址注 册模块包括互联网控制报文协议ICMP报文发送模块、ICMP报文验证模块 和解密模块,其中,所述ICMP报文发送模块用于使用所述CGA地址作为源地址,所述验 证网关的地址为目的地址,发送第一ICMP报文,所述第一ICMPl艮文中 包括希望使用的地址、CGA选项头、RSA选项头以及CGA标识选项头和 随^/l字^a,其中所述CGA选项头中包含产生所述CGA地址的^^钥,所述 RSA选项头中包含使用所述密钥生成模块所产生的私钥计算的对报文的签名;所述主机使用时,从验证网关接收针对其希望使用的地址的第二 ICMP报 文,所述第二 ICMP报文的目的地址是所述主机产生的CGA地址,源地址是所述验证网关的CGA地址,所述第二ICMP才艮文中包括说明所述ICMP 报文针对的主机申请的地址的字段,所述第二 ICMP报文包括CGA选项头 和相应的RSA选项头,以及使用所述主机的公钥加密之后的签名种子;在 没有收到回复的才艮文时,重新发送所述第一 ICMP才艮文或换用其他地址重 新发送所述第一 ICMP报文;所述解密模块用于使用所述密钥生成模块所产生的私钥对所述签名种 子解密,获得明文的签名种子。
6、 根据权利要求5所述的源地址验证装置,其特征在于, 所述CGA标识选项头,为所述CGA地址,对于静态地址的情况,为对用户标识、随机值和公钥的哈希值,其中所述用户标识是一个任意长字 段,在静态地址被分配时由用户和验证网关双方共同保存,且不能泄露给 其他用户。
7、 根据权利要求3所述的源地址验证装置,其特征在于,所述报文发 送模块包括签名生成模块和签名更新模块,其中所述签名生成模块用于使用伪随机数生成算法,根据所述签名种子产 生签名,在报文中增加选项头,在其中放入所述签名并发送所述报文;所述签名更新模块用于在一个签名使用一个生命周期之后,根据所述 伪随机数生成算法生成下一个签名,并使用所述更新的签名发送报文。
8、 根据权利要求1所述的源地址验证装置,其特征在于,所述网关模 块包括配置模块、密钥种子分配模块和验证模块,其中,所述配置模块用于通过监听地址分配或手动配置建立源地址和所述主 机的CGA标识或用户标识的绑定关系;所述密钥种子分配模块用于接收所述主机对于源地址的申请,验证所 述主机是否可以使用申请的地址,并向所述主机分配密钥种子;所述验证模块用于检查所述主机发送的报文中所包括的签名,对所述 报文的源地址进行验证。
9、 根据权利要求8所述的源地址验证装置,其特征在于,所述配置模 块包括l争态方式分配才莫块、DHCPv6方式分配才莫块以及无状态和CGA方式 分配模块,其中,所述静态方式分配模块用于在静态地址方式时,手动配置用户标识和静态地址的对应关系;所述DHCPv6方式分配4莫块用于在DHCPv6地址进行分配时,监听 DHCPv6请求/确认报文,记录其中的CGA标识,在DHCP服务器返回 DHCPv6回复之后,记录其中的地址,并将所述地址和之前记录的所述CGA 标识绑定;所述无状态和CGA方式分配模块用于对于无状态分配的地址和CGA 地址不进行预先的绑定操作。
10、 根据权利要求8所述的源地址验证装置,其特征在于,所述密钥 种子分配模块包括检查模块和分配模块,其中,所述检查模块用于接收到达本地的特定类型的ICMP报文,检查其中 的RSA签名的正确性以及CGA选项头和CGA标识对应关系的正确性;若 斗企查不通过,则丟弃该才艮文,若4企查通过,则纟企查具有所述CGA标识的主 机是否具有权力使用其申请的地址,若是申请的是静态地址,使用的CGA 标识是否是公钥、对应用户标识和随机数的正确哈希值,若是申请的是无 状态地址或者CGA地址,是否是所述地址的第一个申请者,若是DHCP 地址,是否是所述配置模块所记录的绑定关系;所述分配模块用于在判断所述主机有使用该地址的权力时,产生随机 值,作为分配给所述主机的签名种子,并从收到的ICMP报文中获取所述 主机的公钥,使用所述公钥对签名种子进行加密,产生ICMP报文,ICMP 报文的源地址是所述验证网关的CGA地址,目的地址是所述主机的CGA 地址,所述ICMP报文中用来存放加密后的签名种子的字段,以及所述验 证网关的CGA选项头和RSA签名,将所述ICMP报文发送给所述主机; 在判断所述主机没有使用其申请地址的权力时,丢弃所述主机发送的ICMP 报文。
11、 根据权利要求8所述的源地址验证装置,其特征在于,所述验证 模块包括签名绑定模块、签名验证模块和签名更新模块,其中,所述签名绑定模块用于使用和所述主机相同的算法通过签名种子产生 签名,并将报文申请的源地址和所述签名以及才艮文的CGA地址进行绑定;所述签名验证模块用于根据所述配置模块确定的绑定检查数据报文中源地址和签名的一致性;如果数据报文中源地址和签名不一致,或者不具 有签名,则丟弃报文,如果数据报文中源地址和签名一致,则从报文中去 除签名之后转发;所述签名更新模块用于在签名使用 一个生命周期之后,通过签名种子 产生下一个签名,并使用新产生的签名对报文源地址进行验证。
12、根据权利要求1-11任一项所述的源地址验证装置,其特征在于, 所述源地址包括IPv6源地址。
全文摘要
本发明提出了一种源地址验证装置,包括主机模块和网关模块。其中,所述主机模块部署于主机上,用于生成公私钥对,生成密码学产生地址CGA地址,控制获取其他源地址,以及控制数据报文的发送;所述网关模块部署在验证网关上,用于完成授权地址使用,分配密钥种子,以及验证报文中的签名。本发明所提出的源地址验证装置可以不依赖于底层网络设备,具有主机级别粒度,并且支持所有源地址分配方式。
文档编号H04L29/06GK101610255SQ200910088189
公开日2009年12月23日 申请日期2009年7月10日 优先权日2009年7月10日
发明者吴建平, 广 姚, 军 毕 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1