在航空产品的研制过程中,需要多个航空研究所和企业共同参与研制和设计,各参研单位需要在航空专用网络环境通过Web模式交换和共享数据库中保密级别非常高的数据。因此,航空专用网络环境中的数据库的安全是至关重要的。航空专用网络环境Web数据库中的数据,在应用程序对数据库访问之前进行加密处理,即数据库中的数据进行加密存储,非法用户即使获得了数据库中的数据,也无法使用,从而提高数据库的安全性。
一、数据库加密的方法
对数据库进行加密处理应满足下列基本要求:加密后的数据仍然存放在数据库系统中;加密后的数据库,其操作仍然是可行和有效的,合法用户对数据库的访问,其效率不受明显影响,严格的身份认证,使非法用户不能对加密数据进行正确访问。为满足上述要求,在对数据库进行加密时。需考虑并解决下面几个问题。
1、Web 数据加密层次
对数据库进行加密,可在软件的各个层次上进行,主要有操作系统层、DBMS内核层和DBMS外围层。在操作系统层实现加密,由于无法辨认数据库文件中数据之间的关系,因而无法根据数据关系进行加密,只能对整个数据库文件加密,这对于大型数据库是没有实际意义的。
在DBMS内核层实现加密,数据的加密和解密过程可以在物理存取之前完成。从而不影响数据库的各种操作,并且加密效率高,但需要有DBMS厂商提供的DBMS内核接口的支持,而DBMS厂商都不提供这方面技术支持,所以实现非常困难。
在DBMS的外围层实现加密是将数据库加密系统作为DBMS的一个外层工具,在实现时既可以充分考虑数据库中的各种数据关系,又不需要开发商的支持,是一种切实可行的加密方法。
2、加密粒度
加密粒度是指数据库加密的最小单位,数据库加密的粒度有文件、记录、字段和数据项。加密单位越小,灵活性越强,使用范围越广,但实现难度越大。
文件级加密实现简单,但严重影响效率,尤其是系统的并发度下降。
数据项加密,灵活性最高,但实现技术最复杂,同样影响数据库操作的效率。
记录加密是对一个完整的一行记录进行加密与解密,实现相对简单,这是因为关键字、索引等技术都是针对记录行的,数据存储是通过索引实现的,而索引是对应表中的行进行组织的,即在索引中,每行都映射一个索引值,并且对数据库的操作大多数都是针对记录行进行的,所以这里实现的是记录级加密。
3、加密算法
数据库中存储大量数据,并且数据之间存在确定的逻辑关系。因此,对数据库中的数据的加密算法应满足如下要求:
数据库加密后,数据量不应明显增加;攻击者仅依据数据量的逻辑关系破解数据库中的加密数据是十分困难的;某一记录加密后;其长度不变,加、解密速度要足够快,数据操作响应时 间应该让用户能够接受。
4、数据库加密的限制
数据库中数据表与数据表之间,字段与字段之间常常存在着密切的联系,为了加速查询,需要建立索引,许多操作都带有条件选择,而条件中的选择项必须是明文,在对数据库加密时,要充分考虑这些条件。由于被索引项和条件选择项的保密级别低或者无需保密,在这里对它们不进行加密。这样,对数据库中的数据进行加密,对上述限制条件不加密,不会影响应用程序中的SQL语句对数据库进行操作。
二、航空专用网数据库加密的系统结构与实现
1、航空专用网基于B/S模式的数据库加密系统结构
基于B/S模式的网络信息系统,其应用程序都在服务器端,客户端只需要浏览器,不需要开发专用的应用程序,用户通过浏览器实现与服务器的信息传输和访问。
数据加密在Web服务器与后台数据库之间实现,这样既简单可行又不影响访问速度及系统执行的效率,数据库加密系统结构如图所示。
加密系统处于ASP和ADO/ODBC中间,通常所称的中间件,在这里是指ASP+ADO/ODBC。当浏览器以HTTP协议的数据访问请求达到Web服务器端时,加密系统截取ASP对数据库的访问,如果是数据输入,将数据加密后提交给 ADO/ODBC,最后数据以加密的形式存储在数据库中。如果是数据查询,由ADO/ODBC读出后,将加密的数据解密后提交给ASP,从而起到安全作用。本系统对有安全要求的数据进行加密、解密处理,如果数据的保密程度低或者是无安全要求的数据,系统不做加密处理,将访问无保密或公开的数据的请求旁路掉。即使黑客闯入系统内,绕过安全系统通过ADO/ODBC访问被加密的保密数据,由于无法得到加密方法和密钥而无法解密。
2、航空专用网加密系统实现
(1)加密系统软件结构
加密系统软件由4部分组成,分别是用户验证、访问控制、加密、解密引擎和访问列表,前3个部分的功能分别由3个模块实现。
(2)用户验证
当建立一个新的数据库用户时,将该用户名存入访问列表中,系统使用random对象随机生成一个64位二进制数据作为用户密钥,对用户口令进行加密,加密后的口令放在密钥数据库中。当该用户初始访问数据库时,由该模块将该用户名在访问列表中进行匹配,匹配成功,则将加密的口令从密钥数据库取出与当前用户交互的口令比较,一致后往下进行。
(3)访问控制
访问控制完成对数据库安全操作,根据安全条件、状态、权限和操作类型决定加密、解密等操作。
当一个数据库用户创建一个数据表时,该用户把允许访问该表的用户名、允许访问的方式如查询、插入、删除、修改等存入到访问列表中。在插入数据时,除主关键字、索引项、条件选择项外,其它数据项通过调用加密、解密引擎进行加密,然后存入到数据库中。
对于允许访问该数据表权限的其它用户对该数据表进行查询时,通过正常的选择语句找到相应行后,将被加密的各数据项通过调用加密、解密引擎后解密成明文,传输给用户。
如果是插入记录,与数据库拥有者相同,其处理方法与上述基本相同,区别是到访问列表中验证是否拥有数据库插入权限。修改操作是先从列表中验证权限,通过后调用加密解密引擎将修改后的加密数据存入数据表中。删除操作只需验证权限,如果验证通过即可删除,不用调用加密、解密引擎。
当创建一个数据表时,系统用random对象自动产生一个数据密钥,该数据密钥由用户密钥加密后也存入密钥数据库。对记录加密只需数据密钥,需要解密时需要有数据密钥。要获得数据密钥,必须要获得用户密钥,只有输入正确的用户口令即可获得用户密钥。
(4)加密、解密引擎
加密、解密引擎是实现数据库中数据加密与解密功能的,是系统的核心部件,对于保密的数据,必须调用它来实现对数据的加密与解密。由于数据库对数据访问的响应时间要求很短,对大量数据的加密,尤其是解密的处理时间要短,为此选择了加密速度较快的DES算法。选择DES的另一个重要原因是它为单密钥(对称密钥),本系统是一个系统内部及一个模块内进行加密与解密,只需一个密钥即可,这一点不同于2个用户在网络上传输数据时的加密机制。
(5)访问列表
访问列表的全称是访问控制列表,其存储内容为用户名、口令的明文、允许访问的数据库和数据表、数据库和数据表的访问权限、当前用户数据库的安全条件和状态等信息。访问列表对应密钥数据库中的一个表安全系统的加密密钥也以一个数据表的形式存储在密钥数据库中。由于使用用户密钥和数据密钥已经达到系统的安全要求,访问列表中的数据以明文的形式存储。
(6)系统性能测试
系统性能测试分别在无加密系统和使用本加密系统进行,每次测试时对数据库访问了40次,访问操作包括查询、插入、删除和修改,各占10次,对40次的访问时间取平均值,测试结果如表 所示:
测试结果表明,增加了本加密系统后,在数据安全性提高的同时,系统的响应时间与不加密相比是完全可以接受。
航空专用网环境下系统数据库中的敏感数据经加密系统处理后,变成形式上无规则的乱码,即使非法使用者窃取了数据库文件后,仍然难以得到所需的信息。由于密钥管理采用了二级加密机制,无论是数据密钥还是用户密钥都是以加密形式存储的因此即使非法用户打开了数据库,也无法解密用户密钥,更不可能得到数据密钥,无法对加密数据进行解密。
小知识之Web数据库
Web数据库属于深度Web(Deep Web)的一种资源形势,通常指在互联网中以Web查询接口方式访问的数据库资源,其结构是后台采用数据库管理系统存储数据信息,对外提供包含表单的Web页面作为访问接口,查询结果也以包含数据列表的Web页面形式返回给用户。