【技术实现步骤摘要】
一种C语言程序数据泄露的检测方法及系统
[0001]本专利技术涉及程序语言数据安全
,具体涉及一种C语言程序数据泄露的检测方法及系统。
技术介绍
[0002]计算机技术的发展进步是一把双刃剑:一方面它使数据的处理、传播更加迅速、方便;另一方面也使数据机密性的保护面临更严峻的考验。数据机密性的保护是指程序不让窃密者通过其所能得到的输出数据等信息来获取或推断程序中的机密数据(如用户密码)。传统的解决安全问题的方法(例如访问控制、代码检测和加解密方法等)不能有效地处理程序中的隐蔽通道问题。基于语言的安全技术使用基于编程语言的理论和实现的技术(包括语义、类型、分析和验证等)来解决安全问题。自二十世纪九十年代以来,基于语言的信息流安全分析技术的研究一直成为国际上的研究热点。
[0003]这些研究大多针对简单的模型语言。目前实用的信息流安全编程语言主要有美国的Jif和法国的Flow Caml。这两种语言分别以Java和OCaml为基础,对传统的类型系统进行扩展,用以描述信息流安全属性,设计独立于普通类型系统的信息流类型系统对信息流安全进行检查。
[0004]Jif和Flow Caml都是基于信息流类型系统对信息流安全进行检查,即对普通类型系统的进行扩展(普通类型上增加安全级别标识)。因为这些标识作为语言的组成部分,所以无法直接使用Java语言或Ocaml语言编译器,需要设计专门的编译器。
[0005]Jif分析的对象是Java语言。Java语言没有指针概念,因此Java程序中不会存在基于别名的共享存 ...
【技术保护点】
【技术特征摘要】
1.一种C语言程序数据泄露的检测方法,其特征在于,包括:接收携带有信息流标注的C语言程序;对所述信息流标注进行提取并解析,获取数据访问规则标签;基于预设规则,确定所有程序点的上下文安全级别,所述程序点的上下文安全级别表征程序点所在控制结构反映出来数据的访问规则信息;基于隐蔽存储通道两端的数据访问规则标签和所述程序点的上下文安全级别大小判断所述隐蔽存储通道是否存在数据泄露。2.根据权利要求1所述的一种C语言程序数据泄露的检测方法,其特征在于,所述携带有信息流标注的C语言程序,信息流标注以C语言注释的形式存在程序中,具体包括:(1)计算主体和代理关系:计算主体的定义标注在允许全局声明的地方,计算主体的代理关系紧跟在计算主体的定义的后面;(2)标签变量:标签变量在允许全局声明的地方定义;(3)函数信息流标签:描述函数的形参、返回值及副作用的数据访问规则,所述函数信息流标签插在函数声明或定义之前;(4)局部变量信息流标签,所述局部变量信息流标签插在局部变量定义处;(5)降密标签:所述降密标签包括函数权限声明和降密语句;其中,在数据类型为指针时,所述指针的信息流标注包括指针所指对象的信息流标签和指针自身的信息流标签。3.根据权利要求1所述的一种C语言程序数据泄露的检测方法,其特征在于,所述对所述信息流标注进行提取并解析,获取数据访问规则标签,还包括:对于携带有信息流标注的C语言程序中未添加信息流标注的局部变量,通过自动推断得到未添加信息流标注的局部变量的数据访问规则标签;所述通过自动推断得到未添加信息流标注的局部变量的数据访问规则标签,包括:约束方程提取:给函数体中没有数据访问规则标签的每个局部变量赋予一个新的标签变量,根据函数体中局部变量读写使用限制得到所述标签变量的约束方程,所述约束方程具有下列形式:L1<:L2,其中<:表示偏序关系,L1和L2是访问规则标签和标签变量的最小上界运算表达式;约束方程范式化步骤,范式化约束方程为P
1i
<:其中P
1i
是基本访问规则或标签变量;约束方程求解:采用迭代算法计算局部变量的标签变量的取值,包括如下步骤:(1)将待推导标签变量初始化为标签最大值;(2)对约束集合中的约束依次进行遍历,当遇到不满足的约束时,如果约束的左边是待推导的标签变量,则修改所述标签变量的取值为当前值和当前值的最大下界,其他标签变量的取值保持不变,进入步骤(3);如果约束集合中所有不满足的约束的左边不是待推导的标签变量,则得到矛盾,报告错误;(3)重复步骤(2),直至所有约束都满足或得到矛盾。4.根据权利要求1所述的一种C语言程序数据泄露的检测方法,其特征在于,所述基于预设规则,确定所有程序点的上下文安全级别之前,还包括:
对程序中的跳转语句和判断表达式的使用进行约束条件检测,在程序中的跳转语句和判断表达式的使用满足约束条件时,进入下一步,所述约束条件用于使程序中跳转操作更规矩,所述约束条件包括:(1)如果判断表达式包含短路计算逻辑算符,则该表达式不允许包含函数调用和赋值语句;(2)跳转语句不得跳转到选择和循环语句中;(3)逆向跳转语句构成循环,不得有其它跳转语句跳转到这个循环内部;(4)循环语句内不能有逆向goto语句跳出;(5)switch语句每个分支必须以跳转语句结尾;(6)不允许语句表达式。5.根据权利要求4所述的一种C语言程序数据泄露的检测方法,其特征在于,所述基于预设规则,确定所有程序点的上下文安全级别,包括:将函数体内所有语句程序点的上下文安全级别都初始化为标签最小值;确定跳转语句所在程序点的程序上下文安全级别;分析跳转语句对跳转语句所在程序点的后续程序点的程序上下文安全级别的影响,调整跳转语句所在程序点的后续程序点的程序上下文安全级别。6.根据权利要求5所述的一种C语言程序数据泄露的检测方法,其特征在于,所述确定跳转语句所在程序点的程序上下文安全级别,包括:(1)对于条件语句,将条件语句的两个分支的上下文安全级别确定为:条件语句的上下文安全级别和条件表达式访问规则标签的最小上界;(2)对于循环语句,判断循环语句循环体中是否存在跳转语句且跳转语句非continue,如果是,则进入步骤(3),否则,进入步骤(4);(3)将循环体所包含的跳转语句的上下文安全级别的最小上界作为循环语句的新的上下文安全级别重新计算所述循环体各个程序点的上下文安全级别,重复该步骤,直到所述循环体各个程序点的上下文安全级别不再变化为止,获得跳转语句所在程序点的程序上下...
【专利技术属性】
技术研发人员:黄海军,杜准,王立东,
申请(专利权)人:安徽中科国创高可信软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。