一种文件透明加解密标识嵌入方法研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种文件透明加解密标识嵌入方法研究
摘要:设计了一种包含多种信息的加密标识数据结构,并将该结构嵌入到文件头中,解决了文件透明加解密系统中加密标识的设置问题。

关键词:加解密;嵌入;标识
1 文件透明加解密技术
文件透明加解密技术,是指在用户发出读写文件请求到磁盘物理存储数据之间的通路某一节点,实施设定的技术处理方案,使发出“读”请求时进行数据解密,发出“写”请求时进行数据加密,整个加解密过程是透明的,以达到保护文件数据安全的目的。

目前多采用文件系统过滤驱动技术实现。

文件透明加解密技术具有以下特点:①加解密过程是自动进行的,用户感觉不到加解密过程的存在。

避免在创建或修改文件的过程中有意或无意地留下明文;②加密带有一定的强制性;③不期望的文件操作,比如用户主动把文件拷贝到U盘、作为邮件附件发送或者远程用户通过文件共享拷走文件、黑客攻破系统后拷贝文件等手段,得到的将是密文;④与全盘加密相比,文件系统过滤驱动加密系统能够支持多用户。

在透明加解密系统中,如何判断一个文件是否已经加密,如何给加密过的文件设置加密标识是一个重要的研究课题。

针对当前使用诸如修改文件属性、限定加密目录、指定文件类型等一些不稳定、不通用和不安全的方法,本文实现了采用无损压缩算法将文件加密标识嵌
入到文件内部的方法来实现对文件加密标识的设置。

2 加密标识
2.1 加密文件判识
如何判断一个文件是否为已加密文件,是实现透明加解密的难点之一。

有两种方法可以实现加密文件的识别:第一种方法是在系统固定文件夹内中为目标文件建立相应的加密标识文件,文件中保存该加密文件的全路径、是否加密、各用户权限等加密信息加密标识文件建立后,系统第一次对加密文件进行操作的时候首先要读取相应的加密标识文件,并把有关信息保存在内存中的加密标识链表中,以方便今后的查找;第二种方法是把文件加密标识信息作为附加信息绑定在文件上,每次在打开文件时读取加密标识信息,然后进行相应的操作。

第一种方法实现起来容易,但由于标识文件单独存在,安全性不高;第二种方法安全性较好,但实现起来比较困难。

本文研究的是第二种
加密文件识别方法。

2.2 加密标识的放置
所谓加密标识,即是被文件系统过滤驱动隐藏的,用户态程序无法直接读取的一段隐藏信息。

加密标识信息可以放置在文件头或文件尾,也可以嵌入到文件里。

将加密标识放置于文件头部,每次读写文件内容都需要进行位置偏移量的计算,效率较低;将加密标识放置于文件尾不用计算位置偏移量,但在对最后一次CleanUp IRP的处理以及对断电保护的处理上,存在着一定的缺陷;将加密标识嵌入到文件
中避免了上述问题。

本文选择将加密标识嵌入文件头部。

3 加密标识的生成算法
3.1 压缩算法的选取
在数据存储过程中,过滤驱动对于上层应用是透明的。

对于可以获得原始机密数据的上层应用,它写入磁盘的数据同它再从磁盘取回的数据应当是相同的,这也就要求在对文件进行压缩后的数据应当可以还原,并且还原后的数据与原来的数据应该完全相同。

因此需要选择无损压缩算法来实现文件加密标识的生成。

在常用的无损压缩算法中,选择LZW信息压缩算法作为数据压缩实现算法。

LZW压缩算法采用一种串表示压缩方法,把数据流中复杂数据用简单代码表示,并利用代码和数据的对应关系建立“字符串”转换表。

将每个第一次出现的串放在此串表中,并用一个数字来表示串,压缩文件只存储该数字,而串表只在进行压缩或解压缩过程中需要,一旦压缩和解压缩结束,串表即被丢弃。

