用于检测计算机系统中的安全漏洞的系统和方法

文档序号:6377288阅读:383来源:国知局
专利名称:用于检测计算机系统中的安全漏洞的系统和方法
技术领域
本发明涉及用于检测计算机系统中的安全漏洞的系统和方法。
背景技术
计算机系统安全的标准方法包括密码和其他授权标记、使用加密以及许可检查系统。在这些标准方法中,“安全标识”(如校验和、数字签名和许可级别)和“安全属性”(如,被认为不可改变的数据项和该数据项的隐藏副本之间的准确匹配)可用于验证数据和安全系统的完整性。但是,所有方法都有缺陷和成本。实际上,没有哪个安全系统是100%有效的。
计算机系统安全的“纵深防御”概念提供了一系列的障碍和反检查,以降低危害成功的概率和提高早期检测的概率,从而导致系统反应,如系统暂停、安全重新启动或对攻击者采取反击措施。
安全系统越复杂,实施和设计的验证难度就越大,用于构建和维护该系统的计算资源成本和工程投资就越高。不同的应用程序实际上可以支持不同级别的安全成本。例如,用于控制远程输电设备的软件成本很高,并且存在资源约束。
所需要的是用于提高安全性的系统和方法,其适合不同的应用程序,而不增加不实际的成本。

