基于Hook技术的文件透明加密原型系统的设计与实现

2020-07-18 11:39◆马
网络安全技术与应用 2020年6期
关键词:机密文件解密密钥

◆马 飞

(中国电建集团贵阳勘测设计研究院 贵州 550081)

本文主要研究一种基于Hook技术的系统,解决机密文件在存储和传输过程中的信息安全问题,对程序源代码、工程图纸、技术资料、财务报表、客户资料等机密文件进行强制透明加密,以便使加密过的机密文件离开了指定的使用环境就无法解密使用,从而实现保护机密文件信息安全的目的[1]。

1 文件透明加密实现原理

在 Windows系统上,通过挂钩应用程序接口函数来改变其读写方式。在关闭文件时,通过将用户操作的临时文件明文进行加密,然后再拷贝到文件原来所在的目录下并将原文件覆盖掉[2-3]。透明加密系统在应用程序读写文件时改变其读写方式,使密文被读入内存时自动被系统转变成程序能够识别的明文,在保存时又要将内存中的明文转换成密文再写入存储介质。其加解密实现步骤如下所示:

步骤1:用户调用某种应用程序操作某种机密文件;

步骤2:文件透明加密系统在驱动层挂钩API,改变文件的操作方式;

步骤3:文件透明加密系统根据事先设定的加密规则判断用户访问的文件是否需要加解密,如果需要进行加解密,则系统自动调用事先设定好的加密算法和指定的密钥对文件进行加解密;

步骤4:Windows文件系统以密文的方式操作文件,即从磁盘上读取机密文件的密文或者将加密后的机密文件写入磁盘。

2 文件透明加密系统设计

2.1 系统的模型设计

为了对指定类型的文件进行强制透明加密,系统构建了一个基于进程名的访问控制安全模型,即将文件分为机密文件和普通文件,机密文件是指根据系统的加密规则指定为需要加密的文件,而普通文件是指不需要加密保护的文件。同时,本原型系统将进程分为机密进程和非机密进程,机密进程是指在系统的监控下,可以访问机密文件的进程;非机密进程是指不受系统的影响,可以正常访问普通文件的进程。根据本原型系统的加密策略规定,机密进程只能访问机密文件,不能访问普通文件;而非机密进程不允许访问机密文件,只能访问普通文件;系统只针对机密进程对机密文件的操作进行自动加密解密,而对非机密进程对普通文件的操作则不做处理。

2.2 系统的架构设计

本系统从逻辑上由里到外划分为三个层次,其中核心层提供加密驱动功能,主要负责文件的加密、解密操作及用户权限的控制;中间层负责用户层对核心层的操作与控制;用户层则负责提供用户的操作界面。系统在组成上一共分为应用控制模块、核心功能模块和密钥管理模块三个部分,应用控制模块提供用户与系统的交互界面,控制核心功能模块即加密驱动的起停、安装与卸载,同时让管理员方便地添加需要加密的进程类型和文件类型。

在系统的加解密过程中,许多应用软件都创建了临时文件,整个加解密过程都是对临时文件进行操作,当操作结束后再用加密过的临时文件将正式文件替换掉。因此核心加密模块必须获取机密文件的正式文件和临时文件的读写访问权限,才能对机密文件实现加密。因此,核心功能模块的功能主要是负责文件的访问权限控制和加解密处理。其中,核心层功能模块共分为八个部分,其中Entry.c提供加密系统调用程序的入口,Hook.c模块负责挂钩System Service Dispatch Table(SSDT),拦截各种文件操作句柄,即拦截ZwCreateFile、ZwOpenFile、 ZwReadFile、ZwWriteFile、ZwCloseFile、ZwSetInformationFile函数的操作句柄;用HookZwCreateFile.c、HookZwOpenFile.c两个模块对新创建的机密文件进行从头到尾整体加密,并将文件名、保存路径及访问文件的进程名存入指定的文件加密记录表中;用HookZwWriteFile.c模块对修改过的机密文件进行从头到尾整体加密一遍,并将文件名、保存路径和访问文件的进程名存入指定的文件加密记录表中;而HookZwReadFile.模块则负责将合法用户打开的机密文件解密;HookZwClose.c模块负责关闭已打开的机密文件。