因此且有较高的压缩比和解压缩速度。

3.2 加密标识数据结构
加密标识的结构设计主要考虑以下这方面的因素:①加密标识首先应当能够被唯一识别出来;②加密标识的长度应当是固定的,以便一次读取即可获取加密标识全部数据;③加密标识中应当有文件的操作权限信息;④加密标识中应当有密钥、算法及文件长度等信息。

3.3 加密标识生成算法
采用无损压缩法嵌入加密标识的方法如下:
定义特殊的加密标识FLAG,FLAG应符合本文表1中所描述的加
密标识数据结构,其长度为40字节。

将文件头部长度为L0的数据DataO进行加密,得到数据DataE。

调用LZW压缩算法对DataE进行压缩,生成数据DataC(假设压缩后长度为L1)。

如果L0- L1的长度大于Length(FLAG)(即加密标记结构长度,为40字节)+ 4(用来
存储DataC的长度),则说明可以对文件进行正常的加密保护。

申请大小为L0的内存空间Mem,将FLAG写入到Mem头部,给FLAG后面4个字节赋值为整型数据L1,拷贝DataC到(BYTE*)Mem+Length(FLAG)+4地址开始的存储空间中,对Mem中L0-1个字节调用校验函数Check()生成校验码check,添加到Mem的尾部,最后文件头部L0长度的数据替换成Mem中的数据,从而实现文件加密标识的嵌入。

数据的变换流程如图1所示:
原始数据被替换后的数据结构如图2所示:
3.4 加密标识的判断
构造IRP发往文件系统驱动读取文件头部长度为L0的数据,如果数据头部为FLAG,则对L0-1的数据调用Check()生成校验码check’,如果check’与数据尾部的长度为1的数值相同,则说明加密标识存在。

设置文件对应的Context中的加密标识码为TRUE,表明
此文件是加密文件。

4 加密标识的解密处理
在过滤驱动中,如果读取文件的进程为可信进程,则需要对加密
的数据进行复原。

数据的复原实际上是加密压缩的逆过程。

从磁盘读取到数据后,判断读取偏移是否为0。

如果为0,则读取数据长度为L0的数据。

假设数据的起始地址为Ptr,读取地址(Ptr+40)开始的4个字节并转换成整型数值LenC。

读取地址(Ptr+44)开始的长度为LenC 的数据DataC’,调用LZW的解压缩算法生成DataE’,将DataE’进
行解密,最后生成的数据DataO’就是原始数据DataO。

5 结束语
将加密标识嵌入到文件内部,解决了基于透明加解密系统中加密标识置于文件头或文件尾时效率不高或运行不稳定的问题。

但本文研究的嵌入方法要求L0-L1大于某个固定的值,不能保证所有的文件均可正确嵌入加密标识,该问题的解决有待进一步研究。

参考文献:
[1] 陈尚义.透明文件加解密技术及其应用[J].信息安全与通信保
密,2007(11).
[2] 邵笠,萧蕴诗.基于文件系统过滤驱动器的加密软件设计[J].
计算机应用,2005.
[3] 汤隆兴.一种对数据或文件进行动态加密和解密的方法[J].微
型电脑应用,1993(3).
[4] 王方,冯玲.无损压缩算法LZW研究与实现[J].科技创新导报,
2008(12).
[5] 驱动程序开发网技术社区.文件系统(过滤)驱动程序开发
[S/OL].http://bbs.driverdevelop.eom/thread.2008.
晓)
A Document Transparent Decrypted Logo Embedding Method
Research
Abstract:encryption logo of setting method is based on the technology of filter drivers transparent file encryption system design in the important research content,this paper introduces a design to include a wide variety of information encryption identification data structure,and the structural embeddedness to file header files
transparent,solve the decrypted system of encryption logo of setting.
Key Words:Decrypted; Embedding; Logo。

相关文档
最新文档