第29卷第10期 2008年1O月 通信学报 V 1.29 No.10 Journal on Communications Octobet 2008 安全信息流的实时监控机制 晏立,鞠时光,王昌达 (江苏大学计算机科学与通信工程学院,江苏镇江212013) 摘要:提出了一种基于安全自动机的信息流实时监控技术,该技术防范了恶意用户通过程序结构的缺陷窃取机 密信息。监控机制使用了下推自动机,结合动态分析技术和静态分析技术,利用清除函数的原理,通过状态变换 实时检测信息流的安全性。在程序执行期问,对程序事件进行抽象并跟踪信息流,用安全自动机产生的断言控制 目标程序的执行,防止非法操作。用C语言实现了安全自动机,实验结果证明这种技术是灵活实用的。 关键词:安全系统;实时监控;下推自动机;隐蔽信息流;安全模型;保密性 中图分类号:TP309.2 文献标识码:A 文章编号:1000—436X(2008)10—0051—07 Real-time monitoring and controlling to secure information flow YAN Li,JU Shi—guang,WANG Chang—da (School ofComputer Science and Telecommunications Engineering,Jiangsu University,Zhenjiang 212013,China) Abstract:An information low reafl—time monitoring and controlling mechanism based security automaton was proposed. The mechanism was used to prevent malicious users to get confidential information via the structural defects of program. The monitoring and controlling mechanism,which based on pushdown automaton and combined with dynamic and static nalayses,used state transiiton with purge function to detect the security of information flow.During program execution, abstractions of program events were sent to the security automaton,which used he absttractions to track information low.f he predicate generatTed by security automaton controls the execution to avoid dangerous operations.The security automaton coded by C language was implemented.The results of that illustrate this method is practicable nd alexible.f Key words:secure system;real—time monitoring and controllng;pushdown automata;hidden iinformation flow;security model;confidentiliaty 引言 保密性是安全系统中最基本、最常见的安全需 为途径的显式信息扩散,并不能发现非访问操作为 途径的隐蔽信息扩散,如通过影响系统状态间接传 递信息,这种隐蔽信息扩散方式通常被称为隐蔽信 息流。隐蔽信息流在一定条件下又被称为隐通道 (cove ̄channe1)…。隐蔽信息流对信息系统的安全性 构成了极大的安全危害,尽管已有多种工程化方法 能够发现系统中的一些隐蔽信息流,这些方法主要 以手工处理为主,难以用于复杂系统。1982年 求之一。系统的保密性在很大程度上直接决定了系 统的安全性,发现和阻止机密信息(或其他重要信息) 的扩散是信息安全研究和实践中经常遇到的问题。 访问控制试图通过对访问操作的检查和控制来防 止信息随意扩散,但访问控制只能防止以访问操作 收稿日期:2008—06—21;修回日期:2008—09—21 基金项目:国家自然科学基金资助项目(60773049);江苏省自然科学基金资助项目(BK2007086) Foundation Items:The National Namrla Science Foundation of China(60773049);The Natural Science Foundation of Jiangsu Province(BK2007086) 通信学报 第29卷 Goguren和Mesegurer提出描述系统机密性的第一 立一个的安全自动机,接收目标系统产生的事 个理论模型[21 即无干扰(noninterference)模型。该 件,检查信息流动是否合法,并判断低级用户是否 模型认为系统机密性得到保持的条件是禁止高机 能观察到高级信息。根据监视结果,安全自动机指 密主体对低机密主体的行为施加影响。在实际系统 导目标系统下一步的执行。 中,很多安全策略都是用状态转移规则的形式进行 定义1 目标系统定义为一个状态机 ,状态 描述,安全策略容易形式化为相应状态机模型的状 机 表示为五元组(Q,A,E,T,q )。其中,Q是状态 态迁移条件。 机的状态集合,A是系统中的动作集合,E是系统 信息流动态分析的常用方法有类型系统L3J、程 中事件的集合, 是状态机的状态转换函数, 是 序逻辑I4]和基于自动机的方法。文中重点关注基于 初始状态。 自动机的方法。近年来,国外对基于自动机的信息 目标系统的执行可以看作是状态机 在执行 流动态分析作了较为广泛的研究。2000年, 动作集合A中的动作,动作可以是程序中的语句或 Schneider等提出了可实施的安全策略的概念 J,他 指令序列中的一条指令。执行一个动作,产生一个 认为可以在目标系统运行时检查其安全性质。此 相应的事件。 后,Bauer等研究了实施安全策略可用的安全自动 定义2状态转换函数T:AxQ Q描述了在 机 】。Fong用跟踪程序运行的历史检查系统的安全 状态q下执行动作a的效果。输出函数 性 。Le用自动机监视系统的信息流 , 。Shroff在 P:A×Q 0描述了在状态 下执行动作 产生的 监视系统信息时分析了系统中信息之间的动态依 机器输出。 赖㈣。 目标系统的一个可能执行序列为a ,a ”,状 国外对信息流动态分析的研究方兴未艾,国内 态机从a =qo开始,然后根据执行的动作 ∈A, 对这方面研究的文献目前还较少见到。 Q 改变为下一个状态。状态机的下一个状态由下 文中提出了一种实用的基于状态转移的隐蔽 式定义 信息流动态分析机制,并给出了实现方法。用安全 U Q,6(q,af) 自动机对信息流在目标系统中的流动进行实时监 因为T(ao,q0)=q1,且T(af+l,qf+1)=T(aⅢ,T(ai, 控。通过考察监控自动机的转移特性来分析系统中 g『)),这就得到将一个序列的动作应用于初始状态 是否存在隐蔽信息流,从而做到保证机密性,防止 的表达。设A 是A中的一个动作序列集合,即A 是 隐通道。 A的传递闭包,那么,T :A ×Q Q。一个主体S 2系统模型 的执行动作序列可表示为a =a0, ..,口 = ‘(口 ,qi)=T(a ,T(a ,…,T(a0,qo)…))。 文中建立的模型用于检测应用系统的安全性。 模型用于检测存储隐通道,不考虑时问隐通道。并 同样可以用上述的归纳方法定义目标系统的 假设应用系统是确定性系统,运行应用系统的操作 输出。定义输出函数P :A ×Q 0对于开始于某 系统是安全的。 个初始状态的系统动作序列,产生一个输出序列。 用户运行的应用系统称为目标系统。在目标系 定义3设 ( q )是系统中的一个状态转换 统中,考虑2个用户(主体)组G1和 ,其中Gl是 序列,尸 ( , )是对应的输出,那么proc(g,a ,qi) 高级安全用户,能够访问机密信息;G1是低级安全 是在P ( ,q )中输出的一个集合,它代表主体g被 用户,不能接触机密信息。G1在目标系统中执行动 授权可见且与其在P ( q )中输出顺序一致的输 作A的子集A, 希望观察到G 在系统中的行为, 出集合。 G1所能用的方法是执行读操作,然后输出结果。如 在这个定义中,每个动作都可以产生一系列输 果不论G】执行什么样的操作,G都不能观察到G1 出,但是为了防止主体根据这些信息推导出系统以 的操作,则称G1对G是无干扰的。也就是说,从G1 前的状态信息,禁止权限不足的主体看到这些输 到G,不存在隐通道。 出。函数proc(g,n ,q )从输出中删除了没有授权主 为此,将目标系统定义为一个状态机,状态机 体g可见的输出后得到的输出序列。 根据程序执行产生事件。为了监视信息的流动,建 定义4 设目标系统中的主体集合为G, 第lO期 晏立等:安全信息流的实时监控机制 ・53・ B A是一个动作集合。定义清除函数 ( )为 . 信息的变量集合为x 。 按照定义,有X X日n xL=(2j。 从口 中删除所有符合 ∈G,且ZE B的(S,Z)元素所 得到的子序列。 清除函数刀表示特定动作的执行必须对某些 X,X X,X丑U XL=X, 下面将xH称为高级变量集合,x 称为低级变 量集合。 主体是不可见的。对一个动作序列,使用清除函数 可以输出一个主体可见的动作序列。 定义5设目标系统中所有的主体为G,GI和 G1是2个不同的主体集合。B A是一个动作集合, 安全自动机的状态集 是变量集x的幂集,即 S∈2 ,安全自动机的初态是初值包含机密信息的 变量集x 。由于信息的流动,高级变量的集合将 Gl中的主体在运行 中的动作时不干扰 中的主 体,当且仅当对于所有由 中动作组成的动作序列 和所有的S∈G2有:proc(s,a ,q )=proc(s,%. (以 ), )。 在用状态机表示的目标系统中,用 表示标识 从结点q 到结点 的转换边的可计算谓词。程序执 行的状态转移表示如下 {qf Iq ∈a A f( f)) 如果在状态qi∈a ,执行动作 ,谓词P0(a ) 为真,转入下一状态,如图1所示。 ④ 图1状态机的状态转换 在程序执行过程中,转换边的谓词 (a )是状态 机状态转换的条件, (a )接收程序动作产生的事 件,作出继续向下执行还是需要进行处理的判断。 在文中提出的方法中,用一个安全自动机对谓 词 ( )进行计算。 定义6安全自动机是一个下推自动机,定义 为一个六元组,A=( , , , ,厂,s0)。 其中, 是一个自动机状态集合; 是一个有 穷输入事件集; 是一个有穷输出事件集; 是自 动机的状态转换函数, × )---)( ×S);厂是下 推自动机的栈字母表,栈字母表为{日,L},栈中无 元素(空栈)时记作£,系统的初态为 。下推栈 用于跟踪程序执行的上下文(context),防止产生 隐蔽信息流; 是自动机的初态。 安全自动机接收目标系统程序执行时产生的 事件作为输入事件。经过状态转换产生输出事件。 目标系统接收安全自动机的输出事件,控制程序的 执行。 定义7设目标系统程序中所有变量的集合为 ,含有机密信息的变量集合为x日,不含有机密 会发生变化,系统的状态也随之变化,但安全自动 机的当前状态始终为当前系统中高级变量的集合 。 定义8一个程序在初始状态x 开始执行,最 终状态为x ,如果满足无干扰特性,当且仅当每一 个在状态x,开始执行的程序,产生最终状态为x;, 满足 XL 0 Xl=X2==>x x 该定义也可理解为定义9。 定义9在低级用户运行目标系统的过程中, 如果始终不能观察到 日中的信息,称这个系统是 安全的。 安全自动机的目标是使用清除函数的原理,通 过内部的状态变换,实时检测信息流的安全性,并 由谓词 ,(口 )产生的断言控制目标系统程序的执 行,满足定义8。 3 目标语言及执行机制 3.1目标语言 为保证安全自动机的通用性,能够应用于常见 过程语言编写的目标系统。文中定义了一个满足常 用计算机程序设计语言规则的命令式语言IMP语 言,IMP语言中包含顺序、条件和循环结构。 IMP语言定义如下: 1)常数和变量:v::=value I,I z value表示常数值,其中包含逻辑判断值true和 lse;元变量r表示参与表达式运算的变量;元变 量,表示将被重新赋值的存储单元,其值在执行过 程中可能会发生变化。 2)表达式:e::=1,1 0 f e 0e 其中,@表示一元运算符,0表示二元运算符。 3)语句:S::=X ̄--e I skip I output e J if ethenS ̄elseS2end l whileedoSdone I S1;S2 在IMP语言的定义中,X:=e,sikp和outpute语 通信学报 第29卷 旬是原子语句。if ethenS elseS,end,while edo 返回值为true和. ,其中: =X, :V(e)。 Sdone和 ; 是复合语句。 和S 也是语句,就 在赋值语句中,如果V(e)中包含高级变量,则 是定义的语句 ,加下标仅因为它们可能是不同的 有高级信息流入X,X应加入集合 ,即 语句。可以看出,IMP语言中的语句是递归定义的, X日=X U{ }。如果 ( )中都是低级变量,X是 条件语句和循环语句可以任意嵌套。 高级变量,说明X的值已被低变量的值替换,不再 目标系统的状态机中,执行原子语句将会产生 含有机密信息,此时在x日中去掉变量X,即 一个事件,执行复合语句会产生多个事件。 x =xH\fX),其中“\”是差集运算符。 从语句的定义可以看出,x:=e是赋值语句, 在执行assign( ,Vr)时,如果X加入了集合 产生直接信息流;skip是空语句,不产生信息流; x日,说明有高级信息流入低级变量,返回 , outpute产生输出流;ifethenS1else end是条件语 否则返回true。 句,可能产生隐蔽信息流;whileedoSdone是循环 在执行assign( , )时,还需要检查下推栈 语句,也可能产生隐蔽信息流;S;S,是顺序执行 的栈顶元素,判断 是否受到程序上下文的影响, 的2个语句,产生的信息流由语句的语义确定。 形成了隐蔽信息流。如果栈顶元素为日,则可能有 3.2程序事件 机密信息流入 中的变量,应将 中的变量加入集 程序执行时产生的事件用事件名称和事件参 合x日。 数表示,基本格式为eventName( ,1/r),其中: 空语句skip不影响集合x日,产生的事件为: eventName是事件名称; 是存储单元集合,表示 nut(),无返回值 在执行语句时,变量值会发生变化的变量集。例如 条件语句ifethenSaelse end不是原子语句, 执行赋值语句时, 是赋值语句左边的变量。执行 并且将要执行的语句s 或 ,还可能又是一个复合 语句时,如没有变量值发生变化, 为空集。 是 语句,由多条语句组成,其中还可能有嵌套的条件 出现的表达式中的变量集合。程序产生的事件作为 语句和循环语句。 安全自动机的输入,安全自动机经过状态转换后产 条件语句可分为4个部分:条件判断部分,满 生一个输出事件,控制程序的执行。 为了便于表示 ,用函数V(e)表示在表达式e 足条件的执行部分,不满足条件的不执行部分,结 中出现的所有变量的集合。如V(x+y)={X,Yl,即 束部分。条件语句结构的例子和结构如图2所示。 = ):{ ,Y}。 造成高级信息泄露的有程序执行时产生的直 接信息流、间接信息流和程序上下文(context)的 影响。 在安全自动机中,用下推栈跟踪程序执行的上 下文。执行条件语句或循环语句时,如果条件表达 式中含有x 中的变量,在栈中压入日,表示可能 图2条件语句的例子和结构 有机密信息流入低级变量,否则压入L。在条件语 句或循环语句执行结束时,弹出栈顶元素。下推栈 在条件语句中,主要考虑隐蔽信息流的情况。 支持多重嵌套的条件语句和循环语句。 在图2的例子中, 和Y是低级变量,h是高级变 下面定义IMP语言中各个语句产生的事件。 量,取值0和1。由于执行了语句X::1,低级用户 程序开始执行时,x 中包含高级变量的初始 可以从output X语句得到X胸值,从而知道高级变量 值,在程序执行过程中,一些低级变量接收了高级 h的值。这是由于高级变量值影响了低级变量值的 变量的赋值,这些变量也成为了高级变量。如在系 变化。此外,高级变量值影响了程序上下文 统的当前状态中,变量XE X ,he XH,执行赋值 (context),也会造成高级信息的泄露。如在图2 语句X:=h后,x接收了高级变量中的值,也成为高 中,尽管语句y:=1不执行,从Y的值,低级用户也 级变量。 可得知h的值。低级用户还可以从else后面的 赋值语句X:=e产生的事件为:assign( , ), output Y是否执行(输出语句对用户是可见的),判 第1O期 晏立等:安全信息流的实时监控机制 断出h的值。 根据上述分析,对条件语句if ethen else 事件: 1)执行循环条件判断时产生事件:condi(Vr)。 S。end的执行定义下列事件: 1)执行条件表达式判断时产生的事件: condi ),返回值为true和. e,其中: =V(e), 2)执行循环体不产生新的事件,根据循环体中 语句的语义执行。 3)执行循环语句结束时产生事件:exitS() 循环语句的事件处理与条件语句相同。 输出语句output e输出表达式的值,产生的事 即 为条件表达式中的高级变量集合。 如图2的例子中,语句“ifh=1”产生的事件 为:condi(Vr)=condi({h})。 隐蔽信息流产生的原因是由于条件表达式中 存在高级变量,其后由于条件语句中内嵌语句的执 行可能导致推断出高级变量的值。如果 x曰n (已)≠(2j,在栈W中压入日,表示语句 的 执行可能泄露V(e)中高级变量的信息。如果 件为:out( ),返回值为true和. 。在低级用 户执行output e时,根据无干扰特性,低级用户不 能观察到高级用户的输入值。显然,需要检查输出 语句V(e)是否含有高级变量,如果含有高级变量, 即V(e)nx丑≠f2j,返回 ,该语句不能执行。 否则返回true,输出语句允许执行。 在条件语句和循环语句中执行输出语句,可能 会产生隐蔽信息流。因此,执行输出语句时还需检 查下推栈的栈顶元素,如果栈顶元素为H,out( ) 返回. ”,x目n (P)= ,需要检查下推栈是否为空栈,如 果不为空栈,说明该条件语句嵌入在其他条件语句 或循环语句之中,检查栈顶元素,如果栈顶元素为 ,说明外层条件语句或循环语句的条件表达式中 ,禁止输出语句的执行。 存在高级变量,也会形成隐蔽信息流,栈中压入日。 如果下推栈是空栈或栈顶元素为L,压入 。下推 栈压入日时,返回值为lse;下推栈压入L时, . McHughIl 认为,隐通道一定始于“用户输入 并终止于“用户输出out”。用监控系统模拟 目标系统中信息的流动,可以随时检查信息流动的 方向以及低级用户是否输出了高级信息,保证系统 的安全性。 实际上,在目标系统中可采用2种方法保证系 统的机密信息不泄露:一种是仅控制低级用户的输 出信息,另一种是当有信息从高向低流动时就给出 返回值为true。 2)执行部分不产生新的事件,按照语句的语义 执行。但执行赋值语句时需要检查栈顶元素,如果 栈顶元素为日,可能形成了高级变量至低级变量的 隐蔽信息流,此时低级变量已成为高级变量,应将 被赋值的变量加入集合x日中。 3)未执行部分产生的事件:notS( ),返回值 为true和. e,其中: 包含在未执行部分所有的 存储单元,即所有变量值可能发生变化的变量。 由上述分析可知,如果条件表达式中含有高级 变量,会形成隐蔽信息流 。在notS( )中需要检查 报警信息,或停止系统执行。 3.3程序实例 例:表1是一个安全自动机监控程序的实例。 程序执行开始时,仅有一个高级变量h=2, x =( },下推栈为空栈。 在这个实例中,仅仅是在低级用户运行程序 时,如果可能泄露机密信息,则禁止输出语句的执 行。实际上,在程序运行时,只要安全自动机事件 的返回值为. 时,都表示程序中存在隐蔽信息 流。在实际应用时,可根据需要进行处理。 下推栈栈顶元素,如果栈顶元素为H,notS( )中 的变量集合 应加入到集合x口中。如果 n X爿≠f2j,notS( )返回,. 否则返回true。 4)执行条件语句结束时产生的事件:exitS(), 无返回值。 4监控机制的实现 文中提出的监控机制的实现比较简单。安全自 当执行完条件语句,栈顶元素退栈。注意:栈 顶元素个数是条件语句和循环语句嵌套的层数。 循环语句whileedoSdone也是一个复合语句, 动机由一组实现上述程序事件的信息流检测函数 组成,只需在用户程序中插入对应的函数调用,就 并且在将要执行的语句S(循环体)中还可能是 复合语句,其中可能还有嵌套的循环语句和条件 语句。对循环语句的执行使用条件语句中的2个 可完成信息流检测,禁止执行产生信息泄露的输出 语句。在条件语句中,then和else部分执行后都需 要调用另~个分支的notS( )。 ・56・ 通信学报 第29卷 安全自动机函数可用3种方式插入到用户程序 assign(“z”,“”);Z=1; 中:①手工插入,这种方法工作量较大,也容易出 notS(‘ ”); 错。②采用预编译程序,通过词法分析在用户程序 )exitS(); 的指定位置插入安全自动机函数,这种方法实现简 assign(‘ ”,“ ”);Y= ; 单。③改造编译程序,编译时在目标程序中自动插 notS(“”); 入信息流检测函数,实现安全信息流检测自动化。 } 文中定义的IMP语言可以推广到一般常用的 else{ 过程式语言。目前已经实现了对C语言程序进行安 notS(‘ , ’); 全信息流检测的实时监控机制。 )exitS(); 例:表1中的程序段用C语言描述,插入安全 if(out(‘ ’)) 自动机函数后的程序段如下: printf(‘ =%d'’, ; assign(‘ ’,‘ ”); =Y+1; 在本例中,用安全自动机函数监视信息流的流 if(condi(‘ ’), >5){ 动,并控制了不安全的输出。 assign(‘ ”,“|iz”);Y= ; if(out(‘ ”)) 5结束语 printf(‘ =%d,’, ; 用安全自动机对系统信息流进行实时监控是 if(out(‘ ,Y”)) 一种动态分析系统安全性的过程,与静态分析相比 printf(‘'sum=%d”,计y); 较,它使用方便,实现简单,是一种比较好的方法。 if(condi(‘ ”),h>0)f 在描述信息流特性方面,基于自动机的方法比较自 if(out(‘ ”)) 然,也便于在实际系统中得到应用。 printf(‘ %d,’, ; 文中提出的机制目前用于检测应用系统的信 assign(‘ ”,“”); =1; 息流安全性,这种机制也可推广到安全操作系统 notS(‘‘z”); 中,检测原语执行的安全性。 } 文中只考虑了高级(H)和低级(L)2个级 else{ 别的安全系统,不难看出,将文中的比较关系改为 第l0期 晏立等:安全信息流的实时监控机制 ・57・ 支配关系,可以方便地推广到多级安全系统中。 限于篇幅,没有给出监控系统的正确性证明。 使用结构归纳法可以证明安全自动机执行的语义 正确性。 omaton—based confidenfiliaty monitoring of concu/Tent [8】 LE G G.Autprograms[A].Proceedings of he t20m IEEE Computer Security Foun- dations Symposium(CSFS20)[C].2007.218—232. toringinformationflow[A].Proceedings of [9] LEGG,JENSENT.Monihe tWorkshop on Foundations of Computer SecurityfCJ.2005.19—30. 参考文献: 【1】RICHARD A K.A practical approach to identifying storage and tim- ing channels:twenty years later[A】.Proceedings of the Annual Corn- puter Securiy tApplications Conference[C].Nevada,USA,2002.109一 ll8. [1O] SHROFF P SMITH S E THOBER M.Dynamic dependency moni— toring to secure information flow[A].20th IEEE Computer Security Foundations Symposium[C].2007.203—217. ndbook for the Computer Security Certiifcation of [11] MCHUGH J.HaTrusted Systems[R].Technical Report,Naval Research Laboratory, 1996. [2] GOGUREN J A,MESSEGURER J.Securiyt policies and security models[A].Proceedings of he tIEEE Symposium on Security and Pri— racy[C].1982.1l一2O. [3】ZHENGL,MYERSAC.Dynamic securitylabels and staticiforma-n tionflow control田.International JournalofInformation Securiy,2007,t 6(2):67—84. [4】BERINGER L,HOFMANN M.Secure information lfow and program logicsfA].Proceedings of the 20th IEEE Computer Security Fotmda- 作者简介: tions Symposium fCSFS20)[C].2O07.233—248. [5】SCHNEIDER F B.Enforceable security policies[J].ACM Transac. tions on Information nd Sysatem Security,2000,3(1):30—50. [6】BAUER L,LIGATTI J,WALKER D.More enforceable security _ 苏技术大和晏学立副实教时(数1授95据,1一库主)技要,术研男。究 ,方江苏向为镇信江人息,安全江 鞠时光(1955 ),男,江苏如皋人,博士,江苏大学 计算机科学与通信工程学院院长、教授、博士生导师,主要 研究方向为信息安全技术和空间数据库技术。 王昌达(1971一),男,江苏南京人,博士,江苏大学 副教授,主要研究方向为信息安全技术。 policies[A],Proceedings of he tFLOC’02 Workshop on Foundations ofComputer Securit3 [C].2002.95一l04. f7】FONG P W L.Access control by tracking shallow execution his— tory[A].Proceedings of the 2004 IEEE Symposium on Security and Privacy[C].Oakland,California,USA,2004.