Page 224 - 《软件学报》2020年第12期
P. 224
3890 Journal of Software 软件学报 Vol.31, No.12, December 2020
2) 链路编码分配.如何在不影响溯源精度的条件下,尽可能多地压缩链路编码长度,将更多的指纹写入
到标记域.
针对前者,最直接的方法就是采用带外或带内传输,这不仅会带来较大的传输和计算成本,而且无法保证数
据隐私安全.为此,本文使用我们之前提出的基于链路状态通告(link status advertisement,简称 LSA)的域内溯源
链路生成策略 [12] .首先,通过重新定义域内路由协议——开放式最短路径优先 OSPF 的第 11 种备用 LSA,将溯源
节点状态信息通过 LSA 快速传遍溯源网络,使任一溯源节点都能准确获知其他溯源节点信息;然后,压缩 OSPF
协议生成的面向全网拓扑的最短路径树,构建面向溯源网络的最短路径树,进而计算溯源转发表;最后,建立溯
源邻居节点与溯源链路编号的映射表.
针对后者,最简单方法就是为每条溯源链路分配不同编码,这能保证溯源精度,但会加大编码长度.通过分
析攻击路径回溯过程,不难发现:给定任一溯源节点,只要保证与它相关的链路编码能够识别出邻居节点即可.
为此,本文使用我们之前提出的基于边着色理论的链路编码策略 [12] ,通过将溯源链路编码抽象为经典边着色问
题,然后使用增量式边着色算法对它进行求解,从而将域内溯源链路的编码长度降到 8 位.
b. 域内链路指纹建立函数
在面向 IP 流的域内溯源策略中,入口路由器、中间溯源路由器和边界路由器实现不同链路指纹建立函数,
分别表示为 f 1 ~f 3 ,其中:f 1 只为下一跳分配出标签和标记指纹;f 2 为上一跳记录链路指纹,为下一跳分配出标签和
s
s
标记指纹;f 3 只为上一跳记录链路指纹.给定攻击域内溯源路径 P =y 0 y 1 …y k ,∀y i ∈ P ,f 1 ~f 3 分别定义为
A
A
f 1 (y 0 ):={
If (Tracing-packet){InsertTag(3); InsertLinkID (LinkID ) ;}}
0 y
f 2 (y i(0<i<k) ):={AssignTag(y i .Tag);
If (Tracing-packet){InsertFigItem(y i−1 .Dst,y i−1 .LinkID,y i−1 .Tag,y i .Tag);InsertTag(L);
InsertLinkID (LinkID )}
i y 1 −
f 3 (y k ):={
If (Tracing-packet){InsertFingItem(y k−1 .Dst,y k−1 .LinkID,y k−1 .Tag);}}
其中,InsertTag 表示标签标记操作,InsertLinkID 表示链路编码标记操作,AssignTag 表示标签分配操作,
InsertFingItem 表示链路指纹记录操作.
2.2.2 基于对等过滤的域间链路指纹建立
攻击域难以回溯的原因在于 Stub 域的不可信.若想直接利用源地址来识别攻击域,那么必须建立可信的域
间网络.为此,引入基于 Egress Filtering 的对等过滤技术,通过在底层路由网络上构建溯源联盟来约束成员域的
攻击行为.然而,鉴于溯源联盟无法囊括所有 Stub 域,也就无法阻止非成员域向成员域发送匿名流,特别是一旦
这些匿名流伪装为成员域地址,就会造成攻击包中源地址再次失效,进而产生溯源误报.为此,本文在溯源联盟
中引入基于密钥的身份认证机制,每个成员域都将维护一个与自己身份绑定的密钥,它们在彼此通信过程中会
将密钥写入匿名包头,因非成员域无法探知密钥,也就无法伪装为成员域匿名流.在反向回溯中,受害成员首先
利用匿名包的源地址来判定攻击成员,然后利用密钥来排除非成员伪造成员匿名流的情形.
我们以图 5 为例来阐述基于对等过滤的域间链路指纹建立的基本思想.已知图 3 和图 4 的溯源联盟包含两
个成员域,其中:AS 1 为攻击域,内含攻击者 A 1 ,A 5 和边界路由器 R 4 ;AS 6 为受害域,内含受害者 V 1 和边界路由器 R 5 .
此外,AS 1 和 AS 6 都已部署域内溯源机制,且 R 4 已为攻击流 A 1 ,A 2 分配出标签 1 和标签 2,并将它们写入到匿名包
的标记域,也就是标记域还剩 8 位未被使用.假设 AS 1 的身份密钥为 SK AS 1 ,且将 SK AS 1 发布于联盟注册服务器.
域间链路指纹建立过程:当攻击流 A 1 和 A 2 到达攻击域 AS 1 的边界路由器 R 4 ,根据它们源地址所属前缀,攻
击流可分为域外和域内.针对前者,R 4 直接使用已配置的对等过滤规则来阻止它们流入域间网络;针对后者,R 4
通过在标记域中写入密钥 SK AS 1 来为它们重建 AS 1 域标识.当攻击流到达受害域 AS 6 的边界路由器 R 5 ,R 5 根据同
宿但不同源规则,为 A 1 和 A 2 的 IP 分组分配不同出标签,并将其写入 IP 分组的标记域,同时将入标签、密钥 SK AS 1
和出标签记录到链路指纹表.之后,域内溯源路由器(R 6 和 R 7 )执行第 2.2.1 节的域内指纹建立函数.