首页
社区
课程
招聘
[原创]透明加密的简单实现
发表于: 2010-6-5 15:06 17006

[原创]透明加密的简单实现

2010-6-5 15:06
17006

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

    在网上看到的大多数透明加密的一些实现(我至少看到过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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1.有些文件不是该程序新生成的:右键新建一个word文件,那个文件是explorer拷贝过来的。

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

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

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

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

5.细节当然还有很多的,,,网络文件系统的读写之类的~~~写文件标识其实也是一大难点哈,呵呵
2010-6-7 20:21
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
无bin , 无真相。。。
2010-6-7 22:40
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
最近准备写个偷工减料版的双FCB的sfilter代码做例子放出来混~
2010-6-8 00:07
0
雪    币: 75
活跃值: (723)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
翘首期待。
2010-6-8 12:44
0
雪    币: 87
活跃值: (41)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
感觉到了,同步问题确实很多,谢谢提醒。
2010-6-25 22:08
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
标志不要放到文件头或尾,可以放到文件的任意地方,例如任意定义二(n)个位置放标志1/4处,1/2处定义两个位置,标志位10个字节,分为2,每个标记点放5个字节。除了程序自己,谁能知道标志位在那,加密的文件内容也同时分为2(n)个部分。
2010-7-1 11:48
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
赞同此做法。
2010-7-1 13:04
0
雪    币: 49
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
管理标志都是要成本的。
每次文件正常删改(中间删减几个文字),这些标记的位置都要重新定位。
无论你是操作过程中计算 还是关闭保存计算 耗费时间都是以秒记的
没人愿意打开60K的文本花去10秒钟
2010-7-1 22:00
0
雪    币: 88
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我觉得没有必要这样,标志也只是标记是否是加密文件而已

知道标志,也不可能解密出文件内容。

而且如楼上所说,效率很重要。
2010-7-2 15:24
0
雪    币: 348
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
太谦虚……
2010-7-5 19:26
0
雪    币: 37
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
还没写也谦虚?
2010-7-20 20:29
0
游客
登录 | 注册 方可回帖
返回
//