APP下载

基于OpenSSL的信息安全RTU的设计与实现

2015-03-25刘学海计小军

石油知识 2015年5期
关键词:服务端密钥代理

刘学海 计小军 卫 乾 尹 鹏

(1.北京中油瑞飞信息技术有限责任公司;2.中国石油伊拉克鲁麦拉项目部;北京 100007)

1 引言

随着计算机技术应用的不断深入,特别是信息化与工业化深度融合及物联网技术的快速发展,相继开发出许多如RTU等的嵌入式网络设备。

RTU(Remote Terminal Unit)中文全称为远程终端单元,通过自身的软件系统可以实现调度系统对生产现场的遥测、遥控、遥调和遥信等功能。它是组成工业控制数据采集与监视控制系统的细胞单元,在工业控制领域有着非常广泛的应用。

随着网络技术的飞速发展,具备快速的响应能力、开放式的通信协议和平台的网络化RTU已经成为目前市场上的主流工业控制产品之一,而安全性一直是通信网络中最大的问题之一。目前工业控制现场应用的RTU控制器与SCADA(数据采集与监视控制系统)组态软件之间一般采用明文方式进行数据交互,这种开放式的通信方式存在重大的安全隐患,传输的通讯报文容易被第三方监听、截取和伪造。一旦发生这种情况,将产生不可估量的生产效益损失。如何防止工业控制系统安全事件的发生、在重点能源企业构筑安全的工业控制系统,已经成为政府和企业关注的热点。

信息安全型RTU控制器(图1)不但可以实现对工业控制现场数据的采集及处理功能,同时在数据传输前进行加密,拒绝未授权用户的访问,从而有效杜绝由于信息泄露或非法侵入导致的工业安全隐患。

图1 信息安全RTU与传统RTU对比图

目前密码编码算法按密钥使用方法分为对称密码算法、非对称密码算法以及不需要密钥的信息摘要算法,要实现这些算法及相应的协议,工作量非常巨大,实现中通常采用现存的一些密码算法软件包来实现二次开发。OpenSSL为开发密码安全平台提供了丰富的密码算法接口,可以安全高效的实现信息安全RTU。

2 SSL与OpenSSL

2.1 SSL协议

SSL协议即安全套接层(Secure Sockets Layer)协议,是Netscape公司推出的为网络应用层的通信提供认证、数据保密和数据完整性服务的一种安全通信协议。SSL协议建立在可靠的TCP传输控制协议之上,在网络模型中位于应用层和传输层之间,并且与上层协议无关,各种应用层协议(如HTTP、FTP、TELNET等)都能通过SSL协议进行透明传输。

SSL协议分为握手协议和记录协议两种。握手协议是指在数据传输前,服务器与客户端进行身份鉴别,同时协商决定采用的协议版本、加密算法等。每次连接,握手协议都要建立一个会话,且每次握手中产生的对称密钥都是独特的,这种每次更换密钥的方法在更大程度上保证了通信的安全性。记录协议是指对要传输的信息用协商好的对称密钥加密后,再通过TCP/IP的连接将信息发送出去。

SSL协议提供的安全连接具有以下3个基本特点:

(1)连接是保密的:对于每个连接都有一个唯一的会话密钥,采用对称密码体制(如DES、RC4等)来加密数据;

(2)连接是可靠的:消息的传输采用MAC算法(如MD5、SHA等)进行完整性检验。

(3)双方是可信任的:对端实体的鉴别采用非对称密码体制(如RSA、DSS等)进行认证。

2.2 OpenSSL

OpenSSL是一个健全的、全开放的和开放源代码的软件包,最早由Eric A. Yang和Tim J.Hudson开发,现在OpenSSL已经实现了对安全套接层SSL V2.0/V3.0和传输安全协议TLS V1.0的支持。与同类型密码库相比,OpenSSL具有以下优点:

(1)采用C语言开发,支持多种操作系统(Linux、BSD、Windows、Mac、VMS等),可移植性好。

(2)功能全面,密码库支持的密码算法丰富,如对称密码算法AES、DES、CAST、IDEA、RC4等;非对称密码算法DH算法、RSA算法、DSA算法和椭圆曲线算法;信息摘要算法MD2、MD5、SHA-1和RIPEMD。

(3)OpenSSL提供了CA等用于生成各种X.509证书(网络通信中标志服务方实体的身份,含有服务方的公开密钥)、密钥文件的命令,方便程序的编写和调试。

(4)源代码开放,能够根据需要选择不同的软件版本进行修改和移植。

另外,OpenSSL软件包还提供了丰富的密钥和证书管理功能以及用来进行加密模块扩展的引擎机制。

3 基于OpenSSL的信息安全RTU的总体设计

3.1 信息安全RTU硬件平台设计

