本发明的一个实施例是一种独特的入侵检测技术。其他实施例包括用来检测计算机系统入侵的独特方法、系统、装置和设备。
本发明的另一个实施例包括:改变计算机程序的一个或多个指令的内容,并且当执行该计算机程序时,将所述一个或多个指令当中的每一个恢复到其所述改变之前的内容。在执行该计算机程序的过程中,可以通过检测到由不同程序提交至少一个不正确形式的指令以用于执行来检测该不同程序的入侵。例如,这种不正确形式可以是相对于执行所述计算机程序的一个或多个处理器或处理装置而言的保留指令类型或者无效指令类型。
本发明的另一个实施例包括一种存储计算机程序的装置,该计算机程序包括多个指令,其中每一个指令具有依照一种指令转换的改变形式的内容,其被设置成在利用处理器执行该计算机程序的过程中检测不同程序的入侵。在执行之前,可以由所述处理器根据关于所述转换的信息将所述已改变形式的指令恢复到未改变形式。所述未改变形式的指令各属于用于该处理器的可执行指令集,而至少一部分所述指令的已改变形式不属于用于该处理器的该可执行指令集并且/或者是保留类型或无效类型。这里使用的“可执行指令”一词指的是在由处理装置执行时用来执行所需操作的指令格式,并且排除由该处理装置视为不适当的任何指令格式,其中包括(但不限于)被指定为用于该处理装置的保留类型或无效类型的任何指令。
本发明的另一个实施例包括一种具有指令转换逻辑的处理装置,其用来改变计算机程序的一个或多个指令的内容,并且在这种改变之后存储该计算机程序。该处理装置还包括解码器,其响应于该转换逻辑将所述一个或多个指令恢复到改变前的内容。该处理装置在由该解码器进行恢复之后有效地执行所述指令,并且基于由不同程序提交不正确形式的指令以用于由该处理器执行来指示该不同程序的入侵。在这里使用的“逻辑”一词广泛地包括组合操作和/或时序操作,并且可以具有硬件、软件、固件或其组合的形式。
另一个实施例是一种技术,其包括:将计算机程序的一个或多个指令的内容从未改变形式改变到已改变形式,以便检测不同程序的入侵。所述一个或多个指令当中的每一个的已改变形式属于用于处理装置的可执行指令集,而所述一个或多个指令的至少一部分的已改变形式不属于该可执行指令集。替换地或附加地,相对于其未改变形式,所述一个或多个指令的至少一部分的已改变形式不执行该计算机程序的预定操作。所述技术还包括:在利用该处理装置执行之前,将已改变形式的所述一个或多个指令当中的每一个恢复到未改变形式。所述恢复可以由该处理装置作为用来执行所述计算机程序的指令解码的一部分来执行。
另一个实施例包括一种具有处理器可执行信息的装置,其用于指示一个或多个处理器将计算机程序的一个或多个指令的内容从未改变形式改变到已改变形式,以便于检测入侵程序。所述一个或多个指令当中的每一个的已改变形式属于所述一个或多个处理器的可执行指令集,而所述一个或多个指令当中的每一个的已改变形式不执行该计算机程序的预定操作。替换地或附加地,所述一个或多个指令当中的每一个的已改变形式不属于所述一个或多个处理器的该可执行指令集,而例如是保留指令类型或无效指令类型。所述处理器可执行信息有效地指示所述一个或多个处理器在执行之前将已改变形式的所述一个或多个指令恢复到未改变形式。
根据下面提供的附图和具体描述,本发明的其他实施例、形式、方面、益处、优点和特征将变得更为明显,其中:
为了便于理解本发明的原理,下面将参考附图中说明的各实施例,并且将使用特定的语言对其进行描述。然而应当理解的是,本发明的范围并不限于所述实施例。本领域技术人员可以设想对所述实施例的任何改变和进一步修改,并且可以设想这里描述的本发明原理的任何其他应用。
图1示出了计算机系统20。该计算机系统20包括至少一个处理器22,其或者被表示为处理装置24。处理装置24耦合到计算机总线26,并且相应地耦合到几个不同的存储器装置。具体来说,非易失性文件存储器32、可移动存储器装置34以及程序执行存储器36通过总线26耦合到处理装置24。如图所示,程序执行存储器36还具有到处理装置24的另一个专用连接。总线26还通过适当的设备(未示出)耦合到计算机网络38,比如适当的接口装置、路由器、网络集线器、防火墙装置等等。计算机网络38可以是局域网(LAN)类型、城域网(MAN)类型、广域网(WAN)类型(包括因特网)或其组合,这里只举出几个例子。
处理装置24包括指令解码器42、已解码指令执行逻辑44和指令转换逻辑50,下面将会进一步描述。处理装置24可以具有RISC、CISC或者任何其他种类的一个或多个控制器或处理器的形式。处理装置24可以由集成在单个单元中的一个或多个部件组件,或者可以具有以适于其操作的方式耦合在一起的一个或多个远程单元的形式。此外,处理装置24包括所需的支持组件,比如电源、直接存储器存取控制器、输入/输出控制器、通信部件、操作员输入/输出装置以及本领域技术人员可以想到的其他装置。
指令解码器42是装置24的处理逻辑的一部分,其响应于所提交的用于执行的指令。解码器42用于将多比特指令格式转换成多种信号,所述信号由已解码指令执行逻辑44利用,以便执行与该指令相对应的所需操作。执行逻辑44可以(但是不必)包括一个或多个算术逻辑单元(ALU)、通信逻辑单元以及/或者执行各种操作所需的此类一个或多个执行逻辑或逻辑单元。当存在多个逻辑单元时,本领域技术人员可以想到将它们并行设置以及/或者以流水线方式设置,以便执行所需操作。
非易失性文件存储器32可以是电磁盘、磁带或者卡带的形式,本领域技术人员可以想到电可重新编程的固态类型非易失性存储器(比如闪存)以及其他种类。可移动存储器装置34例如可以是软盘、卡带或者磁带形式的可移动电磁记录介质,CD或DVD类型的可移动光盘,电可重新编程的固态类型非易失性存储器(比如智能卡)或可移动存储器卡带,以及本领域技术人员可以想到的其他种类。程序执行存储器36是加载有计算机程序指令的存储器类型,所述指令将由处理装置24执行。程序执行存储器36典型地是随机存取存储器(RAM)类型的固态电子存储器。替换地或附加地,程序执行存储器36可以由一个或多个不同类型构成,正如本领域技术人员可以想到的那样。在不同的实施例中,程序执行存储器36可以部分地或完全地与处理装置24集成在一起,或者可以与之完全分离。在其一种形式中,存储器36包括相关的高速缓冲存储器。
下面将描述计算机系统20的各操作方面。计算机系统20用于执行计算机程序,所述计算机程序已经被改变成适于由编译器或解译器执行的格式。一般来说,二进制格式适用于这种目的。起初,这些计算机程序一般被存储在文件存储器32或可移动存储器装置34中。然而,在执行之前,在处理装置24的指导下,将被使用的计算机程序被至少部分地加载到程序执行存储器36中。为了在计算机程序的执行期间检测入侵程序,装置24利用指令转换逻辑50定制其自己的指令集以便改变至少一些指令,从而这些指令将不会以预定方式执行,除非将它们恢复到先前的未经改变的状态。
参考图2和图3,其中结合处理过程120描述了利用计算机系统20来实现入侵检测的一种模式。在操作122中,选择将要由处理装置24执行的计算机程序,并且对该程序的至少一部分指令进行转换。所述转换把受到影响的指令的内容从未经改变的原始格式改变到改变格式,该操作至少部分地由处理装置24的指令转换逻辑50来执行。指令转换逻辑50包括寄存器52,所述寄存器当中的一个或多个被用来根据一个密钥52a形式的多比特值配置指令转换。密钥52a可以被存储在一个或多个存储器52中。如图2和图3所示,一种形式的指令转换是利用“异或(XOR)”逻辑53执行的,其在密钥52a的各比特和每个指令的多比特表示之间执行逐比特的异或逻辑运算。所提交的用于逻辑53的异或转换的每个指令被表示为“指令输入”54,并且其异或结果或输出被表示为“指令输出”56。异或逻辑函数是一种形式的二进制布尔比较。具体来说,如果来自密钥52a和“指令输入”54的相应位置的二进制输入比特不同(1和0,或者0和1),则该异或函数输出1,否则输出0(其中密钥和“指令输入”的输入比特位置都是0,或者都是1)。以8比特长度为例,对于密钥52a的值10010010和“指令输入”54的值01100010,由于XOR逻辑53的异或运算,“指令输出”56的值为11110000。当然,本领域技术人员可以想到,在定义所述指令和相应的密钥时可以使用更多或更少的比特。一般来说,在处理过程120的操作122中,利用XOR逻辑对将要用于执行的程序的所有指令进行转换。
在一种优选形式中,密钥52a的值是静态的,其在操作122中对于所提交的用于转换的每个指令保持相同。在一种更为优选的形式中,该密钥随时间动态改变。在这种更优选形式的一个非限制性实例中,该密钥根据分时操作系统所预定执行的处理来动态地改变该密钥。在一种更优选形式中,该密钥随着所提交的用于执行的指令的地址而动态改变。在这种更优选形式的一个非限制性实例中,当前正被执行的指令的地址被用作该动态密钥。转换逻辑50还包括控制/配置逻辑60。控制/配置逻辑60指导对于每个指令的转换操作122,并且适当地路由相应的信息和信号。控制/配置逻辑60响应于至少其中一个寄存器52中的信息来启用/禁用转换、确定所使用的密钥来源、确定使用静态密钥还是动态密钥、确定将对所有指令进行转换还是仅对指定的一部分指令进行转换以及/或者确定将与逻辑50的操作相结合地使用的其他配置和操作特征(如果有的话)。
应当理解,转换之前的指令的原始内容一般属于一个用于处理装置24的可执行指令集。然而,一旦利用XOR逻辑53执行了转换,这些指令一般将不执行所述计算机程序的预定操作,除非将其恢复到原始的未经改变的内容。实际上,由转换产生的经过改变的指令内容一般将使得至少一些(如果不是全部的话)指令无法执行,以及/或者将所述指令变成处理装置24的保留类型或无效类型。还应当理解,执行操作122导致实现装置24的一种转换处理,其可以被反转以便恢复原始的未经改变的指令内容,前提是处理装置24可以获得/保留关于所述转换处理的足够信息。
处理过程120从操作122继续到操作124。在操作124中,存储利用逻辑50转换的计算机程序。在一个优选实施例中,在操作124中将来自操作122的具有改变的指令内容的计算机程序存储在非易失性文件存储器32中。在一个更为优选的实施例中,在操作124中将来自操作122的具有改变的指令内容的计算机程序存储在可移动存储器装置34中。在一个更优选实施例中,在操作124中将来自操作122的具有改变的指令内容的计算机程序至少部分地存储在程序执行存储器36中。在其他优选实施例中,可以将经过改变的计算机程序存储在不同的存储器类型中(未示出)以及/或者将其存储在超过一类存储器中。应当理解,存储在非易失性文件存储器32或可移动存储器装置34中的经过转换的计算机程序随后被至少部分地加载到程序执行存储器36中,以便在所示实施例中由装置24执行。
继续到操作126,在从程序执行存储器36执行所述计算机程序时,恢复在操作122中改变的原始指令内容。对于结合图3描述的指令转换逻辑50的配置,通过重复所述异或运算,所述恢复操作将指令内容从已改变形式转换到未改变形式。很明显,在使用相同的密钥时,异或运算是可逆的。对于先前描述的8比特实例,对于密钥值10010010和已改变指令11110000的逐比特异或得到结果01100010,这与该指令的未经改变的原始内容相同。利用指令解码器42由处理装置24内部执行操作126。
一旦被恢复之后,在操作128中,可以由解码器42按照标准方式对指令进行解码并且由已解码指令执行逻辑44执行该指令。如果存在未被改变的指令,则这些指令被原样识别,其由解码器42直接解码并且随后利用逻辑44来执行。处理过程120从操作128继续到条件130,以便测试是否已经尝试了不正确指令执行。本领域技术人员可以看出,条件130可以利用解码器42、逻辑44以及/或者装置24的其他逻辑来实现。如果条件130的测试结果是肯定的,则操作132响应于该不正确指令而执行一个处理陷阱(process trap)。一般来说,该不正确指令是保留形式或者无效形式的指令,其不在用于处理装置24的可执行指令类型的集合当中。
由于在操作126中反转了操作122的转换,因此原始程序按照预定方式执行。然而,当一个不同程序在该预定计算机程序的执行期间通过堆栈或缓冲器溢出等等而入侵时,该不同程序的至少一些指令很可能被该解码/恢复操作126改变,从而将提交不正确指令,并且通过执行操作132的陷阱来指示。该不正确指令的形式/内容一般不被包括在用于处理装置24的可执行指令集中,而是具有处理装置24的保留格式或无效格式。处理过程120在操作132之后停止并返回。结果,处理装置24可以实施所需的检查/扫描/诊断例程,以便进一步分析操作132的陷阱发生的原因,并且相应地检测该不同程序的入侵。
另一方面,如果条件130的测试结果是否定的,则处理过程120继续到条件140,该条件140测试是否将执行另一个指令以作为将要执行的计算机程序的一部分。如果条件140的测试结果是肯定的,则控制返回到操作126,以便恢复所需要的下一个指令。如果条件140的测试结果是否定的,则处理过程120以正常方式停止并返回,直到再次被调用。
参考图4,其中通过入侵检测处理过程220说明另一个实施例,其可以利用计算机系统20来实现。处理过程220开始于在操作222中指定计算机程序。对于操作222,通过替换将程序指令选择性地转换成保留指令格式和/或无效指令格式。相应地,操作222的该替换转换导致某些指令具有改变的内容。当利用计算机系统20来实施处理过程220中,所述替换可以由转换逻辑根据在一个或多个寄存器52中提供的信息来执行,其由处理装置24定义为对转换逻辑50的替换方案或补充。在一种形式中,一个寄存器包含多个比特,其中每个比特指定将用某种类型的保留指令格式或无效指令格式来交换特定类型的指令。其他由寄存器存储的信息可以被用来启用/禁用该交换特征、定制所述替换配置以及/或者实施其他适当选项。例如,其中一个选项可以是按照寄存器52的一个或多个比特所指定的那样在处理过程120和220之间进行选择。替换地或附加地,可以通过寄存器52的规定内容来选择在单一混合保护方案中组合所述两个处理过程的选项。
在操作222中对所选择的程序指令进行了转换之后,在操作224中将具有已改变的指令内容的所述程序存储在存储器中。在一个优选实施例中,在操作224中将具有改变的指令内容的计算机程序存储在非易失性文件存储器32中。在一个更为优选的实施例中,在操作224中将具有改变的指令内容的计算机程序存储在可移动存储器装置34中。在一个更优选实施例中,在操作224中将具有改变的指令内容的计算机程序至少部分地存储在程序执行存储器36中。在其他优选实施例中,可以将经过改变的计算机程序存储在不同的存储器类型中(未示出)以及/或者将其存储在超过一类存储器中。处理过程220从操作224继续到操作226。在操作226中,在该计算机程序的执行期间通过反转替换操作来恢复原始指令内容。具体来说,处理装置24利用由一个或多个寄存器52定义的替换模式来反转所述替换处理过程,从而提供原始的有效指令以替代在操作222中所替换的保留指令格式或无效指令格式。对于一种计算机系统20的实现方式而言,由指令解码器42来执行该反转替换处理过程。在这种恢复之后,在操作228中,由解码器42按照标准方式对每个所恢复的指令进行解码并且由已解码指令执行逻辑44执行该指令。对于在操作222中未被改变的指令,解码器42原样识别这些这些指令并且相应地直接对其进行解码以便由逻辑44来处理。
处理过程220从操作228继续到条件230。条件230测试在该计算机程序的执行期间是否已经尝试了不正确指令执行。如果条件230的测试结果是肯定的,则执行操作232,其中处理装置24执行关于该无效指令尝试的处理陷阱。与处理过程120的操作132的情况相同,可以利用操作232来触发进一步的诊断和分析,以便适当地指示或检测出在预定执行的计算机程序的执行期间已经发生了不同程序的入侵。相应地,处理过程停止并且从操作232返回。
如果条件230的测试结果是否定的,则处理过程220继续到条件240,该条件240测试是否将执行另一个指令以作为所提交的计算机程序的一部分。如果条件240的测试结果是肯定的,则处理过程220循环返回到操作226,以便执行下一个指令,其中按照需要恢复用保留内容或无效内容替换了的那些指令。如果条件240的测试结果是否定的,则处理过程220以正常方式停止并返回到调用程序,直到再次被调用。
应当理解,可以通过适度修改标准处理器或者多处理器安排的逻辑来实施处理过程120和220。此外,可以按照软件指令、固件指令、微指令、专用硬件或其组合的形式来实施所述逻辑。应当理解,处理过程120和220都针对本发明的一个实施例,其包括:改变计算机程序的一个或多个指令的内容;将所述一个或多个指令当中的每一个恢复到所述改变之前的内容;以及在恢复之后执行所述一个或多个指令。该实施例可以进一步包括:在该计算机程序的执行期间,通过检测到由不同程序提交至少一个不正确形式的指令以用于执行来检测该不同程序的入侵。此外,在所述实施例中存在以可能恢复的方式改变指令内容的不同途径。因此,这些不同途径可以被用来提供入侵检测以作为对先前描述的技术的替换方案或补充。
此外,可以设想能够通过指令来实现用于根据任意上述变型执行入侵检测的逻辑,所述指令被存储在装置上以便随后由相应的一个或多个处理器访问,所述装置例如是具有卡带、盘、芯片、卡、磁带或其组合的形式的可移动存储器装置34。此外还可以使用可移动存储器装置34来存储计算机程序,该计算机程序的一个或多个指令的内容已被改变,从而能够在由处理装置执行期间利用适当的指令转换信息来恢复所述指令,以便防止不同程序的入侵。对于这种情况,可以以密钥、寄存器值等形式与已改变的计算机程序一同提供所述指令转换信息;以及/或者可以单独传送所述指令转换信息,以便由将在适当的指令恢复之后执行该程序的处理器使用。替换地或附加地,可以对给定类型的处理器进行内部编码,以便能够由这种处理器自动识别指令改变的模式。
虽然在附图和上述说明中详细地描述了本发明,但是附图和上述说明应被认为是说明性而非限制性的。应当理解,这里仅仅描述了所选择的实施例,而在本发明范围内的所有改变、修改和等效表述都应当受到保护,其中本发明的范围由所附权利要求书限定。