APP下载

基于Windows下的文件保密隐藏系统的设计与实现

2016-12-15刘树鹏戴舜许博臣

电脑知识与技术 2016年27期
关键词:身份验证加密

刘树鹏+戴舜+许博臣

摘要:随着个人计算机大规模的普及,存储在计算机上的电子文件已成为人们传播信息的重要载体,从而计算机中的文件安全也成为一个急需解决的问题。该文在Windows系统下,利用驱动隐藏技术为用户隐藏一些重要的进程与私密的文件,使其他用户无法看见。同时,结合快速AES加密算法实现对文本文件的加密,使文件具有更高的安全性。进一步利用USBKey技术为多用户提供安全服务。该系统能为各用户提供足够高的安全性,防止其他用户得到或破坏其信息。

关键词:隐藏; 加密; AES; 身份验证; USBKey

中图分类号:TP309 文献标识码:A 文章编号:1009-3044(2016)27-0030-04

Abstract: With the popularity of personal computers, electronic files stored on the computer have become an important carrier of information dissemination, thus the security of the file in the computer becomes a problem to be solved urgently. In this paper, under Windows system, use the driver hiding technology for users to hide some important processes and confidential documents, so that other users cannot see. At the same time, combined with the fast AES encryption algorithm to achieve the encryption of text files, so that the document has a higher security. Further using USBKey technology for the user to provide security services. The system can provide a high enough security for the user, preventing other users get their information or damage.

Key words: hiding; encrypt; AES; identity verification; USBKey

1 引言

当前,个人计算机已经成为人们日常办公、学习等不可或缺的设备,且Windows操作系统的使用者更是人群中的多数。然而,单个Windows系统可能由于各种原因,在很多情况下会有意或无意地被多个用户所共同使用。对于一些用户,他们所拥有的一些私密的文件可能不希望被另一些用户所看到或得到;或者一些对其所使用的应用有着关键作用的进程而不希望被其他用户无意停止等情况。所以,这些用户可能希望在操作电脑的时候,为其所拥有的文件或进程提供一定的安全性,达到保密其文件,使其程序达到稳定运行的效果。

目前,很多保密系统只是单纯地使用加密技术[1],对用户所拥有的文件进行加密,这种技术仅仅依赖于加密算法的可靠性。本文希望通过与隐藏功能的结合,进一步地提高用户拥有的文件和需要保护的进程的一个安全和稳定性。同时,采用USBKey身份验证技术[2][3],为多用户提供安全服务,通过硬件和软件的结合为用户查看和使用软件的权限提供足够高的安全性。

2 加密算法

随着电子信息越来越多,为了保证信息的安全性和私密性,使用最多的依然是可靠的加密算法。在常见的一些加密算法中,按密钥类型分类,可以将加密算法分为以下两类:对称加密算法和非对称加密算法。对于对称加密算法,由于其加密和解密采用的是一个密钥,所以其安全性完全依赖于用户所拥有的密钥的保密性。但其优点是加密和解密的速度很快,所以比较适用于需要频繁加密和解密的情况。一般常用的对称加密算法有DES、3DES、AES[4]等。而非对称加密算法使用的是两把钥匙:公钥和私钥,这是一对不同但又完全匹配的钥匙,但其加密过程和解密过程相对于对称加密算法来说可能会适当的慢一些,而安全性会适当地提高,一般常用的非对称加密算法有RSA、DSA、MD5[5]等。

DES加密算法是第一个世界公认的使用分组密码算法标准,于1977年公布的,经过多年的洗礼,目前已被认为不可靠了。而3DES原型就是基于解决DES存在的问题而提出来的,但由于其速度比较慢,所以实用性相对来说比较差。AES是目前使用最为广泛的对称加密算法,其在安全性、性能、效率、易用性、灵活性上都能达到很好的效果。本文需要对文件以及文件路径进行频繁的加密和解密,所以这里采用AES算法,无论是时间和安全性上都能达到系统的要求。而对于用户登录时,使用的密码,其使用的次数有限且需要相对于其他信息更高的一个安全性,所以我们这里采用最常用的非对称加密算法MD5,并且我们这里不需要一个反向的解密过程,只需要一个单向的加密过程,而MD5加密算法能很好地保证其要求。同时,我们采用的USBKey身份验证技术中也应用了MD5加密算法以进一步保证用户登录的安全性。

