从编程语言和编译器出发考虑软件安全,有利于减少运算系统的可信计算基TCB(trusted
putingcorn—
另一个研究层面针对高级语言进行,这是考虑到目前流行的程序
设计语言本身都不提供程序内部信息流安全性的验证机制,这些语言中没有信息流安全要求的描述能力,其编译器中也没有检查程序中信息流的安全性的功能。文献[5]描述了一个简单的类Java语言安全类型系统,不过该系统没有涉及对象的层次关系和信息范围;文献[63描述了一个带标记的Java语言安全类型系统,并实现了一个中间编译器,该编译器能将带标记的Java语言源程序转换成一个标准的Java语言源程序。应用本文改进的军用安全模型,对Java语言增加信息流安全机制的描述成分和安全性验证功能。既考虑对象的敏感级,又考虑对象的层次和信息范围,使得在编译Java源程序的过程中能检验该程序是否满足系统安全策略的要求。本文称扩展后的语言为sJava,还选择开源的Java语言编译器Jikes进行安全性改造,基本实现了对sJava的支持,改造后的Jikes编译器能直接将sJava语言编译成字节码。
base),描述较小粒度的安全策略。目前的研
究一般分为2个层面:低级语言代码安全和高级语言代码安全。确保低级语言代码安全性的研究具有代表性的包括:携带证明代码PCC(proof—carryingcode)[1】、类型化汇编语言TAI。(typedJava虚拟机的类型化低级语言TLL(typed
elassembly
language)C副、高阶类型化语言FLINT[3]以及用于
low—lev—
language)[引。这些
工作着重于通过编译器将源程
序中的有用信息以不同表示形式保持到目标代码中,以进行目标代码安全属性的验证。
收稿日期:2007.07—10.基金项目:江苏省自然科学基金重点资助项目(BK2004015)5江苏省普通高校自然科学研究计划资助项目
(08KJD520017).
作者简介:于柃(1971一).女.讲师;研究方向:软件形式化及代码安全、信息安全;E-mail:Lyu@njnu.edu.cn.
万方数据
24
解放军理工大学学报(自然科学版)
第10卷
由于未对字节码生成器作任何修改,因此整个改造工作不增加系统的运行负载。
流:Aids.aids--Patient.sex,将本应有高密级的爱滋病人的信息流向了低密级的普通病人,从而导致了信息的泄漏。由此可见,访问控制无法替代信息流控制策略。在一些信息系统中,信息的泄漏并非访问控制机制不完善,而是由于缺乏适当的信息流控制策略以及
I
军用安全模型的改进
1.1信息流控制模型的概念信息系统是目前使用广泛的软件系统,如何保证信息系统的可信性显得尤为重要。一个可信的信息系统必须能确保敏感信息的机密性。访问控制策略是信息系统保障信息机密性的主要手段,但自主访问控制(DAC)只能限制对信息的存取,却无法控制信息的传播。一旦信息被读取之后,DAC将无法控制该信息被如何使用。例如,B有权读取A的信息,但A却无法控制B如何传播它所读取的信息。因B无意或不负责任的操作而造成的敏感信息的泄漏在DAC机制下是无法解决的。强制访问控制(MAC)可以有效地解决DAC机制中可能存在的信息泄漏
问题,MAC机制通过为每个主体与客体分配一个运行时的安全类,从而避免敏感信息的传播。但由于该机制过于严格,所以使用并不广泛,而且MAC机制也无法解决非法信息流所带来的信息泄漏问题。如:
classPatient
实现信息流策略的相应机制。信息流控制模型[7]是访问控制模型的一种变形。这类模型不检查主体对客体的存取,而是试图控制从一个客体到另一个客体的信息传输过程,根据2个客体的安全属性决定操作是否进行。信息流控制模型还可以完成访问控制模型无能为力的工作——识别隐蔽通道。目前常见的信息流控制模型包括基于格的、非格的信息流控制模型、非传递信息流控制模型及不干扰模型等。而军用安全模型、BLP模型、Biba等模型均属于基于格的信息流控制模型[s~lo]。1.2军用安全模型军用安全模型[1仉11]是一种应用非常广泛的基于格的多级信息流控制模型,该模型中信息被划分为无密、秘密、机密和绝密4个互不相交的敏感级别。同时由于相同权限的主体所需知道的信息范畴可能是各不相同的,因此同时规定了信息的范畴。模型将信息敏感级别构成一个线性格,将信息范畴构成一个子集格,依据线性格和子集格的乘积格来实现信息流控制。定义1军用安全模型是一个六元组(J,o,天,