基于区块链的网络安全策略研究
2022-09-07肖媛娥
肖媛娥
(井冈山大学网络信息中心 江西 吉安 343009)
0 引言
传统的蜂窝式网络架构实现了基于水平层面的网络资源共享,各水平网络之间的资源是开放且互通的,例如网络硬件设施、软件接口、操作系统、应用程序等资源,而垂直层面是封闭的状态,基于网络链路的软硬控制都集成在网络底层设施上,极大地限制了网络垂直层面的功能拓展与部署的灵活性[1]。随着软件定义网络(software defined network,SDN)架构的兴起与快速普及,SDN将网络资源实现了垂直解耦,将网络流量资源虚拟化。控制平面通过软件编程实现网络流量的链路分配、路由选择等资源控制;数据平面集合了物理链路层的网络交互设备,通过虚拟映射实现网络流量的路径转发,大大地提高了网络的资源利用率和开放共享性,但也带来了新的网络安全问题。
1 SDN架构下的网络安全问题
SDN架构是在传统网络架构基础上,结合网络虚拟技术构建的分层式逻辑架构,包括应用层、控制层和数据层3个逻辑层[2],见图1。其主要目的是将网络资源的调度管理与网络物理设备进行分离,通过可编程的方式灵活调度网络资源。物理网络设备不需要再单独配置软件协议,大大提高了网络设备的功能可扩展性与网络兼容性,但相应的各个逻辑层上也存在很多安全问题。
(1)应用平面是SDN架构中直接面向用户提供应用级服务的逻辑层,集合了各类网络应用程序。主要的安全隐患包括应用程序自带的恶意代码、身份验证的潜在风险以及业务逻辑的配置缺陷等。
(2)控制平面是SDN架构的核心层,由核心组件SDN控制器构成。SDN控制器同时负责应用层的业务响应与数据层的链路控制,提供有北向与南向两个接口,北向接口负责与应用层交互,接收应用层消息和解析业务需求;南向接口负责与数据层的OpenFlow交换机通信,采集网络拓扑信息,依据顶层业务需求和底层链路状态构建流表,进行网络资源的分配与调度。SDN控制层的安全问题主要集中在SDN控制器上,包括流表的恶意篡改、数据请求恶意攻击等。例如DoS/DDoS攻击,攻击者通过非法访问短时间内向SDN控制器发送大量的网络请求,导致SDN控制器负荷超载过大而瘫痪,继而引发网络的单点故障问题。
(3)数据平面是SDN架构的物理链路层,通过网络虚拟技术构建物理设备与逻辑控制的映射关系,并依据控制层指令完成实际的网络资源调度和数据转发。数据层的安全问题主要是针对网络节点设备和通信链路的网络攻击,SDN网络通信采用的主要协议是传输层安全协议(transport layer security,TLS)和安全套接字协议(secure sockets layer,SSL),用于提供通信数据的完整性验证和网络连接加密功能。在此前提下为了简化交换设备的协议配置,提高传输效率,SDN链路通信不再进行额外的安全验证,也就存在一定的安全漏洞和被攻击的风险,例如恶意交换机的身份伪造、窃听、欺骗等问题。
2 区块链技术概述
2.1 区块链技术的特点
区块链技术将网络中传输的信息视为信息链,一个信息链由若干带有时间顺序标识的区块构成,每个区块仅保存部分信息。信息链会广播到网络中的所有节点上进行分布式保存,因此信息很难被篡改,如需要修改区块链中的信息,需获得半数以上节点的授权。区块链技术具有以下特点。
(1)去中心化。区块链信息不归属于任何单一主体控制,而是分布在多个网络节点中,由所有的网络节点对其共同进行管理[3],并通过共识机制实现各节点之间的信息一致。
(2)数据防篡改性。区块链技术通过哈希算法为信息链中的每个区块生成唯一标识的哈希值,然后依据哈希值的排列顺序将各个区块按指定序列进行关联,其中任意区块被修改,都会使整个信息链的区块序列发生改变,且哈希值计算过程具有不可逆特性,因此篡改者很难在不改动哈希值的情况下篡改数据内容,也很难伪造哈希值。
2.2 区块链关键技术
共识机制主要用来解决区块链信息分布式管理的数据一致性问题,由于区块链具有去中心化的技术特性,数据链区块由网络中所有的节点共同管理,当数据发生变化时,需要所有的节点都能够同步,这种为多个网络节点提供数据一致性合法性验证的机制就是共识机制[4]。共识机制的实现方法主要有3种。
(1)基于工作量的合法验证(PoW)。通过哈希散列计算获取随机哈希值,当随机哈希值的计算达到一定工作量后才能满足系统预设的条件,就可以通过节点的合法性认证,并以该哈希值为标识生成新的区块加入区块链中。PoW机制是完全去中心化的一种验证机制,网络中的节点都可以自由加入或退出,在此前提下攻击者要掌握网络半数以上的资源并发起攻击几乎是不可能的。
(2)基于权益的合法验证(PoS)。以拥有币龄的权益占比作为合法性验证的评判标准,持有的币龄越长,通过节点合法性验证的概率就越高[5]。币龄是指用户持有的代币数与持有时长的乘积,代币可以通过区块链系统的无差别随机分发获取,也可以通过网络的虚拟币交易获取。与PoW机制相比PoS机制减少了计算开销和大量的网络资源占用,但代币的分发机制要做到完全中立还需要匹配完整的监督机制才行。
(3)基于授权的合法验证(DPoS)。该机制仍然沿用了PoS的验证模式,不同的是不再需要所有节点都参与到代币的分发和验证当中,而是通过所有节点的投票选举,授权部分代表节点来完成机制的验证工作。为了进一步确保机制的公平性,DPoS机制设置了实时的投票选举机制,允许链中的所有节点随时选举、罢免和更换节点代表。由于DPoS机制减少了参与验证的节点数量,因此在执行效率上要明显高于前两种机制。
哈希二叉树(Merkle)用于实现数据的完整性验证。Merkle树结构包括根节点、分叉节点和叶节点3个层级,其中叶节点位于Merkle树结构的末端,负责收集区块内的所有数据操作的哈希值[6];分叉节点位于Merkle树结构的中间层级,用于归纳所属分叉的两个叶节点上的哈希值,并生成新的关联哈希值;根节点位于Merkle树结构的顶端,且是唯一节点,所有的分叉节点哈希值将最终汇集于根节点,并生成一个关联树内全局的哈希值。Merkle树内任意节点的数据变动都会重新计算哈希值,根节点的哈希值也会跟着改变。通过对根节点哈希值的检测就可以动态掌握数据变化情况,以确保数据的完整性,防止数据被非法篡改。
3 基于区块链的SDN网络安全机制构建
SDN的3层架构中,基于控制层和数据层的网络安全问题是本文重点关注的问题,包括控制层的流表数据篡改、SDN控制器的单点攻击和数据层的链路节点攻击等。为了有效解决上述问题,本文充分结合区块链技术的去中心化与防篡改技术特性,构建SDN网络的安全验证机制,以预防SDN控制器单点攻击、数据篡改和网络节点身份仿冒的潜在网络风险。
3.1 总体架构设计
融合了区块链技术的SDN网络架构总体设计见图2。
由图2可知,一个区块链系统可以为多个SDN子网提供服务,在单个SDN子网中通过进一步组网形成一个私有链主体,由一个核心SDN控制器集中实现私有链内部的安全机制的部署与管理,多个SDN子网又可以组成一个共享链,单个子网被视为一个区块链节点,对于公开在共享链上的信息则由多个SDN子网共同进行管理。区块链系统接入私有链需要通过SDN子网的安全网关,安全网关由SDN子网的核心SDN控制器指定,其主要作用有3个:(1)对区块链节点进行验证并颁发有效证书;(2)为SDN子网中的区块链节点生成和下发对应的加密私钥,并负责管理当前子网的公钥,通过公钥与私钥的加解密匹配验证,来确定区块链节点身份的合法性,这个过程也称为签名;(3)为区块链系统创建一个创始区块,之后会在创始区块之上创建新的区块用于保存数据。下面将重点针对SDN子网私有链的网络安全策略实现的具体过程和关键机制展开深入研究。
3.2 SDN子网区块私有链的策略实现过程
SDN子网内区块私有链策略实现过程包括以下几个步骤。
(1)SDN主控制器通过链路层发现协议(link layer discovery protocol,LLDP)获取网络节点的拓扑结构,向其链接的网络交换机分发数字签名。
(2)交换机将接收到的数据包从其入口以外的所有端口广播出去,如果接收数据包的是普通交换机,例如OpenFlow交换机,此类交换机不具备流规则解析的功能,就将数据包继续向外转发而不进行任何处理。如果是被选举为区块链代表的节点,则开始对数据包进行解析和签名。
(3)区块链节点交换机将解析后流表信息保存在自己的链路表中,调用哈希函数计算哈希值标识,并作为区头与签名证书、加密私钥等信息一起封装为区块。
(4)当区块链节点完成对新增区块的哈希标识后,会将哈希摘要提取到Merkle树中作为一个叶节点进行保存。每当新增一个区块,就需要更新一遍Merkle结构树,通过Merkle树可以动态掌握SDN子网的全局网络拓扑情况和节点的安全状态。
3.3 SDN子网区块私有链的多控制器选举机制
为了有效解决SDN控制器单点攻击所造成的全局网络瘫痪问题,首先从全局视角将网络划分为多个SDN子网,每个子网都选举出一个SDN主控制器配合多个区块链节点来保障单个子网的链路安全,一个子网受到攻击不会波及全网安全;其次基于单个子网视角,在子网内部采用分层式的多节点部署,由主控制器与分布式区块节点共同构建一条主链,所有的数据信息需要经过区块创建、验证才能进行上链存储。一旦主控制器受到攻击,主链上其他节点可以随时罢免该节点的主控制权,重新选举主控制器。
SDN主控制器的选举采用的是DPoS共识机制,在主链上区块节点都具有参与选举和被选举的权益,选举主控制器依据的是主链上各个节点的信任值,信任值最高者会当选为主控制器。信任值的确定包括静态与动态两种方式,静态方式是由网络监管者手动设置信任值参数,前提是监管者能够结合自身经验对当前网络状态做出较为准确的判断;动态方式是通过实时算法对网络节点当前的时延、带宽等指标参数进行间隔采样和权重计算[7],并将计算结果作为节点信任值更新的重要参考依据。
被选举为主控制器的节点负责管理整个子网,为主链上所有的交换机节点生成签名,交换机节点将主控制器发来的验证信息转换为哈希值并封装为区块,再将区头信息提取到Merkle树的叶节点上,主控制器作为Merkle树的根节点,负责所有叶节点的信息安全验证,当节点转发数据时会向主控制器提出流表申请,主控制器通过签名即可验证节点的身份合法性。
3.4 SDN子网区块私有链的区块创建机制
区块是区块链最基础的数据单元,由区块头部和区块主体两部分组成。其中区块头部包括了3组元数据,即前一区块的哈希值、自身的哈希值和后一区块的哈希值,通过这3组元数据即可将所有的区块按照指定的顺序关联起来,并构成一条主链;区块主体用于记录所有的转发数据,当数据被恶意篡改获取,都会改变区块头部的哈希值,而无法通过主控制器的签名验证。区块创建机制的实现过程包括以下5个步骤。
(1)等待接收主控制器分发的数字签名,获取到签名数据包后进行解析,这个过程称为背书。
(2)向主控制器申请转发数据分组的流规则和流表信息,将转发数据进行封装保存至区块主体,并记录当前时间到指定的时间戳字段中。
(3)调用哈希函数计算哈希值,与前后关联节点的哈希值一并封装到区块头部,关联节点的哈希值由上一步骤中申请的流规则提供。
(4)将区块头部信息提取到Merkle树中,更新Merkle树的关联中间节点和根节点的哈希值。
(5)计算一段时间内创建区块的平均时间,平均时间越长,区块创建的难度标识值越大,则认为区块创建的计算总量开销在增大,需要区块链系统做出整体的动态调整。
4 结语
随着SDN架构在网络中的广泛应用,也引起了一些新的网络安全问题,例如控制层的控制器单点攻击、数据层的交换机身份冒用以及网络数据的篡改问题,都对网络安全产生了严重影响。为了有效解决上述问题,本文对区块链技术展开了全面研究,在此基础上提出了一种基于区块链技术的网络安全解决策略,通过区块链选举机制解决了SDN控制器单点攻击的问题,通过区块链创建机制实现了交换机身份的合法性验证,并确保了交换数据的完整性与可靠性。