在Windows环境下虚拟磁盘的方法

文档序号:6565498阅读:359来源:国知局
专利名称:在Windows环境下虚拟磁盘的方法
技术领域
本发明涉及计算机软件、信息安全软件及系统工具软件领域,尤其涉及一种在Windows环境下虚拟磁盘的方法。
背景技术
Windows系列软件包括多个成员,现在广泛使用的包括Windows 9x系列软件和WindowsNT/2000。Windows 9x系列软件是普通PC机使用的操作系统软件,它为一般电脑用户提供了工作和娱乐的平台。而Windows NT/2000由于其具备比Windows 9x系列软件强得多的稳定性,以及Windows 9x系列软件所不具备的安全功能,是企业中PC机操作系统软件的首选。但Windows系列软件没有提供数据的安全保护功能,所有用户都可以访问磁盘上的数据,对于用户的私人数据没有提供有力的保护措施。
在Windows系列软件的开发包里提供了在系统里增加磁盘的方法,操作系统提供了增加磁盘的调用接口,但没有使用这个方法来保护用户的数据的实际应用。
普通加密软件虽然能完成数据的加解密,但对文件的操作仍旧通过操作系统(Windows)进行,所以无法避免明文方式的数据的存在。在使用普通的数据加密技术的软件在使用被加密的文件时,必须把被加密的文件解密出来才能进行操作,在操作完成之后,必须把更新过的文件重新加密,这对于用户是非常不方便的。而且,一般用户在操作完成之后,容易忘记删除解密出来的文件,并且即使在资源管理器中删除了文件也可能被其它软件恢复,这就很不安全。
基于上述现有技术的不足之处,我们考虑在系统中虚拟一个安全磁盘,它能够确保在物理的磁盘上任何时间都不存在任何用户在资源管理器中看到的明文数据,即用户可以看到的数据在实际磁盘上永远都以加密形式存在,只要关闭虚拟磁盘文件,没有任何技术可行的方法可以用于窃取用户放在虚拟磁盘文件中的数据。

