由于网络的开放性,不可避免地带来了许多安全问题。尤其对于军用船舶等保密程度较高的对象,对其数据的安全存储和安全传输提出了更高的要求。为此我们从实际应用的角度针对船舶故障远程诊断系统的数据文件加密问题以及相应的解决方案进行了探讨分析,提出了一种应用在中间层软件上的数据文件加密存储模型,对如何保证监测数据的安全性有很强的指导意义。

一、船舶故障远程诊断系统中数据文件加密思路

在数据库系统中,数据库管理员(DBA)具有至高无上的权限,既负责各项系统管理工作,又可以查询数据库中的一切信息,也就是说DBA可以访问任何用户的任何信息,这就给企业的保密信息产生了极大的安全威胁。为了解决这些问题,一般的方法是各用户(或用户组)的数据由用户用自己的密钥加密,之后再存放于数据库中,这样在解密之前,DBA无法对数据进行操作,非法用户也只能获得被加密过的密文,但却无法了解密文的含义。本文在此基础上,设计了一种应用在中间层软件上的数据文件加密存储方案,并结合故障诊断监测数据的特点以实例运行,其性能较传统方法有很大提高。数据安全问题也普遍存在于其它信息管理系统中,因此该方案的研究为解决类似问题也提供了思路。

二、船舶故障远程诊断系统

1、船舶故障远程诊断系统结构

船舶故障远程诊断系统采用分布式B/S结构模式,一方面在企业内部设立状态监测服务器,在船舶主要动力机械设备上设立状态监测点,将实时采集的数据存入服务器;另一方面在技术力量较强的科研院所建立相应的故障诊断中心,设立故障诊断服务器。当设备运行出现异常征兆时,用户可通过浏览器访问故障诊断服务器,将采集的数据上传到远程诊断服务中心,诊断中心专家将根据用户的请求进行诊断分析,并将结果自动发给客户,实现对故障的早期诊断和设备的及时维修。船舶远程故障诊断系统
的通信模型如图1所示:

数据文件加密在船舶故障远程诊断系统中的应用

2、故障诊断数据安全性及数据特点

在网络环境下,诊断中心接受从用户端传送的大量信息,包括设备基本信息、样点信息、油样信息、红外光谱数据、理化监测数据以及其它各种状态参数等,然后存储在用户数据库中,经数据处理后将诊断结果以报表的形式反馈给用户,包括故障分析、处理和维修历史记录等。数据库系统的数据库管理系统(DBMA)担负着集中存储和处理这些信息的任务,虽然其安全访问控制为数据安全提供了一定的保障,例如基于权限的访问控制等,但这只能满足一般的安全要求,对于一些重要或敏感数据,特别是军用船舶,一旦某些需要绝对保密的数据被非法用户获取,就会带来一定程度的损失。由此可见,随着故障诊断系统智能化程度的提高,数据的安全性虽然作为其非功能性需求但发挥着非常重要的作用。

分析远程船舶故障诊断系统的数据,如光谱分析所得的元素浓度值,如Cu、Fe、Zn等,或主机在运行过程中的各类参数如温度、压力以及振动频率等,很明显这些数据的特点是以数值为主。对数值型数值,可直接用算术方法进行分析,鉴于故障诊断数据的这一特点,本文提出了一种应用中间层软件的明文文件加密方案。而对于没必要加密的信息,如设备名称、油样编号、日期等,则不需要进行任何操作。

三、数据文件加密方案

1、船舶远程故障诊断数据传统加密方案

加密是利用一定的加密算法,将明文转换成为无意义的密文,阻止非法用户理解原始数据,以实现数据文件的保密性(防止用户的标识或数据被读取)、完整性(防止数据被更改)和身份验证(确保数据发自特定的一方)。其文件加密和解密过程可描述为:

在发送端利用加密算法E和加密密钥Ke对明文P进行加密,得到密文Y=EKe (P)。密文Y被传送到接收端后,接收端利用解密算法D和解密密钥Kd对密文Y进行解密,将密文恢复为明文P=DKd (Y)。数据文件加密模型如图2所示:

数据文件加密在船舶故障远程诊断系统中的应用