3 SSDT Hooking

NT操作系统结构是Windows操作系统稳定性和安全性的基础,该系统结构可分为用户层和内核层。内核层享有操作系统非常高的操作权限和自由度,其暴露的系统服务描述符表 (SSDT) [6][7]具有可修改性。文件隐藏驱动部分主要是利用SSDT Hooking技术[8]实现对文件和进程的隐藏功能。SSDT(System Services Descriptor Table)全称为系统描述表,这个表就是将ring3的Win32API和ring0的内核函数联系起来。在Windows系统中出于安全考虑,不同进程根据权限分别运行于ring0或ring3级之上,ring0为内核级,ring3为用户级,Windows通过SSDT将ring3的普通应用程序需要使用系统核心功能时,必须通过调用运行在ring0级的内核程序提供对应函数。SSDT处于系统内外关联的重要位置,所以我们可以通过修改SSDT中记录的内核服务函数的入口函数来实现对文件以及进程显示的相关Windows函数及API进行HOOK,从而到达隐藏文件和进程的效果。

4 USBKey身份验证

USBKey身份验证是一种安全、方便的身份验证技术。它采用软硬件相结合、一次一密的强双因子认证模式,很好地解决了安全性与易用性之间的矛盾。USBKey是一种USB接口的硬件设备,它内置智能卡芯片,可以存储用户的密钥或数字证书,利用USBKey内置的密码算法实现对用户身份验证。基于USBKey身份验证主要有两种应用模式:一是基于冲击/响应(挑战/应答)的认证模式,二是基于PKI体系的认证模式,目前运用在电子政务、网上银行。

本系统应用USBKey进行冲击响应的认证,与传统的用户名和密码方式相结合,使登录更加安全。在整个身份验证过程中,保持USBKey插入计算机中,用户登录时,先由登录端向系统发出一个验证请求。系统接到此请求后生成一个随机数并通过传输给登录端(此为冲击)。客户端将收到的随机数提供给USBKey,由USBKey使用该随机数与存储在USBKey中的密钥进行HMAC-MD5运算并得到一个结果作为认证证据传给保密系统(此为响应)。与此同时,系统也使用该随机数与存储在数据库中的该用户密钥进行HMAC-MD5运算,如果结果一直,则认为是合法用户登录。

5 隐藏加密系统的设计

5.1 系统的框架

本文设计的系统主要是建立在文件隐藏驱动技术上,同时结合快速的AES加密算法、安全性较高的 MD5加密算法以及USBKey身份验证技术等多重安全机制保证用户多样的需求以及文件的安全性。系统的总框架分为四个模块:用户身份验证模块、文件及进程隐藏驱动模块、加密模块、显示模块。使用MFC类库创建系统界面客户端及登陆安全服务,实现对驱动文件的加载及启动。系统运行时,首先需要登录系统,通过用户名和密码的验证后,还需要经过USBKey的身份验证。两个方式通过验证后,进入文件和进程的浏览界面。如图1所示。

5.2 用户身份验证模块

一般公用的电脑会被多人使用,并且每个客户的需求也各不相同,为了保证相互之间的安全性和稳定性,本系统希望提供一个多用户的操作环境,所以实现了一个用户登录模块。本系统的核心又是安全性,所以我们希望保证系统的各个模块都具有一定的安全性,这样才能总体上保证系统的安全性。

此模块采用了USBKey身份验证技术保证用户登录的安全性,其核心目的是替换掉传统的用户名和密码登录机制,保证系统的登录安全。本系统为了方便USB硬件设备的使用,采用了通用的 USB驱动,在Win32的多种平台下都有自带的驱动支持,不需要安装额外的驱动程序。同时,采用冲击响应的认证方法,登录时在服务器端和客户端同时进行计算,客户端计算前要先验证USER PIN,通过后在硬件中使用HMAC-MD5密钥进行计算,服务器端在服务器上使用软件进行计算,比较计算结果。下图为认证方法流程图。

