阅读:3241回复:12
透明加密的简单实现
可能这个思路不是我第一个想出来的。有问题欢迎拍砖~
在网上看到的大多数透明加密的一些实现(我至少看到过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 |
|
沙发#
发布于:2010-06-05 15:24
作为学生能作到这个程度不错了.
商业产品考虑的是稳定性.放在文件本身的好处是信息容易同步.如果标志文件丢失怎么办? 记得很早之前,这是被业界痛批的方法.用户的文件都是很重要的,如果增加了一种损坏的可能,就多了一种风险. 希望继续改进. 记得以前武汉x奥就是用的这种方法,据说是x天平的sdk. 据说而已. x奥的倒是认真看过以前的,确实是这样,但是后来应该都改掉了 |
|
|
板凳#
发布于:2010-06-05 15:45
其实我也想过这个问题,标志文件丢失了可以再生成一个,只要把某些数据具备了就好,比如用户ID,还有密钥啥的。
那个文件是自己生成的,当然也可以自己再生成一个。 |
|
地板#
发布于:2010-06-05 15:52
我觉得不管把标志放在哪,都有损坏或者丢失的可能,只是看谁能把危害降到最低程度罢了。
还有一份代码我是放在文件头的,也支持流,块加密,记事本,office系列的。 |
|
地下室#
发布于:2010-06-05 18:01
怎么知道标志都丢了的文件是加密的?
|
|
|
5楼#
发布于:2010-06-05 18:47
一种方法,可以模仿MFT来保存两份,如果一份丢失了,那也没什么大不了的。
另一种方法,可以用数据库或者别的一些手段追随记录。。。 如果通过技术手段来防止标志文件的丢失,也未尝不可能啊。 |
|
6楼#
发布于:2010-06-05 19:21
你这个是一份标志吗?是多份阿?如果标志没了,文件拷别地儿去,还能打开吗?汗
|
|
|
7楼#
发布于:2010-06-05 19:21
两套数据,意味着存在数据不同步的可能.如果我是你导师,你的答辩过不去的
|
|
|
8楼#
发布于:2010-06-05 20:21
|
|
10楼#
发布于:2010-06-05 22:11
检查了一遍,U盘用来移动加密文件,基本上没有问题。
不过同步确实是一个大问题。 |
|
11楼#
发布于:2010-06-08 10:01
在商业软件上,要求数据一致性,有任何的不同步的可能都会导致重要数据丢失.
这种方法用来实验或者学校研究,可以看作是一种进步,但是商业上还是要严谨的才行. 谁也不敢把自己的重要数据用于实验,对不?不怕一万就怕万一阿 |
|
|
12楼#
发布于:2011-05-14 22:53
雪鞋了
|
|