可能这个思路不是我第一个想出来的。有问题欢迎拍砖~

    在网上看到的大多数透明加密的一些实现(我至少看到过4种),不是把标志放在文件尾,就是把标

志放在文件头。

    去年十一月份的时候,由于实验室需要,花了大部分时间写了一份在文件头存放加密标志的sfilter

代码。基本满足项目需要了,支持OFFICE系列的透明。不过CAD没有测试过,好像以前测试的有点问题。

    本人比较小白,琢磨了很长一段时间,想把标志放在文件的尾巴,在尝试了很长一段时间之后,最终

还是没能实现出来,可是由于信息安全大赛的需要,不得不硬着头皮继续写下去。在尝试了N中思路

(cleanup,close,write)尝试写入标志尾的时候,都未能成功,如果有哪位大牛看出哪里出问题了,欢

迎指正。万般无奈之下,尝试其他的办法。

    其实用标识,只要是能表明此,或者彼文件是我们要加密的文件,在读和写的时候能进行识别,然后

正常解密或者加密就行。

    这样的话,那么剩下的就好办了,标识可以放在文件里面,也可以放在外面。
    一个要加密的文件对应一个标识文件,在操作加密文件的时候,对应的修改标识文件。比如重名名了

加密文件,那么标识文件对应的进行一些操作,那么就可以很好的结合起来了。其他操作类似。

以下是一些值得注意的问题,我只说标识文件的一些处理问题:

1什么时候生成标识文件?

我的做法是在新生成一个文件的时候对应一个标识文件,当然这个标识文件必须跟新生成的文件名有对应

的联系,而且必须唯一。

2标识文件的存放位置

可以放在一个盘的某个位置,也可以放在对应盘的某个位置。我的做法是,对应的加密文件的标志文件放

在对应的盘里面。这样做的好处是:比如用U盘拷贝文件,那么就可以在拷贝加密文件的时候对应的把标

志文件拷过去;还有其他的一些好处(暂时说到这)。

3关于重入问题

对于生成的标志文件,微软已经为我们提供了一个API IoCreateXXXXxxxHint。对于其他的派遣功能函数

,可以自己直接构建IRP发往底层去实现相应的功能。也可以直接用微软提供的ZwXxxxFile函数,只是需

要小心处理重入问题即可。两种方法我都使用来处理过,基本上没什么问题。

4加密文件对应的标志文件的操作问题

其实简单来说,需要处理的其实也不多,一个是拷贝(对于拷贝的操作,在DEBUGMAN上面有人已经讨论过

,可以搜一下),一个是重命名(剪切跟重命名一样),还有删除等等。

5其他细节问题

每个人的情况不一样,根据需要来操作,未尝不好。有句话说得好,自己动手,丰衣足食。


以上是自己写过的sfilter拓展标志的一些处理情况,可能有某些地方不一定正确。

代码是花了几天时间来实现的,思路有了当然写出来对应的东西,只是体力活而已。

这份代码是准备拿去参赛的,所以还有很多BUG需要修正,就不提供了,再说使用的是还是古老的不能再
古老的技术,没有什么好炫耀的,只是想把自己的一些想法说出来。

如果需要bin测试的话可以联系。


目前bin支持记事本,office系列的流加密,块加密(aes)。
          

              JeTus 2010.6.5
              QQ:27402624
              Email:gongfuid@yahoo.com.cn

  • 标 题:答复
  • 作 者:microbe
  • 时 间:2010-06-07 20:21:57

1.有些文件不是该程序新生成的:右键新建一个word文件,那个文件是explorer拷贝过来的。

2.我个人觉得标识存放在文件外肯定是不可取的,,很容易就丢失了这个标识;因为标识的重要性,它的丢失肯定是不可忍受的,,所以只能是文件的一部分,存为单独的流也不行,,不能兼容FAT32文件系统;

个人认为还是文件头或者文件尾牢靠些~~~;

3.我喜欢minifilter架构,呵呵;

4.如果你的标识存放在文件中,重命名、拷贝、删除的操作,都是不需要接管的;

5.细节当然还有很多的,,,网络文件系统的读写之类的~~~写文件标识其实也是一大难点哈,呵呵