本文采用的系统硬件平台是由北京中油瑞飞信息技术有限责任公司自主研发的一款RTU产品,分为核板和底板两个部分。核板采用Atmel AT91SAM9X25为微处理器(CPU),并采用专业稳定的内核电源芯片和外部看门狗复位芯片来保证系统运行的稳定性。CPU主频为400MHz,内存设备为128M的DDR2,RTU的Flash存储为128M的Nand Flash。

底板接口和资源方面:1路10/100M以太网RJ-45接口,4路串行接口,1路CAN接口,1路ZigBee无线接口,8路AI和DI接口,4路AO和DO接口。

除上述通用资源外,信息安全RTU采用硬件引擎加密机制,硬件加密模块采用工业级带有安全主控芯片的SD卡。加密芯片高速数据总线接口,除了支持国际通用加密算法AES、DES、RSA、SHA外,还支持SM2算法,这可在保证数据吞吐率的同时增强信息加密的强度和灵活性。

3.2 基于OpenSSL的信息安全RTU的系统软件设计

整个安全信息传输系统包括3个部分:服务端,由基于OpenSSL的信息安全RTU充当;客户端,由安装SCADA软件的电脑充当;加密机代理,由安装Linux系统的加密机充当(图2)。RTU主要实现加密机代理的身份认证、与代理的信息传输、和底层数据的采集,其中加密机的身份认证和与加密机的信息交互为RTU实现的重点。

图2 安全信息传输系统组成图

在整个安全信息传输系统中,RTU和加密机之间以SSL安全连接,而SCADA与加密机之间是直连。这是因为RTU与加密机之间的信息处于公网内,容易被第三方恶意监听、截取和伪造,而加密机与SCADA处于公司内网,安全性较高。

基于OpenSSL的信息安全RTU的软件结构分为以下4个层次:

(1)引导加载程序Bootloader

Bootloader是嵌入式系统在上电后执行的第一段代码,这段程序在完成CPU和相关硬件的初始化后,再将操作系统映像拷贝到内存中然后跳转到操作系统所在的空间,启动操作系统。本文采用的是bootstrap+uboot作为第一层引导加载程序。

(2)经剪裁、移植的Linux内核

Linux内核包含着所有操作系统的核心功能和网络协议栈,是Linux操作系统的心脏。本系统的信息安全RTU以剪裁过的2.6.39版本的Linux为内核。

(3)文件系统

文件系统包括根文件系统和建立于Flash设备上的文件系统。嵌入式Linux启动时,第一个挂载的是根文件系统(包含特定的目录下不同名称、不同用途的文件)。

(4)用户应用程序

用户自己开发的运行于嵌入式Linux操作系统之上的计算机程序,包括自定义协议栈、Web服务器等。信息安全RTU开发的应用程序包括基于OpenSSL的服务端与加密机通信程序、本地模拟量与数字量采集控制程序、串口Modbus程序等。

上述4个层次中,前3个是信息安全RTU平台的搭建,第4个层次是基于OpenSSL的信息安全RTU功能实现的重点。

4 OpenSSL握手、数据传输的具体实现

在整个系统中,信息安全RTU与加密机代理的通信流程如图3所示。其中步骤1~13为SSL的握手阶段,完成代理与服务端的双向认证、加密算法的协商、密钥的确定。

图3 信息安全RTU与加密机代理通信流程图

这13条消息可以分为4个阶段:

第一阶段是加密机代理向信息安全RTU服务端发送一个连接请求Client Hello,包含了加密机的SSL协议版本号、随机数key和准备使用的加密算法。

第二阶段是RTU服务端收到加密机代理的连接请求后向代理发送自己的SSL协议版本号、加密算法的种类、随机数key、自身SD卡硬件证书以及代理的证书请求。

第三阶段是代理收到服务端发送的信息后,会验证服务端的合法性,包括证书是否过期、发行服务器证书的CA是否可靠、服务器证书上的域名是否和服务器的实际域名相匹配等。如果合法性验证通过,加密机代理会随机产生一个对称密钥key,并用提取的服务器公钥对其进行加密,然后产生一个随机数,并数字签名,最后将签名的随机数、代理自己的证书和加密的对称密钥key发给服务器,并向服务端发出信息,指明后面的数据通讯将采用该对称密钥作为通信密钥,同时通知服务端代理握手过程结束。如果合法性验证没有通过,通讯将断开,

第四阶段信息安全RTU服务端对代理发送来的证书和签名随机数进行合法性检验。如果验证通过,服务端用私钥解密代理发送来的对称密钥,并向代理发送信息,指明后面的数据通讯使用该对称密钥,同时通知代理服务端握手过程结束。如果检测没有通过,通讯立即中断,

握手过程结束后,加密机代理与信息安全RTU端将进行应用数据的传输,直至此次通话结束。

