转帖一篇文章,是因为文章中的一些话让我想起来几年前自己的抓狂。
原文链接:http://www.0ginr.com/bbs/thread-4012-1-1.html
原文作者:pk8995
未能联系到原文作者授权转帖,如有侵权,请来信删除。
国内的透明加密、文件防泄漏产品使用双缓冲、双FCB、LayeredFSD的究竟有没有商业化的产品出现?有没有实施案例? 这些个概念喊出来不少日子了,究竟有人商业化了没有?别跟我说DMK,我说国内。且不说100W的授权费,这东西在国内很多市场是进不去的。
网上总有人说自己搞出来,但拿到的bin都是垃圾,还有用VMP处理过的,真好笑。驱动装上就死锁、蓝屏,搞这么多保护有毛用?也别跟我说这东西值多少钱,真的是值钱,垃圾不值钱。 如果说没有做出产品的,那么市面上的这么多产品都是基于清缓存技术的?我在一个小公司,我没那么大能力拿到别的厂商的BIN,我不知道他们是怎么弄的。
我想聊聊清缓存这种模型的一些硬伤。
先说清缓存的时机,还是那句话,我不知道别的厂商怎么弄的,一般的做法都是在CREATE和CLEANUP里清缓存吧。之所以清缓存是为了解决受信进程和非受信进程分别能读取到明文和密文,在受信进程和非受信进程交替访问的时候清除缓存,这样从时间上保证两个进程都能读到正确的东西。 那么考虑这种情况,A受信,B非受信,A进程irp_mj_create,清缓冲为明文,B进程IRP_MJ_CREATE,清缓冲为密文,A进程发出 IRP_MJ_READ读到密文,A报错。
有问题么?同理顺序反过来有泄密的风险。
扒了某产品其解决方法是,把文件和进程自己建立关联,A访问加密文件X 时禁止B的打开,直到A进程退出。这样是从一定程度上解决了这个问题。但是遇到多进程协作的情况呢?3个进程协作都设置为受信进程,但是有些特殊情况比如有许多守护进程,像打印服务,根本就不退出,那怎么办这个文件一直被占用着?
当然某产品没有我说的这个问题,它的实现有BUG,三进程打开同一个文件就会泄密。 如果你一根筋的要进程隔离,那仔细想想,说到底你没办法判断一个进程是不是还在“用”某个文件,无论是FO还是FCB都是进程无关的,对进程来说文件只是个句柄。而且在文件过滤驱动的角度考虑,收到的某些IO请求也不一定就是在发出请求的进程上下文里,就算可以通过簿记各种信息来判断出原始进程,但是怎么才算“用”完了呢?其实这个进程自己也不知道,也许在进程退出之后还有很多内核组件仍然在使用这个FO完成进程委托给它们的未完成的工作,呵呵。这种情况下是允许非受信进程访问呢?还是放开隔离?
你是个过滤驱动,很多事情文件系统可以做,你不能做。FSD的数据结构不知道,几大管理器的行为也不是全都能控制的。拧巴…… 不隔离吧。考虑写文件的情况呢?这种情况下怎么保证?出现坏文件、明密相间。每个做透明加密的都遇到过吧,呵呵。
OK,再找别的时机清缓、存用一些锁,不管你怎么折腾都是在时间维上处理,空间上只有一个缓存。且不说复杂度,老这么清缓存,效率上根本无法保证,造成20%的性能下降客户都嚷个没完。
为什么还有这么多产品能转呢?我不负责任的说一句,现在的这些产品估计都是针对应用做了大量的特殊处理吧,光OFFICE系列就有好多种文件读写行为方式,还有制图软件,一个一个去分析?这是个累死牛的活。就算这些都分析清楚了,你能保证软件环境么?这东西不但要和杀毒软件兼容,还要和HIPS、RK、木马、流氓软件、病毒兼容。唯一确定的事情是别指望别人跟你兼容。用户都是白痴,中个稀奇古怪的病毒天经地义的,碰到个会用HIPS我心里还发毛,能跟人家兼容么。
有幸拿到到了思XXX的产品,产品做得大而全,一看就是业务上想的很深入。满怀希望的想调试一下,找找思路。驱动装完后发现在CheckBuild的XP 下根本无法启动,总是进到内核的ASSERT里。唉,就算是发布版的不这样,就算是被你找到些投机取巧的参数。这样的东西你敢用? 照理说有0.1%的可能坏文件,这样的产品就不能用。有多少能保证的?
呵呵。我去实施的时候真的觉得客户好可怜,抱着这么个定时炸弹,还挺美。好在他们不知道,无知就是幸福啊。
LayeredFsd也许是个圣杯。OSR弄了几年,也有这个资本卖100W,操蛋的是我TMD单枪匹马的也弄这个……自嘲一下。
但是SXXX放出来的那个实在是太那啥了,安装包还密码,我费事巴力的把SYS弄出来,好像有4个sys都不大,看上去是区分不同的文件系统还是怎么着,装上,刚加载就断到调试器里了……时间久远了,好象是个字符串函数的参数写错了,RtlCopyUnicodeString还是什么的,又崩溃了,汗啊。搞得的我兴趣全无……
我的技术不怎么样,说的也不一定对,大家就当听个乐。也许早就有做得很好的了,也许人家不说话,不像我在这瞎咋呼。白天做了一天很失败的实验,弄的郁闷了。发发牢骚。 拧巴……

哥们,都是过来人,呵呵
我是这篇文章的作者:)
“硬伤”部分的描述 很精彩。
故在未经您明确授权的前提下,冒昧转载了。
感谢分享。