Windows下可移动存储设备加密系统的研究与实现

2017-01-13 01:56王飞平高发桂
关键词:加解密驱动程序U盘

王飞平,高发桂

(1.杭州电子科技大学 计算机学院,浙江 杭州 310018;2.湖北民族学院 信息工程学院,湖北 恩施 445000)



Windows下可移动存储设备加密系统的研究与实现

王飞平1,高发桂2*

(1.杭州电子科技大学 计算机学院,浙江 杭州 310018;2.湖北民族学院 信息工程学院,湖北 恩施 445000)

提出一种基于文件过滤驱动实现的软件加密方案,主要讨论普通U盘密盘化,即加密U盘.在这种方案下,系统提供两种透明加密方式:第一种,为每个U盘设置一个密码,数据的加解密在内存中进行;第二种,每个加密盘的密钥绑定为智能密码钥匙,数据的加解密在智能密码钥匙中进行.分析及实验证明,第一种方式能够在保证一定安全性的前提下,降低成本,第二种方式安全性进一步得到增强,密钥永不出设备.

文件系统过滤驱动;对称加密算法;加密U盘;信息安全;智能密码钥匙

随着信息技术的发展,移动存储设备的使用越来越广泛,由此引发的数据泄露问题日渐严重[1].为了阻止可移动存储设备泄露机密数据,目前采用的方式主要有存储数据的加密和访问控制[2],市场上有很多这样的产品,但它们大多基于应用层(ring3)开发,没有做在文件系统层面,导致用户体验很差.针对存储数据的加密,微软的EFS加密文件系统可以很好的保证文件在NTFS文件系统上的安全性,但是它也具有很明显的缺点,包括FAT文件系统无法使用、在证书丢失或者发生系统错误时[3],加密文件将无法正常访问.针对文件的访问控制,比如严格控制可移动存储设备的读写操作,将设备变成只读设备或者对设备的写操作进行关键词检查,这种方式存在检索速度慢和关键词存在歧义导致检索结果不正确的情况[4].以上基于文件内容的访问控制机制没有考虑到存储介质的安全性,因为存储介质上存储的依然是明文.基于以上因素的考虑,加密U盘[5]应运而生.加密方式分为硬件级加密[5]以及软件级加密[6]两种.硬件加密一般是通过可移动存储设备内部的控制芯片加密,能够实现实时加密,并且加解密在设备内部完成,这种方式安全性较好,但是设计复杂,成本较高,同时没有软件加密的普适性(一套软件加密任意可移动设备)[7],本文讨论的可移动存储设备指普通U盘,主要实现普通U盘的密盘化.

本文提出的基于Windows过滤驱动的可移动存储设备加密的实现方案,通过文件系统过滤驱动程序把文件加密与Windows文件系统无缝集成,加解密操作对用户透明,便于操作和应用.针对密钥的管理,本文主要介绍密钥为口令以及密钥在智能密码钥匙中的方式[8],其中以智能密码钥匙加密的方式为最安全,以密钥口令的方式为最经济.以上两种方式,只有经过用户配置的U盘,其文件数据才会被加密,数据的加解密对用户透明,不同的是智能密码钥匙加解密数据在设备中进行,密钥在智能密码钥匙中无法导出.密钥为口令的方式采取一个U盘一个密钥的方式,初始化加密U盘时指定密码,对密码使用HASH算法生成256位字符串作为该U盘的对称加解密密钥.密钥在智能密码钥匙中的方式,加密U盘的对称密钥保存在智能密码钥匙内部,此种方式对系统性能影响较小,数据加解密运算在智能密码钥匙中进行,加快了加密文件的访问速度.本文首先介绍了加密U盘的目标,其次介绍了数据透明加解密的实现原理[9];基于密钥存储位置不同的两种加解密方式而实现的加密U盘;最后对加密U盘做了功能性测试.

1 加密U盘系统的目标

为了克服现有U盘数据防泄漏系统的不足,使本文介绍的方案具有高安全性和实用性,提出以下目标:

1)安全性高,如果待加密的U盘安全性要求非常高,可以采用智能密码钥匙的方式进行透明加密,对于操作不属于自己的加密U盘,系统将返回拒绝访问;

