一种为计算机存储设备加锁的方法

文档序号:6405864阅读:219来源:国知局
专利名称:一种为计算机存储设备加锁的方法
技术领域
本发明属于计算机安全技术领域。特别涉及到防止非授权者通过逻辑设备使用计算机物理存储设备的方法,及以防止计算机病毒侵害计算机文件系统的方法。
在计算机技术领域中,计算机安全问题始终是一个非常重要的课题。在计算机系统中,系统的海量存储设备都是以共享方式使用的。在这种情况下,保证一个文件不会被非授权用户所访问、修改或删除,无论对用户还是系统本身来说,都是极为重要的。作为一个计算机用户,他总希望计算机中能有一块只有他才能使用的存储区域。有些时候,尽管需要计算机的某些特定的、以逻辑设备方式使用的物理存储介质,只在满足某些特定条件的情况下,才是可以被逻辑设备所使用的,然而,所使用的计算机系统本身却无此功能。例如,使用PC-DOS或MS-DOS(以下简称DOS)操作系统的IBM-PC系列微计算机及其各种兼容机(以下简称PC机),以硬磁盘(以下简称硬盘)做为系统的海量存储设备,并将硬盘划分为逻辑磁盘使用。逻辑磁盘由所有用户共享,任何用户都不能以独占方法使用逻辑磁盘。不仅如此,任何用户都可以使用磁盘格式化命令对硬盘上的逻辑磁盘进行格式化。因此,任何一个用户存在计算机中的信息和数据,随时可能被其它用户破坏掉。
又例如,IBM-PC系列微计算机规定系统既可以从软盘启动,也可以从硬盘启动,而且软盘优先,二者对硬盘的使用完全相同。由于任何用户都可以很容易地制备一个可以启动计算机的操作系统软盘,因此这个特性可能会给公用计算机造成问题。比如,DOS操作系统的2.00版与3.30版对逻辑磁盘C(即硬磁盘上第一个可由DOS操作系统使用的逻辑磁盘,下同)的使用方法是不相同的。假设一台公用计算机的硬盘,装有3.30版DOS操作系统,且逻辑磁盘C是由3.30版DOS操作系统格式化的,而一个用户用他自己的2.00版PC-DOS操作系统软盘启动了此计算机。这时,逻辑磁盘C对于此用户来说是可以正常使用的,只是他不能正确读出逻辑磁盘C中已有的内容。如果他向逻辑磁盘C中写入了新的内容,则此内容可被他正确读出。然而他的写盘操作将会破坏逻辑磁盘C中的已有内容。同样,如果用3.30版DOS操作系统启动计算机的使用者又向逻辑磁盘C写入了新的内容,则可能破坏由2.00版DOS操作系统使用者写入逻辑磁盘C的内容。这样使用不同操作系统版本的用户之间可能反复交叉破坏。再比如,对于公用计算机,往往要在系统中安装一些保护软件,例如反病毒程序等等。如果用户使用自己的系统软盘启动计算机,则可以完全绕过所设置的保护措施。也就是说,为系统所设的保护软件,对自带启动软盘的用户无效。
从以上实例可以看出,对于那些任何用户均可以在逻辑设备一级无条件地对存储设备进行操作的计算机系统,尤其是其中那些用户可自带所需的所有软件的计算机系统,一种可以锁住逻辑设备,使其只能被授权用户使用,或者说使得某指定物理存储介质只能被授权用户使用的方法,显然是非常重要而意义的。
本发明是为解决前述实例所存在的问题而提出的一种为计算机存储设备加锁的方法,其特征在于采用变更计算机系统中的设备驱动器所能获得的、指定的逻辑设备的说明参数的方法,包括使得被所述的指定的逻辑设备所使用的、计算机系统中的物理存储设备中的指定的物理存储介质,不会被非授权者通过所述的指定的逻辑设备所使用的加锁步骤,以及使得被所述的指定的逻辑设备所使用的、计算机系统中的物理存储设备中的指定的物理存储介质,可以被授权者通过所述的指定的逻辑设备所使用的解锁步骤。本发明所述的方法可以完全用软件实现。
本发明的基本原理如下在计算机系统中,一个逻辑设备,是由一组或若干组说明参数所定义和描述的。这些说明参数中至少包含此逻辑设备的标识参数和定位参数这二项参数。逻辑设备的标识参数标明此逻辑设备的类型和属性,是系统或设备驱动器识别此逻辑设备的依据。逻辑设备的定位参数描述此逻辑设备使用物理设备的情况,表明此逻辑设备实际使用哪些物理设备,它的功能是由哪些物理介质实现的。现假设有一个逻辑设备A,它的类型为K,使用的物理存储介质为D。这时它的标识参数的内容为Tk,说明它是一个K型逻辑设备;它的定位参数的内容为LD,说明它使用物理存储介质D。对于系统和设备驱动器来说,A是一个使用物存储介质D的K型逻辑设备。假设系统启动时安装所有的设备驱动器。那么在系统启动之后,逻辑设备A被系统做为K型设备安装,并被定位在物理存储介质D上,并为它分配一个设备名N。用户可以通过名字为N的K型逻辑设备来使用物理存储介质D。如果可以将A的标识参数Tk改为Tx,那么对于系统和设备驱动器来说,A不是一个K型逻辑设备,在系统启动后A不能做为名字为N的K型逻辑设备被用户使用,因而用户也就不能通过名字为N的K型逻辑设备来使用物理存储介质D。如果系统中所定义的所有逻辑设备的说明参数均不为Tx,则此时的A就成了系统中的一个不会被任何设备驱动器所识别、所支持的“未知设备”,因此它可能根本就不会被安装进系统。除此之外,如果保持A的标识参数依然为Tk,而可以将它的定位参数LD改为LS,使定位参数说明A使用物理存储介质S,且D与S无重叠。那么对于系统和设备驱动器来说,A是一个使用物理存储介质S的K型逻辑设备,在系统启动后,A依然做为设备名为N的K型逻辑设备被用户使用。不过用户通过名字为N的K型逻辑设备所使用的物理存储介质是S而不是D。只要控制变更和恢复指定逻辑设备的说明参数,就有可能达到只有授权用户才能通过指定逻辑设备使用指定物理存储介质的目的。实际上,对逻辑设备说明参数的变更和恢复,并不一定是对说明参数的静态数据进行。只要使得有关代码模块所获得的说明参数是所希望的内容,就可以达到目的。
本发明的加锁步骤是使得支持指定逻辑设备的设备驱动器在获取此逻辑设备的有关说明参数时,只能得到此逻辑设备的变更过的说明参数。因而使得此逻辑设备或者成为不会被任何设备驱动器所识别、所使用、所支持的“未知设备”,或者不能正确定位在指定的物理存储介质上。从而使得指定的物理存储介质不会被指定的逻辑设备所使用。
本发明的解锁步骤是使得支持指定逻辑设备的设备驱动器在获取此逻辑设备的有关说明参数时,只能得到此逻辑设备的原始的、未被变更过的说明参数。因而使得此逻辑设备可以被此设备驱动器所正确识别、正确使用,并正确定位在指定的物理存储介质上。从而使得指定的物理存储介质可以被指定的逻辑设备所使用。
本发明所述方法中的物理存储设备中的指定的物理存储介质包括可以随机存取的块设备中的物理存储介质中的指定的物理存储区域,所述的说明参数可以存储在所述的块设备中。
本发明进一步提供一种采用变更存储在可以随机存取的块设备中的说明参数,使所述块设备的物理存储介质中的指定的物理存储区域加锁的方法,其加锁步骤是指变更所述的说明参数,并用所得结果替换存储在所述的块设备中的所述的说明参数,使得所述的指定的物理存储区域,不会被非授权者通过所述的指定的逻辑设备所使用;其解锁步骤是指使得一代码模块在系统启动时驻留在内存中,由此代码模块保证所述的指定的物理存储区域,可以被授权者通过所述的指定的逻辑设备所使用。
上述的加锁步骤还可用下述方法实现,即使得一代码模块在系统启动时驻留在内存中,由此代码模块保证所述的指定的物理存储区域,不会被非授权者通过所述的指定的逻辑设备所使用。下面以本发明在PC机上的应用为例,进一步详细阐述本发明的方法。
PC机可以使用多种操作系统,其硬盘是一个可以随机存取的块设备,各种操作系统可以同时驻留在计算机的硬盘上,共享系统的硬盘。各操作系统使用硬盘的方法是在硬盘上建立一个属于自己的分区、并且将这个分区做为一个逻辑磁盘使用。也就是说,对于一个操作系统来说,硬盘上的这个属于它的分区,就是它所能使用的一个完整的磁盘。一个硬盘分区由一组包括分区标识参数和分区定位参数的说明参数说明。说明同一个分区的所有数据按固定顺序排列,组成一个分区表项。一个分区表项有16个字节。所有分区表项构成一个硬盘分区表,或称分区表。此表固定存放在计算机硬盘的第一物理扇区(即第0道0而1扇区)中。分区表在此扇区中的位置是固定的,自相对位置1BEH(十六进制数,下同)开始,至1EDH结束,共64个字节,可容纳四个分区表项(注有的管理系统对分区表的长度进行了扩充,但在此区域内的四个分区表项依然未变)。说明每个分区的各项数据均无副本地存放在硬盘的固定位置上。分区的标识参数叫做“系统指示器”。它是一个代码,唯一标明所说明的分区是一个什么类型的分区,属于哪个操作系统,或者说它唯一标明此分区是什么逻辑设备,由哪个设备驱动器使用。各种不用的分区,都有自己的不同的代码。由于分区表没有副本,因此一个分区表项的系统指示器的内容,是一个系统判断是否可以使用相应分区的唯一依据,或者说是一个块设备驱动器判断此分区是否可用的唯一依据。分区的定位参数叫做“分区定位表”,它唯一说明所描述的分区的物理位置。其中包括所说明的分区在硬盘上的起始地址、终止地址和长度等数据。由于分区表没有副本,因此一个分区表项中的分区定位表是一个系统或者一个块设备驱动器定位相应分区的唯一依据。在操作系统的启动过程中,系统的所有设备驱动程序被安装并被初始化。各使用硬盘的逻辑块设备驱动器在初始化时读取硬盘的分区表,并且扫描各分区表项中的系统指示器。仅依据所得到的系统指示器的内容,判别相应分区是否是自己的可用设备。若是,则仅依据相应分区表项中的分区定位表中的数据,在物理硬盘上定位此逻辑设备即逻辑磁盘。一个逻辑块设备定位完成以后,相应分区表项数据在下次系统启动之前便不再被系统所使用了。
因此,有两种方法可以使硬盘上某分区所对应的指定物理存储区域,在系统启动后不能以逻辑磁盘的方式被使用。第一种是变更支持分区的设备驱动器所能获得的指定分区的分区表项中的“系统指示器”内容,使得支持分区的设备驱动器在初始化时,只能得到所述分区的相应系统指示器的变更过的内容,因而使得所述分区成为不会被任何设备驱动器所识别、所使用、所支持的“未知分区”。这时所述分区根本没有做为逻辑设备安装在系统中,它所对应的物理存储区域当然也就不能以逻辑磁盘的方式使用了。第二种是变更支持分区的设备驱动器所能获得的指定分区的分区表项中的“分区定位表”,使得支持所述分区的设备驱动器在初始化时,只能得到所述分区的相应分区定位表的变更过的内容,因而使得所述分区不能正确定位在所述的指定的物理存储区域上。这时,所述物理存储区域实际上成了未被任何逻辑设备使用的空闲区,当然也就不能以逻辑磁盘的方式使用了。
现举例说明如下现假设指定分区被分区表中的第n个分区表项所说明,称指定分区为硬盘第n个分区。它的系统指示器的内容为1,说明它是一个基本DOS分区。它在硬盘上的起始地址为d1,终止地址为d2。这样,在DOS系统启动之后,第n个分区将被定位在硬盘存储区域d1至d2上,做为系统的第一个逻辑磁盘被使用。它的设备号为C。所有对逻辑磁盘C的操作都是对第n个分区进行。逻辑磁盘C所使用的物理存储介质为硬盘上的d1至d2区域。也就是说硬盘上的d1至d2区域以逻辑磁盘C的方式所使用。
如果现在要使硬盘的d1至d2区域不能以逻辑磁盘的方式所使用,可以有两种方法。
第一种方法,使得支持分区的设备驱动器在初始化时,所能得到的分区表中的第n个分区表项中的系统指示器的内容为99H。由于所有操作系统所使用的任何分区的系统指示器的内容均不为99H,因此对于DOS操作系统来说,此时硬磁盘上没有可用分区。第n分区根本不会做为逻辑磁盘安装进DOS操作系统。在DOS启动完成之后,系统中根本没有设备号为C的逻辑磁盘。硬磁盘上的d1至d2区域当然也不能以逻辑磁盘方式被使用。
第二种方法,使得支持基本DOS分区的设备驱动器在初始化时,所能得到的分区表中的第n个分区表项中的分区定位表,其起始地址为d3,终止地址为d4,且有d2<d3。由于第n个分区表项中的系统指示器的内容依然是1,所以它仍被此设备驱动器所识别、安装和支持。在系统启动之后,第n个分区依然被做为系统中设备号为C的第一个逻辑磁盘。所有对逻辑磁盘C的操作依然是对第n个分区进行。然而,此时第n个分区被定位在硬磁盘的d3至d4区域,而不是d1至d2区域。逻辑磁盘C所使用的物理存储介质是硬盘上的d3至d4区域。而硬盘上的d1至d2区域成了不被任何逻辑设备所使用的“空闲区域”,当然不能以逻辑磁盘的方式被使用。
在3.30版PC-DOS操作系统中,对分区的概念进行了扩充。它支持一种称为扩展DOS分区的分区。它与基本DOS分区不同,基本DOS分区只能做为一个逻辑磁盘来使用,而扩展DOS分区只能以在其中再定义分区的方式来使用。在扩展分区中定义DOS分区的规定与在磁盘上定义分区时一样,而且二者的数据结构及所使用的分区表项和分区表的数据结构也完全一样。说明在扩展DOS分区A中定义的分区B和C的分区表,固定存放在A所拥有的第一个物理扇区中,且无副本。分区表在扇区中的相对位置也是1BEH。这样,一个扩展DOS分区中可以包含的基本DOS分区数最多是一个。一个扩展DOS分区中可以包含的扩展DOS分区数最多是一个。在扩展DOS分区中定义分区与在硬盘上定义分区时不一样的是1.扩展DOS分区中可以没有基本DOS分区而有扩展DOS分区。
2.说明一个指定分区的分区表项中的分区定位表参数不能唯一定位这个指定分区。此分区的位置除由对应分区表项的分区定位表说明外,还受包含它的分区的定位参数的影响。
为了区分在硬盘上定义的分区和在扩展DOS分区中定义的分区,在这里将在扩展DOS分区中定义的基本DOS分区称为逻辑磁盘;将在扩展DOS分区中定义的扩展DOS分区称为逻辑磁盘组。相应地,存放在扩展DOS分区所拥有的第一个物理扇区中的分区表称为逻辑磁盘表;其表项称为逻辑磁盘表项;逻辑磁盘表项中的分区定位表称为逻辑磁盘定位表,等等依此类推。操作系统启动后,建在硬盘上的基本DOS分区的设备号是C,建在扩展DOS分区中的逻辑磁盘的设备号以它们的嵌套层次从小到大为序,依次为D、E…。这里所说的逻辑磁盘是建立在扩展DOS分区中的基本DOS分区的专用名词,它与以前所说的广义逻辑磁盘之间的联系和区别是十分明显的,除非特别必要,并不注意去区分它们。
与前边叙述的分区相似,说明一个逻辑磁盘的逻辑磁盘表项中的“系统指示器”,是支持此逻辑磁盘的设备驱动器识别此逻辑磁盘的唯一依据。因此可以用变更支持扩展DOS分区中逻辑磁盘的设备驱动器所能获得的逻辑磁盘表项中的“系统指示器”,使得支持扩展DOS分区中逻辑磁盘的设备驱动器在初始化时,只能得到所述逻辑磁盘的相应系统指示器的变更过的内容,因而使得所述逻辑磁盘成为不会被任何设备驱动器所识别、所使用、所支持的“未知逻辑设备”的方法,使得所述逻辑磁盘所对应的物理存储区域在DOS操作系统启动之后,不能以逻辑磁盘的方式被使用。
特别需说明的是,由于一个逻辑磁盘的“逻辑磁盘定位表”不是定位此逻辑磁盘的唯一依据,因此不能期望象在分区中那样,仅仅变更一个“逻辑磁盘定位表”的内容就可以达到为相应物理存储区域加锁的目的。
综上所述,本发明所述的采用变更指定的逻辑设备的说明参数的方法,包括变更该逻辑设备的标识参数或者定位参数。对于PC机的分区是指变更支持分区的设备驱动器在初始化时所能获得的指定分区的分区表项中的“系统指示器”的内容或者“分区定位表”的内容,对PC机的逻辑磁盘,是指变更支持逻辑磁盘的设备驱动器在初始化时所能获得的指定逻辑磁盘的逻辑磁盘表项中的“系统指示器”的内容,达到对锁住指定的物理存储介质的目的。
本发明所采用的为计算机存储设备加锁的方法,简便易行,不需改动系统硬件,只需根据需要编制出合适的软件即可达到排除非授权者使用指定存储设备的目的,同时也为防止计算机病毒侵害计算物理存储介质提供了一种安全可靠的措施。
附图简要说明

