一种基于sdn环境的匿名通信方法
【专利摘要】本发明公开一种基于SDN环境的匿名通信方法。SDN网络控制器具有网络的全局视图,包括网络拓扑和主机的位置与IP地址信息,并负责每个匿名传输通道的建立与管理。响应端在启动时可以向SDN网络控制器注册匿名服务的服务名。发起端在进行匿名通信前向SDN网络控制器发送建立匿名通道请求,其中需要指定响应端的地址(或者服务名)和变换节点数。SDN网络控制器在建立匿名通道时选取好每个变换节点上变换后报文的地址,包括三元组<源IP地址,目标IP地址,MPLS标记>,以及与IP地址相对应的MAC地址,并且提前安装好相应的流表。该方法在保证匿名通信的同时具有很低的开销和易于部署的特性,因而适用于对于应用性能要求高的数据中心环境。
【专利说明】
一种基于SDN环境的匿名通信方法
技术领域
[0001]本发明属于网络环境下的安全通信技术领域,更具体地,涉及一种基于SDN环境的匿名通信方法。
【背景技术】
[0002]随着数据中心规模的扩张,数据中心面临着越来越多的来自内部的安全威胁。据IBM安全报告指出,2014年记录到55%的攻击来自具有内部访问的人员。同时,攻击者在进行攻击时,往往都需要通过一定的手段进入到目标的内部网络。例如,2013年的Target公司信用卡泄露事件中,攻击者先通过窃取其空调系统供应商的凭证侵入到其内部网络,再窃取了其40M信用卡数据。因此,更多的关注需要放在保护数据中心内部网络安全上。
[0003]用户可以在云数据中心内部署自己的应用,以达到快速上线、减少成本的目的,如Web服务、大数据处理系统和分布式存储系统等。然而这些用户系统在数据中心内部的通信存在极大的安全威胁,黑客、内部人员或者恶意用户可能会在网络中间节点进行监听、分析网络传输的数据。一方面,如果用户的数据传输过程中未加密,那么这可能造成用户的数据被窃取。另一方面,即使这些数据都经过加密之后再进行传输,攻击者也可以通过检查报文中未加密的IP地址和流量模式等信息发动流量分析攻击。例如,攻击者可以通过报文中的源、目标地址信息获得本次通信的发送者和接收者,再通过分析它们之间通信的速率,数据长度等信息分析出它们可能正在进行何种操作。进一步地,攻击者可以分析出哪些节点属于某一个用户,在这些节点上部署了什么系统,和该系统的规模。如果攻击者的目的是使某个用户系统崩溃,那么可以分析出该系统的一些关键节点,再对其发动主动攻击,如DoS/DDoS、worms 等。
[0004]在互联网环境下,研究人员提出匿名通信系统来防止流量分析攻击,保护用户身份信息。这些匿名通信系统通过构建由多个转发节点组成的overlay网络来达到匿名目的,如Mixmaster、Mixminon、Crowds、Tor等。然而这些系统都是针对互联网环境设计,具有很高的性能开销,不能满足数据中心环境下对通信的高带宽和低时延的需求。例如,目前最为流行的匿名通信系统Tor对报文进行多层加密和多次转发的方式来实现匿名传输。这种方式无疑会带来极大地性能损失,多次的加密与解密操作和大量冗余的传输路径将来增加数据传输的延迟,减少传输带宽。同时由于增加了几倍的传输路径,从而也将在网络中引入大量的重复流量,减少网络的总容量。数据中心中绝大部分的应用都是性能敏感的,对网络传输的性能具有很高的要求。同时,数据中心的网络资源非常宝贵,over lay的方式会极大地减少数据中心的容量。对于云数据中心而言,将会容纳更少的租户,减少云供应商的收入。
[0005]近年来,随着计算机网络规模的持续增长和网络应用的不断增加,传统网络的结构和功能越来越复杂,管理和控制能力逐渐减弱。同时,在传统网络架构下,实行任何新网络研究方案和业务都异常困难,必须在得到相关的标准化组织同意和设备提供商允许时才能投入实际网络环境。为了解决现在网络体系结构造成的众多问题,软件定义网络(Software Defined Network, SDN)技术被提出,随着斯坦福大学相关研究者提出OpenFlow技术,基于OpenFlow的SDN架构在业界广泛推广。软件定义网络在云数据中心的广泛部署为匿名传输带来了新的思路。SDN架构将网络的控制面与转发面分离,控制面具有网络全局视图,负责网络的路由计算,转发面通过匹配流表进行报文转发。SDN技术使得网络报文转发更加灵活,控制器可以提前生成好报文的转发路径,报文可以在交换机中修改报文头部来隐藏真实的参与者,以达到匿名传输的效果。
【发明内容】
[0006]本发明提供一种基于SDN环境的匿名通信方法,具有很低的性能开销和容易部署的特点,主要适用于对于性能要求较高,而安全级别适中的场景,例如数据中心内。其主要思想是通过在交换机上修改报文的源、目标地址来隐藏报文的发送者与接收者,从而达到匿名通信的目的。
[0007]本发明提供的一种基于SDN环境的匿名通信方法,包括通信的发起端、响应端、地址变换交换机节点(简称为变换节点)和SDN网络控制器。通信过程包括如下步骤:
[0008](I)初始化,SDN网络控制器获得整个网络拓扑和所有主机的地址,包括IP地址及MAC地址,并保存了所有IP地址与MAC地址的映射表;
[0009](2)建立匿名通信通道;进一步包括如下步骤:
[0010](2-1)响应端向SDN网络控制器注册服务名,并进入监听状态;
[0011](2-2)发起端将响应端的IP地址(或者服务名)、变换节点数发送给SDN网络控制器;若指定响应端IP地址,则只能实现发起端匿名,若指定服务名,则可以同时实现发起端与响应端匿名;
[0012](2_3)SDN网络控制器给该匿名通道赋予一个全局唯一的标识;再根据指定的响应端地址(或者服务名),计算相应的转发路径;同时在转发路径上选取指定数目的交换机作为变换节点;变换节点上的流表中,需要修改报文的源、目标地址;
[0013](2_4)SDN网络控制器生成好路由规则之后,将其安装到相应的交换机上;
[0014](2_5)SDN网络控制器将进入第一个变换节点之前的网络报文应携带的地址返回给发起端,该地址称为入口地址;
[0015](3)进行匿名通信,在与响应端通信过程中,发起端向入口地址发送网络报文、或者接收来自入口地址的网络报文;
[0016](4)关闭匿名通道,发起端(或者响应端)向SDN网络控制器发送关闭通知,SDN网络控制器删除该匿名通道的信息。
[0017]任意一个SDN交换机上通过三元组《源IP地址,目标IP地址,MPLS标识》唯一标识一个匿名通道。每个变换节点在转发报文时,需要修改该报文的《源IP地址,目标IP地址,MPLS标识》地址三元组,以及相应的源MAC地址和目标MAC地址。
[0018]对于任意一个变换节点S,经过其变换后的报文地址三元组《源IP地址,目标IP地址,MPLS标识》满足以下条件:
[0019]假设一个匿名通道的全局标识为V,该匿名通道的报文经过S变换后的地址三元组〈3,13,(3>满足;^3,13,(3)=¥。其中;^1,7,2)为哈希函数,其至少在一个变量上具有反函数。
[0020]网络中每个变换节点都可以具有独立的哈希函数。在这种情况下,MPLS标识被随机地划分为多个取值空间,使得每个变换节点都能够对应一个独立的MPLS取值空间,避免不同变换节点之间的地址三元组冲突。
[0021]在匿名通道建立之后,SDN网络控制器可以更新该匿名通道的转发路径和变换节点。
[0022]相比于传统的基于覆盖网络的匿名通信系统,我们的基于网内的方案具有更短的传输路径的中间操作,因此具有更小的开销和更高的性能。
【附图说明】
[0023]图1是本发明基于SDN环境的匿名方法流程示意图;
[0024]图2是本发明实施例通信过程示意图;
[0025]图3是本发明实施例地址三元组变换示意图。
【具体实施方式】
[0026]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0027]本发明的技术方案为:SDN网络控制器提前安装好路由规则,通过在SDN交换机上变换报文头部的地址来实现匿名通信。同时通过增加MPLS标识,设计高效的地址三元组《源IP地址,目标IP地址,MPLS标识》的分配方法来避免路由冲突,同时保证低开销。
[0028]如图1所示,本发明提出一种基于SDN环境的匿名通信方法,包括通信的发起端、响应端、地址变换交换机节点(简称为变换节点)和SDN网络控制器。通信过程包括如下步骤:
[0029](I)初始化,SDN网络控制器获得整个网络拓扑和所有主机的地址,包括IP地址及MAC地址,并保存了所有IP地址与MAC地址的映射表;
[0030](2)建立匿名通信通道;进一步包括如下步骤:
[0031](2-1)响应端向SDN网络控制器注册服务名,并进入监听状态;
[0032](2-2)发起端将响应端的IP地址(或者服务名)、变换节点数发送给SDN网络控制器;若指定响应端IP地址,则只能实现发起端匿名,若指定服务名,则可以同时实现发起端与响应端匿名;
[0033](2_3)SDN网络控制器给该匿名通道赋予一个全局唯一的标识;再根据指定的响应端地址(或者服务名),计算相应的转发路径;同时在转发路径上选取指定数目的交换机作为变换节点;变换节点上的流表中,需要修改报文的源、目标地址;
[0034](2_4)SDN网络控制器生成好路由规则之后,将其安装到相应的交换机上;
[0035](2_5)SDN网络控制器将进入第一个变换节点之前的网络报文应携带的地址返回给发起端,该地址称为入口地址;
[0036](3)进行匿名通信,在与响应端通信过程中,发起端向入口地址发送网络报文、或者接收来自入口地址的网络报文;
[0037](4)关闭匿名通道,发起端(或者响应端)向SDN网络控制器发送关闭通知,SDN网络控制器删除该匿名通道的信息。
[0038]任意一个SDN交换机上通过三元组《源IP地址,目标IP地址,MPLS标识》唯一标识一个匿名通道。每个变换节点在转发报文时,需要修改该报文的《源IP地址,目标IP地址,MPLS标识》地址三元组,以及相应的源MAC地址和目标MAC地址。
[0039]对于任意一个变换节点S,经过其变换后的报文地址三元组《源IP地址,目标IP地址,MPLS标识》满足以下条件:
[0040]假设一个匿名通道的全局标识为V,该匿名通道的报文经过S变换后的地址三元组〈3,13,(3>满足;^3,13,(3)=¥。其中;^1,7,2)为哈希函数,其至少在一个变量上具有反函数。
[0041]网络中每个变换节点都可以具有独立的哈希函数。在这种情况下,MPLS标识被随机地划分为多个取值空间,使得每个变换节点都能够对应一个独立的MPLS取值空间,避免不同变换节点之间的地址三元组冲突。
[0042]在匿名通道建立之后,SDN网络控制器可以更新该匿名通道的转发路径和变换节点。
[0043]为使本领域技术人员更好地理解本发明,下面以基于OpenFlow的SDN网络环境为例,对本发明的基于SDN环境的匿名通信方法进行详细说明。
[0044]如图2所示,网络拓扑由四个SDN交换机SI?S4组成,Hl为发起端(IP地址10.0.0.1),H2为响应端(IP地址10.0.0.2) Al与H2进行匿名通信的过程具体如下:
[0045](I) SDN网络控制器启动,通过链路发现协议获得当前网络拓扑,以及Hl与H2的地址信息与在网络中所处的位置。
[0046](2)响应端H2向SDN网络控制器发送匿名服务注册请求,其服务名为MDS。
[0047](3)SDN网络控制器接收并处理该匿名服务注册请求。
[0048](4)发起端Hl向SDN网络控制器发送匿名通道建立请求,其中包括H2的服务名MDS和变换节点数3。
[0049](5)SDN网络控制器给该匿名通道赋予全局唯一的标识1000,计算出转发路径为S1->S3->S4,并将三个交换机S1、S3、S4都选取为变换节点。报文进入S1、S3、S4之后,源、目标IP地址均需要进行变换。具体的,本实施例中只考虑变换报文头部IP地址二元组〈源IP地址,目标IP地址〉。报文(Pl)从发起端发出时,头部为〈10.0.0.1,10.0.0.3〉,经过交换机SI之后,头部被修改为〈10.0.0.4,10.0.0.5>(见图中P2)。同样地,报文的头部分别在交换机S3、S4 被修改成〈10.0.0.6,10.0.0.7〉和〈10.0.0.8,10.0.0.2>(见图中 P3、P4)。值得注意的是,最后一次修改必需将目标地址修改成正确的接收端地址。
[0050](6)SDN网络控制器将上述地址变换转化成OpenFlow流表,并分别安装到交换机S1、S3、S4上。再将入口 IP地址10.0.0.3返回给发起端Hl。
[0051 ] (7)发起端Hl直接通过入口地址10.0.0.3与响应端H2进行通信,而无需知道H2的IP地址。同时,在响应端H2看来,其正与IP地址为10.0.0.8的主机进行通信,而并不知道发起端Hl的真实IP地址,即实现匿名通信。
[0052](8)通信过程中,SDN网络控制器可以更新网络传输过程中使用的伪地址。例如,报文 P2、P3 的头部可以更新为〈10.0.0.9,10.0.0.10> 和〈10.0.0.11,10.0.0.12>。
[0053](9)在通信结束后,发起端Hl或者响应端H2可以主动地向SDN网络控制器发送通道关闭请求。SDN网络控制器接收到关闭请求后,将会删除其保存的该匿名通道的所有信息,并清楚交换机S1、S3、S4上相关的流表信息。
[0054]本发明通过在网络中变换报文的IP地址信息来实现匿名通信,但是需要解决潜在的路由冲突的问题(两个匿名通道内报文的IP地址在同一个变换节点上被修改成相同的)。因此,我们增加MPLS标记来进一步区别两个属于不同匿名通道(或者普通非匿名通道)的报文。
[0055]具体地,我们在SDN交换机上需要匹配《源IP地址,目标IP地址,MPLS标记》来对报文进行转发。为了保证任意属于两个不同匿名通道内的报文在同一个交换机上不会发生地址冲突,同时避免SDN网络控制器在生成流表时需要进行查找,我们设计了一种基于哈希的地址(上述三元组)生成算法。其主要思想是将不同匿名通道之间使用的地址三元组哈希到不同的空间上,避免冲突发生。
[0056]我们构建哈希函数hash(a,b,c),使得每个地址三元组具有唯一的哈希值。对于任意两个三元组<ai,bi, ci> 和<a2, b2, C2>,若 hash(ai, bi, ci) =Vi,hash (a2,b2,C2) = V2,则保证V1不等于V2。换句话说,给定两个不同的值VjPV2,我们可以获得两个不同的集合^,如,使得(ai,bi,ci)属于Al,(a2,b2,C2)属于A2,满足hash(ai,bi,ci) =Ai,hash(a2,b2,C2) =A2,并且(a2,b2,C2)! = (a2,b2,C2)。因此,我们令每个匿名通道具有唯一的标识V,其所有地址三元组<src_ip,dst_ip,mpls> 满足条件 hash(src_ip,dst_ip,mpls) =V,则不同的匿名通道之间的地址三元组将不会冲突。SDN网络控制器在获取一个匿名通道的地址时,则可以任意随机选取三元组中两个值,通过哈希函数的反函数计算出第三个值,最终得到随机分配的地址三元组。
[0057]如图3 所示,H1(IP 地址 10.0.0.1)、!12(1?地址10.0.0.2)和!13(1?地址10.0.0.3)、財(1?地址10.0.0.4)之间分别建立了两个匿名通道(:1和02,具有相同的转发路径(31->32->S3)和变换节点(SI,S2,S3)。我们选取哈希函数hash(x,y,z) = x ? y ? z ? 100,则关于变量z的反函数为hash—1Uj^ = X ? y ? 100 ? v。假设匿名通道Cl,C2的全局标识分别为1000和2000,则对于所有属于匿名通道Cl的报文地址三元组(ai,bi,C1 M^MhasMa1 ,bi,ci) =1000,而属于匿名通道02的报文地址三元组(32,132,(32)满足1^11(32,132,(32)=2000。30~网络控制器在确定每个匿名通道内的地址三元组时,先随机地选取源、目标地址,再通过hash—1(x,y,V)计算出MPLS标记的值。假如,对于匿名通道Cl (全局标识为1000),其在变换节点S2上变换后的报文三元组中,先选取源IP地址10.0.0.6(其转化成整数为167772166)、目标IP地址10.0.0.7 (其转化成整数为167 77 2167 ),那么其对应的MPLS标识值为hash — 1(167772166,167772167,1000) = 167772166 ? 167772167 ? 100 ? 1000 = 909。同样地,匿名通道C2在变换节点S2上变换后的报文地址三元组为(10.0.0.6,10.0.0.7,1973),由于与匿名通道Cl的地址三元组具有不同的MPLS值,因此即使源、目标IP地址相同也不会发生冲突。
[0058]为了使得同一个匿名通道内在不同的变换节点上变换后的报文地址三元组更加随机,我们可以采用对每个交换机(变换节点)放置不同的哈希函数。假如在图3中,变换节点SI上的哈希函数为hashi(x,y,z) =x ? y ? z ? 100,变换节点S2上的哈希函数为hash2(x,y ,z) =x ? y ? z ? 200,而变换节点S3上的哈希函数为hash3(x,y,z) = x ? y ? z ? 300。
[0059]这种情况下,为了避免不同的变换节点之间的地址三元组发生冲突,我们将MPLS的取值空间划分为多个,使得不同的变换节点之间的MPLS取值互相独立。例如,变换节点SI上的MPLS取值为(0,1000],变换节点S2上的为(1000,2000],变换节点S3上的为(2000,3000]。同时,为了增加地址三元组取值的随机性,可以使用哈希的方式来划分MPLS的取值空间。
[0060]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于SDN环境的匿名通信方法,其特征在于,所述方法包括如下步骤: (1)SDN网络控制器获得整个网络拓扑和所有主机的地址,包括IP地址及MAC地址,并保存所有IP地址与MAC地址的映射表; (2)建立匿名通信通道;包括如下子步骤: (2-1)响应端向SDN网络控制器注册服务名,并进入监听状态; (2-2)发起端将响应端的IP地址或者服务名、变换节点数发送给SDN网络控制器;若指定响应端IP地址,则只能实现发起端匿名,若指定服务名,则可以同时实现发起端与响应端匿名; (2-3)SDN网络控制器给该匿名通道赋予一个全局唯一的标识;再根据指定的响应端地址或者服务名,计算相应的转发路径;同时在转发路径上选取指定数目的交换机作为变换节点;变换节点上的流表中,需要修改报文的源、目标地址; (2-4)SDN网络控制器生成好路由规则之后,将其安装到相应的交换机上; (2-5)SDN网络控制器将进入第一个变换节点之前的网络报文应携带的地址返回给发起端,该地址称为入口地址; (3)进行匿名通信,在与响应端通信过程中,发起端向入口地址发送网络报文、或者接收来自入口地址的网络报文; (4)关闭匿名通道,发起端或者响应端向SDN网络控制器发送关闭通知,SDN网络控制器删除该匿名通道的信息。2.如权利要求1所述的基于SDN环境的匿名通信方法,其特征在于,网络中任意一个SDN交换机上通过三元组《源IP地址,目标IP地址,MPLS标识》唯一标识一个匿名通道;每个变换节点在转发报文时,需要修改该报文的《源IP地址,目标IP地址,MPLS标识》地址三元组,以及相应的源MAC地址和目标MAC地址。3.如权利要求1或2所述的基于SDN环境的匿名通信方法,其特征在于,对于任意一个变换节点S,经过其变换后的报文地址三元组《源IP地址,目标IP地址,MPLS标识》满足以下条件: 假设一个匿名通道的全局标识为V,该匿名通道的报文经过S变换后的地址三元组<a,13,(3>满足;^3,13,(3)=¥,其中;^1,7,2)为哈希函数,其至少在一个变量上具有反函数。4.如权利要求1或2所述的基于SDN环境的匿名通信方法,其特征在于,网络中每个变换节点都具有独立的哈希函数,MPLS标识被随机地划分为多个取值空间,使得每个变换节点都能够对应一个独立的MPLS取值空间,避免不同变换节点之间的地址三元组冲突。5.如权利要求1或2所述的基于SDN环境的匿名通信方法,在匿名通道建立之后,SDN网络控制器能够更新该匿名通道的转发路径和变换节点。
【文档编号】H04L29/06GK106027527SQ201610345196
【公开日】2016年10月12日
【申请日】2016年5月23日
【发明人】王芳, 冯丹, 朱挺炜, 史庆宇, 刘家豪, 万进
【申请人】华中科技大学