发明内容
本发明的目的在于提出在Windows系统中创建一个虚拟的安全磁盘,存放在这个磁盘里的数据受到严格的保护,没有口令或未经授权的用户无法访问这个磁盘的数据。用户可在该虚拟磁盘上对加密文件进行操作,而不必进行解密文件、编辑文件和加密文件的流程,并不会在系统中留下解密文件和临时文件的残骸。
本发明提出了一种在Windows环境下虚拟磁盘的方法,其实现方法如下所述一种在Windows环境下虚拟磁盘的方法,利用Windows 9x/NT磁盘驱动程序接口在Windows系统中创建一个与硬盘中的实际文件相对应的虚拟磁盘,所述方法包括以下步骤a.从虚拟磁盘对应的文件中读取要生成的虚拟磁盘的信息,其中包括磁盘的容量、磁盘包含的柱面个数和磁头个数、每个柱面包含的扇区数、每个扇区包含的字节数和磁盘使用的文件系统;b.虚拟磁盘驱动程序根据步骤a中读到的虚拟磁盘的信息创建一个磁盘设备;c.使用操作系统提供的增加磁盘的接口,把步骤b中创建的磁盘设备提交给操作系统使该磁盘设备可在系统内使用;其中,虚拟磁盘对应的文件在创建虚拟磁盘之前已建立于硬盘之中;虚拟磁盘对应的文件中保存的信息受加密算法的保护,必须以某种形式获得密匙对其解密,以读取文件内容。根据步骤a中读到的虚拟磁盘的信息创建的磁盘设备实际上是一个包含虚拟磁盘信息的数据结构。
创建虚拟磁盘之后,就在系统中增加了一个虚拟的磁盘,比如如果用户的系统中原来有一个硬盘、软驱和光驱,则他在资源管理器中可以看到A、C和D三个磁盘,可以对这三个盘进行操作,而在创建磁盘分区之后,资源管理器中多出一个盘符为E的磁盘,盘符可由用户选择,可以在这个磁盘上进行正常磁盘可以进行的任意操作,实际的效果为对这个磁盘对应的文件进行操作。
虚拟磁盘生成后,虚拟磁盘驱动程序截获了所有磁盘调用,并判断系统是否调用虚拟磁盘,如果是,则调用虚拟磁盘;如果不是,则是对系统中原有磁盘的调用,直接由操作系统完成。调用虚拟磁盘包括以下步骤a.根据该次调用的信息数据在磁盘上的位置,计算出该信息在虚拟磁盘对应的文件中的位置,计算方法如下所述确定要读取或写入的数据在虚拟磁盘中的位置,这个位置包括三个参数柱面号C、磁头号H和扇区号S,用于计算实际数据在虚拟磁盘文件中相对于文件头的偏移量;假设虚拟磁盘共包含nC个柱面,nH个磁头,每个柱面上的一个磁头控制nS个扇区,每个扇区包括nB个字节,本次读写的柱面号为C、磁头号为H和扇区号为S,则在虚拟磁盘文件中需要读取或写入的数据相对于文件头的偏移量为0ffset(偏移量)=(C×nH×nS+H×nS+S-1)×nB;C×nH×nS表示在要读取或写入的数据所在的柱面C之前的扇区数,H×nS表示在柱面C中要读取或写入的数据所在的磁头H之前的扇区数,S-1表示在磁头H中要读取或写入的数据所在的扇区S之前的扇区数,三者之和为要读取或写入的数据前面的扇区数的总和,再乘以每个扇区的字节数得到数据距离文件头的偏移量;b.确定该次调用的信息数据在磁盘上的长度即为该信息数据在磁盘文件中所占的长度;c.如果是读虚拟磁盘,则根据要读取的信息数据在虚拟磁盘对应的文件中的位置和长度从虚拟磁盘对应的文件中读取需要的数据,并且对读出的数据进行解密,把解密的结果返回给用户;d.如果是写虚拟磁盘,则加密要写入的数据,并且根据要写入的信息数据在虚拟磁盘对应的文件中的位置和长度,把加密后的数据写入虚拟磁盘对应的文件中。
尽管用户选择的口令可长可短,实际用来加密虚拟磁盘的密钥是由系统自动生成的,根据不同的需要可以采用128位或者256位的随机密钥,使用256位随机密钥的虚拟磁盘是无法以暴力方法破解的。
加密虚拟磁盘的密钥也以加密形式保存在虚拟磁盘文件里,用户可以选择用口令或者证书来加密这个密钥,并且可以使用IC卡保存这个口令或者证书对应的私钥。
加密密钥的口令并不以明文或者加密形式存在于虚拟磁盘文件中,而是只在虚拟磁盘文件中存放一个口令的摘要,摘要算法的性质决定了它既可以用来验证用户输入的口令是否正确,又不会泄露口令的具体数据及长度等信息。
本发明所具有的显著效果是用户可以使用口令或数字证书建立虚拟磁盘,它支持IC卡和USB插口身份识别设备。并且每个用户可建立多个虚拟磁盘,每个虚拟磁盘支持多个用户访问。
虚拟磁盘完全仿真物理磁盘的文件操作,加密和解密对用户是透明的。
虚拟磁盘容量只受磁盘自由空间限制。支持Windows 9x、Windows NT、Windows 2000平台,支持FAT、FAT32和NTFS文件系统。
安装虚拟磁盘后,Windows系统的正常文件操作无明显的时间延迟。