本系统USBKey锁设计主要考虑兼容性、速度、简便性、安全性等方面。插在电脑上的USB设备可能会有多种多样,如常用的一些打印机、扫描仪等设备。该USBKey锁对于这些设备有很高的透明性,同时也支持USB HUB的使用,相互之间不会干扰,具有很好的兼容性。同时,内置的加密算法也能快速地运行,从而达到不影响客户端程序的顺畅运行。免驱动的设计也为USBKey锁的使用提供一定的简便性。所有因素中,最重要的还是USBKey提供的安全性。

这里提供完整的用户管理,首先将用户状态分为普通用户状态和超级用户状态,我们需要通过PIN验证才能进去超级用户状态,从而进行接下来的安全设置,可见图3。在超级用户状态下,当前用户可以设定一个不超过51字节的种子生成PID,以后打开和关闭USBKey锁都需要通过PID来完成。PID生成算法是在USBKey锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的PID,别人即使知道PID,同时也能够调用这个计算过程,但因为不知道种子是什么,是无法生成和当前客户相同的PID的硬件,从而进一步增加了用户登录的安全性。再者,用户可以将USBKey锁设置为只读,那么USBKey中的数据只能读取,而不能被更改,从而保证锁内数据不被篡改。本系统USBKey锁采用的是HMAC-MD5加密算法进行冲击响应身份认证。该算法密钥是存储在USBKey锁中,且只用于计算机,任何客户都获取不到密钥的具体内容,从而保证了密钥的安全性。具体流程可见图2。

5.3 文件及进程隐藏驱动模块

对于Windows下的驱动开发[9],我们需要先获得Windows下的驱动开发包WDK(Windows Driver Kit),其类似于应用程序开发包SDK。WDK自带所有需要的头文件、库、C/C++语言及汇编语言的编译器与链接器,所以也可以选择文本编辑器进行开发。但为了方便,最好还是采用Visual Studio集成开发环境。同时,需要设置好相关文件的附加目录,相关的编译器和链接器也需要替换为WDK自带的版本,否则会出现不可预知的错误。为了方便起见需要设置一个系统环境变量%WINDDK%,其值为WDK的安装路径。驱动模块最终目的是生成sys文件,并利用常用的驱动加载工具Driver Monitor进行加载,也可以手动编写相关代码。但最终都需要选择系统启动时自动加载,以保证本系统软件客户端启动时,驱动模块的有效性。

如上所述,此处采用的是SSDT Hooking技术来实现文件和进程的隐藏[10],主要目的是限制Windows文件和进程显示API函数的调用,从而达到当前电脑explorer.exe无法查看到隐藏文件,taskmgr.exe无法查看到隐藏进程。所以,本系统文件及进程隐藏驱动模块核心思想是对SSDT中服务函数的地址进行替换,使其执行我们自己定义的函数,以此到达过滤掉客户不希望显示文件及进程,最终实现隐藏文件和进程的目的。同时,我们需要用一些函数指针来存储原来的服务函数的地址,以保证客户需要取消文件和进程隐藏功能时,从而恢复相关文件以及进程的显示,实现文件及进程隐藏功能的实时性和可变性。

在进程隐藏中,由于进程数量的有限,且进程名字也不会过长。为了方便客户操作,加入了通配符匹配相关进程的功能,从而实现了快速选择多个进程进行隐藏的功能。假如遇到多个同名进程,进程隐藏驱动会将它们全部隐藏,不区分前后顺序。

在文件隐藏中,因为只保存我们需要隐藏的文件路径,数据类型单一,所以本系统未采用数据库对其进行保存,只保存至txt文档中。当然,为了保证多用户之间的文件路径互不干扰,需要对其使用多个txt文档或文件夹按指定用户进行分类保存。再者,如果直接将这些路径文档直接保存在电脑磁盘上,虽然其他用户无法看见路径下的隐藏文件,但是任何用户都是查到保存在路径文档中的信息,从而降低了系统的安全性。所以,我们希望通过下面所述的加密技术将路径文档进行进一步的加密,以此保证系统的安全性。

5.4 加密模块及显示模块

对于文件的加密主要采用AES加密算法,其可以为客户提供对文件加密的功能。此模块功能有别于文件隐藏的功能,当前客户希望在explorer.exe中能查看到相关文件,并使用相应的解密密钥打开文件。同时,为了上述路径文档的安全性,也是使用AES加密算法对其路径信息进行加密,加密结果如下图4:

