您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 嵌入式系统中的SMACK应用研究
嵌入式系统中的SMACK应用研究阮越1,2,郑啸1,2(1.安徽工业大学计算机学院,安徽马鞍山243000;2.东南大学计算机科学与工程学院,南京210096)摘要:介绍强制访问控制(MAC)方法和在Linux主流内核版本中MAC主要的实现技术,包括SELinux和SMACK。将SMACK应用到典型的嵌入式设备——智能手机上,通过定义SMACK规则为第三方软件构造沙盒。测试结果表明,与SELinux相比,SMACK具有较少的内存消耗和较高的运行效率,更适用于嵌入式系统。关键词:强制访问控制;简单强制访问控制内核;嵌入式系统;安全;沙盒ApplicationResearchofSMACKinEmbeddedSystemRUANYue1,2,ZHENGXiao1,2(1.SchoolofComputerScience,AnhuiUniversityofTechnology,Maanshan243000,China;2.SchoolofComputerScienceandEngineering,SoutheastUniversity,Nanjing210096,China)【Abstract】ThispaperstartsfromanintroductionofMandatoryAccessControl(MAC)andpresentssometechnologieswhichimplementitinLinuxmainlinekernel,includingSELinuxandSMACK,andgivesanexampleindetailofhowtodefineSMACKrulesettoaddresstherequirementsofconstructingsandboxforthird-partyapplicationsinLinuxbasedmobilephone.ResultoftestindicatesthatrunningsmackhasfewermemoryconsumptionandmoreefficientCPUperformancecomparingwithSELinux,andSMACKismoresuitableforembeddedsystem..【Keywords】MandatoryAccessControl(MAC);SimplifiedMandatoryAccessControlKernel(SMACK);embeddedsystem;security;sandboxDOI:10.3969/j.issn.1000-3428.2011.05.054计算机工程ComputerEngineering第37卷第5期Vol.37No.52011年3月March2011·安全技术·文章编号:1000—3428(2011)05—0161—03文献标识码:A中图分类号:TP309.21概述LSM(LinuxSecurityModule)是支持多种安全策略的Linux内核级的轻量级框架,它提供了一套标准接口,可使多种安全策略以Linux内核模块形式插入内核运行[1]。尽管LSM在Linux发展历史上有过争论,但在LinusTorvalds本人的支持下,LSM已经成为Linux2.6.x内核的标准部分。SELinux、SMACK、TOMOYOLinux都已基于LSM框架成为Linux2.6.x标准内核的一部分。简单强制访问控制内核(SimplifiedMandatoryAccessControlKernel,SMACK)是第2个融入Linux标准内核的基于LSM架构的Linux安全模块,与前任SELinux(Security-enhancedLinux)不同,它对系统资源的需求极少,且配置简单,更适用于嵌入式系统。2强制访问控制Linux的访问控制基于传统的UNIX访问控制方法,这种访问控制称为自主访问控制(DiscretionaryAccessControl,DAC),它是由客体(比如文件)的拥有者主体(用户或进程)根据用户或用户组的ID决定谁可以以何种方式访问客体。这种方法具有缺陷,并不适合现代日益复杂的计算机环境。因为超级用户可以违反访问控制策略,同时这种策略也不能防备恶意代码窃取超级用户的权限。POSIXCapabilities和POSIXACLs虽然细化了访问控制粒度,但本质上依然是自主访问控制,同样具有自主访问控制自身不可克服的缺陷。另一种访问控制方法是强制访问控制(MandatoryAccessControl,MAC),这种方法并不由客体的拥有者决定主体是否可以访问客体,而是通过比较主、客体的安全标记来决定信息是否可以安全流动。文献[2]提出的BLP模型给出了对具有密级划分的信息进行强制访问控制的最完整表述,其中包含模型的形式化描述和非形式化说明,以及模型在Multics系统中实现的解释。后期人们仿照BLP模型,开发了实现完整性访问控制的Biba模型、Clark-Wilson模型、Graham-Denning模型和Chinesewall模型等。随着计算机系统的日益复杂,近年来,DTE模型(DomainTypeEnforcement)和基于角色的访问控制等日益流行,以简化日益复杂的访问控制策略并支持多级安全(Multi_LevelSecurity)。3Linux下MAC的实现Linux下MAC的实现技术主要有以下4种:(1)SELinuxSELinux主要由美国国家安全局(NSA)研发,它实现了一个健壮且灵活的访问控制机制FLASK,并在2003年首先移植到LSM上,成为2.6标准内核的一部分。SELinux使用了DTE机制,每个进程划分为一类域(Domain),每个资源也被划分为一类类型(Type),域和类型间的访问控制策略在策略文件中加以描述(Policy)[3]。SELinux在服务器和PC上得到相当广泛地应用,是迄今最安全、得到测试最多Linux安全增强版本,但它对资源消耗较大,策略配置及安全验证相当复杂[4]。(2)SMACKSMACK是第2个融入Linux标准内核的安全模块,与SELinux相比,它需要的资源要较少,策略配置也简单,更适应于应用环境较简单的嵌入式系统。基金项目:国家自然科学基金资助项目(61003311);安徽省高等学校优秀青年教师科研基金资助项目(2007jq1028)作者简介:阮越(1972-),男,讲师、博士研究生,主研方向:系统安全,嵌入式系统;郑啸,副教授、博士收稿日期:2010-09-12E-mail:dragonry@sohu.com162计算机工程2011年3月5日(3)TOMOYOTOMOYO是第3个基于LSM且融入Linux标准内核的安全模块,由日本NTT公司研发。它的策略配置可由学习模式完成,即在系统运行时自动完成访问策略的配置。但它的客体标识基于路径名(Path-based),而系统中并不是所有的客体都具有路径名(比如硬连接,hardlink),因此,它不能够给系统提供完整的保护。(4)AppArmorAppArmor由SuSeLinux开发,在NovellLinux安全服务器上得到应用。AppArmor并没有融入标准Linux内核,它同样基于路径名,TOMOYO和AppArmor都不能提供多级安全保护(MLS)。4SMACK介绍SMACK由CaseySchaufler完成,完全基于LSM,没有附加任何多余的代码。它使用了文件的扩展属性,这与SELinux相同,同时也提供了一个伪文件系统smackfs,用来操纵进程和系统的SMACK属性。SMACK给系统的所有的主体和客体都添加了安全标签,访问是否可以实施基于以下规则[5]:(1)所有安全标记为“*”的进程的任何访问请求都被拒绝。(2)所有安全标记为“^”的进程读和执行访问请求都被允许。(3)所有对标记为“_”客体的读和执行访问请求都被允许。(4)所有对标记为“*”客体的任何访问请求都被允许。(5)进程对具有相同标记的客体的任何访问请求都被允许。(6)在规则集合中定义的规则允许的访问请求都被允许。(7)任何其他的访问请求都被拒绝。规则(6)中定义的规则通过如下形式定义:subject-labelobject-labelaccess其中,access可以是r(读)、w(写)、x(执行)和a(添加)或它们的任意组合。SMACK标签由不超过23个字符的字符串组成,它们可以存储在文件的扩展属性中或存放在SMACK的配置文件里,某些客体(比如共享内存)则继承创建客体的进程的标签。应用SMACK的规则可以很容易地描述任何形式化的模型,下面以一个简单的例子定义了BLP模型访问控制规则。CUnclassrxSCrxSUnclassrxTSSrxTSCrxTSUnclassrx其中,标签Unclass为unclassified的缩写,代表不分级的信息;C为classified的缩写,代表机密级的信息;S为secret的缩写,代表秘密级的信息;TS为topsecret的缩写,代表绝密级的信息。TS级的主体(进程)可以读S、C以及Unclass的数据,但是不能写(根据BLP规则),同样,S级的进程可以读C级和Unclass级的数据,依次类推(因为SMACK规则并不支持传递性,所以规则集合中必须显式的给出高一级进程对下面多级信息的读规则)。又因为规则集合中没有给出写规则,所以写操作只能在同级之间完成(符合BLP)。5SMACK在智能手机上的应用5.1智能手机上的第三方软件在基于Linux的嵌入式系统中,智能手机是其中一种非常典型的嵌入式设备。在这类系统中,最大的安全威胁就是从网上下载的第三方软件。以使用Google的Android操作系统的智能手机为例,这类系统是开放的,任何个人或公司都可以上传程序供手机的使用者下载,而这些程序往往都没有进过严格的测试,开发者可能会有意或无意留下安全漏洞。为此,本文将所有可能的第三方软件划分为3类,以从访问控制的角度确定其特定的资源访问需求。(1)文档处理这种类型的第三方软件显示或编辑各种类型的数据,包括PDF浏览器、小说阅读器、Word文档编辑器等,其特定的访问需求包括各种外部的存储设备——SD/MMC卡,或系统中特定的存储分区。(2)娱乐程序这种类型的第三方软件包括各种游戏和音乐/视频播放器,其特定的访问需求除了(1)中的需求之外,还可能访问各种设备加速器或者特定的设备节点。(3)网络服务除了通常的网络浏览器之外,这种网络服务程序往往是那种访问特定网站并且提供特定功能的程序,包括股票交易软件、GPS汽车导航软件等。其特定的访问需求是网络服务。5.2第三方软件的访问控制文献[6]给出了基于Linux智能手机的体系结构,基于此,本文给出在智能手机上为第三方软件构建沙盒的功能需求。(1)外部程序不允许访问的设备节点所有需保护的设备节点被赋予特定的SMACK标签,外部的程序赋予不同的标签,同时在策略中禁止访问。(2)不能创建设备节点外部程序不能任意创建设备节点。SMACK并不直接支持此功能,通过融入内核的capability机制中的CAP_MKNOD设置来实现此功能。(3)不能访问的数据分区SMACK提供了一个文件安装点,可以赋予安装在这个安装点下的文件(数据)特定的标签已控制外部程序的读写。(4)外部程序不能安装文件系统每一个外部程序(进程)都被赋予了标签,以阻止外部程序安装文件系统。(5)受限的网络访问SMACK可以给外部网络或主机赋予不同的标签,如果外部的网络没有被赋予特定标签,则可以通过映射关系赋予环境标签(ambientlabel)。(6)受限的平台API访问理论上SMACK工作在Linux内核层,只跟底层客体打交道,特定平台上高层的API一般不可能绕过底层的访问控制来操作系统资源。但在商用手机平台上,大多数的公司都会为了提高自己手机的功能特性而设计针对自己手机平台的特定API,这些API并不公开设计细节,而且也不依据安全准则进行设计,运行过程中往往会获取超过它正常执行所
本文标题:嵌入式系统中的SMACK应用研究
链接地址:https://www.777doc.com/doc-3884042 .html