2)用户体验好,打开属于自己的加密U盘中的文件时与操作普通文件一样,加密文件的数据加解密以透明的方式进行,用户无法感知加解密行为;

3)效率高,用户及应用程序操作加密U盘在效率上无明显影响;

4)密钥丢恢复机制,针对密钥为口令的方式,第一次设置时,系统提示用户以明文文件的方式保存加密U盘的密码,此文件只在第一次设置时生成,用户自行拷贝好删除源文件,一旦用户忘记密码,以此文件来导入该加密U盘的密钥;针对智能密码钥匙的加密,加密U盘第一次绑定智能密码钥匙时,随机生成对称密钥的种子密钥,同时导出对称密钥的密文,以文件的方式保存,此文件只在第一次设置时生成,用户自行拷贝好删除源文件,一旦用户智能密码钥匙丢失或者损坏,以此文件来恢复智能密码钥匙;

5)安全保护成本低,为保证加密U盘系统的实用性,安全成本不能太高;

2 基于文件系统过滤驱动的加密U盘

2.1 文件系统过滤驱动的工作原理

在基于NT内核的Windows操作系统中,文件过滤驱动是I/O子系统的一个组件,为用户提供在磁盘等非易失性介质上存储数据的服务.NT内核的I/0管理器是可扩展的,支持分层驱动模型,每个IRP的处理分别经过各层驱动程序,直到某层驱动程序完成这个IRP请求.文件系统过滤驱动是针对文件系统而言的,它既可以位于文件系统之上,也可以被放置在文件系统驱动与存储设备驱动之间.I/O管理器根据用户的文件操作请求构造IRP发送到文件系统驱动程序,文件系统驱动程序将文件系统的操作转化成对应于存储设备驱动程序的操作,并且通过I/O管理器来调用存储设备驱动程序.通过文件系统过滤驱动程序生成附加设备挂载在存储设备之上,上层应用的文件操作对应的IRP请求将会先转至文件过滤驱动程序,经过文件过滤驱动的处理后,发送给存储设备程序完成该请求,从而完成实现控制文件系统的目的,起到接管文件系统函数调用的作用[10].

2.2 加密U盘的总体设计模型

基于文件过滤驱动的加密U盘的总体设计模型如图1所示.

用户设置某个U盘为加密U盘时,需要选择该加密U盘对应的加密方式,分为密钥为口令的加密方式以及智能密码钥匙加密方式.绑定之后生成的密钥恢复文件,需要用户保存,以便于口令或者智能密码钥匙设备遗失或者故障时进行密钥恢复工作.用户启动加密软件后,如果没有某个加密U盘正确的口令或者是没有智能密码钥匙,其无法正常访问加密U盘的文件内容.

2.3 加密密钥的管理

考虑到用户群体不同,其追求安全性、效率、性价比的侧重点不同,本方案采用两种加密方式:口令加密以及智能密码钥匙加密.口令加密方式采用256位密钥的AES对称加密算法[11],而智能密码钥匙加密采用符合国密标准的SM1算法[12],在智能密码钥匙内部完成数据的加解密,密钥永不出设备,只能导出密钥密文[13].如果是口令加密,第一次输入密钥后,本地以密文的方式保存密钥.

针对加解密密钥生成方式的不同,加解密处理流程不同.具体流程如下:

1)对于口令加密的方式,合法的用户(有正确口令)打开加密文件时,分析文件头部4 KB的数据,监测该文件是否属于此U盘的文件,文件头上包含密文的usb序列号信息(具有唯一性),如果该密文不是属于此加密U盘,则IRP返回拒绝访问;如果是属于自己的加密文件,请求应用层用户密钥,将U盘盘符与用户密钥绑定,在用户读取该加密文件时,经过盘符名查询文件加解密密钥,从而解密数据;合法的用户以写入的方式打开原有的加密文件或者新建文件时,请求应用层用户密钥,将盘符名与用户密钥绑定,在用户写入文件时,使用该密钥加密明文数据;