对于用户密码保存使用的是MD5加密算法,通过该加密算法能进一步地保证用户登录的安全性。

为了方便客户查看本地文件以及进程,我们在本系统客户端实现了实时显示文档及进程隐藏情况和文件加密情况。当前用户可以通过下拉菜单进行选择,从而查看到驱动隐藏文件和进程信息、文件加密情况。该显示模块中,使用文件浏览对话框将Windows系统的根目录中的各个盘符显示到TreeView控件中,通过鼠标点击TreeView控件中的某项(即某个盘符),会使该盘符目录的文件夹以树状规则显示TreeView控件中,而该目录的文件显示在ListView控件中。

文件的显示方式共有四种,分别可以对所有文件,未保密文件,隐藏文件和加密文件进行显示。在文件显示时,为了区分保密和未保密的文件,保密文件拥有特殊的图标,而未保密文件则拥有正常的Windows系统图标。

文件保密操作时,选中需要保密的文件,可以通过右键菜单或者按钮两种进行操作,文件保密包括了文件的隐藏和加密两种保密形式。

对于进程的显示,也是类似与文件显示,利用Process32First函数将当前Windows系统上所有的进程,取到PROCESSENTRY32的结构体中,然后将每个进程显示在ListView控件中。进程的保密操作,选中需要保密的进程,点击进程加密按钮即可利用隐藏驱动模块的SSDT hooking部分技术对进程进行隐藏,使其他用户无法看到保密的进程。然而当前用户可以通过组按钮选择查看已经隐藏的进程。其整体效果如下图5。

6 结论

本文提出结合文件及进程隐藏技术、文件加密技术和USBkey身份验证技术的方法来实现多用户隐藏加密系统,其相对于传统的只使用单一性安全技术的方法具有更可靠的安全性。使用多种安全技术让用户可以有针对性地选择最适合的文件保密方法。同时,多层次的保密技术可以在保证系统顺畅地运行条件下,提高文件的安全性,防止当前用户文件被其他用户读取、修改或破坏。再者,系统的安全性是同时依赖于硬件设备和软件的,进一步增强了信息的保密措施以及可靠性。

参考文献:

[1] 董秋香,关志,陈钟.加密数据上的计算机密码学技术研究综述[J]. 计算机应用研究, 2016, 33(9): 2561-2572.

[2] 徐涛,文福安. 基于USBKey的考试系统安全的设计与实现[J]. 软件, 2016, 36(1): 4-8.

[3] 曹喆,王以刚. 基于USBKey的身份认证机制的研究与实现[J]. 计算机应用与软件, 2011, 28(2): 284-286.

[4] 刘艳萍, 李秋慧.AES算法的研究与其密钥扩展算法改进[J]. 现代电子技术,2016,39(10):5-8

[5] 方燕飞,王俊,何王全. 基于多层MD5消息摘要的文件完整性实时检测技术[J]. 计算机应用与软件,2015,32(1):20-23.

[6] 霍亮,马恒太,张楠. 一种通用的Shadow SSDT原始地址获取新方式[J]. 计算机应用与软件, 2014, 31(6): 66-69.

[7] 陈俊杰,施勇,薛质, 等.基于SSDT及回调函数的键盘记录方法[J]. 计算机工程,2010,36(11):120-122

[8] 孟晨宇,史渊,王佳伟, 等. Windows内核级防护系统[J]. 软件, 2016, 37(3): 16-21.

[9] 谭文,陈铭霖. Windows内核安全与驱动开发[M]. 北京:电子工业出版社,2015.

[10] 王康,李清宝. 结合容量伪装和双文件系统的文件隐藏方法[J]. 计算机应用, 2016, 36(4): 979-984.

猜你喜欢

身份验证加密
一种基于LWE的同态加密方案
认证加密的研究进展
基于ECC加密的电子商务系统
Endogenous neurotrophin-3 promotes neuronal sprouting from dorsal root ganglia
基于格的公钥加密与证书基加密
HID Global推动多层身份验证解决方案
身份验证中基于主动外观模型的手形匹配
ASP.NET中的Forms身份验证的研究
我国古代对军事信息的加密与传递