谢云开+廖建华+徐晓晗
摘 要:软件系统模块间的消息传递关系到系统安全。提出一种解决模块间消息安全可靠传递的软件设计方法,研究模块间消息传递机制,对传递的消息进行结构化;解决消息传递过程中模块认证、消息完整性和机密性以及消息访问控制等问题;最终抽象出一个结构化消息传递模型,用以指导实现高安全级别的软件系统,以达到软件模块间消息传递的安全需求。
关键词:访问控制;可信认证;消息传递;系统安全
DOIDOI:10.11907/rjdk.172021
中图分类号:TP301
文献标识码:A 文章编号:1672-7800(2017)007-0033-03
0 引言
随着软件工程和面向对象技术的发展,软件模块化程度越来越高,从操作系统软件到应用系统软件都采用大量的模块化设计。一方面使开发的软件具有清晰的结构,更利于理解;另一方面,提高了软件代码的复用和软件排错的效率。模块之间的消息传递是软件系统的神经,通过消息传递将各个功能模块连接成有机的系统。因此,模块间的消息传递在当前软件系统中起着举足轻重的作用,传递各种重要的数据信息和控制信息。从另外一方面来说,消息传递也是系统安全的一个脆弱环节,如果没有行之有效的安全措施,将会给系统带来严重的安全威胁,主要体现在:
(1)功能模塊之间消息传递时缺少必要的模块身份认证。当前大部分软件系统,在开发设计时并没有将功能模块间的相互认证考虑在内,甚至是操作系统服务模块也不具备认证功能。一方面,导致模块间的调用关系混乱,影响进程的权限管理;另一方面,非授权的模块得以运行,给终端带来安全风险。
(2)软件设计阶段模块间的调用指令和数据缺乏完整性和机密性保护,调用指令和参数缺乏校验机制,容易导致调用指令被篡改,传递的消息数据被窃取、伪造或者篡改。在现实应用中,直接表现在各种“钩子”横行,各种病毒、木马和间谍软件大都是利用系统存在的安全漏洞,通过挂接“钩子”,截获用户行为或者截取重要信息,给系统安全带来严重危害。比如,通过键盘“钩子”,可以截获用户的击键动作,进而可以盗取用户重要的密码信息。
(3)应用系统要正常运行,需要在各功能模块之间甚至终端之间传递各种消息,对传递消息的访问控制是应用系统安全的重要方面。缺少对传递消息的访问控制易导致模块之间非法信息流的存在,主要体现在越权操作、高敏感级别的信息传递到低级别的用户以及通过存在安全漏洞的系统攻击操作系统或者其它应用系统。
系统安全在软件设计阶段就要充分考虑,软件系统模块间的消息传递关系到系统安全。本文提出一种解决模块间消息安全可靠传递的软件设计方法。研究模块间消息传递机制,对传递的消息进行结构化,解决消息传递过程中模块认证、消息的完整性和机密性以及消息的访问控制问题,抽象出结构化消息传递模型,实现高安全级别的软件系统,满足软件模块间消息传递的安全需求。
1 模型概述
模块化设计的软件系统都是由功能相对独立的模块组成,模块间存在相互调用的指令,传递各种数据,这些指令和数据信息统称为消息,可见消息是将软件模块组织成有机整体的纽带。模块范畴也可以进一步一般化,指实际组成软件系统的功能模块,也可以指运行于计算机内的进程,甚至可以扩展至独立的终端。本文研究对象是消息以及传递消息的实体——模块,
提出一种软件设计模型,用于解决模块间消息传递的安全可靠问题。首先,用于消息传递的模块双方都需要进行认证,只有安全可信的模块才能建立消息传递,以防止非法的模块建立连接进行破坏,保证源头的安全可信;其次,模块之间传递的消息需要进行完整性和机密性保护,防止消息在传递过程中被恶意篡改、窃听和伪造,保证消息能安全地从源传递到最终接受模块,保证消息传递路径的安全可信;最后,提出设计模型,具有消息访问控制机制,一方面防止越权操作,保证消息按访问控制策略传递,可以保证控制消息的单向传递,防止对TCB模块的攻击。
2 模型层次结构
为了实现上述安全目标,本文提出一种称之为结构化的消息传递模型,模型充分考虑消息传递的安全性,采用分层设计的思想,从下至上分为传输层、可信认证层和安全控制层三层结构,如图1所示。每层功能独立、各司其职,在逻辑上模块相同功能层对应,且都具有与功能相对应的协议体系。
2.1 传输层
传输层位于结构化消息传递模型的最下层,负责模块之间消息的物理传递,与业务逻辑分开,并不关心上层的具体业务信息,主要任务是把上层业务相关的消息安全无差别地传递到对端模块,所以传输层的核心功能是保证消息传递的机密性和完整性,防止消息在传递过程中被恶意篡改或者窃听,带来安全隐患。因此传输层的功能具体体现在以下两个方面:①传输协议,协商消息传递的方式,包括算法和密钥,保证模块之间消息顺利传递而又能保证其安全性;②协商确定消息传递方式之后具体的消息传递服务,流程为发送端传输层接收上层信息,按照协定的方式进行封装,并发送到接收端,接收端通过逆过程将接收的消息进行解封装,并返回给上层,从而保证消息在传递环节的安全。
2.2 可信认证层
在消息传输层保证传输环节安全的基础之上,设置可信认证层。模型可信认证层位于传输层上,主要实现消息传输模块的互相认证,防止非法模块接入系统,同时也能防止通过攻击合法的模块进行中间人攻击。在设计实现时需要考虑以下内容:①在首次消息传递机制建立时需要认证模块双方的身份信息,只有通过认证消息传递通道才能建立;②在后续消息传递过程中,发送端需要确认接收消息的模块是经过认证的合法模块,才允许将消息发送出去,并在发送过程中在发送消息中加入发送端的身份信息;最后,接收端模块在收到消息时,对消息源进行验证,只有源头合法的消息才能接收并上传到更上一层。
2.3 访问控制层
位于模型最上面的是访问控制层,访问控制层与应用密切相关,具有与应用相关的语义信息,依据安全策略对消息传递进行安全控制,只有符合安全策略的消息才允许进行传递,而拒绝与安全策略冲突的消息流。访问控制层裁决的消息流数据依次往下层传递,先到可信认证层,进行认证并封装身份认证信息;然后再传递到传输层,对消息进行加密保护,发送到接收端模块。
3 模型工作流程
结构化消息传递模型工作流程如图2所示,模块A发送消息至模块B的工作流程,可以分为以下6个步骤:
(1)模块A对发送给模块B的消息,依据访问控制策略进行访问控制,拒绝非法信息流,对合法的信息流进行封装,加入与访问控制相关的上下文信息,并将封装后的信息流发送到可信认证层。
(2)发送端可信认证层验证接收端模块B的身份是否合法,同样拒绝将消息发送给非可信接收模块,并对发送的信息流进行签名封装,然后发送到传输层。
(3)发送端传输层使用协商好的方式将信息流进行加密处理,然后发送给接收端模块对应的传输层。
(4)接收端传输层将收到的加密处理的信息流进行解密处理,并提交给可信认证层。
(5)可信认证层对接收到的信息流发送源进行验签认证,只有验证合法的消息流才进一步提交给访问控制层,否则拒绝接收。
(6)接收端访问控制层依据安全策略以及附加于信息流上的上下文信息进行访问控制决策。
以上描述的是结构化消息传递模型发送消息的工作流程。
4 模型形式化描述
为了更好地对模型进行分析,本节对提出的结构化消息传递模型进行形式化。
定义1:基本变量。
M表示模块需要发送的原始消息集合,包括控制指令也包括数据信息;Acon表示访问控制上下问信息,比如主客体标记信息;Mac表示具有访问控制上下文的消息集合,指访问控制层与可信认证层传递的消息,且Mac=M×Acon;Tcon表示可信认证相关的信息,比如模块完整性信息、身份信息等;Mcert表示具有可信认证信息的消息集合,指在可信认证层与传输层之间传递的消息结构,且Mcert=Mac×Tcon=M×Acon×Tcon;Menc表示在发送端及接收端的传输层传递的消息结构,指被密码算法处理过的消息结构;P表示安全策略集合。
定义2:模块定义。Lac表示功能模块的访问控制层;Lcert表示功能模块的可信认证层;Lenc表示功能模块的加密传输层;C表示传递消息的主体——功能模块的集合,且C=Lac×Lcert×Lenc。
定义3:功能函数定义。
模块访问控制层的功能函数主要包括访问控制函数和消息封装函数,访问控制函数fac∈Fac:M×P→{true,false},访问控制函数依据访问控制策略对消息进行判决。访问控制层的消息封装函数是将访问控制上下文信息封装成消息头与原始的消息数据共同构成访问控制层的消息结构eac∈Eac:M×Acon→Mac,访问控制层消息封装的逆函数是在接收端将接收到的消息进行解封装,得到原始消息数据和访问控制上下文信息,访问控制上下文信息随消息数据一起传递,因此可以实现细粒度的访问控制,逆函数e-1ac∈E-1ac:Mac→M×Acon。模块可信认证层的功能函数也包括可信认证函数以及可信认证层消息封装及解封函數,可信认证函数用于认证接收的消息是否从合法模块传递而来,fcert∈Fcert:Mac×Tcon→{true,false};可信认证层的封装函数用于将可信认证相关的信息封装到访问控制消息之上,发送到对端的可信认证层进行模块可信认证,封装函数ecert∈Ecert:Mac×Tcon→Mcert,以可信认证信息作为消息头与访问控制层的消息进行封装,得到可信认证层消息结构;可信认证层封装函数的逆函数是解封装函数,是用于处理接收消息流的,e-1cert∈E-1cert:Mcert→Mac×Tcon,解封之后得到的Mac上传给访问控制层,Tcon用于验证消息的可信。模块传输层的主要功能是对消息进行加密处理并发送,或者接收消息然后再解密处理。加密函数fenc∈Fenc:Mcert→Menc,解密函数f-1enc∈F-1enc:Menc→Mcert。
5 结语
本文为解决模块间消息传递的安全可靠问题,提出了一种结构化的消息传递模型。对软件设计中模块间的消息传输、模块接入的可信认证、模块对消息的访问控制等进行了全面的模型抽象及描述。该模型对实现高安全级别的软件系统具有指导意义。
参考文献:
[1] 李毓才,小谷诚刚,毛文波,等.可信安全体系架构原理与实践[J].网络安全技术与应用,2009,12:27-37.
[2] 汤永新,刘增良.软件可信性度量模型研究进展[J].计算机工程与应用,2010,46(27):12-16.
[3] 任魁,王普,李亚芬.信息系统中一种访问控制的实现策略[J].计算机安全,2009,9:41-44.
[4] 周彬,刘连衷.多维授权对象RBAC模型的设计与实现[J].兰州理工大学学报,2005,31(2):77-80.
[5] 梅宏,曹东刚.软件可信性:互联网带来的挑战[J].中国计算机学会通信,2010,6(2):58-61.
[6] GB/T 16260.1-200X.软件工程产品质量[S].质量模型.ISO/IEC 9126-1:2001.
[7] 张秀娟,魏书光,夏建川.数据压缩安全传输模型[J].华中科技大学学报:自然科学版,2004,32(9):1-5.