当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于COP的增强软件安全性的方法技术

技术编号:8347987 阅读:177 留言:0更新日期:2013-02-21 01:38
本发明专利技术所述的一种基于COP的增强软件安全性的方法,首先定义应用程序中每个类需要的上下文信息所相关的层;采用一个规约描述语言解析器,自动生成符合COP方法的有安全规约验证的新代码,动态插入原先的代码中;在应用程序运行过程,上下文信息收集线程按一定频率采集传感器数据及函数的调用情况,并发送到事件处理器;如果满足定义的安全触发条件则激活对原有程序流程的反馈控制,暂停或改变原有程序的执行;如果条件状态由满足变为不满足则恢复原有程序的执行。本发明专利技术提供了一个以上下文保存为核心的运行支撑机制,提高了程序运行的安全性。

【技术实现步骤摘要】

本专利技术涉及一种基于COP ( -Oriented Programming,面向编程)的增强软件安全性的方法,特别涉及了控制软件中对系统传感器的抽象描述方法,动态地增加传感器以达到增强系统环境感知能力,提高系统安全性的目的。
技术介绍
软件的上下文正成为软件开发要面对的一个非常重要的问题,但是主流编程语言几乎没有提供准确地描述上下文的能力,COP编程方法的出现很好的弥补了这一不足。COP中任何计算访问信息都被视为上下文信息,任何一种COP的方法都应该包含以下一些属性 1)行为变量(Behavioralvariations)行为变量表示那些能替代或者改变软件基本行为的行为集合; 2)行为层(Layers):行为层是那些相关的上下文依赖行为变量的集合; 3)动态行为变量激活(Activation):C0P编程方法中行为变量能在运行时刻被激活从而影响系统的行为的机制; 4)上下文(Context):所有可计算的和可获取的信息都可以成为行为变量所依赖的上下文; 5)作用域(Scoping):精确控制激活或注销Layer的作用域,同一个行为变量在同一时刻可能在不同的作用域中分别被激活或注销。COP语言的一个设计问题就是对layer激活的控制,即什么时候、哪个Layer应该在程序执行过程的什么位置被激活或注销的问题。目前的研究提出主要有两类方法,一种采用的是一种称为块结构体(block-structured)的方法,如ContextJ中的with表达式。这种方法的特点是上下文环境的改变和对应行为的激活/注销是在程序的同一处或者同一个线程内进行的,同时在退出表达式块后即注销了对应的Layer。另一种方法是针对Appeltauer等人指出的很多layer的激活/注销是由外部事件所引发,而这类行为的激活不适宜采用块结构体的方法来实现。为此Tetsuo等人设计了 EventCJ,采用的是一种称为事件驱动的方法(Event-based Context Transition),这种方法可以分离上下文环境的变化检测与行为的激活。目前大部分的COP语言采用的是块结构体的方法,这类方法多采用线程粒度的layer激活策略,虽然块语句可以很方便的表示在一个具体的方法调用中何时激活layer,但是对于那些由程序执行过程中随时发生的外部事件(如进入某座建筑或者传感器数据发生变化)触发的上下文变化并不适用。对于安全控制而言,危险状态是随机发生并且对其的响应处理需要非常及时,即任何线程的执行都有可能随时被打断。因此线程粒度的layer激活不适用于软件的安全性升级。EventCJ基于事件和由事件触发的layer切换规则来管理layer的激活。在EventCJ中,事件由类似AspectJ切点的方式定义,layer切换规则由基于规则的描述语言定义。EventCJ中事件的发生可以立即触发layer的切换发生,从而影响程序的执行流程,因此对于软件的安全控制是合适的,但是EventCJ的不足之处在于,首先其事件的描述能力较弱,它只能描述程序中变量或函数的当前状态,对于状态的变化过程则无法直观地表达;其次EventCJ虽然提供了 layer切换规则描述,但是对于切换时layer的信息没有提供保存和恢复的功能,这对于我们前面提到的程序行为切换时临界资源的访问控制不能提供明确的支持。
技术实现思路
本专利技术所要解决的技术问题是提供一种基于COP的控制软件安全性增强方法,其可以较好的支持系统安全需求的动态变化。如图1,本专利技术所述的一种基于COP的增强软件安全性的方法,其包括以下步骤 1)定义应用程序中每个类需要的上下文信息所相关的层;· 2)采用一个规约描述语言解析器,自动生成符合COP方法的有安全规约验证的新代码,动态插入原先的代码中;新代码中包括有传感器数据信息; 3)在应用程序运行过程,上下文信息收集线程按一定频率采集传感器数据及函数的调用情况,并发送到事件处理器; 4)事件处理器检测事件是否满足定义的安全控制触发条件,根据结果分别为; a.如果满足定义的安全触发条件则激活对原有程序流程的反馈控制,暂停或改变原有程序的执行; b.如果条件状态由满足变为不满足则恢复原有程序的执行。上述步骤2)所述新代码中,对于上下文信息用一个向量〈J,S〉表示,其中J表示在Java程序中对应的表示变量,S表示对应的传感器,并默认一个传感器一次采集的数据可以在Java中找到对应的数据类型来表示;S包括属性向量〈N,P, G, S〉,分别表示传感器名称,传感器端口,获取数据方法和属性设置。上述步骤4)事件处理器在运行过程中维护一张保存所有监控信息当前值的表,当收到信息时就更新该表,然后验证所有定义的事件和条件的真值,并判断是否满足定义的安全控制触发条件。传统的控制软件设计按照功能来划分模块,但是由于系统的传感器、执行器会根据需要有额外的增删,系统的上下文信息会有动态的改变,本专利技术按照软件的执行环境来划分模块,并且根据COP的编程方法,在经典的ECA(Event-Condition-Action)模型基础上,改进了 Action部分在实际应用中的局限性,提供了一个以上下文保存为核心的运行支撑机制,提高了程序运行的安全性,为此编写了一个安全规约描述脚本语言的解析器及其Eclipse插件工具,实现自定义升级规则的描述语言。附图说明图I是本专利技术的流程图。具体实施例方式本专利技术的描述 本专利技术采用新的环境上下文信息描述语言,用于形式化的描述新增的传感器数据采样信息,数据格式信息等等。上下文信息用一个向量〈J, S〉表不,其中J表不在Java程序中对应的表不变量,S表示对应的传感器。我们默认一个传感器一次采集的数据可以在Java中找到对应的数据类型来表示,例如光传感器采集的光强度值可以用一个Integer类型来表示。传感器S包括属性向量〈N,P, G, S〉,分别表示传感器名称,传感器端口,获取数据方法和属性设置。属性的设置一般包括采样频率、数据的过滤方式等等。上下文信息收集作为一个单独的线程运行,可以根据指定的频率采集传感器信息,数据发送到事件处理器,事件处理器和信息收集线程通过Java提供的管道流 PipeInputStream, PipeOutputStream 通信。事件E和条件C的语法关系如下 〈C〉::= C [ <E>, <E> ) I !〈C〉I〈C〉&&〈C〉I〈C〉I I〈C〉I〈C〉=>〈C〉<E> ::= e I start ( <C> ) | end( <C> ) | <E> && <E> | <E> | | <E> | <E> when<C>。事件处理器需要随时判定定义的事件是否发生。设想上下文信息收集线程不断把监测的传感器数据或者监控的函数的调用情况发送到事件处理器,一旦收到传来的信息,处理器就需要验证。事件处理器在运行过程中维护一张保存所有监控信息当前值的表,当收到信息时就更新该表,然后验证所有定义的事件和条件的真值。因为条件是定义在监控变量上的一个布尔表达本文档来自技高网
...

【技术保护点】
一种基于COP的增强软件安全性的方法,其特征在于包括以下步骤:1)定义应用程序中每个类需要的上下文信息所相关的层;2)采用一个规约描述语言解析器,自动生成符合COP方法的有安全规约验证的新代码,动态插入原先的代码中;新代码中包括有传感器数据信息;3)在应用程序运行过程,上下文信息收集线程按一定频率采集传感器数据及函数的调用情况,并发送到事件处理器;4)事件处理器检测事件是否满足定义的安全控制触发条件,根据结果分别为;a.如果满足定义的安全触发条件则激活对原有程序流程的反馈控制,暂停或改变原有程序的执行;b.如果条件状态由满足变为不满足则恢复原有程序的执行。

【技术特征摘要】

【专利技术属性】
技术研发人员:吕建徐锋陈智勇
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1