BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3152回复:12

透明加密的简单实现

楼主#
更多 发布于:2010-06-05 15:02
    可能这个思路不是我第一个想出来的。有问题欢迎拍砖~

    在网上看到的大多数透明加密的一些实现(我至少看到过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
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2010-06-05 15:24
作为学生能作到这个程度不错了.

商业产品考虑的是稳定性.放在文件本身的好处是信息容易同步.如果标志文件丢失怎么办?

记得很早之前,这是被业界痛批的方法.用户的文件都是很重要的,如果增加了一种损坏的可能,就多了一种风险.

希望继续改进.

记得以前武汉x奥就是用的这种方法,据说是x天平的sdk. 据说而已. x奥的倒是认真看过以前的,确实是这样,但是后来应该都改掉了
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-06-05 15:45
其实我也想过这个问题,标志文件丢失了可以再生成一个,只要把某些数据具备了就好,比如用户ID,还有密钥啥的。
那个文件是自己生成的,当然也可以自己再生成一个。
BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-06-05 15:52
我觉得不管把标志放在哪,都有损坏或者丢失的可能,只是看谁能把危害降到最低程度罢了。
还有一份代码我是放在文件头的,也支持流,块加密,记事本,office系列的。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2010-06-05 18:01
怎么知道标志都丢了的文件是加密的?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2010-06-05 18:47
一种方法,可以模仿MFT来保存两份,如果一份丢失了,那也没什么大不了的。


另一种方法,可以用数据库或者别的一些手段追随记录。。。


如果通过技术手段来防止标志文件的丢失,也未尝不可能啊。

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
6楼#
发布于:2010-06-05 19:21
你这个是一份标志吗?是多份阿?如果标志没了,文件拷别地儿去,还能打开吗?汗
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
7楼#
发布于:2010-06-05 19:21
两套数据,意味着存在数据不同步的可能.如果我是你导师,你的答辩过不去的
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2010-06-05 20:21
引用第6楼znsoft于2010-06-05 19:21发表的  :
你这个是一份标志吗?是多份阿?如果标志没了,文件拷别地儿去,还能打开吗?汗

能打开啊,因为你拷过去的话,会把那个标志文件也拷过去了的。在前面的文章已经说过了
BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2010-06-05 20:34
引用第7楼znsoft于2010-06-05 19:21发表的  :
两套数据,意味着存在数据不同步的可能.如果我是你导师,你的答辩过不去的


我先说说我的想法,欢迎继续,呵呵

1·最大限度防止非法用户动用标志文件;
2·用workitem在空闲的时间把一份标志文件拷出去保存在一个地方;这一步其实也要同步,看怎么实现而已。
3·在最坏的情况下,考虑重新生成另外一份文件标识。

在判断文件标识的时候,如果标志文件一没了,那么可以去读取标志文件二(一二是等价的);

如果第一个保护措施做的好的话,第二第三步就是个摆设了。

在文章已经说了,拷到U盘的数据,会秘密的把标志文件拷过去的,拷贝,剪切都会连标志文件也一起操作的。

这样其实还有一个好处,如果是非法用户,那么他拷走的就只是一个没有标志的加密文件了。
BuShiXiaoHaiZi
驱动牛犊
驱动牛犊
  • 注册日期2008-12-20
  • 最后登录2012-04-22
  • 粉丝0
  • 关注0
  • 积分57分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2010-06-05 22:11
检查了一遍,U盘用来移动加密文件,基本上没有问题。
不过同步确实是一个大问题。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
11楼#
发布于:2010-06-08 10:01
在商业软件上,要求数据一致性,有任何的不同步的可能都会导致重要数据丢失.

这种方法用来实验或者学校研究,可以看作是一种进步,但是商业上还是要严谨的才行.
谁也不敢把自己的重要数据用于实验,对不?不怕一万就怕万一阿
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
fatepro
驱动牛犊
驱动牛犊
  • 注册日期2011-05-12
  • 最后登录2011-09-07
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望681点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2011-05-14 22:53
雪鞋了
游客

返回顶部