无损压缩算法的文件加密标记的实现
关于老师的文章-致运动员加油稿
第38卷第4期
2010年8月
浙江工业大学学报
JOURNALOF
ZHEJIANG
UNIVERSITYOFTECHNoLOGY
v01.
38
No.4
Aug.2010
基于无损压缩算法的文件加密标记的实现
林海
元。吕丽民
(浙江工业大学信息工程学院,浙江杭州310032)
摘要:阐述了当前企业信息
化过程中面临的难题,对文件系统驱动设计原理以及当前在Windows
内核模式下采用文件系统透明
加解密技术实现的加密系统的实现原理和开发步骤进行分析,针对
当前这些文件透明加解密系统中难以识
别文件是否已经加密的问题,提出了一种采用无损压缩算法
生成文件加密标记的算法,并介绍了加密标记
的判断、生成时机和复原,最终实现对加密文件标记的
设置.该算法的提出使得文件透明加解密系统的研
发更加高效,为文件系统驱动的研发拓展了思路.
关键词:过滤驱动;加密标记;无损压缩;文件系统<
br>中图分类号:TP309.2文献标识码:A文章编号:1006—4303(20lo)04—0430
—03
Implementation
offile
encryptiontagbased
on
lossless
compression
algori
thm
LIN
Hai—yuan。I。U
Li—min
(ColtegeofInformation
Engineering,Zhejiang
Univers
ity
of
Technology。Hangzhou310032.China)
A
bstract:The
current
challenges
in
the<
br>information
process
which
the
enter
prises
are
facing
to
is
introducedi
nthis
paper
firstly.Then
the
drivingde
signprinciple
offile
system,the
principle
and
implementation
of
technology
u
nder
encryption
system
based
are
on
the
file
transparent
encryption
an
d
decryption
Windows
or
kernel
mode
analyzed.It
is
difficult
to
identi
fy
whetherthe
file
file
encryption
and
decryption
system.In
this
paper,fl
hasbeen
encrypted
a
not
under<
br>the
current
new
algorithm,using
los
sless
compression
algorithm
to
generat
e
kindoffile
encryptiontag,is
are
pres
ented.The
judging
for
encryptedtag,genera
ting
time
and
recovering
time
intro
duced.
Finally,the
setting
of
encrypti
on
file
encryptionsystem
to
tag
is<
br>implemented.Thisalgorithm
enables
transpa
rent
file
be
developed
more
efficie
ntly
and
it
expand
the
ideaof
R&
D
infile
system
driver.
Key
words:f
ilter
driver;encryption
tag;losslesscompress
ion;filesystem
随着计算机的普及和企业信息化应用的深入,
企业内的报告、报
表、设计图纸、标书等机密信息大
量的以电子文档的形式存放.为确保这些文档不被
泄露,各类
防止电子文档泄密的软件应运而生.在这
类软件中,文件透明加解密技术[1吨]被广泛应用.该
技术通过在文件系统驱动(File
System
Driver,简称
FSD)或者
设备驱动之上加入过滤驱动程序,拦截上
层驱动发往文件系统驱动或者设备驱动的I/o请
收稿
日期:2009-03-03
求包(I/o
Request
Package,简称IR
P)【3],根据数据
管理策略对数据存取的过程进行动态控制.
但是这类产品的研发需要在驱
动层中进行,需
要深入理解Windows系统的内核机制[4],技术实现
的难度很大.其中
如何判断一个文件是否已经加密,
如何给加密过的文件设置加密标记仍是透明加解密
开发过程中
的一个难题.针对当前使用如修改文件
属性(文件名,文件创建日期)、限定加密目录等一类
作
者简介:林海元(1984一),男。浙江缗云人,硕士研究生,研究方向为计算机网络应用和信息安全.
万方数据
第4期林海元,等:基于无损压缩算法的文件加密标记的实现
・43l・
不稳定、不通用和不安全的方法,笔者提出了采用无
损压缩算法将文件加密标记嵌
人到文件内部的方法
来应对当前存在的难题.
透明加解密原理分析
1.1实现原理文件透明加解密是通过开发过滤驱动[51程序实
现的.
Windows
NT系统
中,NTI/0管理器支持分
层的驱动模式.当IRP被发送的时候,它会经过驱
动层中的各个
驱动程序,直到最终被某个驱动程序
调用IoCompleteRequest()¨吨]完成这个IR
P.而过
滤驱动程序就是绑定到驱动层中的某一个内核模式
驱动程序,它通过拦截发往底层的I
RP,并根据加密
系统定义的安全策略,决定是否执行这些请求或者
实现其他的一些扩展功能.
在过滤驱动设计中,只需要拦截自己感兴趣的
I/0包,而不必自己去设计整个文件系统驱动[
7]或
设备驱动,从而减少整个加密系统开发的T作量,并
且使研发人员具备更加清晰简洁的设
计思路.
过滤驱动的实现原理如图1所示.
驱动程序
发送或转发I/0请求
过
滤驱动程序
将自身绑定到渊用层
并拦截I,o请求
扩展
图1
过滤驱动
实现原理
Fig.1
The
principle
offilterdrive
r
1.2开发步骤
透明加解密过滤驱动中主要通过拦截用户的文
件创建/打开、读、写
和关闭操作来实现数据的透明
加解密,步骤如下:
(1)注册主功能码[5](MajorFunction
Code)为
IRP—MJ—CREATE的过滤函数PreCreat
e()和
PostCreate().在PostCreate()拦截文件创建请求的
执行结
果,判断是否存在加密标记以及是否需要加
密,设置加密标记码和加密请求码,并将信息写入到
对应文件的Context中.
万方数据
(2)注册主功能码为IRP~MJ—WRITE的拦
截
函数PreWrite()和PostWrite().在PreWrite()拦
截文件的
写请求,判断目标文件、目录或者逻辑卷是
否需要加密,如果需要,则在数据被存储到磁盘之前
将数据加密.
(3)注册主功能码为IRP—MJ—READ的拦截
函数PreRead()和
PostRead().在PostRead()拦截
文件的渎取请求,如果发起请求的进程是一个可信
进程,则将从磁盘读取到的数据进行解密,再返回给
上层驱动或应用程序.
(4)注册
主功能码为IRP—MJ—CLEANUP的
拦截函数PreCleanUp()和PostClean
Up().在Pre—
CleanUp()拦截文件的关闭请求,根据文件上下文
中的加密请求
码对未加密的文件进行初始化.
2文件加密标记的实现
2.1
选用无损压缩的原因和算
法的选择
在数据存储过程中,过滤驱动对于上层应用是
透明的.对于可以获得原始机密数据的上
层应用,它
写入磁盘的数据同它再从磁盘取回的数据应当是相
同的,这也就使得在对文件进行压
缩后的数据应当
可以还原,并且还原后的数据与原来的数据相同,因
此我们需要选择无损压缩算
法来实现文件加密标记
的生成‘8引.
在常用的无损压缩算法中,我们选择I.ZW信
息压缩算法作为我们的压缩实现算法.LZW压缩算
法以Lemple,Ziv和Welch三人的名字
命名,采用
一种串表压缩方法,把数据流中复杂数据用简单代
码表示,并利用代码和数据的对应
关系建立“字符串
表”转换表.将每个第一次出现的串放在此串表中,
并用一个数字来表示串,
压缩文件只存储该数字,而
串表只在进行压缩或解压缩过程中需要,一旦压缩
和解压缩结束,串
表即被丢弃.因此且有较高的压缩
比和解压缩速度.
2.2加密标记的生成算法
采用压
缩法嵌入加密标记的方法如下:
首先定义特殊的加密标记(DataM,假设为
“MASK”)
.将文件头部长度为L。的数据(DataO)
进行加密,将加密后的数据(DataE)调用LZW压
缩
算法进行压缩生成压缩数据(DataC,假设压缩后长
度为L。).如果厶一L1的长度大
于Length(“MASK”)
+4(用来存储DataC的长度),则说明可以对文件
・432・
浙江工业大学学报
第38卷
进行正常的加密保护.
申请
大小为上帕的内存空间(Mem),将“MASK”
写入到Mem头部,给“MASK”后面4个字节赋
值为
Ll,拷贝DataC到(BYTE*)Mam+Length(Da—
taM)+4,对
Mem中Lo一1个字节调用校验函数
Check()生成校验码(check),添加到Mere的尾
部,
最后文件头部L。长度的数据替换成Mem中的数
据,从而实现文件加密标记的嵌入.数据的变换流程如图2所示.
图2标记生成流程图
Fig.2
Theflowch
artofhow
tocreate
the
encryptedflag
原始
数据被替换后的数据结构如图3所示.
0
I幽I圭!I巡l
4
88+L。L0
-1
厶
窒
I竺廷塑笙I
图3
Mem中的数据结构
Fig.3
The
structure
of
mem
在PostCreate()
中,构造自己的IRP发往文件
在文件透明加解密系统中有两个时期需要进行
系统初始化时,在
PostCreate()判断创建文件
写磁盘操作时,在PreWrite()判断Context中
万方数据
法,将新生成的数据替换原始数据写入到磁盘.
2.5加密标记的复原
在过滤驱动中,如果读取文件的进程为可信进
程,则需要对加密的数据进行复原.数据的复原实际上是加密压缩的逆过程,在PostRead()实现.从磁
盘读取到数据后,判断读取偏移是否为
0,如果为0,
则将数据长度为L。的数据进行分段.假设数据的起
始地址是Ptr,读取Pt
r+4开始的4个字节并转换
成int数值LenC.读取Ptr+8开始的长度为LenC
的
数据DataC7,调用LZW的解压缩算法生成DataE’,
再将DataE7进行解密,最后生成
的数据DataO’就是
原始数据DataO.
3
结束语
采用无损压缩算法将
文件加密标记嵌入到文件
内部的方法文件使得加密标记始终伴随文件移动,
保证了标记的可靠性
、恒久性和通用性,为办公局域
网内加密文件的透明流通提供了条件,为文件透明
加解密系统提
供了一种更好的文件加密识别方案,
有较高的实用价值,在驱动层安全产品的研发过程
中有广阔
的应用前景.
参考文献:
[1]李凡。谢四江.WindowsNT内核下文件系统过滤驱动程
序开
发[J].华中科技大学学报:自然科学版,2003.31(1):19-21.
[2]
赵铭伟,毛锐,江荣安.基于过滤驱动的透明加密义件系统模型
[J].计算机工程,2009,35(
1):150—152.
[3]RAj『EEV
N.Windows
NT
fi
le
system
internals:a
developer’s
guid
e[M].Cambridge:O’Reilly,1997.
[4]
RUSSINOvIC
HME,SOLOMON
D
A.Microsoftwindows
internal
s[M].wA:Microsoft
Press,2005.
[5]WALTER
0
.Programming
the
microsoftwindows
driver<
br>model[M].WA:Microsoft
Press・1999.
[6]Micr
osoft
Corporation.Filter
driver
developme
nt
guide[EB/
OI。].[2004—06~01].http://downlo
ad.microsoft.com/down—
load/e/b/a/ebal050f-a31d
一436b-9281—92cdfeae4b45/FilterDri—
verDeveloper
Guide.doe.
[7]许访,沈昌祥.windows2000/xP安全文件系统的设计与实现
[J].计算机工程与应用。2004,40(15):107—109.
2002。28(7
):98—99.
D.Data
compression:thecomplete
r
eference
[M].NewYork:Springer-Verlag,2000.
(
责任编辑:陈石平)
2.3加密标记的判断
系统驱动读取文件头部长度为L。的数据,如果数据
头部为“MASK”,则对Lo一1的数据调用Check()
生成校验码cheek’,如果
check’同数据尾部的长度
为l的数值相同,则说明加密标记存在.设置文件对
应的Con
text中的加密标记码为TRUE.
2.4加密标记的嵌入时机
加密标记的嵌入:(1)加密
系统初始化;(2)透明加
解密过程中的写磁盘操作.
的路径名,根据应用层下发的文件初始化
列表对文
件进行过滤,如果满足过滤条件(需要加密),则设置
Context的加密请求码为
TRUE,在PreCleanUp()
中判断加密请求码,如果为TRUE,则创建自己的
I
RP发送到文件系统驱动获取文件数据,对数据进
行加密,并将头部长度为L。的数据调用2.2的算法
生成加密头.
的加密标记码,如果为TRUE,则把待写的数据进
行加密,并对写文件
偏移为0的数据调用2.2的算
[83王平.LZW无损压缩算法的实现与研究[J].计算机工程,<
br>[9]SALOMON
基于无损压缩算法的文件加密标记的实现
作者:<
br>作者单位:
刊名:
英文刊名:
年,卷(期):
林海元, 吕丽民,
LIN Hai-yuan, L(U) Li-min
浙江工业大学,信息工程学院,浙江,杭州,3
10032
浙江工业大学学报
JOURNAL OF ZHEJIANG
UNIVERSITY OF TECHNOLOGY
2010,38(4)
参考文献(9条)
N D
Data
compression:the complete reference
2000
2.王平
LZW无损压缩算法的实现与研究[期刊论文]
-
计算机工程
2002(07)
3.许访;沈昌祥
Windows2000XP安全文件系统的设
计与实现[期刊论文]
-
计算机工程与应用 2004(15)
oft
Corporation
Filter driver development
guide 2004
O
Programming the microsoft
windows driver model 1999
OVICH M E;SOLOMON D
A
Microsoft windows internals 2005
N
Windows NT file system internals:a
developer's guide 1997
8.赵铭伟;毛锐;江荣安
基于过滤驱动的透明加密文件系统模型[期刊论文]
-
计算机工程
2009(01)
9.李凡;谢四江
Windows NT内核下文件系统过滤驱动
程序开发[期刊论文]
-
华中科技大学学报(自然科学版)
2003(01)
本文读者也读过(8条)
1.
周剑岚.冯珊.孙建军
守住最后一道防线--文件过滤驱动程序在系统安全中的研究与应用[期刊论文]-计算机安
全
2005(6)
2.
王海涛.杜宏伟.WANG Hongwei
网站内容安全防护技术浅析[期刊论文]-信息化研究2010,36(12)
3.
杨政寰.祝跃飞.YANG Yue-fei
硬件虚拟机技术与可靠的文件监控[
期刊论文]-信息工程大学学
报2010,11(3)
4.
李双.LI
Shuang
Windows
NT架构内核分析[期刊论文]-重庆工学院学报(自然科学版)2008,22(5)
5.
边巴旺堆.武强.米玛加措.马元强.桑珠.Bianba u
基于
L
Z77算法的藏文文本压缩算法设计与实现[期刊论文]-西藏大学学报(自然科学版)2010,25(2)<
br>6.
张立人.魏正曦.万新
Windows内核态钩子在软件安全
技术中的应用[期刊论文]-数字技术与应用2010(10)
7.
王全民.王淞.金华锋.张丽艳.WANG Li-yan
一种基于驱动层的
文件
保护策略[期刊论文]-计算机安全2010(11)
8.
陈岳兵.唐朝京.张权
Windows内核调试技术及其在驱动调试中的应用[会议论文]-
本文链接:http:odical_