基于OpenSSL的信息安全RTU为实现SSL通信软件各个模块的设计及关系如图4所示,信息安全RTU服务端在接收到加密机代理的请求后,会判断该请求是否为已连接且为未断开的请求,如果是,则启用会话重用模块,而不需要重新握手建立连接,这种方式会节省不必要的开销,提高通讯效率;如果该请求是新的连接请求,则需要建立SSL连接。

SSL连接过程需要用到SSL初始化模块、SSL连接模块和SSL身份验证模块3个模块:SSL密码组控制模块用于RTU与加密机通信密码的选择与控制,加密机代理可以通过修改密码来保证通信的安全;SSL通信模块用于RTU与加密机建立SSL连接后双方的数据传输。

(1)SSL初始化

首先要初始化OpenSSL的函数库,通过函数SSL_library_init()来实现,然后调用SSL_load_error_string()函数,可以将错误码转换成字符串。

图4 基于OpenSSL的信息安全RTU的SSL通信中各模块关系图

接着创建SSL上下文,信息安全RTU采用的是硬件引擎加密机制,首先要初始化硬件加密模块,通过调用ENGINE_load_sdkey()函数实现这一功能,该函数中会完成硬件加密模块SD卡中的加解密算法库替换OpenSSL中的软加解密算法库等一系列工作。然后调用SSL_METHOD *meth=SSLv23_server_method()函数用来初始化SSL支持的版本;SSL_CTX *ctx=SSL_CTX_new(meth)函数用来创建SSL_CTX数据结构,该结构体主要用于准备SSL握手前的环境,包括CA证书、服务端的证书、私钥、协议版本号等,然后通过调用各功能函数实现该数据结构的初始化。

因为RTU服务端需要认证加密机代理,所以需要加入请求代理认证的内容,调用函数SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL)实现,参数SSL_VERIFY_PEER需要进行代理认证,SSL_VERIFY_FAIL_IF_NO_PEER_CERT表示如果客户端不提交证书则SSL连接过程立刻终止。

(2)SSL接受连接

RTU端在收到加密机代理发出的连接请求后,RTU端就会创建SSL对象来对应一条SSL连接,SSL对象并不是直接附加到套接字上,而是通过中间层BIO对象来实现的;SSL对象附加到BIO对象上,然后BIO对象实现与套接字实现通信。这样使得SSL对象的实现不仅局限于网络套接字,还可以用于实现串口等。信息安全RTU中实现方法为:ssl=SSL_new(ctx),创建SSL对象;SSL_set_fd(ssl, ucSocket)实现SSL对象与BIO对象以及BIO对象与套接字的绑定;err=SSL_accept(ssl)实现与代理的握手过程,包括双方的互相认证、密钥的协商等。如果握手成功,返回1,SSL连接成功建立成功,可以开始进行数据传输。如果失败,可以通过检查返回值来确定连接错误的原因。

信息安全RTU端与加密机代理的SSL连接建立成功后,SSL对象和套接字作为一个数据结构保存到会话重用模块中,只要SSL连接不中断,RTU与加密机通信都是通过调用会话重用模块进行通信的。

(3)数据传输

信息安全RTU与加密机代理通信交互时,发送数据用函数SSL_write(ssl,buffer,length),接收函数用函数SSL_read(ssl,buffer,length),与系统函数read和write基本一致,只是第一个参数变为SSL对象。

最后,通信完成后,要终止SSL连接,释放资源,调用SSL_free(ssl)来释放SSL对象,调用SSL_CTX_free(ctx)来释放CTX环境对象。

5 总结

为解决工业现场中RTU在通信中存在的安全隐患,本文设计并实现了基于OpenSSL的信息安全RTU,详细介绍了该RTU的总体设计方案及OpenSSL握手、数据通信的具体实现,适用于需要安全通信的工业现场。

[1]Bruce Schneider.应用密码学[M].北京:机械工业出版社,2000.

[2]W.Chou.Accelerating secure transactions.IT Professional,2003(2):37.

[3]Nachiketh,Potlapally,SRavi.A Study of the Energy Consumption Characteristics of Cryptographic Algorithms and Security Protocols.IEEE TRANSACTIONS ON MOBILE COMPUTION,2006,5(2):128.

[4]Dierks T, Allen C. The TLS Protocol Version 1.0[S] IET FRFC2246, 1999.

[5]齐洪喜,周大水.基于OpenSSL的安全密码平台的设计与实现[J].计算机工程与设计,2007,28(2):314-315,319.

[6]Rescorla E.SSL与TLS Designing and Building Secure Systems[M].崔凯译.北京:中国电力出版社,2002.

猜你喜欢

服务端密钥代理
密码系统中密钥的状态与保护*
代理圣诞老人
TPM 2.0密钥迁移协议研究
代理手金宝 生意特别好
新时期《移动Web服务端开发》课程教学改革的研究
一种对称密钥的密钥管理方法及系统
在Windows Server 2008上创建应用
胜似妈妈的代理家长
一个村有二十六位代理家长
移动支付密钥体系研究