密钥管理模块主要负责文件加密密钥的生成与管理。安装过程中加密系统根据用户输入的用户名和登录密码生成密钥信息,采用单向散列函数SHA_1生成唯一的用于对文件加密的密钥,将其传递给核心功能模块,并将密钥内置于加密系统内。当用户更改用户名和登录密码后,系统就会生成一个新的文件加解密密钥,因此用户在更改用户名和登录密码之前必须对原来的机密文件进行处理。

其系统架构如图1和系统功能结构如图2所示。

图1 系统架构图

图2 系统功能结构图

2.3 系统的加密规则设计

本系统采用的加密规则是进程名与文件扩展名的组合策略,系统根据用户所调用的应用软件对应的进程名及所访问的文件的扩展名,与加密记录表中的记录进行比对,以此来判断文件是否需要加解密。比如,系统设定自动加解密文件扩展名为.TXT的文件,当用户调用NotePad++软件创建或者修改扩展名为.TXT的文件时,系统就会自动监控到 NotePad++.exe进程对扩展名为.TXT的文件进行操作,然后自动将其加密;当用户调用NotePad++软件读取扩展名为.TXT的文件时,系统就会根据监控到的文件扩展名与加密记录表中的记录进行比对,来判断该文件是否已经在文件加密记录表中。如果已经存在,则说明该文件已经被加密处理过,系统会自动将其解密;如果不存在,则说明该文件未被加密处理过,系统先对文件从头到尾加密一遍,然后再进行读写操作。

同时,系统通过用户名和登录密码来生成唯一的加密密钥和解密密钥,使得机密文件只能在用户指定的环境下使用,一旦离开指定的使用环境,便会因使用不了系统的解密服务而无法继续操作。

3 文件透明加密系统的工作原理及实现过程

3.1 系统的工作原理

本系统工作在操作系统的核心层,通过在系统内核拦截文件的操作句柄,修改系统对文件操作的接口,同时根据用户的身份、进程名及文件扩展名来判别当前文件是否需要加密。如果需要加密就按照写多少加密多少的原则,将内存中的文件内容全部加密,然后再写入存储介质;解密时同样根据用户的身份、进程名及文件扩展名来判别当前文件是否需要解密,如需解密则按照读多少解密多少的原则,将文件内容从存储介质中读取出来并进行实时解密,然后发给操作系统的I/O管理器,用户再使用指定的进程以明文的形式将加密文件打开。这样文件从被创建起就被强制加密,且始终以密文的形式存放在磁盘上,因此不会造成信息泄漏。

3.2 系统的实现过程

本系统的实现过程是根据系统事先设定的加密规则来判断用户访问的文件是否满足加密条件,如果满足则本原型系统会自动对这些需要保密的文件进行加解密处理;如果不满足,本原型系统则不进行加解密操作。

步骤1:用户调用某种进程访问某种文件;

步骤2:系统根据加密规则对访问文件的进程名进行判断,如果不符合加密规则要求就拒绝访问,如果符合要求则继续往下判断,执行步骤3;

步骤3:判断该进程所调用的函数参数是否为FileCreate,如果是则对该文件进行加密处理,如果不是则继续往下判断,执行步骤4;

步骤4:判断文件扩展名是否符合加密规则,如果符合则对该文件进行加解密处理,如果不符合则不对其进行加解密操作。

经过测试,本系统能够实现对Adobe Acrobat创建的扩展名为.pdf的文件,Paint创建的扩展名为.bmp的文件、NotePad++创建的文件等进行加密。

4 总结与展望

本系统实现了文件的透明加密,有效地保护了机密文件的信息安全。其加密规则是根据事先设定的加密策略对指定类型的文件强制加密,在用户向外发送非涉密文件的明文时需要进行大量的解密操作,影响正常的工作效率。今后的努力方向是研发综合手动加密方式和透明加密方式两者优点的智能动态加密系统。

猜你喜欢
机密文件解密密钥
幻中邂逅之金色密钥
幻中邂逅之金色密钥
炫词解密
找到那间格格不入的房间
解密“一包三改”
密码系统中密钥的状态与保护*
炫词解密
炫词解密
台共享单车内惊现机密文件
TPM 2.0密钥迁移协议研究