发明内容
本发明提供了将软件中的硬实时能力应用于软件安全性的系统和方法。例如,根据本发明的系统和方法,程序员可以向应用程序附加周期完整性检查,以使得针对该应用程序的攻击需要在一个狭窄和不可预测的时窗内完全成功才能保持不被检测到。
优选情况下,本发明适用于多种应用和计算机环境。一个预期应用领域是进程控制系统,其中,多个较小的、低成本的控制装置用于控制工厂或输电系统或仓库的操作,并且,这些装置可以通过网络连接,并且,这些装置的正确操作有实时要求。第二个预期应用是计算机集群,其中,组件计算机可用于监视该群中其他成员的安全性,并且,有资源使用本发明和传统的安全软件,对软件之间的安全性进行重要的交叉检查。第三个预期应用是包含敏感数据的计算机,它具有一个简单的测试装置,其可与使用本发明的软件进行通信,从而检查该应用程序的完整性。第四个预期应用是销售点(point-of-sale)终端,其中,必须保护信用卡的客户输入或其他敏感信息不被盗窃。预期应用的该列表并不是穷举的,本发明也可以用于其他应用。
在一个实施例中,本发明提供了一种用于计算机系统的安全系统。通过检查应用程序代码和/或计算机系统维护的关键数据结构和通过检查应用程序代码本身,该安全系统硬实时地、周期性地检查计算机系统和该计算机系统上运行的应用程序的完整性。该安全系统包括以下部件(1)一个高优先级、周期性、实时的安全进程或线程,用于(a)检查应用程序代码和该应用程序的关键数据结构的完整性,(b)检查该应用程序的预定执行时间,(c)失败时发出警报,以及(d)在必要的情况下,取代该应用程序;以及(2)一个进程或例程,其能够以原子方式(atomically)更新已加密校验和及其相关数据结构。如果发现应用程序代码被篡改、如果发现关键数据结构没有匹配的校验和或者如果发现应用程序没有被安排在所要求的频率,那么,该安全进程就会发出警告。
优选情况下,该安全系统还可以包括一个挑战处理机和一个外部监视器。该外部监视器可以是一个通过网络连接到该计算机系统的对等方计算机系统上运行的应用程序,或者,它可以是该计算机系统中的一个安全装置。该外部监视器被配置为向挑战处理机发送挑战。外部监视器希望在预定时限内从挑战处理机接收到该挑战的响应。如果挑战处理机在预定时限内没有对该挑战做出响应,那么,这表明该计算机系统可能遭到了损害。
例如,假设该安全线程被配置为根据一个序列号,来更新已加密数据项,该序列号表示已经过多少周期而未检测到入侵者。该外部监视器可被配置为请求使用发送给该挑战处理机的挑战中包含的加密密钥,将这些数据项发送给该监视器。此外,该监视器可以请求在1毫秒内返回该挑战的响应。如果选择了合适的完整性标识和属性,那么,没有意识到该实时挑战/响应特性的任何挑战者将无法对该计算机系统产生检测不到的损害。此外,意识到该实时挑战/响应特性的任何攻击者必须获得内核级特权,才能攻击该实时安全线程,同时保持该响应定时。
在另一个实施例中,本发明提供了一种用于计算机系统的安全系统,其运行在具有实时内核和非实时或“通用”内核的双内核操作系统中。该安全系统包括下列部件(1)第一实时线程,运行在该实时内核下,用于检查该通用内核的完整性标识和属性的可配置集合;(2)第二实时线程,运行在该实时内核下,用于检查该实时内核和第一实时线程的完整性标识;(3)一个或多个挑战处理机,运行在该实时内核下,如上所述,当收到来自外部监视器的挑战之后,提供“挑战/响应”功能;以及(4)安全模块,运行在该通用内核下,检查该实时内核以及第一和第二实时线程的完整性标识和属性。
在该实施例中,由第一实时线程检查的完整性标识可能包括(1)数据结构的校验和/数字签名,其包含关于该通用内核使用的密码文件的有关信息(如UNIX类型环境中的inode);以及(2)该通用内核下运行的软件应用程序的校验和/数字签名,其用于对密码文件中存储的密码进行加密和解密。第一线程检查的完整性属性可能包括自从正常操作开始以来关键应用程序(如web服务器程序或数据库)是否重新启动;以及,所有这些应用程序的时间安排是否合理。
该挑战处理机提供挑战/响应功能,允许外部监视器发出挑战,需要在规定时限内返回包含验证信息的加密数据项。
例如,假设前两个线程各使用一个序列号来更新已加密数据项,该序列号表示已经过多少周期而没有检测到错误。外部监视器可能请求使用与挑战一起传递的加密密钥,将这些数据项传输到监视器。此外,网络对等方可能请求在1毫秒内返回响应。如上所述,如果选择了合适的完整性标识和属性,那么,没有意识到该实时挑战/响应特性的任何挑战者将无法对该计算机系统产生检测不到的损害。此外,意识到该实时挑战/响应特性的任何攻击者必须获得内核级特权,才能攻击实时安全线程,并且,为此,攻击者必须在检测到损害之前先损害通用内核的安全部件然后击败这三个实时线程。
保持这些部件的准确周期和完整性标识和属性密码的选择(如,在系统启动时确定它们)使攻击者的任务进一步复杂。从通用内核或其应用程序开始的攻击者进一步受阻于该实时和通用内核的分离性质,因为,它不能确保在任何准确时间段内完成行动。由于设计和实现期间允许更高度安全验证的实时内核的更简单性质以及通过检查实时内核和实时安全线程完整性的安全模块的操作,从而阻止在实时内核一侧开始的攻击者。
下面结合附图,描述本发明的上述和其他特征与优点,以及本发明优选实施例的结构和操作。
附图简述这里并入并且构成说明书一部分的附图用于描述本发明的各实施例,并且还与说明书一起,用于解释本发明的原理和使本领域技术人员实施和使用本发明。在附图中,相同的标记表示相同或功能上相似的单元。此外,标记最左边的数字表示其中该标记第一次出现的附图。


