阅读:2419回复:15
文件加解密的问题,VCMFC先生帮忙看看
这两天看了论坛里大部分文件加解密的问题,终于理解了VCMFC先生说的只处理nocache irp的观点,我认为是这样不知对不对:
比如一个被加密的文件a.txt(a.txt是密文存放在磁盘上),当nocache irp来的时候解密(此时a.txt变成明文存放在磁盘上)。 此时a.txt是可以被拷贝走的,但是如此一来,如果别人将明文拷贝走,不是很不安全吗?? 我认为应该是这样: 无论何时文件被读的时候,将密文在内存里解密,然后完成irp,这样被人看到的是明文,但是硬盘上存放的永远是密文。 不知我的理解对不对,请大师指正。 |
|
最新喜欢:daooda... |
沙发#
发布于:2004-09-02 22:09
这两天看了论坛里大部分文件加解密的问题,终于理解了VCMFC先生说的只处理nocache irp的观点,我认为是这样不知对不对: 硬盘上永远都是密文,缓存中永远是明文,这样才是比较安全的做法,而且实际上也是这么做的。至于nocache irp仅仅是一种文件读写的方式,还应该拦截所有Paging IO的操作,因为并不是每个文件都是采用nocache的方式,就我所知,一般常用的文件还是paging的比较多一点吧? 呵呵,楼主指名提问,我就算插个嘴,交流各人的理解,有不对的地方,烦请大师一同指正! |
|
|
板凳#
发布于:2004-09-03 10:43
楼上的和我的想法是一样的,硬盘上应该是密文。
例如 :假设a.txt内容是:abcdefg(密文),经过解密后明文应该是ABCDEF. 但是我的实验结果是: 只要选中a.txt(单击该文件)此时读取会符合要求即: (Irp->Flags & ( IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO )) == TRUE 实际上irp->flags = 0x43(正好是上面三个值的或操作),而且仅此一次,此时如果解密并替换buffer,明文就会存在硬盘上(实际上替换的buffer是MmGetSystemAddressForMdl(Irp->MdlAddress)得到的)。 如果第一次不解密,以后每次双击打开都不会符合要求(每次的irp->flags都是0x900),而且每次buffer都是irp->userbuffer ,如果此时解密,并替换buffer,如果用别的程序打开a.txt如:word,explorer,ueditor等看到的都是明文(此时硬盘上存的是密文),但是双击用notepad打开看到的还是密文。 还有就是,双击一个.txt会有好多次irp_mj_read,何时才真正解密呢??我看了各种标志,每次都一样,根本没办法区分,希望大虾帮忙解释一下。 |
|
地板#
发布于:2004-09-03 21:07
深有同感!!
up一下 |
|
地下室#
发布于:2004-09-07 09:49
up by myself
|
|
5楼#
发布于:2004-09-07 19:15
你所说的那种情况,明文不是存在硬盘上,
而是放在了缓存中, 即在选中文件的时候,系统就自动将文件从硬盘上读出放入缓存, 在这个时候解密的结构就是缓存中是明文,硬盘上仍然是密文。 以后在双击之类的方法打开文件的时候,系统会先查询缓存中有没有对应的文件,如果有的话,就直接从缓存中读出数据,此时的flag设置就是你所看到的那样,例如0x900。如果缓存中没有所需要的文件,就会产生一个缺页错误,导致系统从硬盘上读入需要的数据放入缓存中。 你的例子中说得仅此一次,仅仅是因为文件比较小,最开始的一次就已经将文件全部放入缓存。你换个大文件试试,就会收到不止一次的“符合”要求的read命令了,呵呵:) |
|
|
6楼#
发布于:2004-09-08 10:54
谢了,楼上的老大,我试了一下,果然有用,这次我才算明白vcmfc说的话了,感动ing...!!
再问一个,我想在文件关闭后,清空缓存或者把缓存替换成密文,那种方法更好呢??或者创建一个线程,当iocompleterequest之后马上把MDL替换?? 我是想实现:当合法用户使用的时候是明文;如果文件不关闭,此时非法用户使用,看到的是密文。 怎么实现好呢?? |
|
7楼#
发布于:2004-09-09 19:10
为了安全起见,缓冲区里面最好不要放密文,
否则有可能会造成一些难以解决的问题, 当然如果能够保证加密的仅仅是数据文件应该也可以吧? 不过我没有试过,不好乱说:) 缓冲区的问题困扰好久了,一直没有找到合适的方法来处理, 关注中, 希望大侠们多多指教!! |
|
|
8楼#
发布于:2004-09-12 09:56
up一下
|
|
9楼#
发布于:2004-09-20 11:26
自己顶以下,
|
|
10楼#
发布于:2004-10-09 10:24
wo zai ding yi xia
|
|
11楼#
发布于:2004-10-09 10:41
我自己顶
|
|
12楼#
发布于:2004-10-11 15:03
关注,顶一下^_^
|
|
13楼#
发布于:2004-10-12 09:25
顶
|
|
14楼#
发布于:2005-03-15 14:36
你的理解有污,VCMFC先生说很对的,你无法保证别人拷贝,他拷贝的文件还是明文的,因为拷贝时候会解密的,不止到你有和高见
|
|
15楼#
发布于:2005-06-25 14:30
禁止拷贝不就得了!
|
|