嵌入式系统的安全隧道的场景使用与原理分析

2019-10-21 11:17吴鹏程李孝成
科学与财富 2019年31期
关键词:嵌入式系统

吴鹏程 李孝成

摘 要:随着网络技术和嵌入式系统的发展,嵌入式系统对网络安全的要求也在逐步提升。对此,本文分析了一种解决网络安全的网络隧道方案的原理,并针对嵌入式系统的特性和嵌入式网络环境的特性,提出了一套基于安全隧道且适合嵌入式系统使用的虚拟专属网络工具 KidVPN的设计。全文从其组成的三个方面对 KidVPN进行了详细设计介绍,并针对其使用场景等,进行了模拟环境测试与最终的报文分析验证。

关键词:嵌入式系统,安全网络隧道,虚拟专属网络,KidVPN

中图分类号:TP311.1          文献标识码:A

引言

隧道技术指的是利用一种网络协议来传输另一种网络协议的技术。他可以利用公共网络来实现某些使用特别通信协议的网络或用户之间的连接和通信,或在不改变网络标准的条件下,在公共网络中建立某种固定连接。网络隧道是虚拟专用网络 VPN技术(virtual private network)实现的基础[1]。VPN技术是一种在公共网络上 (主要是Internet网) 将多个私有专用网络或网络节点采用加密、身份验证、隧道协议等技术连接起来, 为用户提供可通过公用网络安全地对私有专用网络进行远程访问服务的虚拟专用网络构建技术[2]。目前许多嵌入式操作系统也开始对 VPN技术提供了良好的支持,本文借助基于SylixOS的一款轻量型 VPN— KidVPN来阐述安全隧道在嵌入式系统中的场景使用与原理分析。

1.网络隧道简介

1.1网络隧道的原理

一帧网络报文由两部分组成,分别为报头与载荷。整个网络报文通信时,只有报头起作用,而真正的报文数据存在载荷内,在传输过程中不会被分析和处理。如图1所示。

如果在传输过程中,将一个完成的网络报文封装在另一个网络报文的载荷中,作为另一个网络报文的数据字段在网络中进行传送,那个这个传送的报文所经过的路径就是网络隧道。如图2所示。隧道转变了在报文头部中协议严格分层的思路,通过隧道的建立,可实现将数据强制送到特定的地址、隐藏私有的网络地址、在 IP网络上传递非 IP数据包、提供数据安全支持等功能。

1.2网络隧道协议

为了在通信两端建立隧道,通信双方(一般角色为客户端和服务器)需要使用相同的网络协议,这类协议就成为隧道协议。这类协议主要有两类,一类是以OSI模型中以第二层数据链路层为基础的,还有一类是以第三层网络网络层为基础的。

第一类是以帧作为数据交换的单位,主要有:

●PPTP(点对点隧道协议)

●L2TP(第二层隧道协议)

●L2F(第二层转发协议)

第二类是以数据包作为数据交换的单位,主要有:

●IPsec;

●IP in IP

1.3网络隧道的形成

如1.1 中原理介绍所说,形成网络隧道的方法只有一种,就是报文封装。报文封装是借助上文提到的隧道协议将上层的数据进行打包封装,但此时这部分数据此时仍然是明文的,在网络传输中无法收到保护,很不安全,不符合网络隧道安全的这一特性。因此在形成隧道时,除了会用到报文封装外,还会使用到另一种技术,就是隧道加密。隧道加密与报文封装是相关的,光有隧道加密不无法形成隧道的,只有将数据先经过隧道加密后,再次进行封装传输,这样才可以形成加密隧道。如图3所示。

2.嵌入式系统中的网络隧道

嵌入式系统指的是一个以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、体积、功耗严格要求的专用计算机系统。

在嵌入式系统中,有如下几个特点:

●专用性强

●嵌入式硬件性能较低

●嵌入式软件操作系统的内核小

●嵌入式系统需要较高的实时性

●嵌入式系统需要较高的安全性