图1为本发明的实施例一中的系统启动时的主引导记录执行流程框图。
图2为实施例一中的“模拟输入”代码模块执行流程框图。
图3为实施例一中的“撤消驻留”代码模块执行流程框图。
图4为实施例二中的系统启动时的主引导记录执行流程框图。
图5为实施例二中的“模拟输入”代码模块执行流程框图。
为了更加详细和具体地说明本发明,同时给出实施本发明的具体参考,现给出本发明的两个具体实施实例,并结合附图对它们做详细说明。
实施实例一一题目IBM-PC系列微计算机及其各种兼容机在PC-DOS和MS-DOS操作系统下的口令(PASSWORD)系统。
二目的如前所述,在计算机的实际应用中,往往希望某文件系统只能被授权者使用,而不能被非授权者使用。而使用PC-DOS和MS-DOS操作系统的IBM-PC系列微计算机及其各种兼容机没有此功能。本系统的目的就是解决此问题。
本实施例用变更硬磁盘中逻辑磁盘的“系统指示器”的方法,使得所有用户均能使用C、D、E三个逻辑磁盘,但从硬磁盘启动操作系统并能正确回答口令的用户与其它用户所使用的逻辑磁盘D的内容是不同的。即从硬磁盘启动操作系统并能够正确回答口令的用户与其它用户通过逻辑磁盘D所使用的硬磁盘上的物理存储区域是不同的。
三条件1.一台IBM-PC微计算机,其中装有一台内部物理硬磁盘机。
2.使用3.30版PC-DOS操作系统。
3.在硬磁盘上建有一个基本DOS分区,在此分区中安装了可供启动的操作系统。
4.在硬磁盘上建有一个扩展DOS分区,在其中依次建有DN、DA、DB、E四个逻辑磁盘。
四要求1.设置A、B两套口令。
2.从硬磁盘启动操作系统并能正确回答口令A的用户可以使用基本DOS分区和扩展的分区中的逻辑磁盘DA及E,而不能使用逻辑磁盘DN和DB。
3.从硬磁盘启动操作系统并能正确回答口令B的用户可以使用基本DOS分区和扩展DOS分区中的逻辑磁盘DB及E,而不能使用逻辑磁盘DN和DA。
4.从硬磁盘启动操作系统但不能正确回答口令的用户和从软磁盘启动操作系统的用户可以使用基本DOS分区中的逻辑磁盘DN及E而不能使用逻辑磁盘DA和DB。
5.对非DOS操作系统无影响。
五实施1.加锁(1)对于逻辑磁盘DN采用使得一“模拟输入”代码模块在从硬盘启动操作系统且用户能正确回答口令时驻留在内存中,由此代码模块保证支持逻辑磁盘的设备驱动器在读取逻辑磁盘DN的系统指示器的内容时,此内容只能是99H,因而使得逻辑磁盘DN所使用的硬磁盘上的物理存储区域不能被从硬磁盘启动操作系统且能正确回答口令的用户以逻辑磁盘D的方式使用的加锁方法。
(2)对于逻辑磁盘DA和DB采用将存储在硬磁盘中的逻辑磁盘表中的指定逻辑磁盘的系统指示器的内容从1(或4,视逻辑磁盘的容量而可能不同,本例中假设全为1,下同)改为99H,并用所得结果替换原内容,使得支持逻辑磁盘的设备驱动器在读取逻辑磁盘DA和DB的系统指示器时,只能得到它的为99H的内容,因而使得逻辑磁盘DA和DB成为不会被任何设备驱动器所识别、所支持、所使用的“未知设备”,从而使得逻辑磁盘DA和DB所使用的硬磁盘上的物理存储区域不能被从软磁盘启动操作系统的用户和不能正确回答相应口令的用户,以逻辑磁盘D的方式使用的加锁方法。
通过INT 13H中断读出硬盘第一物理扇区中的主引导记录。根据主引导记录中的硬盘分区表中扩展DOS分区表项中的分区定位表中保存的扩展DOS分区的起动地址,通过INT 13H中断从扩展DOS分区的第一个物理扇区中读出第一级逻辑磁盘表。其中所存的第一个逻辑磁盘表项的系统指示器的值为1,此表项所描述的是逻辑磁盘Dn。第二个逻辑磁盘表项的系统指示器的内容是5,它描述的是第一级逻辑磁盘组。根据此逻辑磁盘表项中的逻辑磁盘定位表中保存的此逻辑磁盘组的起始地址,通过INT 13H中断从第一级逻辑磁盘组的第一个物理扇区中读出第二级逻辑磁盘表。其中所存的第一个逻辑磁盘表项的系统指示器的值为1,此表项所描述的是逻辑磁盘DA。将其系统指示器的值改为99H,将此扇区用INT 13H写回。第二级逻辑磁盘表中所存的第二个逻辑磁盘表项的系统指示器的值是5,它描述的是第二级逻辑磁盘组。用与刚才相同的方法,将逻辑磁盘DB的系统指示器的值改为99H并写回硬磁盘。
由于PC-DOS操作系统中的任何使用硬磁盘的逻辑块设备的系统指示器的值均不为99H,因此,在以后按常规方法启动PC-DOS操作系统时,扩展DOS分区中只有逻辑磁盘DN和E可以被正确识别、安装和使用。它们的设备号分别为D和E,正是所需。且由于只更改了扩展DOS分区中的数据,因此对其它操作系统无影响。
至此对逻辑磁盘DA和DB加锁完毕。
2.口令输入与检验此功能由“口令”代码模块完成。A、B两条口令的内容(数据)予先放在模块的口令数据区中。在系统启动时,此模块首先判断本次启动是否启动PC-DOS操作系统,如果不是,则携带判断结果退出本代码模块,若是启动PC-DOS操作系统,则先向用户询问口令,并输入用户给出的口令。然后将输入的口令与数据区中保存的口令数据进行比较。最后携带比较结果退出本代码模块。
3.解锁(1)对于逻辑磁盘DN,由于它的常态是无锁态,由“模拟输入”代码模块动态对其加锁,因此只要“模拟输入”代码模块不工作,即实现了对它的解锁。
(2)对于逻辑磁盘DA和DB采用使得一“模拟输入”代码模块在从硬磁盘启动操作系统且用户能正确回答口令的情况下,驻留在内存中,由此代码模块保证支持逻辑磁盘的设备驱动器在读取逻辑磁盘DA和DB的系统指示器的内容时,所需的那个逻辑磁盘(回答的口令是A时是DA,回答的口令是B时是DB)的系统指示器的值是1,而不是99H,因而使得此逻辑磁盘可以被所述的设备驱动器所正确认识、正确使用,因而使得此逻辑磁盘所使用的物理存储区域可以被从硬磁盘启动操作系统且能正确回令相应口令的用户以逻辑磁盘的方式所使用的解锁方法。它的常态是已锁态。
使“模拟输入”代码模块驻留在内存的工作由一“驻留”代码模块完成。此模块首先将有关模块转移到在退出前不会被使用的内存区中。如果用户没能正确回答口令,则退出。否则截取INT13H中断到“模拟输入”模块的入口,并为“模拟输入”保存有关参数。
由于逻辑磁盘表在支持逻辑磁盘的设备驱动器初始化完成之后不再被使用,因此上述“模拟输入”代码模块可以而且应该在支持逻辑磁盘的设备驱动器初始化完成之后尽早退出内存。为了简便,此功能由单独的“撤消驻留”代码模块完成。
在3.30版PC-DOS操作系统中,硬盘的第一物理扇区(其中存放的是硬盘主引导记录)中有227个字节的空闲区。为了方便,将“口令”“驻留”和“模拟输入”三个代码模块放在此空闲区中,并相应调整主引导模块中的相应参数和结构。将“撤消驻留”代码模块设计成一个可安装的设备驱动程序的形式。
“撤消驻留”代码模块做为一个“可安装的设备驱动程序”的初始化功能模块使用。“设备驱动程序”仍然要按照要求的固定格式书写。只是它的各个功能调用模块中,只有初始化功能模块是有效代码段。在系统配置文件中将它放在所有使用硬磁盘的块设备驱动程序之后安装。程序的初始化功能模块由操作系统的“可安装的设备驱动程序”的安装模块调用。它在执行时恢复可能被截取的中断,清除驻留在内存的主引导记录,最后以0长度返回调用它的模块(通知系统本驱动程序不被安装,退出系统)。
4.执行流程附图一至附图三为本实施例的有关流程,现分别详述如下。
附图一给出了本实施例中的主引导记录在系统启动时的执行流程。其中第3步至第7步是“口令”代码模块,第8步至第12步是“驻留”代码模块,其它步骤都是主引导记录中主引导模块的原有功能,不过对有关参数做了相应调整。其中第13步至第23步为原主引导记录中的引导功能模块。现对附图一详述如下第1步寄存器初始化,设置堆栈。
第2步空出标准启动地址0000∶7C00。将主引导记录从0000∶7C00开始的内存区中拷贝到0000∶E000开始的内存区中,然后转到新的主引导记录中继续执行。这是原引主导记录的已有功能,只是按“驻留”的要求将目的地址改为0000∶E000。此地址即为驻留地址(“模拟输入”代码模块放在主引导记录中),它是一实验值。实际上,可以选取在“撤消驻留”代码模块运行结束之前不被系统使用的任意内存区域做为驻留区。本步亦为“驻留”工作的第一部分。
第3步口令模块初始化。设置口令标志为错误。
第4步根据内存中的分区表,检查基本DOS分区是否活动分区。若不是,说明本次要启动的不是DOS操作系统,按“对其它系统无影响”的要求,转第13步。
第5步用INT10H中断显示口令提示符。
第6步用INT16H中断从键盘中输入一个口令。
第7步根据所输入的口令内容,设置口令标志。将所输入的口令与口令数据区中保存的口令相比较,若与A相同,则设置口令标志为A,若与B相同,则设置口令标志为B。
第8步向用于保存INT13H向量的数据区中存入地址0000∶0000。
第9步若口令标志为“错误”,说明无须解锁,转第13步。
第10步设置重复次数n。若口令标志为A,则n=1,否则n=2。
第11步按前边给出的方法,依次搜索逻辑磁盘表。将找到的第一个内容为1的系统指示器所在的物理扇区地址和扇区的内容分别存入数据区中,再将数据区中的此系统指示器的内容改为99H;将找到的第n个内容为99H的系统指示器所在的物理扇区的地址和扇区的内容分别存入数据区中,再将数据区中此系统指示器的内容改为1。这两个扇区就是需要进行模拟输入的硬磁盘扇区。
第12步截取INT13H软中断到“模拟输入”代码模块。首先将INT13H中断向量(内存0000∶004C至0000∶004F,下同)中保存的INT13H处理模块入口地址保存到数据区中,然后将“模拟输入”代码模块的入口地址填入INT13H中断向量中。由于所有磁盘操作均要由INT13H软中断完成,所以在此后的启动过程中,无论哪个功能模块进行磁盘操作,控制都将首先转到“模拟输入”代码模块。由于分区表和逻辑磁盘表均唯一地存在硬磁盘中,因此支持分区和逻辑磁盘的设备驱动器只能通过读磁盘操作来获得它们。这样无论哪个支持使用硬磁盘的逻辑设备的设备驱动器从硬磁盘上读取那些逻辑设备的说明参数时,“模拟输入”模块均将首先获得控制权。
第13步检查内存中硬磁盘分区表的数据合法性。若非法,转第22步。
第14步在内存中的硬磁盘分区表中寻找活动分区。若找到,转第16步。
第15步在分区表中无活动分区,认为硬磁盘中不存在可使启动的操作系统,执行INT18H软中断,调用ROMBASIC程序。
第16步保存活动分区项的段内位移指针(注意其段地址必须为0000)。
第17步根据活动分区的分区定位表中的数据,将活动分区中的操作系统引导记录读入0000∶7C00开始的内存区中。
第18步若读入过程无错,转第20步。
第19步若出错次数少于5次,转第17步。否则转第22步。
第20步若读入的操作系统引导记录无有效标志OAA55H,转第22步。
第21步转到0000∶7C00处,执行操作系统引导记录。主引导记录的引导工作至此完成。
第22步显示相应的错误信息。
第23步转第23步。死循环。
附图二给出了位于主引导记录中的“模拟输入”代码模块的执行流程。现详述如下第1步功能判断。根据数据区中保存的需要模拟输入的硬磁盘扇区的地址,判断本次INT13H中断的功能是否要读那两个硬磁盘扇区。若不是,转第7步。
第2步保存现场。这是中断处理的例行工作。
第3步将数据区中保存的相应物理扇区的变更过系统指示器的内容拷贝到目的内存(ES∶BX)中。
第4步设置正确的完成标志。由于本次读盘操作是由内存拷贝模拟的,一方面没有由INT13H中断产生的完成标志,另一方面它又是必然会正确完成的。因此,将一固定的“正确完成标志”做为本次读磁盘操作的返回标志,返回给本次INT13H的调用模块。此“正确完成标志”的值,经实验为0246H。
第5步恢复现场。这是中断处理完成时的例行处理。
第6步执行中断返回。退出本次中断操作,返回本次INT13H软中断的调用模块。
第7步本次调用INT13H软中断的任务不是读需要进行模拟输入的硬磁盘扇区,按数据区中保存的INT13H中断处理模块的入口地址,远跳转到原INT13H中断处理模块,以完成本次中断的原功能。完成后,由原中断处理模块控制,直接返回本次中断的调用模块。
附图三是“撤消驻留”代码模块的执行流程。现详述如下。
第1步判断是否截取限了INT13H中断。如前所述,当用户没能正确回答口令时,“驻留”模块并不截取INT13H中断。因此现在必须判明是否截取了INT13H中断,以决定是否应当恢复它。否则,对INT13H中断的误恢复与漏恢复一样可造成INT13H中断无法完成。此问题可以通过检查保存INT13H中断向量的数据区的内容的方法来解决。由于在执行主引导记录时首先将地址0000∶0000填入此数据区,而0000∶0000是系统的中断向量表地址,INT13H中断处理模块的入口地址绝不会取此值,因此若此数据区中的内容是0000∶0000,则说明“驻留”模块未截取INT13H中断,转第3步。
第2步恢复INT13H中断处理模块入口,使“模拟输入”代码模块与软件系统完全脱离。INT13H中断处理模块的实际入口地址保存在数据区中。此地址现在已不应该再存入INT13H中断向量中,而应该存入DOS的数据区中。因为3.00及以上版本的DOS操作系统也截取INT13H中断,对其进行附加处理。因此,此时INT13H中断向量中保存的已不是“模拟输入”代码模块的入口地址了,而是DOS操作系统中对INT13H中断进行附加处理的模块的入口地址。“模拟输入”代码模块的入口地址已被DOS操作系统做为原始的INT13H中断处理模块的入口地址,保存到DOS数据区中了。不同版本的DOS操作系统对数据区的使用也不相同。在3.30版DOS操作系统中,原始的INT13H中断处理模块的入口地址保存在内存的0070∶00B0和0070∶00B4开始的两个内存区域中。也就是说,从“模拟输入”模块的数据区中取得的INT13H中断处理模块的实际入口地址,应分别存入这两个内存区中。
第3步用0覆盖内存中的主引导记录模块及其数据区,以免在内存中遗留有用数据。
第4步退出系统。以0长度返回调用者。“可安装的设备驱动程序”的安装模块,在调用被安装的设备驱动程序的初始化功能模块(“撤消驻留”代码模块就是做为一个“可安装的设备驱动程序”的初始化功能模块被调用的)以后,根据其返回的程序长度为被安装的设备驱动程序分配内存。若返回长度为0,则说明被安装的设备驱动程序不驻留。安装模块便不将它安装进系统,而且将被安装程序则才所使用的内存收回。
实施实例二一题目IBM-PC系列微计算机及其各种兼容机,在PC-DOS和MS-DOS操作系统下的病毒监测系统的保障方法。
二目的现在,计算机病毒由于它的传染性和破坏性,已经成为一个非常重要的问题。有许多攻击IBM-PC系列微计算机及其各种兼容机和DOS操作系统的计算机病毒。它们当中,有的占用大量系统资源,使计算机的使用性能恶化;有的删改可执文件;有的篡改用户数据;有的可造成用户文件大批丢失。这些都可能给用户和系统造成重大损失。因此,计算机病毒的早期发现与消除是十分重要和有意义的。计算机病毒的发现越早,造成的损失就越少;数据的恢复就越容易;病毒的消除就越容易。因此,如何及时、尽早地发现计算机病毒,以避免它的隐蔽传染与破坏所可能造成的损失,已经成为目前计算机安全技术领域中的重要课题。而保护计算机可随机存取的块设备中的文件系统不受计算机病毒的侵害,又是其主要目标之一。
为了达到以上目的,人们研制了许多计算机病毒监测程序。这些程序驻留在计算机内存中,一但发现有病毒进入计算机中可立即报警,有的还可以直接将其消除。因此,系统安装病毒监测程序以后,可以有效地阻止计算机病毒对系统的侵害,保护计算机可随机存取的块设备中的文件系统。
在IBM-PC系列微计算机及其各种兼容机中,硬磁盘做为系统和所有用户共享的可随机存取的块设备,是反病毒系统的保护重点。要想通过计算机病毒监测程序保护硬磁盘中的文件系统,就必须满足“不启动计算机病毒监测程序就不能使用硬磁盘中的文件系统”这一条件。硬磁盘中的文件系统是以逻辑磁盘的方式组织、建立和使用的。因此,对硬磁盘中文件系统的保护,是以逻辑磁盘为单位的;以计算机病毒监测程序做为保护手段时,必须满足以下条件不启动计算机病毒监测程序就不能使用被保护的逻辑磁盘;或者不启动计算机病毒监测程序就不能以逻辑磁盘的方式使用被保护的文件系统所在的物理存储区域。
如前所述,在正常情况下,用自带软盘启动操作系统的用户,可不启动计算机病毒监测程序而照常使用系统的所有逻辑磁盘,因而使得计算机病毒监测系统失效。本保障系统的目的就是克服这个问题。通过加锁使得从软盘启动操作系统的用户,不能以逻辑磁盘的方式使用被保护的硬磁盘上的物理存储区域;通过解锁,使得从硬磁盘启动操作系统的用户,可以以逻辑磁盘的方式使用被保护的硬磁盘上的物理存储区域。以此手段保障计算机病毒监测系统在用户以逻辑磁盘方式使用被保护的文件系统所在的硬磁盘上的物理存储区域以前被启动。
三条件1.一台IBM-PC微计算机,其中装有一台内部物理硬磁盘机。
2.使用3.30版PC-DOS操作系统。
3.在硬磁盘上建有一个基本DOS分区。此分区是活动分区。它所使用的硬盘物理存储区域称为存储区域A。在此分区中安装了可供启动的操作系统和将会(通过系统配置文件CONFIG.SYS或自动启动文件AUTOEXE.BAT或其它方式)自动启动的病毒监测系统(病毒监测系统本身的实现,与本实施例无直接关系)。
4.在硬磁盘上建有一个扩展DOS分区。它所使用的硬盘物理存储区域称为存储区域B。在此分区内建有若干逻辑磁盘。
5.在硬磁盘上已建有四个分区。
6.在硬磁盘上还有一块空闲的不属于任何分区的存储区域。此区域称为存储区域C。
四要求1.只有从硬磁盘启动操作系统的用户才能以逻辑磁盘的方式使用存储区域A和B。
2.只有从软磁盘启动操作系统的用户才能以逻辑磁盘的方式使用存储区域C。
3.本系统只对DOS操作系统有效,而对其它操作系统无影响。
五实施1.加锁(1)对于存储区域A,采用变更存储在硬磁盘中的硬磁盘分区表中的基本DOS分区的“分区定位表”的内容,并用所得结果替换原内容,使得从软磁盘启动操作系统时,支持基本DOS分区的设备驱动器只能得到它的变更过的内容,因而使得此分区不能定位在存储区域A上而只能定位在存储区域C上,从而使得存储区域A不会被从软盘启动操作系统的用户以逻辑磁盘的方式使用的加锁方法。
(2)对于存储区域B,采用变更存储在硬磁盘中的硬磁盘分区表中的扩展DOS分区的系统指示器的内容,并用所得结果替换原因容,使得从软磁盘启动操作系统时,支持扩展DOS分区的设备驱动器只能得到它的变更过的内容,因而使得此分区成为不会被任何设备驱动器所识别、所支持、所使用的“未知设备”,从而使得存储区域B不会被从软盘启动操作系统的用户以逻辑磁盘的方式使用的加锁方法。
通过INT13H中断将硬磁盘的第一物理扇区中的主引导记录读入内存。先将它写入硬磁盘中的扩展DOS分区所拥有的第二个物理扇区中,供解锁过程使用。扩展DOS分区所拥有的第一个物理柱面中的第一个磁道中,只有第一个物理扇区做为扩展分DOS区所拥有的第一个物理扇区存放了逻辑磁盘表。而其中的其它扇区均是未被使用的空闲扇区。写完之后,变更读到内存中的磁盘分区表中的有关数据。先将扩展DOS分区的系统指示器从5改为99H,(99H是任选的一个未被定义的系统指示器的值),再将存储区域C的起始地址、终止地址等有关数据填入基本DOS分区的定位表中。最后再用INT13H中断将内存中的主引导记录写入硬磁盘的第一物理扇区中。
由于基本DOS分区已被定位到存储区域C且任何已知的分区的系统指示器的内容均不为99H,因此在此后按常规启动DOS操作系统时,存储区域A和B均不能被作为逻辑磁盘使用。由于存储区域C未被其它系统使用,且系统指示器为99H的分区也不会被其它系统使用,因此加锁工作对其它系统无影响。
对存储区域A和B的加锁过程到此结束,这是它们的常态。
(3)对于存储区域C,对存储区域A解锁的过程本身,就是对它的加锁过程。
2.解锁(1)对存储区域A和B,采用使得一“模拟输入”代码模块在从硬磁盘启动操作时驻留在内存中,由此代码模块保证操作系统中支持分区的设备驱动器,在从硬磁盘中读取分区表时,所得到的基本DOS分区的定位表的内容是定位到存储区域A而不是C,扩展分区的系统指示器的内容是5而不是99H,因而使得基本DOS分区可以被正确定位到存储区域A,扩展DOS分区可以被正确识别、正确使用,从而使得存储区域A和B可以被从硬磁盘启动操作系统的用户以逻辑磁盘的方式使用的解锁方法。
对存储区域A和B的解锁一次有效。
(2)对存储区域C的解锁。由于存储区域C的常态为“解锁”,对它的加锁是由对存储区域A的解锁过程同时完成的,且此过程是在操作系统启动中动态进行的,因此只要使此过程不工作,即可实现对存储区域C的解锁。
与实施例一中情况相同,解锁过程由“驻留”、“模拟输入”和“撤消驻留”三个代码模块完成。其中“撤消驻留”代码模块与实施例一中完全相同,此处不再重复。“驻留”和“模拟输入”代码模块仍然放在主引导记录的227字节的空闲区中。它们的主要工作原理也与实施例一中相同。
3.执行流程附图三至附图五为本实现例的有关流程,现参照附图一、二对附图四、五分别详述如下。
附图四给出了主引导记录在系统启动时的执行流程。其中第3步是新增的“驻留”代码模块。现结合实施例一和附图一对附图四详述如下第1步寄存器初始化,设置堆栈。
第2步空出标准启动地址0000∶7C00。将主引导记录拷贝到驻留内存区0000∶E000然后转去执行。第一、二步与实施例一完全同。
第3步截取INT13H软中断到“模拟输入”代码模块。本步与实施例一中的第12步相同。
第4~14步与实施例一中(图一)的第13~23步相同,为原主引导记录中的引导功能模块。
附图五给出了位于主引导记录中的“模拟输入”代码模块的执行流程。现结合实施例一和附图二对附图五详述如下第1步功能判断。判断本次INT13H中断的功能是否是读硬磁盘的第一物理扇区。若不是,转第7步。
第2步保存现场。这是中断处理的例行工作。
第3步按分区表中扩展DOS分区的分区表项中保存的扩展DOS分区在硬磁盘上的起始地址,通过INT13H中断将保存在扩展DOS分区所拥有的第二个物理扇区中的原始主引导记录读入内存目的区(ES∶BX)中。
第4步将所得完成标志做为返回标志。
第5步恢复现场。这时中断处理完成时的例行处理。
第6步执行中断返回。退出本次中断操作,返回本次INT13H软中断的调用模块。
第7步本次调用INT13H软中断的任务不是读硬盘第一物理扇区,按数据区中保存的INT13H中断处理模块的入口地址,远跳转到原INT13H中断处理模块,以完成本次中断的原功能。完成后,由原中断处理模块控制,直接返回本次中断的调用模块。
权利要求
1.一种为计算机存储设备加锁的方法,其特征在于采用变更计算机系统中的设备驱动器所能获得的、指定的逻辑设备的说明参数的方法,包括使得被所述的指定的逻辑设备所使用的、计算机系统中的物理存储设备中的指定的物理存储介质,不会被非授权者通过所述的指定的逻辑设备所使用的加锁步骤,以及使得被所述的指定的逻辑设备所使用的、计算机系统中的物理存储设备中的指定的物理存储介质,可以被授权者通过所述的指定的逻辑设备所使用的解锁步骤。
2.如权利要求1所述的方法,其特征在于完全由软件实现。
3.如权利要求1所述的方法,其特征在于所述的物理存储设备中的指定的物理存储介质,是指可以随机存取的块设备中的物理存储介质中的指定的物理存储区域。
4.如权利要求3所述的方法,其特征在于所述的说明参数,是指存储在所述的块设备中的所述的说明参数;所述的加锁步骤,是指变更所述的说明参数,并用所得结果替换存储在所述的块设备中的所述的说明参数,使得所述的指定的物理存储区域,不会被非授权者通过所述的指定的逻辑设备所使用;所述的解锁步骤,是指使得一代码模块在系统启动时驻留在内存中,由此代码模块保证所述的指定的物理存储区域,可以被授权者通过所述的指定的逻辑设备所使用。
5.如权利要求3所述的方法,其特征在于所述的说明参数,是指存储在所述的块设备中的所述的说明参数;所述的加锁步骤,是指使得一代码模块在系统启动时驻留在内存中,由此代码模块保证所述的指定的物理存储区域,不会被非授权者通过所述的指定的逻辑设备所使用。
6.如权利要求3所述的方法,其特征在于所述的计算机,是指IBM-PC系列的微计算机及其各种兼容机。
7.如权利要求6所述的方法,其特征在于所述的可以随机存取的块设备是指硬磁盘。
8.如权利要求6所述的方法,其特征在于所述的指定的逻辑设备,是指建立在所述的块设备中的指定的分区;所述的说明参数,是指说明所述的指定的分区的分区表项中的“系统指示器”。
9.如权利要求6所述的方法,其特征在于所述的指定的逻辑设备,是指建立在所述的块设备中的指定的分区;所述的说明参数,是指说明所述的指定的分区的分区表项中的“分区定位表”。
10.如权利要求6所述的方法,其特征在于所述的指定的逻辑设备,是指建立在所述的块设备中的扩展DOS分区中的指定的逻辑磁盘;所述的说明参数,是指说明所述的指定的逻辑磁盘的逻辑磁盘表项中的“系统指示器”。
全文摘要
一种为计算机存储设备加锁的方法,属于计算机安全技术领域。本发明采用变更计算机系统中的设备驱动器所能获得的,指定的逻辑设备的说明参数的方法。本方法简便易行,不需改动系统硬件,只需根据需要编制出合适的软件即可达到排除非授权者使用指定的存储设备的目的,同时也为防止计算机病毒侵害计算机物理存储介质提供了一种安全可靠的措施。本发明特别适用于使用PC-DOS或MS-DOS操作系统的IBM-PC系列微机及其各种兼容机。
文档编号G06F12/14GK1047577SQ90104529
公开日1990年12月5日 申请日期1990年7月14日 优先权日1990年7月14日
发明者付怡琦 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1