陈靖宇
(中国船舶重工集团公司第七二三研究所,江苏 扬州 225101)
随着网络技术的快速发展,网络已广泛应用于现代军事领域,人民防空(以下简称人防)也加快了信息化建设的步伐[1]。但其中的人防雷达组网通讯时受环境与成本等因素限制,难以自建专用保密网络,而往往租用电信网络专线进行信息交互,其网络设备与民用设备没有完全隔离,易受到敌方的入侵,安全性难以保障;另一方面,由于其安全等级较部队的武器装备低,较少使用军用密码机进行加密传输,一般使用简单的加密方法甚至直接采用明码传输,通讯协议又多采用不可靠的用户数据报协议(UDP),易被敌方获取并破解进而造成泄密,对人防工程具有较大的危害。因此需要采用一种不易破解、通用化、开发成本低、实时性高的安全措施将各雷达间的信息进行加密传输,保障其信息安全。
安全套接层协议(SSL)以及后续的传输层安全协议(TLS)和数据传输层协议(DTLS)是网络通信的常用安全协议。SSL利用数据加密技术广泛应用于Internet网络通讯,可确保数据在网络传输过程中不会被截取及窃听,为数据通讯提供安全支持。虽然早期版本有心脏漏血的漏洞,但很快进行了修补,其安全性有较高的保障,且得到了长期验证。TLS支持传输控制协议(TCP),但是对于人防雷达组网通讯常用的UDP协议则无法支持。DTLS则是在TLS协议的基础上进行了扩展,提供了对UDP的支持,可以看做是UDP版本的TLS,具备了同样的安全机制和防护等级。 DTLS协议简单易用,开发成本低,已被广泛用于电子邮件协议(如交互邮件访问协议(IMAP)和邮局协议(POP)等)。
针对人防雷达组网通讯中常用的UDP协议安全问题,本文提出一种在人防雷达组网通讯中利用OpenSSL开发包,实现基于DTLS协议的密钥生成与管理、数据加密解密和身份验证的软件方案,提高人防雷达组网通讯的安全性。
由于人防雷达组网时多采用公用网络,因此首先要保证网络链路的安全,需要在构建网络环境时注意以下几点:
(1) 雷达系统与外网应采取物理隔离,不可接入外网交换机或计算机;
(2) 使用访问控制设备或软件限制各节点的访问权限,防止超出权限的数据访问;
(3) 安装防火墙与安全软件对入侵者进行防范,可及时发现非授权设备接入并将其隔离;
(4) 可采用双冗余网络、双服务器的方式提高网络与数据的可靠性与安全性。
一个典型的人防雷达网络构架一般由一个控制中心、若干部雷达以及防空武器组成,之间通过光纤与网络交换机、路由器等连接,如图1所示。
图1 人防雷达网结结构示意图
控制中心一般安装有多部计算机,配置有网络防火墙、杀毒软件等安全设备,安全保障条件与设施较为全面。因此在控制中心设有访问管理服务器与认证服务器,作为DTLS的服务器端,而雷达显示与控制终端计算机(简称用户终端)与远端的雷达与防空武器作为客户端。访问控制(AC)服务器是一个可信任的资源服务器,其中存储了网络中各雷达节点的权限,另一个则是认证授权(CA)。在网络中,身份由服务器的公钥密码体制(PKC)建立,由X.509证书提供。X.509证书中包括有证书版本、序列号、签名算法标识符、签发人、有效期以及最核心主体公钥信息,认证中心CA通过证书签名标记确认证书拥有者的身份,防止攻击者通过伪造证书假冒节点身份,并使接收者可以检测证书是否被修改[2]。
控制中心的用户终端计算机可以与AC服务器进行认证,并请求对雷达节点接入授权,AC服务器检查用户的访问权限决定是否允许建立连接,如允许则建立两者间的DTLS握手。管理服务器与认证服务器的环境构建本文不做描述,下文将重点说明使用DTLS协议的握手与传输过程。
DTLS 协议是在UDP的套接字上实现了客户机与服务器的握手连接,在握手过程中通过使用算法实现了数据加密,利用验证机制和证书实现了通信双方的身份认证。另外,DTLS还有一个简单的超时重传机制来处理UDP丢包问题。
DTLS 协议介于TCP/IP的网络传输层和应用层之间(见图2),与常规的TCP/IP发送方式不同的是,应用层数据不是直接发送给传输层,而是发送给SSL层,SSL层对应用层数据进行加密并增加SSL加密信息头(简称SSL头),SSL层处理后的数据作为传输层输入之后与正常TCP/IP协议一样发送到网络上。接收与之相反,在传输层收到数据后去除SSL头并对数据解密后,将明文发送到接收方的应用层。
图2 SSL在TCP/IP协议中的位置
DLTS协议的模型由上层的握手消息、应用数据、改变密码规则、警告消息以及记录层组成,如图3所示。
当客户端与服务器需要通过DTLS协议发送数据时,首先对应用层数据进行分段、压缩与加密,之后添加DTLS记录头,封装协议后调用UDP的套接字进行发送。接收过程则与之相反,不过接收方需先判断消息是否被加密,进而需解密后方可读取出正确的数据。建立数据报文的过程如图4所示。
图3 DTLS协议模型
DTLS的传输过程则分为握手和握手建立之后的数据传输。其中握手过程分为4个阶段,如图5所示。
图4 DTLS协议数据包的建立过程
图5 DTLS握手过程
第一阶段:建立安全能力。
客户端向服务端发送Client Hello(客户机握手)消息,并等待服务端响应;服务端向客户端发送Server Hello(服务器握手)消息,包含服务器选择的连接参数。
第二阶段:服务器认证与秘钥交换。
服务器端向客户端发送 Certificate(即证书),使客户机能用服务器证书中的服务器公钥认证服务器。服务器端请求客户端数字证书,客户端在 Certificate Verify 消息中证明自己的身份,服务端向客户端发送Server Hello消息,标示客户机可以验证服务器发送的X.509证书。
第三阶段:客户机认证与秘钥交换。
服务器端请求客户端数字证书,如客户端有证书即对身份进行双向认证,如没有证书时则随机生成。
第四阶段:完成。
客户机发送改变加密规范(Change Cipher Specs)、完成(Finished)消息,后服务器发送改变加密规范(Change Cipher Specs)、完成(Finished)消息。
客户端收到服务器发来的会话秘钥与Finished报文后,标志整个握手阶段的结束,便可发送应用数据,并且应用数据会一直用会话秘钥加密,从而保证通讯内容的安全性[3]。
雷达组网通讯中实现DTLS通讯最为便捷的方法是利用开源的OpenSSL开发包。OpenSSL 采用C语言作为开发语言,支持Windows、Linux等多种平台,对SSL和TLS 提供了较好的支持。早期的版本只支持TCP,经过扩展,新版已支持UDP。OpenSSL开发包内置有SSL协议库、应用程序以及密码算法库,提供了主要的密码算法、密钥和证书管理功能以及SSL协议[4]。
使用OpenSSL 开发包实现网络的加密传输可分为服务器端与客户端2种。服务器端的通信过程一般包括: SSL 库初始化,载入证书和私钥,创建 SSL,利用 SSL 进行收发,产生私钥与公钥。创建好套接字后与服务器端连接产生SSL,将套接字加入到 SSL 当中,建立SSL通信后就可以利用 SSL进行收发数据(使用OpenSSL库的加密算法)等操作,操作结束后关闭并释放 SSL,整个连接请求完成后系统可关闭连接并释放 SSL_CTX[5]。客户端通信过程与之基本相似,只是少了对私钥与公钥的产生与管理。使用OpenSSL实现服务器端与客户端通讯的过程如图6所示。
图6 使用OpenSSL实现服务器端与客户端通讯的过程
软件实现的流程图如图7所示,OpenSSL也提供了例程可供参考。
图7 使用OpenSSL 开发DTLS通讯的软件流程图
由于本文设计的系统中通讯硬件采用的是小型嵌入式处理器,运算能力有限,因此我们选用简化的预共享密钥(PSK)交换算法,即在服务端预置密钥,简化了密钥交换过程,可快速完成信息交换。 缺点是一旦PSK泄露,将无法保证安全性。OpenSSL自带有多种加密算法库,如高级加密标准(AES)、非对称加密复法(RSA)、对称密码体制DES、PSK等,开发者可直接调用。因此对于加密算法,本文不再赘述。但需注意的是,不同算法带来的数据传输及计算性能开销是不同的,需要针对不同的情况选择合适的算法。
通过简化握手过程与加密算法等手段,在实际使用过程中,采用DTLS协议在无较大数据量的情况下收发网络数据较常规方式对处理器的占用与数据的实时性影响不大,不影响整个系统的性能。
人民防空是一项重要的国防安全战略,人防雷达组网可大大提升整体防空能力,但组网后的网络安全并未得到足够的重视,战时易受到敌方攻击。近几年人防建设投入持续加大,但针对人防雷达组网通讯安全的研究则相对较少。本文基于广泛应用于互联网的DTLS协议,提出了一种雷达组网通讯上端到端的安全传输实现方案,该方案主要利用OpenSSL实现DTLS协议的握手过程以及对用户和节点身份的双向认证,并对数据进行加密传输。本方案软件开发成本低,实现难度小,可以大大提高人防雷达组网通讯的安全性。