内存部分的保密方法及装置的制作方法

文档序号:6357553阅读:312来源:国知局

专利名称::内存部分的保密方法及装置的制作方法
技术领域
:本发明大致上关于保密,详言之,关于在数据处理系统中,内存部分的保密方法及装置。
背景技术
:对于个人计算机所用的微处理器,通常设计成提供各种不同的可由计算机程序师所使用的硬件保护机构。该等保护机构时常对于执行于个人计算机的操作系统的整合性和保密性非常重要。例如,x86微处理器的架构,提供了操作于区段(segment)和页(page)层级的保护机构。该x86微处理器的区段保护机构一般辨识四个特权层级(privilegelevel),编号从0至3,为从较高的特权层级至较低的特权层级。因此,具有特权层级0的应用软件具有最高的特权,为通常具有实质享有所有资源的全部的权利。x86保护机构提供根据特权层级而限制访问某些区段资料或页资料的能力。举例而言,关键操作系统码及资料可予保护,若较的那些所包含的应用码放置于更具有特权的区段处。微处理器的保护机构仅于受控制、规定的方式,可允许应用码访问操作系统码及资料。通常操作于特权层级0的操作系统,利用硬件保护机构及不同的特权层级来保护其控制下的资源。对于当今所用的操作系统及其相关联的驱动器,具有超过百万条形码线,其意谓着于x86的架构,所有的这些码线将完全访问于所有的计算机资源,这并非很特别的事。亦不必感到吃惊,现用的及新的操作系统的庞大架构及复杂性,已达成具有保持系统的整合和保密性的挑战技能。对于当今大的及通常复杂的操作系统的确保免于保密缺失(或其它的错误),那是很困难的事。这些保密上的缺失,相继使由操作系统所管理的资源置于风险中,并开放整个操作系统及平台可受病毒或其它不怀好意的程序的攻击。例如,x86架构不提供对内存部分的读取和写入保护的机构。而现今使用者,系利用页表对于所选择的内存的区域提供写入保护,但是并不存在有对内存的该等区域提供读取保护的等效机构。因此,可能对于不怀好意的程序创造了新的页表写映以防止写入保护。也就是说,操作于0特权层级的程序,由首先创造的假页表其能够写映至受保护的内存区的实际地址,然后更新其表登入项目而使受保护的内存区域能够写入,因而对受保护的内存区能够予以访问。程序因此可未经授权而访问于内存区。本发明有关于克服,或至少减少了一个或多个上述问题的影响。
发明内容于本发明的一个概念,提供了一种内存部分的保密方法。该方法包括识别用来保护的信息,并指示至少一个内存的实际地址,该内存存放了作为禁止读取和写入的至少其中一个的信息。该方法包括接收从程序来欲访问信息的请求。该方法更包括反应于判定程序有授权可访问信息而访问信息。于本发明的另一个概念,提供了一种内存部分的保密装置。该装置包括含有特权码的内存。该特权码能够接受保护选择的信息的请求,并指示至少一个内存的实际地址,该内存存放了作为禁止读取和写入的至少其中一个的信息。该特权码能够接受从程序来欲访问信息的请求。该特权码更能够反应于判断程序有授权可访问信息而访问信息。由阅读下列的详细说明,并参照所附图式,本发明的上述和其它优点将变得更为清楚,各图中相同的元件用相同的参考号码,其中图1为显示依照本发明的计算机系统的实施例的方块图;图2绘示可使用于图1的计算机系统的处理器的一个实施例;图3绘示范例指令的列表,该指令可以是图1的计算机系统中的特权;图4为显示依照本发明的可使用于图1中的计算机系统的方法;图5为显示用来保护于图1中的计算机系统的内存的所选择内存位置的例表;以及图6为显示依照本发明可由图1的计算机系统所使用的方法。虽然本发明可容易作各种的修饰和替代形式,且已用参考图式举例说明的方式而详细说明了本发明的特定实施例。然而,应该了解到此特定实施例的说明并不欲作为限制本发明为所揭示的特定形式,反之,本发明将涵盖所有落于权利要求范围内所界定的本发明的精神和范围内的修饰、等效和替换。具体实施例方式下文中将说明本发明的范例实施例。为了清楚起见,本说明书中并未将所有实际施行本发明的特征均作了说明。然而应了解到,在开发任何此种真实的实施例时,必须作出许多与实施相关的决定,以便达到发明者的特定目标,譬如符合随着实施例的不同而有所变化的与系统相关及与商业相关的限制条件。此外,我们应当了解,此种开发工作可能是复杂且耗时的,然而,仍将是一种对此项技艺具有一般知识者在参阅本发明揭示事项之后可从事的例行工作。兹参照各图式,图1显示了例示的计算机系统100。计算机系统100包括处理器105、北桥110、内存115、周边元件互接(PCI)总线125、南桥130、AT附接(ATA)界面(更通称为整体驱动电子(IDE)界面)135,工业标准架构(ISA)总线145、输入/输出(I/O)控制器芯片150、键盘和鼠标控制器(KBC)界面、软盘控制器(FDC)界面、X总线155、和只读存储器(ROM)160。北桥110和南桥130可以是单一芯片或多个芯片的一部分。虽然并没有限制,但于所示实施例中处理器105可以是x86处理器。x86处理器的架构说明于文献标题为″英特尔架构软件研发者手册″第三卷,其并合本案以为全盘参考。依据所需要实施的情形,计算机系统100可包括其它的总线、元件、和/或系统。举例而言,计算机系统100可以包括高速缓存、调制解调器、并联或串联界面、SCSI界面、网络界面卡、等等。于示范实施例中,处理器105包括第一和第二缓存器162、164,该第一和第二缓存器162、164界定了存有超级特权码的内存的区域。如以下的更详细说明,依照本发明的超级特权码可包括一组具有高保密层级,可以控制访问于计算机系统100的所选择的计算机指令。处理器105耦接到北桥110。北桥110提供了处理器105、内存115、和PCI总线125之间的界面。南桥130提供PCI总线125和周边、装置、和耦接到IDE界面135的次系统、ISA总线145、和X总线155之间的界面。I/O界面150耦接到ISA总线145。北桥110提供处理器105、内存115、耦接到PCI总线125的装置、和耦接到南桥130的装置和次系统的二者或多者间的连接访问。一般而言,可移动的周边装置插进入连接到PCI总线125,耦接到计算机系统100的PCI″槽″(未显示)。或可取而代之,位于母板上的装置,可直接连接到PCI总线125。南桥130提供PCI总线125和各种不同的装置和次系统,尤其是譬如调制解调器、打印机、键盘、鼠标等,通常经由X总线155、ISA总线145、和最近所用的IDE界面135而耦接到计算机系统100的遗留装置(legacydevices)之间的界面。南桥130包括经由IDE界面135、ISA总线145、和X总线155,而将遗留装置界接于计算机系统100的其余的装置的逻辑。譬如硬盘的储存装置175,系耦接到IDE界面135。储存装置175可有一个或多个操作系统(OS)、装置驱动器、和其它储存于其中的应用程序。于x86架构,操作系统和其相关联装置驱动器通常操作于特权层级0,允许OS和装置驱动器访问系统100的各种不同资源。可以安装于储存装置175的操作系统的一个例子是窗口(Windows),现正由微软(Microsoft)公司提供使用中。Windows操作系统通常装运于譬如用于储存装置175、I/O界面150等的装置驱动器之用来控制系统100资源的各种不同的装置驱动器。此外,可藉由Windows操作系统而使用第三部分装置驱动器。ROM160可包含基本输入/输出系统(BIOS),该BIOS管理执行于计算机系统100和所附接的装置譬如储存装置175、输入/输出界面150等的操作系统之间的管理资料流。于本发明的一个实施例中,超级特权码(SPC)可以储存在ROM160中,以使得当计算机系统100开机后,SPC与BIOS于实质相同的时间起始。虽然于所示实施例中超级特权码(SPC)是存放于ROM160中,但是应可注意到,SPC亦可存放于其它地方,包括于处理器105中的区域内存(未显示)、于储存装置175中、由SPC可执行的任何其它适当的内存地址。于一替代实施例中,SPC可施行为操作系统的一部分,于此情况SPC将最可能储存于储存装置175中。兹参照图2,显示处理器105的特定实施例。详言之,于图2中处理器105为x86处理器。处理器105的处理器105的架构支持多个作业模式,包括保护模式、实时地址模式、和系统管理模式。保护模式为处理器105的固有作业模式。于保护模式中,可以使用处理器105的所有指令和特征。实时地址模式提供英特尔(Intel)公司8086处理器的程序作业环境,而系统管理模式提供具有执行电源管理和OEM不同特征的透明机构的操作系统。如图2中所示,处理器105包括总体描述符表(globaldescriptortable,GDT)210、区域描述符表(LDT)215、任务状态区段(task-statesegment,TSS)220、中断描述符表(IDT)225、IDT缓存器230、5个控制缓存器235(a-e)、和任务缓存器240。当操作于保护模式时,实质上所有的内存通过GDT210或(可选用之)LDT215其中之一进行访问。GDT210和LDT215包含称之为区段描述符的登入项目(entry)。区段描述符提供区段的基部地址和访问权、型式、和使用信息。各区段描述符具有提供指针进入GDT210或LDT215的相关区段选择器。TSS220定义执行任务环境的状态。TSS220包括一般目的缓存器(图中未显示)状态、区段缓存器、E旗标(EFLAGS)缓存器245、区段选择器、三个堆栈区段的堆栈指示器(其中一个堆栈各对于特权层级0、1、和2)。TSS220亦包括相关于任务和页表基础地址对于LDT215的区段选择器。任务缓存器240拥有区段选择器、基部地址、区段限制、和用于目前任务的TSS220描述符属性。任务缓存器240参考于GDT210中的TSS描述符,其中基部地址特定TSS220的线性地址,区段限制特定于TSS220中的字节数目。LTR和STR指令分别加载并储存任务缓存器240的区段选择器部分。当LTR指令加载于任务缓存器240中的区段选择器,则从TSS描述符来的基部地址、限制和描述符属性可自动地加载任务缓存器240。当任务交换发生时,任务缓存器240自动加载对于新任务的TSS220的区段选择器和描述符。在将新的TSS信息写入缓存器240之前,任务缓存器240的内容不会自动储存。IDT225操控外部中断、软件中断、和异常事项。IDT225包含了栅极描述符的收集,该等栅极描述符提供对中断和异常事项操控器的访问。于IDT225中的栅极描述符能够是中断栅极、捕获栅极、或任务栅极型式。处理器105依于接收从内部硬件、外部中断控制器、或从软件来的中断向量,而访问中断或异常事项操控器。如同GDT210,IDT225并非是一个区段。IDT225的基部的线性地址系包含于IDT缓存器(IDTR)230中。控制缓存器235(a-e)决定处理器105的操作模式,和现正执行任务的特征。控制缓存器235(a-e)包含各种用于控制系统层级操作的旗标和资料场。详言之,CR0缓存器235a包含控制处理器105的操作模式和状态的系统控制旗标。CR1缓存器235b予以保留。CR2缓存器235c包括页缺陷线性地址。CR3缓存器235d,其通常称之为页目录基部缓存器,包括页目录250的基部的实际地址和二个旗标。此二个旗标控制于处理器105的内部资料快取(图中未显示)的页目录250的快速访问。CR4缓存器235e包含一群可使几个架构延伸的旗标。处理器105的x86架构,能够支持内存115(请参阅图1)或虚拟内存(经过划分页面)的直接实际寻址。当使用实际寻址时,线性地址处理为实际地址。当利用划分页面时,则实质上所有的码、资料、堆栈、和系统区段及GDT210和IDT215皆能划分成页。于实际内存115中页的位置,包含有高达4种型式或层级的系统数据结构。划分成页资料的基部实际地址包含于控制缓存器CR3235d中。对于划分成页,线性地址分割成多个部分,提供分离的偏移于每一个别的划分成页表,和页框260中。于图2中所示的范例实施例中,显示了一个二阶层系统数据结构。于页目录250中的登入项目,包含了页表255的基部的实际地址、访问权、和内存管理信息。于页表255中的登入项目,包含了页框的实际地址、访问权、和内存管理信息。页目录250的基部实际地址系包含于控制缓存器CR3235d中。于图2中所示的范例实施例中,对于划分成页,线性地址分割成三个部分,提供分离的偏移于页目录250、页表255、和页框260中。依照本发明,超级特权码(SPC)包括一系列的″超级特权″指令,该等指令可以由具有访问此等指令的呼叫程序所执行。此处使用术语″程序″作为对于譬如程序、功能、例行例程等的逻辑单元或区块码的一般术语。因此,举例而言,″程序″可以是操作系统或任何其它的应用程序。对于选择的SPC指令的限制访问增加了对计算机系统100的保密层级,该对于计算机系统100的保密并没有表现在现在使用的计算机系统中。也就是说,由于本发明的研发成功,操作于0特权层级的程序(例如操作系统、相关装置驱动器等),不能够自动获得访问于系统100的资源。取而代之,如下列的更详细说明,本发明的SPC可以选择地允许不同的特权至不同的程序操作于0特权层级。图3显示″超级特权″指令330和允许至具有授权行使这些指令程序的相关访问权325的范例列表。举例而言,登入项目350仅说明操作系统具有授权访问CR3缓存器235d。因此,当由非操作系统(OS)的程序请求访问CR3缓存器235d将遭到否决时,若操作系统企图访问CR3缓存器235d,则SPC将允许完成该访问。此SPC允许选择的程序执行超级特权指令330的机构,将更详细说明于下列图4中。应注意者,图3中所说明的访问权仅是作例示目的用。于此技艺方面的技术人员将了解到,访问权325和选择的特权指令330,能够特定实施,而因此可变化从一个实施例至另一个实施例。登入项目360显示操作系统及其具有访问至GTD210的相关装置驱动器,而登入项目365显示于0特权层级的任何应用软件操作已访问至IDTR230。登入项目370描述具有访问至任务缓存器240的操作系统和装置驱动器。图4显示可以由图1的计算机系统100使用的方法。图4的方法开始于方块步骤410,其中当计算机系统100开启后,起始SPC。于起始过程期间,SPC写入处理器105的第一和第二缓存器162、164中,以定义存放在SPC中的保护的内存区域。应注意者于一替代实施例中,替代的二个缓存器162、164,可以用一个缓存器而界定保护的内存区域。也就是说,可以使用单一个缓存器以识别内存区域的开始地址,同时可以使用预先选定的偏移值以定义放置在SPC中内存区域的结束地址。二个缓存器162、164一旦经写入后,定义存放着SPC的保护的内存区域。保护的内存区域可以定义于ROM160中的内存115中,或任何可以执行SPC的其它储存区域。若缓存器程序化指示于内存115中的内存区域,然后SPC复制其本身至由二个缓存器162、164所界定的受保护的内存区域,于该缓存器162、164中SPC系与所有的其它程序遮蔽开。于一替代实施例中,SPC可程序制作该二个缓存器162、164,仅指示ROM160中SPC于初始存放的位置。于此例中,其后可以直接从ROM160执行SPC,虽然希望有较快速的性能从内存115执行SPC。于方块步骤420,当一个程序(例如操作系统)企图执行指令,则于方块步骤430处理器105判定是否指令是选择之为SPC一部分的特权指令(请参阅图3的330)的其中一个。若该指令不是特权指令330的其中一个,则于方块步骤435,处理器105允许完成此指令。然而,若由程序执行的指令为特权指令330的其中一个,则于方块步骤440,处理器105产生一个例外。于方块步骤450,SPC捕获由处理器105所产生的例外。于方块步骤460,SPC判定是否企图执行特权指令的程序具有适当的访问权。至呼叫程序的访问权,例如可以是如图3所示之以程序为基础的方式。欲确认此呼叫程序,于一个实施例中,SPC根据呼叫程序的地址而参照堆栈。或者,可以使用例如Soft-Ice的大众可取用的除错器,来鉴定呼叫程序的地址。若呼叫由授权执行特权指令的程序发出,则于方块步骤465,SPC执行此特权指令。根据程序的标号(signature),SPC能够鉴定呼叫程序,该标号系于呼叫程序植入期间植入的假设号。例如,若呼叫程序为操作系统,则该操作系统于植入期间由假设而产生的标号,可于后来使用于鉴定由操作系统所产生的呼叫。若于方块步骤460,SPC判定呼叫程序没有访问特权指令,则于方块步骤470拒绝此请求。可以几种理由拒绝访问特权指令。第一,若呼叫程序没有至特权指令的访问权,则可以拒绝执行此特权指令的呼叫程序。第二,若SPC不能证明呼叫程序的确实性,则可拒绝至特权指令的访问。也就是说,即使呼叫程序可以有访问权以请求特权指令,但是若SPC不能用堆栈证明的话,则其请求仍可遭到拒绝,此堆栈事实上系经过授权的企图执行特权指令的呼叫程序(相反于伪装作为呼叫程序的不怀好意的程序代码)。为较佳地显示图4的方法,于此处提供了一个例子。为了显示的目的,兹假设于方块步骤420操作系统企图修正CR3缓存器235d。更进一步,为了此显示的目的,兹假设SPC包含了图3的特权指令330,以及假设列出于图3的程序有至特权指令330的访问权。于方块步骤430,处理器105判定是否访问CR3缓存器235d的是特权指令,以及因此依照图3,其为,处理器105于方块步骤440产生了一个例外。于方块步骤450,SPC捕获于步骤440由处理器105所产生的例外。然后于方块步骤460,SPC判定是否操作系统(即呼叫程序)具有修正CR3缓存器235d的访问权。允许CR3缓存器235d修正之前,SPC首先须验证欲修正CR3缓存器235d的起始请求事实上是由操作系统为之。鉴定操作系统的请求的方法,系参照堆栈。兹假如由堆栈的地址确认其为事实上发出请求修正CR3缓存器235d的操作系统,则于方块步骤460,SPC执行该指令以修正该CR3缓存器235d。当SPC执行该指令修正CR3缓存器235d时,处理器105将完成请求而不会产生一个例外,因为该请求系由经授权以修正特权指令的SPC所提供。依照本发明,处理器105根据内存的实际地址,维持读取/写入保护表。图5显示读取/写入保护表的范例。超级特权码更新相关于保护表510的内存地址的读取和写入保护指示器。于一个实施例中,保护表510可以是一个读取/写入保护位图。图5显示内存115的位置515的各实际地址,包含了读取栏520、写入栏530、和访问栏540,然而于此技艺方面的相关技术人员可以了解到于其它的实施例中可以依于施行的需要而使用额外的栏或较少的栏。读取栏520指示是否个别的内存位置515为致能或禁能读取,而写入栏530指示是否个别的内存位置515被致能或禁能写入。访问栏540识别经授权以访问个别的内存位置515的程序。举例而言,内存位置1000至1003可以仅由操作系统访问。虽然图5显示具有关联于内存位置515的个别读取栏520、写入栏530、和访问栏540的各内存位置515,但是其中可期望此等字段可以是关联于内存位置的区块,而不是相关的个别的内存位置。系统100(参看图1)亦可使用图6的方法,以保护内存115的选择的区域。图6的方法开始于方块步骤610,其中程序(例如操作系统、装置驱动器)指定用于保护的资料或信息的选择的部分。于一个范例中,操作系统(即程序)可以识别存放有要求保护的IDT225的内存的区域。欲保护IDT225,操作系统要求SPC记注存放有IDT225的相关的内存位置515,像是读取禁能和写入禁能,其中之一或二者,依于寻求保护的型式而定。于方块步骤620,SPC更新对应于内存115的区域的保护表510(参照图5),该内存115存放着寻求由程序保护的资料或信息。也就是说,SPC记注像是读取禁能、写入禁能,或者是二者的内存区域。于一个实施例中,仅允许SPC修正保护表510,藉此防止未经授权的程序,譬如病毒,获得访问内存115的保护区域。于一替代实施例中,SPC允许具有至受保护的内存区域的访问权的程序,故可直接修正保护表510。举例而言,于图5中,因为操作系统具有访问至内存位置1000至1003,则SPC将允许操作系统修正对于这些位置515的读取和写入访问权。SPC能够证明其为如上述的使用堆栈寻求修正保护表的真正的操作系统(而不是一些不怀好意的程序)。于方块步骤630,程序请求访问至受保护的内存位置515,以及于方块步骤640,SPC判定程序是否有访问至受保护的内存位置515。若内存位置禁能读取和写入,则呼叫程序能够既不写入也不读取受保护的内存位置515的内容。读取保护可防止不怀好意的程序访问受保护的内存,即使程序欲建立一个伪装的页表登入项目写映到受保护的内存位置515。于方块步骤640,若SPC判定呼叫程序未访问至受保护的内存,则于方块步骤640SPC拒绝请求。若于方块步骤640,SPC判定呼叫程序已访问,则SPC允许完成访问。于一个实施例中,访问权可如图5中的定义。指定访问权至内存位置515,或替代地至内存区,允许本发明防止未经授权的内存访问。程序不能再藉由建立伪装的页表和标记相关联的如写入致能的内存而轻易地规避现存的保密机构。藉由控制于实体层的访问,本发明使得很难藉由首先写映虚拟页至受保护的内存位置,并然后指示受保护的内存写入致能于伪装的页表登入项目,而程序制作获得未经授权的访问。可以藉由本发明而保护一个譬如IDT、GDT、LDT的变化表。此外,亦可藉由本发明而保护其它的譬如加密键等的特征。经由阅读本说明书而了解本发明后,本技艺方面的一般技术人员应了解到,上述的说明可以有许多的变形,而不会偏离此处所说明的本发明的观念。因此,以下提出本发明的权利要求,而本申请权利要求不仅是前述的说明,而且是用以界定发明的专用权。权利要求1.一种用来提供计算机系统(100)中保密的方法,包括识别用来保护的信息;指示一个内存(115)的一部分,该内存存放了至少可读取或不可读取的信息;接收从程序来欲访问该信息的请求;以及基于判定该程序是否有授权可访问该信息,而访问该信息。2.如权利要求1所述的方法,其中指示至少一个该内存的实际地址包括根据对应于与该内存(115)的该部分有关的实际地址的登入项目,生成一个表;以及将访问权分配到在该表中对应于与该内存(115)的该部分有关的实际地址的登入项目中。3.一种用来提供保密的方法,包括写入至少一个缓存器以定义特权的内存区域;定义至少一个计算机指令作为特权指令,其中该特权指令储存在该特权的内存区域;识别用来保护的信息;分配至少一个内存的实际地址,该内存储存了至少一个读访问权信息;以及基于分配的访问权,使用该特权指令控制对该信息的访问。4.如权利要求3所述的方法,进一步包括分配至少一个内存的实际地址,该内存储存了至少一个写访问权的信息。5.如权利要求4所述的方法,其中分配内存(115)的至少一个实际地址包括生成一个表,该表具有内存(115)的一个或多个实际地址的登入项目的至少一个;以及指示该表的该登入项目中与内存(115)的实际地址有关的访问权。6.一种用于提供安全的装置,其特征在于,该装置包括内存(115);与内存耦接连通的处理器(105),该处理器(105)适于识别内存(115)的至少一部分,该内存储存了至少一个写保护信息;接受从一个程序中来的欲访问储存在内存(115)的该部分中的信息的请求;以及基于确定该程序具有访问该信息的授权,允许访问该信息。7.如权利要求6所述的装置,其中处理器(105)适于生成一个表,该表具有一个或多个登入项目,该登入项目与内存(115)的该部分的实际地址有关;以及将登入项目中读写访问和访问权的至少一个指示为存储于内存(115)的该部分的信息。8.如权利要求7所述的装置,其中该程序是操作系统。全文摘要本发明提供一种用于保密内存的部分的方法及装置。本方法包括用以保护和指示至少一个存有读取和写入禁能的至少其中之一的信息的内存的实际地址识别信息。本方法包括接收从程序来的请求以访问信息。本方法更进一步包括反应以判定程序有授权访问信息而访问信息。文档编号G06F12/14GK1511286SQ02810341公开日2004年7月7日申请日期2002年2月1日优先权日2001年4月4日发明者G·S·斯特龙金,B·C·巴恩斯,R·施密特,GS斯特龙金,巴恩斯,芴申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1