随着技术的发展,嵌入式系统的复杂程度逐渐提高,对网络功能的需求也日趋上升。尤其是物联网的发展与普及,网络隧道技术也被应用到各个嵌入式行业中。各种嵌入式终端设备在接入网络时,常常会借助网络隧道技术实现嵌入式设备与网络设备的安全通信。在嵌入式系统中,网络隧道通常需要满足如下条件:

●网络隧道搭建与开发容易

●网络隧道使用便捷

●网络隧道对资源的消耗低

●基于网络隧道的通信安全

●基于網络隧道的通信能满足实时性的要求

3.嵌入式轻量型VPN(KidVPN)设计

VPN技术通过对网络数据进行封包和加密, 在Internet网络或其他公共网络中建立一条虚拟的专用通道, 在公网上传输私有数据, 同时, 保证私有网络安全性, 将公共网络的便捷性与专用, 网络的安全性结合起来, 实现公网私用[3]。本文将论述一款符合上文描述的嵌入式系统网络隧道特性的一款轻量型VPN—

KidVPN的设计。KidVPN一款开源的,体量轻,操作便捷,极其适合嵌入式系统下使用的虚拟专属网络工具。KidVPN支持 SylixOS和 Linux操作系统。同时,KidVPN也符合虚拟性,专用性的VPN特点[4],其组成框图如图4所示。

3.1KidVPN的网络隧道设计

KidVPN使用的是IPIP隧道协议。IPIP隧道是一种三层隧道,通过把原来的IP包封装在新的IP包里面,来创建隧道传输。IPIP隧道协议的实现原理简单,非常符合在嵌入式系统中使用。如图5所示

左侧A报文是原始的正常报文,其内部具备“IP头部”与“IP载荷”。在经过IPIP隧道协议后,报文变成了图中右侧B报文的结构。其中,原始A报文的“IP头部”变成了右侧B报文中的“内部IP头部”,原始A报文的IP载荷没有变化。同时,右侧B报文结构中又多出了“外部IP头部”与“隧道头部”。“外部IP头部”是用来将封装好的B报文进行网络传输的关键,此时网络传输中的寻址发送等操作都是根据“外部IP头部”中的内容进行的。而“隧道头部”则是用来告知此次传输的B报文是隧道报文,报文内容需要进行二次处理后,才能拿到真实的数据,及封装前的A报文。

3.2KidVPN的数据收发设计

KidVPN通信是基于IPIP网络隧道协议实现的,但隧道设计只是VPN实现需要考虑的一部分内容。VPN的实现还需要考虑的第二部分内容是网络报文的收发实现。

KidVPN采用的是虚拟网卡的方式,实现隧道报文收发流程。其整体流程如下:

1.首先在嵌入式系统中需要创建一个虚拟网卡设备,它与真实的网卡设备的差别就在于它没有对应的硬件。但从上层看到,它与真实的物理网卡设备没有区别;

2.此时,如果嵌入式设备需要借助网络隧道发送一帧报文时,报文在经过协议栈操作进行寻址后,协议栈会将此报文送到第一步创建出的虚拟网卡中,进行报文的发送;

3.由于KidVPN接管了虚拟网卡的操作,因此当虚拟网卡收到报文时,KidVPN就会对报文进行隧道封装,此时封装后的报文就是一帧符合IPIP隧道协议的报文;

4.在KidVPN封装好隧道报文之后,会进行正常的 UDP通信将报文再次送到协议栈,此时,协议栈在进行寻址等操作时,就会按照封装后的“外部IP头部”的内容进行操作,从而将封装好的隧道报文经过真实的物理网卡发送到目的端,实现整个网络隧道报文的发送流程。

同样的,KidVPN隧道报文的接收与发送类似,当接收端收到隧道报文时,协议栈只会看“外部IP头部”,然后将报文去掉“外部IP头部”后,发现是一帧 UDP报文,因此会将此报文传送到上层 UDP服务,即 KidVPN中。此时,KidVPN会对这帧报文进行解包处理,从而拿到隧道封装前的数据报,并将其发送给虚拟网卡设备。而虚拟网卡设备收到解包好后报文后,会将其作为一个正常的报文在此传入到协议栈。这样完成一个正常隧道报文的接收流程。