图1系统调用虚拟磁盘的简单流程图具体实施方式
下面结合附图对本发明作进一步的详细说明。
一种在Windows环境下虚拟磁盘的方法,利用Windows 9x/NT磁盘驱动程序接口在Windows系统中创建一个与硬盘中的实际文件相对应的虚拟磁盘,所述方法包括以下步骤a.从虚拟磁盘对应的文件中读取要生成的虚拟磁盘的信息,其中包括磁盘的容量、磁盘包含的柱面个数和磁头个数、每个柱面包含的扇区数、每个扇区包含的字节数和磁盘使用的文件系统;b.虚拟磁盘驱动程序根据步骤a中读到的虚拟磁盘的信息创建一个磁盘设备;c.使用操作系统提供的增加磁盘的接口,把步骤b中创建的磁盘设备提交给操作系统使该磁盘设备可在系统内使用;其中,虚拟磁盘对应的文件在创建虚拟磁盘之前已建立于硬盘之中;虚拟磁盘对应的文件中保存的信息受加密算法的保护,必须以某种形式或的密匙对其解密,并读取文件内容。根据步骤a中读到的虚拟磁盘的信息创建的磁盘设备实际上是一个包含虚拟磁盘信息的数据结构。
创建虚拟磁盘之后,就在系统中增加了一个虚拟的磁盘,比如如果用户的系统中原来有一个硬盘、软驱和光驱,则他在资源管理器中可以看到A、C和D三个磁盘,可以对这三个盘进行操作,而在创建磁盘分区之后,资源管理器中多出一个盘符为E的磁盘,盘符可由用户选择,可以在这个磁盘上进行正常磁盘可以进行的任意操作,实际的效果为对这个磁盘对应的文件进行操作。
虚拟磁盘生成后,虚拟磁盘驱动程序截获了所有磁盘调用,并判断系统是否调用虚拟磁盘,如果是,则调用虚拟磁盘;如果不是,则是对系统中原有磁盘的调用,直接由操作系统完成。调用虚拟磁盘包括以下步骤a.根据该次调用的信息数据在磁盘上的位置,计算出该信息在虚拟磁盘对应的文件中的位置,计算方法如下所述确定要读取或写入的数据在虚拟磁盘中的位置,这个位置包括三个参数柱面号、磁头号和扇区号,用于计算实际数据在虚拟磁盘文件中相对于文件头的偏移量;假设虚拟磁盘共包含nC个柱面,nH个磁头,每个柱面上的一个磁头控制nS个扇区,每个扇区包括nB个字节,本次读写的柱面号为C、磁头号为H和扇区号为S,则在虚拟磁盘文件中需要读取或写入的数据相对于文件头的偏移量为0ffset(偏移量)=(C×nH×nS+H×nS+S-1)×nB;C×nH×nS表示在要读取或写入的数据所在的柱面C之前的扇区数,H×nS表示在柱面C中要读取或写入的数据所在的磁头H之前的扇区数,S-1表示在磁头H中要读取或写入的数据所在的扇区S之前的扇区数,三者之和为要读取或写入的数据前面的扇区数的总和,再乘以每个扇区的字节数得到数据距离文件头的偏移量;b.确定该次调用的信息数据在磁盘上的长度即为该信息数据在磁盘文件中所占的长度;c.如果是读虚拟磁盘,则根据要读取的信息数据在虚拟磁盘对应的文件中的位置和长度从虚拟磁盘对应的文件中读取需要的数据,并且对读出的数据进行解密,把解密的结果返回给用户;d.如果是写虚拟磁盘,则加密要写入的数据,并且根据要写入的信息数据在虚拟磁盘对应的文件中的位置和长度,把加密后的数据写入虚拟磁盘对应的文件中。
其中,加密虚拟磁盘的密匙由系统自动生成,加密虚拟磁盘的随机密匙可根据实际需要采用128位或256位,加密虚拟磁盘的密匙以加密形式保存在虚拟磁盘文件里,用户可选择用口令或证书加密该密匙,并可使用卡保存该口令或证书对应的私匙,加密密钥的口令并不以明文或者加密形式存在于虚拟磁盘文件中,而只是在虚拟安全磁盘文件中存放一个口令的摘要。
权利要求
1.一种在WINDOWS环境下虚拟磁盘的方法,其特征在于,利用Windows 9x/NT磁盘驱动程序接口在Windows系统中创建一个与硬盘中的实际文件相对应的虚拟磁盘,所述方法包括以下步骤a.从虚拟磁盘对应的文件中读取要生成的虚拟磁盘的信息,其中包括磁盘的容量、磁盘包含的柱面个数和磁头个数、每个柱面包含的扇区数、每个扇区包含的字节数和磁盘使用的文件系统;b.虚拟磁盘驱动程序根据步骤a中读到的虚拟磁盘的信息创建一个磁盘设备;c.使用操作系统提供的增加磁盘的接口,把步骤b中创建的磁盘设备提交给操作系统使该磁盘设备可在系统内使用;
2.根据权利要求1所述的方法,其进一步特征在于,虚拟磁盘对应的文件在创建虚拟磁盘之前已建立于硬盘之中,所述文件的大小为虚拟磁盘的容量,用于保存虚拟磁盘中的数据。
3.根据权利要求1所述的方法,其进一步特征在于,虚拟磁盘对应的文件中保存的信息受加密算法的保护,必须以某种形式获得密匙对其解密,以读取文件内容。
4.根据权利要求1所述的方法,其进一步特征在于,根据步骤a中读到的虚拟磁盘的信息创建的磁盘设备实际上是一个包含虚拟磁盘信息的数据结构。
5.根据权利要求1所述的方法,其进一步特征在于,创建虚拟磁盘后,系统中增加了一个虚拟的磁盘,即在资源管理器中多出一个具有盘符名的磁盘,该盘符名可由用户自行命名。
6.根据权利要求1所述的方法,其进一步特征在于,虚拟磁盘生成后,虚拟磁盘驱动程序截获了所有磁盘调用,并判断系统是否调用虚拟磁盘,如果是,则调用虚拟磁盘;如果不是,则是对系统中原有磁盘的调用,直接由操作系统完成。
7.根据权利要求6所述的方法,其进一步特征在于,调用虚拟磁盘包括以下步骤a.根据该次调用的信息数据在磁盘上的位置,计算出该信息在虚拟磁盘对应的文件中的位置,计算方法如下所述确定要读取或写入的数据在虚拟磁盘中的位置,这个位置包括三个参数柱面号C、磁头号H和扇区号S,用于计算实际数据在虚拟磁盘文件中相对于文件头的偏移量;假设虚拟磁盘共包含nC个柱面,nH个磁头,每个柱面上的一个磁头控制nS个扇区,每个扇区包括nB个字节,本次读写的柱面号为C、磁头号为H和扇区号为S,则在虚拟磁盘文件中需要读取或写入的数据相对于文件头的偏移量为Offset(偏移量)=(C×nH×nS+H×nS+S-1)×nB;C×nH×nS表示在要读取或写入的数据所在的柱面C之前的扇区数,H×nS表示在柱面C中要读取或写入的数据所在的磁头H之前的扇区数,S-1表示在磁头H中要读取或写入的数据所在的扇区S之前的扇区数,三者之和为要读取或写入的数据前面的扇区数的总和,再乘以每个扇区的字节数得到数据距离文件头的偏移量;b.确定该次调用的信息数据在磁盘上的长度即为该信息数据在磁盘文件中所占的长度;c.如果是读虚拟磁盘,则根据要读取的信息数据在虚拟磁盘对应的文件中的位置和长度从虚拟磁盘对应的文件中读取需要的数据,并且对读出的数据进行解密,把解密的结果返回给用户;d.如果是写虚拟磁盘,则加密要写入的数据,并且根据要写入的信息数据在虚拟磁盘对应的文件中的位置和长度,把加密后的数据写入虚拟磁盘对应的文件中。
8.根据权利要求2所述的方法,其进一步特征在于,加密虚拟磁盘的密匙由系统自动生成。
9.根据权利要求8所述的方法,其进一步特征在于,加密虚拟磁盘的随机密匙可根据实际需要采用128位或256位。
10.根据权利要求9所述的方法,其进一步特征在于,加密虚拟磁盘的密匙以加密形式保存在虚拟磁盘文件里,用户可选择用口令或证书加密该密匙,并可使用卡保存该口令或证书对应的私匙。
11.根据权利要求10所述的方法,其进一步特征在于,加密密匙的口令并不以明文或者加密形式存在于虚拟磁盘文件中,而只是在虚拟安全磁盘文件中存放一个口令的摘要。
全文摘要
本发明公开了一种在WINDOWS环境下虚拟磁盘的方法。目前,Windows系列软件没有提供数据的安全保护功能,所有用户都可以访问磁盘上的数据,对于用户的数据没有提供有力的保护措施。本发明较好的解决了该问题,提出了在在WINDOWS环境下虚拟磁盘的方法,存放在虚拟磁盘里的数据受到严格的保护,没有口令或未经授权的用户无法访问虚拟磁盘的数据。这个磁盘与实际硬盘上的一个文件相对应,对于虚拟磁盘的读写都对应到实际文件的读写上。虚拟磁盘中的数据受到多种加密算法的保护,可以保证数据的安全性。
文档编号G06F12/16GK1373424SQ0113234
公开日2002年10月9日 申请日期2001年11月29日 优先权日2001年11月29日
发明者吴海明, 严华力, 顾震 申请人:上海格尔软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1