对计算机程序的资源使用率执行检查制造技术

技术编号:2846247 阅读:222 留言:0更新日期:2012-04-11 18:40
一种用于对程序代码执行检查的方法和设备。在一个实施例中,该方法包括:接收程序代码并静态地验证程序代码中关于一个或多个动态检查的信息,程序代码中所述一个或多个动态检查用于检查程序代码中的操作。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及检查计算机程序的领域;更具体地,本专利技术涉及执行静态和动态的检查,其中,静态地验证计算机程序中关于动态检查的信息。
技术介绍
程序由本文中被称为代码生成者的个人创建,并由本文中被称为代码消费者的个人运行。代码消费者不希望运行由代码生成者创建的不可信程序,这是因为程序经由运行时间库与代码消费者的计算机进行通信,而这提供了访问诸如文件和网络之类资源的功能。代码消费者希望确保该程序是安全的,即它不破坏用户数据、不将私人数据输出到外部源并且不滥用系统资源。现已存在多种方法用于确保计算机程序的安全。这些方法包括计算隔离、动态检查和静态检查。关于计算隔离,安全问题的一种解决方案是隔离计算设备,禁止任意新代码或通信信道。因为它限制了设备的实用性,该解决方案不令人满意。动态检查是指在每一个可能不安全的操作发生之前检查它的过程。例如,如果安全策略禁止访问特定目录,则运行时间(RT)库或RT监视器必须检查每一个文件访问。动态检查具有两个优点。首先,它是准确的。即,它仅检测程序实际上将要进行的安全侵害。如果检查器检查到侵害,则假如用户关闭了该检查器,该程序才实际进行侵害。其次,它是简单的。整个检查器由位于运行时间库中与适当例程一起的简单检查组成。然而,动态检查有两个基本的缺点。首先,因为它在最后的可能时刻处检查错误,所以它较迟。较迟是一个问题,因为没有警告地终止程序会令用户吃惊或迷惑或使她丢失重要数据。此外,当终止程序时,难以恢复该程序已经分配的操作系统(OS)资源,这将不利地影响其它运行程序的性能。其次,动态检查是低效的。因为每一个操作在执行之前都执行检查,这些检查占用了CPU时间的相当一部分。在静态检查中,在执行之前分析整个程序,以查看它是否是安全的。静态检查具有两个优点。首先,静态检查较早,因为它在执行开始之前检查所有的错误。因此,如果检查器验证了该程序,则不会发生运行时间错误,因此用户不会丢失数据,并且OS从不必终止该程序。其次,静态检查是高效的。根据程序文本执行所有的检查,因此无论如何不存在运行时间检查,并且可以以与完全可信程序相同的速度运行该程序。静态检查还具有两个缺点。首先,静态检查较复杂,因为它试图推出程序行为,而这是复杂的。其次,静态检查是不完备的,即它拒绝一些安全的程序。这种不准确来源于两个原因。首先。程序是复杂的。尽管检查器能够处理多种简单的程序,因为实际关注的多种程序属性是不可判定的,存在它不能够验证的一些安全程序。其次,静态检查器利用不完备的信息运行,因为它知道该程序而它不知道其输入。状态检查可以产生的最佳结果是确定一些输入是否会引起不安全的动作。它不能够确定是否实际发生了这种输入。在限制资源使用的上下文中,动态检查是指在程序运行的同时资源管理器执行检查的进程,而静态检查是指在程序运行之前资源管理器执行检查的进程。动态检查灵活但低效,而静态检查高效,但不灵活。
技术实现思路
提出了一种方法和设备,用于对程序代码执行检查。在一个实施例中,该方法包括接收程序代码,并静态地验证程序代码中关于一个或多个动态检查的信息,其中,程序代码中所述一个或多个动态检查的每一个检查器代码中的操作。附图说明在附图中或多或少用图解法示出了本专利技术(包括其组成和操作方法),附图中图1是用于检查程序代码的进程的一个实施例的流程图;图2示出了具有添加的保留的四个程序;图3示出了包含单个资源池的典型动态资源检查器,该单个资源池最初包含由代码消费者的安全策略分配给程序的所有资源;图4示出了希望的资源池模型;图5演示了通过保留的抽象资源使用安全性;图6演示了将代码安全性划分到静态和动态组件中;图7示出了标准Backus-Naur格式的语言的一个实施例的完整定义;图8演示了代码生成者执行注释(与代码产生一起)以及消费者执行验证(与执行一起);图9演示了生成者和验证器之间的基本组件的另一种可能的分离,其中代码消费者执行注释和验证;图10是验证器的一个实施例的方框图;图11演示了排序和分配的操作语义;图12演示了条件和循环的操作语义;图13演示了保留的操作语义;图14是安全条件产生器的代码的一个实施例;图15是安全条件产生器的流程图的一个实施例;图16是证明器的代码的一个实施例;图17是描述证明器的流程图;图18示出了用while命令写出的小循环;图19示出了该示例的安全条件; 图20是示范性的蜂窝电话的方框图;以及图21是示范性的计算机系统的方框图。具体实施例方式描述了一种检查计算机程序的方法和设备。本专利技术使得在执行含有针对操作的动态检查的该操作之前,可以在计算机程序中任意地移动动态检查。本专利技术的实施例使用静态信息来验证该程序具有足够的动态检查。因此,本专利技术既灵活且高效。本专利技术同时提供了静态和动态检查器的优点。与动态检查器相同,它可以安全地执行所有的四个程序。与静态检查器相同,它使用每一个程序中可用的静态信息来更有效地运行。在一个实施例中,此处公开的技术应用于所有顺序的计算机程序,并比以前的方法花费明显更少的、实行资源限制的CPU时间。在一个实施例中,该方法可以被用于限制计算机程序所使用的资源。资源可以包括物理资源(例如CPU、存储器、盘、网络)和虚拟资源(例如文件、进程)。在一个实施例中,如果程序试图使用多于许可的资源,通过使系统停止该程序的执行、产生中断、出现异常(exception)等,来限制资源。在一个实施例中,根据用户定义的安全策略来限制资源。该策略规定了每一个程序可以使用的资源以及相应的使用率限度。在一个实施例中,资源使用率限制确保了资源的使用量处于由操作系统或由系统策略规定的上限内。注意,这可以容易地扩展到下限以及其它种限制,例如资源使用率的上限和下限。在一个实施例中,此处描述的与代码安全相关的技术基于用于规定与安全相关的资源保留的新抽象概念和注释。在一个实施例中,该方法基于从操作系统获得资源的新类别的指令或操作。在一个实施例中,依靠这些新指令,指示了动态(执行时)组件和静态(加载时或编译时)组件。因此,本专利技术的实施例使用混合或混杂的方法。动态组件是从操作系统获得资源并向操作系统返回资源的保留函数集合。如果程序在使用资源之前保留了所有的资源,则认为该程序是安全的。静态组件是验证器,检查程序是否安全。在一个实施例中,验证器仅按照本文中定义的最佳方式接受安全程序。以前的资源限制方法低效是因为它们针对每一个资源使用来使用一个保留。由于本专利技术的实施例针对多个资源使用来使用一个保留,本专利技术更加有效。尽管本专利技术的一个实施例致力于资源使用率,本专利技术可以扩展到其它领域,例如致力于数据破坏和保密侵害。例如,希望的安全属性是如果程序不能读取文件,则它不能输出该文件中的数据。在下面的描述中,给出多个细节,以提供本专利技术的更详尽的解释。然而,对于本领域的技术人员显而易见的是,可以没有这些特定细节而实践本专利技术。在其它情况下,以方框形式而不是细节示出了公知的结构和设备,以避免使本专利技术不清楚。以算法和关于计算机存储器中数据位的操作的符号表示来呈现下面的详细描述的一部分。这些算法描述和表示是数据处理领域的技术人员用于更有效地将他们的工作内容传达给本领域其它技术人员的手段。在这里以及通常地,算法被理解为导致希望结果的自连贯步骤序列。这些步本文档来自技高网
...

