基于透明加解密技术的数据安全防护系统的设计与实现
2013-01-28边金良
边金良
(青岛酒店管理职业技术学院,山东 青岛266100)
0 引言
计算机和网络技术的发展,使得企业的信息化程度不断提高,但同时也给企业信息安全带来了巨大的风险,如网络入侵、病毒感染等,越来越多的企业开始重视对数据的保护。
访问权限控制是人们在数据保护中采用的传统技术,但即使这样控制,仍然会发生有访问权限的人将机密文件泄露的事件发生。因此数据加密渐渐成为保证数据安全的有效手段,如企业内部的重要数据在写入磁盘时通过某种方法进行加密,从磁盘读出时对其进行解密。本文针对数据的安全性,设计了一套数据安全保护系统,通过对文件进行强制加密来实现数据的安全防护。
1 透明加解密技术概述
1.1 透明加解密
透明加解密OTFE(on-the-fly encryption),是指数据在使用过程中自动进行加密或解密操作,不改变对文件的访问(打开、读、写等)习惯,整个过程无需用户的干预,操作自动完成,数字内容的保护过程对用户透明[1],但是当文件一旦离开这种环境,文件就无法打开。
加密解密技术中主要包含两个要素,加密算法和密钥。加密算法可以选择对称加密算法,也可以选择非对称加密算法;密钥可以通过文件的创建时间来获取。这样我们先将加密算法和密钥保存在操作系统中,并依据加密策略,自动对文件进行加解密的操作。利用加解密技术,数据被存储在磁盘中时,系统对其进行加密,密文保存在磁盘中,对于非授权用户无权进行读取,即使通过其他的途径获得文件,也无法正常读出内容。而授权用户在不改变自己行为的情况下,读出磁盘中存储的明文数据,整个过程对用户来讲是透明的,这也是透明加解密的特点。
系统在实现过程中,使用加密策略对整个加解密的过程进行安排。加密策略并不是唯一的,它可能随着整个环境的变化而发生变化,它主要规定了在加解密过程中使用的加密算法、密钥以及加密和解密的时机。比如,对doc、xls等office文档,可以采用非对称的加密算法,对jpg、cad等文件采用对称的加密算法。而进程识别主要是根据进程的特征,对进程进行识别,从而判断该进程是否有权限访问那些受保护的文件以及是否需要对文件进行加密或者解密操作。在系统实现过程中,进程的识别不仅仅对名字识别,还对进程对应的程序进行分析对比,从而保证操作文件的合法性。
1.2 透明加解密技术的工作原理
和传统的加密软件一样,透明加解密技术也是通过改变文件内容,以达到保护文件安全的目的。但是,透明加解密技术又和传统的加解密技术有很大的不同。传统加密技术需要用户的参与,手动的进行加密和解密,而透明加解密技术是事先加载到操作系统的内核中,根据加密策略和进程,自动地对文件进行加密和解密,从而将安全性和便捷性有机地结合在一起[2]。
透明加解密的功能主要体现在系统自动地进行密码的核对或加密硬件的连接,它在操作系统的内存中进行,不会在磁盘上产生任何的临时文件,从而操作文件的安全性得以提高。透明加解密技术的工作原理如图1所示。
图1 透明加解密技术的工作原理
图1中,当用户要操作磁盘的文件时,首先会向Windows操作系统的I/O管理器发出请求,I/O管理器通过透明加解密技术平台向下通过Windows的文件系统,定位到磁盘的一个或多个页面。在这个过程中,系统通过内置在透明加解密技术平台上的加密策略,决定加密算法、加密密钥以及被加密的文件,从而在用户访问的过程中实现明文的读出和密文的存储。同时,加密策略是由系统管理员统一管理,普通用户无权读取和修改。
1.3 常用透明加解密技术分析
文件系统的透明加解密的实现需要在Windows I/O和Windows文件系统之间,必须要利用操作系统内核的特殊工作机制。这种特殊的工作机制,可以通过Hook和驱动过滤两种方式实现。这两种方法的不同之处体现在不同的系统内核层上,其中Hook方式是工作在系统API层;驱动过滤工作在系统驱动层,又分为底层驱动过滤和高层驱动过滤两种。
API Hook是在应用层实现的动态加解密,主要通过钩子API的文件函数来对用户操作文件进行拦截,而且与应用程序的关联非常密切,因此相对来讲安全性较差。驱动过滤技术是基于windows文件系统(NTFS)的驱动技术,主要工作在系统的内核层。通常情况下,API Hook相对于驱动过滤来讲,安全性较差,而驱动过滤相对于上层的应用来讲透明度相对高些。本系统采用驱动过滤技术来实现数据的透明加解密。
2 安全防护系统的设计与实现
2.1 安全防护系统的系统结构
该防护系统主要由客户端和服务端两部分组成。服务器端主要为管理员提供快捷的控制中心,并在服务器端部署策略服务,所有客户端的请求均有策略服务进行响应,主要包括认证、审计以及密钥的管理等;客户端主要提供身份认证、透明加密解密、上传下载文件等功能。其系统结构图如图2所示。
图2 安全防护系统的系统结构
2.2 系统各模块功能
客户端主要为普通用户提供文件的读取、写入以及权限控制,其主要功能如下:
*从服务器获取密钥,为整个系统提供加密和解密服务。
*对用户进行身份认证,根据用户的身份进行环境配置以及系统对用户的反馈信息。
*对用户的操作进行操控并记录到服务器中,方便日后的审计和追踪。
*对用户操作的文件设定特定的使用权限。
*为客户端和服务器端提供通信支持。
服务器端主要为系统提供运行的必要设置和监控,其主要功能如下:
*管理员对系统的正常运行进行有效的配置,包括密钥、加密算法等。
*整个系统的运行进行有效的监控和管理,如系统认证、系统日志等。
*为客户端提供各项服务,如访问权限的控制、密钥的发送等。
*管理员对文件的加密和解密功能。
2.3 关键技术实现
2.3.1 过滤驱动模块设计
过滤驱动模块是负责驱动程序的引导、初始化和配置等工作[3]。该模块由入口函数(DriverEntry)开始,结合其他的函数完成操作。其主要功能如下:
*对全局变量进行初始化,如用户环境变量;并将对象、字符串等与服务器进行同步;初始化数据库的加密文件表、文件的访问规则等。
*声明并定义该模块中所有的函数。
*创建并生成接受IRP的驱动实例,这个驱动实例叫设备控制器,设备控制器要保证在任何情况下都可以接受IRP,及时过滤设备没有生成。
*将回调函数进行注册,几乎所有的IRP的处理都由毁掉函数处理,包括创建动态例程、派遣例程等。系统负责将所有函数的入口进行加载。
不同的派遣函数处理不同的IRP,这些IRP由用户发出的所有I/O请求而来,如IRP_MJ_CREATE、IRP_MJ_READ等。
2.3.2 文件加解密设计
文件加解密是对文件进行保护的必要操作,其工作流程如图3和图4所示。
图3 文件加密流程
图4 文件解密流程
其加密过程的详细描述为:
(1)加密进程向I/O管理器发出写入数据的请求,该写入的数据应该是明文数据。
(2)I/O管理器接到请求后, 将其转换为IRP_MJ_WRITE,然后发送给过滤设备的写派遣例程。
(3)判断IRP_MJ_WRITE是否带有IRP_NOCACHE(不需要缓存)、IRP_PAGING_IO(I/O管理器的结束行为)和IRP_SYNCHRONOUS_PAGING_IO标志,如果带则用密钥加密IRP指向的内存数据;否则,读取文件偏移,然后计算请求的数据在哪些页面中,并向下发送新的IRP。
(4)下层设备将页面的数据以密文的方式发送给过滤设备,然后再发送给写派遣函数例程。
(5)完成例程调用解密函数将数据进行解密,解密后的数据覆盖原始的页面数据。再用初始的IRP_MJ_WRITE对这些页面进行刷新,然后用密钥进行加密。
(6)加密算法为AES-128,密钥以创建文件的时间作为种子。
其回调函数的注册和派遣函数的定义如下:
而文件解密的过程和加密的过程类似,笔者在这里不再进行阐述。在这个处理的过程中,所有的操作都在SwapBuffer中完成,不管是对文件进行加密还是解密,原始IRP所带的数据如果在Swap-Buffer中则为明文,如果对磁盘进行读写,则全部都是密文。
2.3.3 访问策略控制模块设计
访问策略控制主要是对I/O管理器发送来的所有IRP进行判断,根据判断的结构确定哪些数据需要进行加密,哪些数据用来解密,哪些数据不进行处理,哪些直接拒绝访问[4]。由于系统中大部分对磁盘文件的操作都是IRP_MJ_CREATE,因此系统通过数据库中的三个配置表中进行控制,即加密文件表、加密进程表和加密的明细表。这三张表分别保存已经被加密的文件的加密信息、加密进程的名称以及要进行加密的文件或者目录列表。文件加密列表的部分代码如下:
如果客户端进程发起加密IRP,首先判断该文件是否在文件加密列表中,如果是则进行加解密操作;否则不予处理。
2.3.4 文件监控模块设计
文件监控模块的实现需要对文件系统进行动态或者静态的绑定。该模块主要用来将发往文件系统的IRP进行拦截,由于现有的文件系统不太容易枚举,所以在过滤驱动安装后,要重启机器以便回调函数的调用,将文件系统载入内存。然后获取I/O堆栈的当前指针,再通过该指针得到设备指针,只有对文件系统进行了绑定,才能实现对文件的监控。
3 结论
本研究通过透明加解密技术,在不影响用户使用习惯的前提下,对磁盘存储的数据进行安全防护,有效提高了数据的安全性,避免了非法用户的越权访问和有意的信息泄露。
[1]张汉宁,房鼎益,陈晓江,汤战勇.基于透明加解密的数字内容安全防护系统[J].西北大学学报:自然科学版,2010,40(3):437-447.
[2]李志勇,叶柏龙.基于文件过滤驱动的文档透明加解密系统原理[J].东莞理工学院学报,2010,17(3):48-50.
[3]张杲轩.WindowsNT的驱动级加解密技术研究与实现:硕士学位论文[D].西安:电子科技大学,2010:26.
[4]邹家银,李培峰.透明加解密系统原理与实现分析[J].计算机与现代化,2012(3):85-88.