2)对于智能密码钥匙加密的方式,合法的用户(有正确智能密码钥匙)打开加密文件时,分析文件头部4 KB的数据,监测该文件是否属于此U盘的文件,文件头上包含密文的usb序列号信息(具有唯一性),如果该密文不是属于此加密U盘,则IRP返回拒绝访问;如果是属于自己的加密文件,解析文件加密标识,获取密钥密文,将盘符名与用户密钥密文绑定,在用户读取该加密文件时,经过盘符名查询文件加解密密钥密文,将解密请求通过I/O输出到应用层,在智能密码钥匙中解密密文数据;合法的用户新建文件或者修改加密文件时,请求应用层用户密钥密文,将盘符名与用户密钥密文绑定,在用户写入文件时,将加密请求通过I/O输出到应用层,在智能密码钥匙中加密明文数据;

2.4 文件加密标识的创建

文件加密标识是存储在加密文件头上4096字节的数据,其数据结构如下:

typedef struct _tag_FilterEntryFile_Header_Flags

{

WCHARheader_flags[4]; //加密文件标记

INT32ver; //版本

UCHAR usbid[64]; //U盘唯一序列号

INT32flag; //标记加密方式 口令或者智能密码钥匙

UCHARsecret[128]; //密钥密文

INT32secretlength; //密钥密文长度

UCHARchecked[16]; //结构效验 防止用户恶意修改加密标识

INT32timetoken; //写入时间戳

}FilterEntryFile_Header_Flags, *LPFilterEntryFile_Header_Flags;

在这个结构成员中,header_flags代表加密标记,用来表示一个文件是否为加密文件,ver为版本号,usbid为加密U盘硬件序列号,flag标识该文件的加密方式,secret以及secretlength只在加密方式为智能密码钥匙时有效,checked为整个数据结构的数字签名,用以防止客户恶意修改加密标识,timetoken为加密标识的写入时间.

加密标识的写入时机为IRP_MJ_CLOSE,当FCB的引用计数到0就能判断当前没有程序在操作文件,可以修改文件内容.

2.5 加解密文件处理

1)基于口令加解密文件具体过程如下图2所示.

在文件过滤驱动的IRP_MJ_READ请求中处理数据解密.对于读取文件的操作,如果该文件为非加密文件或者所在位置为非用户所设置加密U盘,则IRP直接下发至设备存储驱动程序,反之为读取合法密文,等待存储设备驱动程序成功读取数据后在完成函数中解密数据.

在IRP_MJ_WRITE中处理数据的加密,如果该文件所在位置为非用户所设置加密U盘则IRP直接下发至设备存储驱动程序,反之需要读取待写入的数据,使用对称算法加密明文数据,然后下发至设备驱动程序.

2)基于智能密码钥匙加解密文件具体过程如下图3所示.

图3 基于智能密码钥匙加解密文件具体流程Fig.3 Based on the smart key encryption and decryption of specific documents

在文件过滤驱动的IRP_MJ_READ请求中拦截文件读取操作.对于读取文件的操作,如果该文件为非加密文件或者所在位置为非用户所设置加密U盘,则IRP直接下发至设备存储驱动程序,反之为读取合法密文,等待存储设备驱动程序成功读取数据后在完成函数中通过I/O方式等待智能密码钥匙解密数据并返回.

在IRP_MJ_WRITE请求中拦截文件写入操作,如果该文件所在位置为非用户所设置加密U盘则IRP直接下发至设备存储驱动程序,反之需要读取待写入的数据,将读取的明文数据等待智能密码钥匙加密完成,IRP请求下发至设备驱动程序.

2.6 加密U盘设计方案分析

1)安全性,基于智能密码钥匙加解密方式,密钥永不出设备,数据的加解密操作在设备中进行,无需担心密钥的管理;

2)用户体验及效率问题,基于Windows过滤驱动实现的加密U盘系统与Windows文件系统无缝集成,不影响应用程序访问方式以及用户操作习惯,复杂的密钥管理由过滤驱动程序自行完成,用户只需记住加密U盘的口令或者保存好自己的智能密码钥匙.文件内容加解密采用对称算法加密,效率上可以接受;

3)密钥丢失恢复机制,第一次为加密U盘选择加密方式时,系统会生成密钥恢复文件,用户需要妥善保管该文件,是密钥恢复的唯一凭证;

4)安全保护成本低,无论是基于口令或者智能密码钥匙的加密方式,其成本都比纯硬件的加密U盘低,其实用性较强.

3 测试

3.1 测试环境