图1是具有硬实时操作系统和在该实时操作系统下运行的安全系统的计算机系统的功能框图;图2是根据本发明一个实施例的进程的流程图;图3示出了根据本发明另一个实施例的计算机系统;图4示出了本发明的安全系统的另一个实施例;图5示出了一个典型计算机系统。
具体实施例方式
在下面的描述中,为了充分理解本发明,给出了各种具体细节,如特定系统、计算机、设备、部件、技术、计算机语言、存储技术、软件产品和系统、操作系统、接口、硬件等,但它们只用于说明目的,而没有限制意味。但是,本领域技术人员应当理解,可以用与这些具体细节不同的其他实施例来实施本发明。为了更清楚地描述本发明,这里对公知的系统、计算机、设备、部件、技术、计算机语言、存储技术、软件产品和系统、操作系统、接口和硬件不再赘述。
图1是具有硬实时操作系统101的实时计算机系统100的功能框图。在一些实施例中,硬实时操作系统101是新墨西哥Socorro的FSMLabs提供的RTLinuxPro操作系统,但是,也可以使用其他硬实时操作系统。计算机系统100包括进程或线程102(后面称之为“安全进程102”),用于检测应用程序代码104和/或关键数据元素(如文件、数据结构等)103是否已被入侵者损害。
在一些实施例中,安全进程102通过(1)判断代码104是否已被非法修改和/或(2)判断应用程序代码104是否按照预定时间执行,来判断应用程序代码104是否已被损害(例如,被入侵者修改)。安全进程102可采用多种方式,判断代码104是否已被非法修改。例如,它可以判断代码104是否与该代码104相关的校验和相匹配。此外,它可以访问代码104的过去副本,并将该代码的过去副本与当前代码进行比较,来检查从过去副本创建以来是否有任何修改。还有其他方法可以确定代码104是否被非法修改,而本发明不限于具体的方法。
同样,通过判断数据元素103是否已被非法个人或进程修改,安全进程102可以判断数据元素103是否已被损害。安全进程102可以采用多种方式,判断代码104是否已被非法修改。例如,它可以判断代码104是否与该数据元素相关的校验和相匹配。
在校验和用于判断数据元素103是否被损害的实施例中,第一次创建和存储数据元素103时,也创建和存储该数据元素的校验和(优选将所存储的校验和进行加密)。此外,当应用程序代码104需要改变数据元素103时,应用程序代码104本身或与应用程序代码104进行通信的安全更新进程105更新该数据元素以及该数据元素103相关联的校验和,从而使该校验和与修改后的数据元素103相匹配。优选情况下,数据元素103及其校验和的更新以原子方式进行(例如,使用公知的方法,以原子方式更新副本、计算校验和以及改变指针或索引)。
由于安全进程102执行的检查,入侵者为了在不被检测到的情况下损害数据元素103或代码104,入侵者必须知道创建该校验和所使用的算法。此外,在将校验和进行加密的实施例中,入侵者必须使用合适的算法和合适的密钥,对该校验和进行加密。
优选情况下,在有些实施例中,安全进程102和/或实时操作系统101被配置使得安全进程102作为操作系统101中的高优先级任务而执行。这将使安全进程102以“精确”的定期时间间隔执行所需的安全检查。图2示出了该特征,它是安全进程102执行的流程200的流程图。
流程200从步骤202开始,其中,安全进程102判断数据元素103是否已被入侵者篡改(例如,非法修改)。如果是,则流程202继续到步骤204,否则,流程200继续到步骤206。在步骤204中,安全进程102发出警告和/或关闭应用进程108。在步骤206中,安全进程102判断代码104是否已被篡改。如果是,流程202转到步骤204,否则,流程200转到步骤208。在步骤208中,安全进程102暂停预定量时间。在步骤208之后,流程200返回步骤202。由于安全进程102是实时操作系统101中的高优先级任务,所以,几乎可以保证安全进程102将以步骤208中的暂停时间所确定的确定性间隔,执行步骤202-206。
sp102的硬实时特性在很多情况下很重要,在这些情况下,周期性地执行时,应用程序代码104执行一个重要任务,并且,如果不以期望的方式执行该重要任务,后果可能很严重。因此,安全进程102是非常重要的,当显示代码104已被篡改时,它能够在执行该重要任务之前关闭代码104。
作为一个具体的示例,假设代码104被配置为在时间t=1、t=2等输出预定的信号。在该示例中,安全进程102可被配置为在代码104预定输出信号之前,检查代码104的完整性(例如,sp102可以被配置为在时间t=0.9、t=1.9、t=2.9等检查代码的完整性)。这样,如果入侵者篡改了代码104,将使后果最小化,因为大多数情况下sp102将在己篡改代码104执行其任务之前检测到篡改,因此,能够在已篡改代码104执行其任务之前采取校正行动形式。
图3示出了根据本发明另一实施例的计算机系统300。系统300与图1所示系统相似,其不同之处在于系统300还包括一个外部监视器302,外部监视器302可被配置为向挑战处理机304发出挑战,挑战处理机304可被配置为对监视器302发出的挑战做出响应。尽管这里将挑战处理机表示为一个独立于安全进程102的进程,但这并没有限制意味,因为挑战处理机也可实现为安全进程102的一部分。
在一个实施例中,外部监视器302被配置为向挑战处理机304提供挑战。该挑战可以是对基本安全信息的请求,或者,它可以包含一些关于待检查的完整性约束和完整性属性的信息。该挑战也可以包含一个在特定时间点传输该挑战的响应的请求。在一个实施例中,一旦挑战处理机304收到该挑战,该挑战处理机就通过检查完整性约束和完整性属性,来验证系统安全性。例如,这可能涉及检查诸如加密代码和密码文件之类的标准安全部件的功能和/或检查关键应用程序是否正确按照预定时间。在所有实施例中,挑战处理机304被配置为当监视器302发出挑战时,向外部监视器302提供响应。响应的一个示例是一个正确签名和加密的序列号,表示响应哪个挑战。
如果外部监视器302没有在合适的时间(例如在规定的硬时限内或在该挑战中规定的时间)从挑战处理机304收到正确的响应,则外部监视器302可以声明该系统300已经被损害。因此,为了产生检测不到的损害,在监视器302施加的硬时限超时之前,攻击者不仅必须击败内部安全,而且还必须接管挑战处理机部件304的操作。
外部监视器302可以实现在通过确定性网络连接到系统300的计算机上(其中,消息从监视器302到安全系统300以及返回的时间是已知的),或者,它也可以是系统300中的专用设备。在第二种情况下,监视器302可以是外设,或者是片上(on-chip)安全监视器。
在其他实施例中,处理机304可以被配置为根据精确的时间表,优选不可预测的时间表,向监视器302传输验证证书。例如,在处理机304是安全进程102一部分的实施例中,处理机304可以被配置为根据预定时间表(例如每10毫秒),向监视器302传输验证证书,而不管监视器302是否已发出挑战。这样,如果在预定时间没有收到验证证书,则监视器302将判定系统100有问题。同样,在处理机304是独立于安全进程102的进程的实施例中,处理机304可以被配置为在预定时间基础上,验证安全进程102的完整性,然后,如果处理机304证实了安全进程102的完整性,则向监视器302传输验证证书。
图4示出了本发明的安全系统的又一个实施例。更具体地说,图4是运行具有实时内核404和非实时“通用”内核406的双内核操作系统402的计算机系统400的功能框图。该安全系统包括下列部件(1)在实时内核下执行的第一实时线程411,用于检查通用内核406的安全标识和属性的可配置集合;(2)在实时内核下执行的第二实时线程412,用于检查该实时内核和第一实时线程411的完整性标识;(3)在实时内核下执行的至少一个挑战处理机304,当收到来自外部监视器302的挑战时,其提供“挑战/响应”功能;以及(4)在通用内核下执行的安全模块414,其检查实时内核404以及第一和第二实时线程411-412的完整性标识和属性。
在该实施例中,第一实时线程检查的完整性标识包括(1)数据元素420上的校验和/数字签名,用于维持通用内核所使用的密码文件的有关信息(如UNIX类型环境中的inode);以及(2)通用内核406下运行的软件应用程序421上的校验和/数字签名,用于对密码文件中存储的密码进行加密和解密。第一线程411检查的完整性属性可能包括自从正常操作开始以来关键应用程序(如web服务器程序或数据库)是否重新启动;以及,所有这些应用程序的时间安排是否合理。
图5示出了可用于实现上述计算机系统的典型计算机系统500。计算机500包括一个处理器或中央处理单元504,其能够执行包括双内核和实时操作系统的传统操作系统。中央处理单元504通过总线526或其他通信路径,与一个或多个输入/输出(I/O)设备524集合进行通信。I/O设备524包括键盘、鼠标、视频显示器、打印机等。CPU 504还通过总线526与计算机读取介质(如传统的挥发性和非挥发性数据存储器件)进行通信。在本领域中,CPU 504、I/O设备524、总线526、网络接口580和存储单元528之间的交互是公知的。
存储单元528存储软件538。软件538包括一个或多个操作系统和一个或多个用于实现本发明方法的软件模块540。传统的编程技术可用于实现软件538。存储单元528也可存储任何必须的数据文件。此外,计算机系统500可以通过网络接口580连接到互联网和/或其他计算机网络,从而有利于数据传输和操作员控制。
本领域技术人员应当理解,可以根据本说明书的描述,使用一个或多个被编程的通用计算机、微处理器等,来实现本说明书中阐明的系统、进程和部件。熟练的程序员可以根据本说明说所披露的内容,容易地实现合适的软件编码。因此,本发明还包括基于计算机的产品,其存储在存储介质上的,并且包括可用于对计算机编程以执行根据本发明的进程的指令。该存储介质包括、但不限于任何类型的磁盘,包括软盘、光盘、CDROM、磁光盘、ROM、RAM、EPROM、EEPROM、闪速存储器、磁或光卡,或适用于本地或远程地存储电子指令的任何类型的介质。
尽管这里将所描述的进程显示为一系列步骤,但这些步骤不必以所描述的次序执行,除非特别指明。
前面描述了本发明的原理、实施例和操作模式。但是,不应当将本发明解释为限于上述具体实施例,因为应当将它们视为说明性的、而不是限制性的。应当理解的是,在不脱离本发明的保护范围的前提下,本领域技术人员可以对这些实施例做出修改。显然,根据上面的描述,可以对本发明做出各种修改和变形。因此,应当理解的是,可以按照这里具体描述之外的其他方式来实施本发明。
因此,本发明的宽度和保护范围不限于上述示例性实施例,而应该由下面的权利要求及其等价物来定义。
权利要求
1.一种计算机程序,包括硬实时操作系统;在所述硬实时操作系统下运行的应用程序;以及在所述硬实时操作系统下运行的安全进程;所述安全进程被配置为硬实时地、周期性地检查所述应用程序和/或所述应用程序使用的数据元素的完整性,并且,如果所述应用程序或所述数据元素的完整性检查显示所述应用程序或数据元素已被篡改,则通知所述计算机系统的用户和/或关闭所述计算机系统或应用程序的至少一部分;以及所述安全进程包括一个挑战处理机,所述处理机被配置为从外部监视器接收挑战并在一个预定量时间内提供到其上的响应,其中,所述外部监视器被配置成使得如果所述外部监视器在自发送所述挑战以来的一个预定量时间内没有收到所述响应,那么,所述外部监视器通知管理员和/或关闭所述计算机系统或应用程序的至少一部分。
2.在运行实时操作系统的计算机系统中,一种计算机安全方法,包括在所述实时操作系统下执行一个安全进程,其中,所述安全进程被配置为硬实时地、周期性地检查应用程序或所述应用程序使用的数据元素的完整性,并且,如果所述应用程序或所述数据元素的完整性检查显示所述应用程序或数据元素已被篡改,则通知系统管理员和/或关闭所述应用程序;向所述安全进程或一个监视所述安全进程完整性的挑战处理机发送挑战;以及如果在一个预定量时间内没有收到所述挑战的响应,则通知管理员。
3.一种计算机系统,包括双内核操作系统,其包括实时内核和非实时内核;第一实时线程,其运行在所述实时内核下,所述第一实时线程被配置为监视在所述非实时内核下运行的一个应用程序的完整性;第二实时线程,其运行在所述实时内核下,所述第二实时线程被配置为监视所述第一实时线程的完整性;以及安全进程,其运行在所述非实时内核下,所述安全进程被配置为检查所述第一实时线程和/或所述第二实时线程的完整性。
全文摘要
本发明提供将软件中的硬实时能力应用于软件安全的系统和方法。例如,通过本发明的系统和方法,程序员可以向应用程序附加周期完整性检查,以使得针对该应用程序的攻击需要在一个狭窄和不可预测的时窗内完全成功才能保持不被检测到。
文档编号G06F15/173GK1748203SQ200380109692
公开日2006年3月15日 申请日期2003年12月12日 优先权日2002年12月12日
发明者维克托·J·尤戴肯 申请人:有限状态机实验室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1