【技术保护点】
一种方法,包括:    接收程序代码;以及    静态地验证程序代码中关于一个或多个动态检查的信息,程序代码中的所述一个或多个动态检查用于检查程序代码中的操作。

【技术特征摘要】
【国外来华专利技术】US 2003-12-23 60/532,359;US 2004-12-21 11/019,8681.一种方法,包括接收程序代码;以及静态地验证程序代码中关于一个或多个动态检查的信息,程序代码中的所述一个或多个动态检查用于检查程序代码中的操作。2.根据权利要求1所述的方法,其中,至少一个所述动态检查确定操作是否不安全。3.根据权利要求1所述的方法,其中,在运行时间之前执行静态地验证关于一个或多个动态检查的信息。4.根据权利要求1所述的方法,其中,在运行时间之前执行静态地验证程序代码中关于一个或多个动态检查的信息是用于检查安全性。5.根据权利要求1所述的方法,其中,所述一个或多个动态检查中的至少一个包括用于规定资源保留的一个或多个注释。6.根据权利要求5所述的方法,其中,资源保留与安全地执行程序代码相关。7.根据权利要求1所述的方法,其中,静态地验证关于一个或多个动态检查的信息包括检查程序代码是否在运行时间期间使用了多于在执行之前程序代码已经保留的一个或多个资源的资源。8.根据权利要求1所述的方法,其中,静态地验证关于一个或多个动态检查的信息的步骤包括检查程序代码是否使用多于预定资源量的资源。9.根据权利要求1所述的方法,其中,静态地验证程序代码中关于一个或多个动态检查的信息包括静态地检查程序代码中用于保留一个或多个资源的一个或多个第一集合操作,以确定由所述一个或多个操作保留的一个或多个资源是否足以应付在程序代码中消耗资源的所有运行时间操作。10.根据权利要求1所述的方法,还包括将一个或多个动态检查添加到程序代码中。11.根据权利要求1所述的方法,还包括将一个或多个注释添加到程序代码中,所述一个或多个注释中的至少一个包括用于保留一部分程序代码要使用的资源的操作。12.根据权利要求11所述的方法,还包括选择至少一个静态检查和至少一个动态检查的组合;以及将注释添加到程序代码,用以表示状态和动态检查。13.根据权利要求1所述的方法,还包括通过在运行时间期间调用动态检查,执行程序代码的动态检查。14.根据权利要求13所述的方法,还包括响应确定资源使用率超出限度,限制程序代码的资源使用率。15.根据权利要求14所述的方法,其中,限制程序代码的资源使用率包括暂停程序代码的执行。16.根据权利要求13所述的方法,还包括响应确定资源使用率超出限度,产生异常。17.根据权利要求13所述的方法,还包括响应确定资源使用率超出限度,产生中断。18.根据权利要求1所述的方法,其中,所述一个或多个动态检查中的至少一个是用于检查资源的使用率。19.根据权利要求18所述的方法,其中,资源包括物理资源。20.根据权利要求19所述的方法,其中,物理资源包括从由以下组成的组中选出的一个中央处理单元(CPU)指令数、存储空间、盘空间、网络带宽、设备硬件操作以及设备软件操作。21.根据权利要求18所述的方法,其中,资源包括虚拟资源。22.根据权利要求21所述的方法,其中,虚拟资源包括从由以下组成的组中选出的一个文件句柄、进程以及数据库连接。23.一种制造物品,具有一个或多个用于存储指令的可记录介质,当由系统执行时,所述物品使系统执行一种方法,所述方法包括接收程序代码;以及静态地验证程序代码中关于一个或多个动态检查的信息,程序代码中所述一个或多个动态检查用于检查程序代码中的操作。24.根据权利要求23所述的制造物品,其中,至少一个所述动态检查确定操作是否不安全。25.根据权利要求23所述的制造物品,其中,在运行时间之前执行静态地验证关于一个或多个动态检查的信息。26.根据权利要求23所述的制造物品,其中,在运行时间之前静态地验证程序代码中关于一个或多个动态检查的信息是用于检查安全性。27.根据权利要求23所述的制造物品,其中,所述一个或多个动态检查中的至少一个包括用于规定资源保留的一个或多个注释。28.根据权利要求27所述的制造物品,其中,资源保留与安全地执行程序代码相关。29.根据权利要求23所述的制造物品,其中,静态地验证关于一个或多个动态检查的信息的步骤包括检查程序代码是否在运行时间期间使用了多于在执行之前程序代码已经保留的一个或多个资源的资源。30.根据权利要求23所述的制造物品,其中,静态地验证关于一个或多个动态检查的信息包括检查程序代码是否使用了多于预定资源量的资源。31.根据权利要求23所述的制造物品,其中,静态地验证程序代码中关于一个或多个动态检查的信息包括静态地检查程序代码中用于保留一个或多个资源的一个或多个第一集合操作,以确定由所述一个或多个操作保留的一个或多个资源是否足以应付程序代码中消耗资源的所有运行时间操作。32.根据权利要求23所述的制造物品,其中,所述方法还包括将一个或多个动态检查添加到程序代...

【专利技术属性】
技术研发人员:阿贾伊钱德尔纳伊姆伊斯兰戴维埃斯皮诺萨乔治尼古拉彼得李
申请(专利权)人:株式会社NTT都科摩
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1