[发明专利]应用层文件透明加密中使用通用加密算法的方法无效
申请号: | 200910233699.5 | 申请日: | 2009-10-28 |
公开(公告)号: | CN102053996A | 公开(公告)日: | 2011-05-11 |
发明(设计)人: | 邱文乔 | 申请(专利权)人: | 无锡安腾软件开发有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 214028 江苏省无*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用 文件 透明 加密 使用 通用 加密算法 方法 | ||
所属技术领域
属于计算信息安全类的密码学、文件透明加密
背景技术
在文件透明加密技术中,分为基于应用层的透明加密和基于驱动层的透明加密。基于驱动层的透明加密技术,因为其读写文件都是的边界都是512的整数,并且其读写的大小也是512的整数倍,即使文件大小不足512个字节,也会自动补全。在这种情况下,驱动层的透明加密可以使用任何国际通用的算法和国内专用的算法。
但是应用层的文件读写机制与驱动层完全不同。其文件读写的边界是随机的,其文件读写的大小也是随机的。这就为如AES算法的使用带来了困难,因为AES要求从2的整数倍的位置开始处理。
所以通常的方式有两种:
1)不处理文件的读和写,转而处理文件的打开和关闭事件。即在文件打开前,将文件全部解密成明文。在文件关闭后再重新全部加密成密文。
2)使用自行设计的加密算法,进行按位(Bit)的加密。
这两种方案均存在的严重的问题,方案一存在着大量的磁盘I0,严重的影响了性能,并且因为要将文件解密至硬盘,形成的明文落地,导致安全性隐患。
方案二的问题则更明显,因为自行设计的按位运算的加密仅能实现一种最简单的加密,其安全性完全得不到保障。
发明内容
本发明实现了一种新的方式,即在应用层的读写过程中,通过预读(PReReadFile)和延迟写DelayWriteFile的技术,将边界随机、大小随机、位置不连续的数据转换为边界固定,大小可被512整除、位置连续的数据。
本发明的方案如下:
1)当读一个非加密时,不作处理,按Windows原有方式进行。
2)当写一个非加密文件时,不作处理,按Windows原有方式进行。
3)当读一个加密文件时,预读更多的数据,使其大小和边界为8的N倍。将数据进行解密后,再向Windows返回其需要的数据量。
4)当要写一个加密文件时,首先将其数据缓存起来,当最后需要关闭文件时,再将文件进行加密后提交给Windows。
附图说明
下面结合附图和实施例对发明专利进一步说明。图1为读取文件时的处理流程,图2为写入文件时的处理流程。
具体实施方式
以AutoCAD的数据读写为例:
1)当读一个非加密时,不作处理,按Windows原有方式进行。
2)当读一个加密文件时,如果读的边界正好是8的N次方,读的内容大小也为8的N次时,不需要PreReadFile。只需用相应的算法将这段内容在内存中进行解密,然后再提交给Windows进行处理即可。
3)当读一个加密文件时,如果读的边界正好是8的N次方,读的大小为非8的N次方时,则从边界处开始读,在尾部多读一部分数据,使其大小为8的N次方。在用相应的算法对此段内容进行解密后,将尾部多读的数据丢弃,然后再Windows提交其需要的数据。
4)当读一个加密文件时,如果读的边界为非8的N次方,读的大小也为非8的N次方时,则边界向前移至8的N次方处,然后开始读取数据,同时在其尾部多读一部分数据,使其大小为8的N次方。在用相应算法对其进行解密后,将头部及尾部多读的数据丢弃,然后再向Windows提交其需要的数据。
5)当写一个非加密文件时,不作处理,按Windows原有方式进行。
6)当写一个加密文件时,如果写的边界正好是8的N次方,写的大小也正好是8的N次方时,不需要进行DelayWriteFile,只需用相应的算法将这段内容在内存中进行加密,然后提交给Windows处理即可。
7)当写一个加密文件时,如果写的边界正好是8的N次方,而写的大小为非8的N次方时,将边界处开始的8的N次方的数据进行加密,提交给Windows系统,对于尾部剩下的一部分数据,标明原位置和大小,将其缓存起来。如果在后续的写过程中,有覆盖此数据动作,则缓存的数据丢弃。如果并未发生覆盖动作,则在文件关闭(CloseHandle)的时候,重新读取此数据周围的数据,然后完整一个8的N次方为边界,大小为8的数据,加密后,将相应的数据写入文件,同时丢弃在此过程中多读的数据。
8)当写一个加密文件时,如果写的边界为非8的N次方,写的大小亦为非8的N次方时,则以8的N次方为边界,加密大小为8的N次方的数据,然后将此部分数据提交给Windows系统。对于头部和尾部多出的一部分数据,标明原位置和大小,将其缓存起来,如果在后续的写的过程中,有覆盖些数据的动作,则缓存的数据丢弃。如果并未发生覆盖动作,则在关闭文件(CloseHandle)的时候,重新读取此数据周围的数据。然后完整一个8的N次方为边界,大小为8的数据,加密后,将相应的数据写入文件,同时丢弃在此过程中多读的数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡安腾软件开发有限公司,未经无锡安腾软件开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910233699.5/2.html,转载请声明来源钻瓜专利网。