主机:Inter(R) Core(TM) i3-2330M,3 GB内存;操作系统:Win7系统;

测试U盘规格:Kingston(DT101 G2) 8 G;测试智能密码钥匙规格:华大优盘智能密码钥匙.

3.2 功能测试

表1 txt格式文件加密标识Tab.1 Txt format file encryption identification

结果显示,在序列号为2C0B481970CF2F387CCF2244的加密U盘中,txt格式的文件被成功添加加密标识.

4 结论

本文针对目前市场上加密U盘的不足,提出了针对U盘的基于口令和智能密码钥匙的加密方案.本方案考虑成本提供两种加密方式,较高安全要求的场景使用智能密码钥匙加密方案,如军用U盘防泄漏的场景;而一般企业U盘数据保护使用基于口令加密方案.实验结果表明,加密U盘操作方便,稳定性高,适应从win xp到win10的各个版本,具有较高的可靠性及安全性.

[1] 胡宏银,姚峰,何成万.一种基于文件过滤驱动的Windows文件安全保护方案[J].计算机应用,2009,29(1) :168-171.

[2] 赵远.基于安全终端的U盘用户访问控制技术研究[D].南京:南京理工大学,2009.

[3] 龙丹,周学军,田燕妮.加密文件系统(EFS)技术研究[J].微计算机信息,2006,22(5):238-239.

[4] 熊聪聪,汪鹏.一种新型的USB存储设备访问控制[J].自动化仪表,2011,32(12):16-19.

[5] 张维君,王威,任立鹏.基于MC9S12UF32加密U盘的研究与设计[J].中国科技信息,2009(19):128-129.

[6] 李小波.基于文件过滤驱动的Windows文件保护系统的研究与实现[D].上海:上海交通大学,2010.

[7] 于晓艳.基于AC4384芯片带加密U盘的USBKey设计与实现[D].济南:山东大学,2015.

[8] 张亚飞.基于可信环境执行环境的智能密码钥匙设计与实现[D].西安:西安电子科技大学,2014.

[9] 李凡.刘学照,卢安,等.Windows NT内核下文件系统过滤驱动开发[J].华中科技大学学报(自然科学版),2003,31(1):19-21.

[10] NAGAR R.Windows NT file system internals[M].New York:0’Reillv & Associates,1997.

[11] 卿德定.AES和DES算法改进及其在文件管理中的应用研究[D].长春:东北大学,2013.

[12] 刑凯.基于国密算法的电子认证系统设计与实现[D].济南:齐鲁工业大学,2015.

[13] 邵旭东.USB智能密码钥匙访问控制技术研究[D].上海:上海交通大学,2008.

责任编辑:时 凌

Research and Implementation of Encrypting System for Removable Storage Device in Windows

WANG Feiping,GAO Fagui2*

(1.School of Computer Science and Technology,Hangzhou Dianzi University,Hangzhou 310018,China;2.College of Information Engineering,Hubei University for Nationalities,Enshi 445000,China)

In this scheme,the system provides two kinds of transparent encryption methods:For the first one,we set a password for each USB flash disk,and the encryption and decryption of the data are done in the memory;each encryption key binding for the smart key for the second one,eech USB key is bound as a smart one,and the data encryption and decryption are done in the smart key.The analysis and experiments show that the first method can reduce the cost under the premise of guaranteeing certain security,and the second method can further enhanc security and the key can never be out of the device.

file system filter driver;symmetric encryption algorithm;enerypted USB disk;information security;smart password key

2016-10-20.

湖北省自然科学基金项目(2009CDB069).

王飞平(1989- ),男,硕士,主要从事信息安全的研究;*

高发桂(1964- ),女,硕士,副教授,主要从事计算机网络安全的研究.

1008-8423(2016)04-0442-04

10.13501/j.cnki.42-1569/n.2016.12.018

TP309.7

A

文件被透明加密后的文件标识部分显示见表1.

猜你喜欢
加解密驱动程序U盘
采用U盘文件冗余方案实现TSP系统的可靠装载
自动辨认插口方向的U盘
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
PDF中隐私数据的保护方法
电子取证中常见数据加解密理论与方法研究
网络数据传输的加解密系统研究
U盘“闹肚子”
妙用鼠标驱动
驱动程序更新与推荐