另外,为了保证数据的正确连续通信,KidVPN双方还需要约定好相关的通信参数,如MTU、保持心跳等。

因此,KidVPN使用时,通信双方需要先创建一个虚拟网卡设备,用来进行隧道报文的收发流程。接着双方需要建立连接,协商好通信的参数,最后上层应用即可借助 KidVPN进行正常的网络隧道通信。

3.3KidVPN的通信安全设计

KidVPN主要从两方面来保证数据通信的安全性。

1.KidVPN使用加密隧道保证数据安全

3.2 中描述了 KidVPN网络隧道通信的实现,但此时的报文仍然是明文报文,如果进行抓包分析处理,仍然可以看到真实的报文内容。因此KidVPN使用了 AES高级加密标准加密算法对隧道报文进行了加解密。在网络隧道通信时,只有“外部IP头部”是明文的,而涉及到的真实报文数据,均是加密后的内容,因此可以很大程度的保证数据安全。

2.KidVPN使用双重验证保证设备安全

在使用 KidVPN时,客户端与服务器需要先建立通信连接,用来确保通信报文的准确性与稳定性。在建立连接时,KidVPN要求双方需要提供相同的 AES KEY与 密钥。KidVPN采用这种双重认证的方式,来确保加入虚拟专属网络中的设备是经过认证安全的。

4.嵌入式轻量型VPN(KidVPN)使用场景验证

4.1KidVPN 模拟测试环境

由于是 VPN的使用场景一般是两个网络,因此需要两台设备来搭建验证 KidVPN的模拟环境。本文使用两台路由器来模拟测试,一台路由器A作为 KidVPN的服务器,另一台路由器B作为 KidVPN的客户端。将这两台路由器均接入互联网中,此时,这两台路由器下的内网设备虽能同时访问互联网,但它们是不具备互通功能的[5]。拓扑结构如图6所示。

4.2KidVPN验证与报文分析

此时,配置两台路由器让其运行 KidVPN。在配置时,如上文描述所示需要指定好相关配置参数与连接密钥等内容。在配置好后,使用B路由器去连接A路由器中的KidVPN服务,出现“[KidVPN] Client add”时,则说明连接成功。此后,配置好路由器上对应的路由策略后,两个路由器及接入他们的子网设备均已经处于同一子网下,此时使用B路由器下的一个主机设备,IP地址为 10.9.0.201 去pingA路由器的虚拟网卡地址也可直接ping通。如图7所示。

PC端再通过 wireshare去抓取从路由器 A中发出的ping报文,抓包内容如图8所示。

此时,wireshark抓到的 ping报文不是一帧 ICMP报文,而是一帧 UDP报文,其中端口号是 KidVPN服务器使用的 10088 端口号,并且 UDP报文的载荷也已经是加密后混乱的数据,根本无法分析得到真正的 ping报文,从而可以保证数据的安全通信。

综上,KidVPN经过模拟测试环境的测试,可以实现其预设的功能,能够做到快速的搭建一个虚拟专属网络,同时也符合嵌入式系统下的安全隧道的要求。

参考文献:

[1] 郭锋.高效图书馆VPN网络建设研究[J].情报检索, 2010, (2) :105~107..

[2] 周群.VPN技术应用于图书馆研究概述[J].图书馆学刊, 2011, (3) :100~102.

[3] Sixto Ortiz Jr.Virtual Private Networks:Levera-ging the Internet[J].Computer, 1997, (30) :18~20.

[4] 蘇东出.利用RounterOs构建高校图书馆无缝网络办公系统[J].现代图书情报技术, 2007, (11) :84~86.

[5] 魏念忠.基于VPN技术的多校区校园网络安全研究[J].微电子学与计算机, 2007, (10) :108~110.

猜你喜欢
嵌入式系统
Teaching Research on IoT and—Embedded System of Software Engineering
基于Xilinx口袋实验室的组合逻辑电路设计实验
面向应用的智能专业嵌入式系统教学
基于AVR单片机的SPI接口设计与实现
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究