对于船舶远程故障诊断系统,一般采用实现简单、文件加密和解密效率高并且具有较好安全强度的对称加密算法,如56bit密钥的DES加密算法或128bit密钥的IDEA加密算法;同时为了实现数字签名和身份认证,采用加密强度较高的RSA公开密钥加密算法。采用这两种算法相结合的混合加密机制,先对数据文件进行加密,然后文件系统把每次加密后的数据写入到数据库文件中去,读入时再进行解密。这是目前常用的密文加密,即加密后的数据为不可见,如图3,表示的是在某次采样过程中所得到的一系列元素浓度值进行密文加密后的视图。

数据文件加密在船舶故障远程诊断系统中的应用

以上文件加密方法相对简单,但存在三个缺点:一是对数据库的读写比较麻烦,每次都要进行文件加密和解密过程,降低了数据传输的速度以及数据库的工作效率;二是由于要对整个数据库或数据表进行解密操作,开销巨大,在实际操作中是不可行的;三是密文加密后尽管数据不可见,但会给攻击者透露该数据已加密这一信息,使其有意识地去破解密码,增加了危险性。为了解决这些问题,本文在远程诊断的过程中配置了“中间件”来完成数据加密的功能,并将加密模型改为明文文件加密,即加密后的数据仍为可见的。

2、改进的加密方案

中间层软件通常是表示网络环境下处于操作系统等系统软件和应用软件之间的一种起连接作用的分布式软件,通过应用程序接口(API)的形式提供一组软件服务,可使得网络环境下的若干进程、程序或应用可以方便地交流信息和有效地进行交互与协同。程序员通过调用中间件所提供的大量API,实现异构环境的通讯,从而屏蔽异构系统中复杂的操作系统和网络协议。中间件作为连接分布式应用的桥梁,越来越被广泛应用。

本文在数据管理层与用户界面层之间配置了一层中间件,将文件加密和解密模块封装在中间层软件上,使之成为B/S三层体系结构,如图4所示。该模型实现了以下加密过程:用户方数据经中间件的加密之后以密文形式被诊断中心数据库服务器端接收,经过诊断中心专家系统的诊断之后生成的信息以密文形式经中间件解密成明文反馈给用户。

数据文件加密在船舶故障远程诊断系统中的应用

采用中间件有以下优点:第一,文件加密和解密处理在中间件进行,可以减轻数据库服务器的负担,提高系统效率;第二,中间件屏蔽了数据库的访问方式及路径,在一定程度上阻止了对数据库的攻击,有效地实现了对数据库中敏感数据信息的加密;第三,中间件提供的程序接口定义了一个相对稳定的高层应用环境,它完全独立于数据库应用系统,因此不管底层的计算机硬件和系统软件怎样更新换代,比如需要更新加密系统,只要将中间件升级更新,并保持中间件对外的接口定义不变,数据库应用系统几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。

3、明文文件加密实例

按照数据库的结构层次,数据库的加密粒度可以分为相应的数据库级、表级、记录级、字段级和数据项级。对于远程船舶故障诊断系统的油液监测中的光谱分析数据,在保证一定加密粒度的条件下,同时使加密对系统的查询性能的影响降至最低,对数据文件加密的对象应选择数据表中的记录。

仍以图3中的记录为例,图5为加密前视图,加密过程如下:通过调用专门的加密函数,对整条记录一起进行加密处理,加密后输出的是一列与原值截然不同的数值,得到图6所示视图。

数据文件加密在船舶故障远程诊断系统中的应用

这种明文文件加密方案使得明文值加密后仍是可见的值,但已失去了其原始意义,这样即使管理员或非法用户得到了该表,也无法判断这些值是否加密,以及如何加密,因此就无法理解每个值的真实含义,从而克服了密文加密在安全性上的不足之处,更有效地保证了关键数据的安全性。为了提高文件加密强度,减小破译的可能性,各记录可使用不同的加密函数,然后再将所有加密函数进行集中管理。对于没必要加密的信息,如油样编号、油样容量、日期等,完全不需要进行任何操作,这样很大程度上提高了数据库检索效率和系统的使用效能。

为了对加密数据文件进行高效查询,本文设计的方法是在原有数据表中增加一个新字段,并存储该字符数据的特征值。查询时主要利用该新增字段,首先对加密数据文件进行一次粗略查询,过滤大部分与查询条件无关的记录;然后对剩余记录中的加密数据文件进行解密,在解密的数据上再进行一次精确查询,最终实现查询目。这样就大大提高了加密数据文件的查询检索性能。

小知识之B/S结构

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或_SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。