基本信息
- 项目名称:
- 基于程序安全行为模型的3G手机安全软件
- 来源:
- 第十一届“挑战杯”国赛作品
- 小类:
- 信息技术
- 大类:
- 科技发明制作B类
- 简介:
- 在3G时代,手机功能日益丰富,用户可以通过手机上网冲浪、玩在线游戏、下载程序等。然而,手机的信息安全隐患却日益突出,比如: ● 私自发送短信; ● 窃取手机中的私人和商务信息; ● 删除或破坏用户数据(如手机拍摄的照片)。 传统的防病毒软件对已知病毒查杀颇为有效,但却不能完全识别这些隐藏在“正常程序”中的千变万化的恶意行为;防火墙死板地束缚了程序功能。为此,我们在理论创新的基础上,提出了基于程序安全行为模型的改进的安全模型,研发了这套手机安全软件。
- 详细介绍:
- CoS手机安全软件采用携带模型代码(model-carrying code, MCC)方法的基本安全框架并进行改进: 1.在代码生产方,通过自动静态分析源代码,生成基于扩展的下推自动机(extended pushdown automaton, EPDA)的程序安全行为模型,该模型描述代码中所有安全敏感的方法调用,以及反映程序结构的用户自定义方法调用,并辅以数据流分析,描述方法参数的限定; 2.在代码使用方,安全策略表达为扩展的有限自动机(extended finite state automaton, EFSA),可与程序安全行为模型自动机匹配,形式化验证是否存在模型安全行为与安全策略的冲突; 3.代码使用方运行程序时,对程序实际行为进行模型强制实施,截获安全敏感方法调用后验证是否与安全行为模型相符合,如果出现不一致可中止该进程。 理论创新主要包括: ● 采用扩展的下推自动机(EPDA)作为描述程序安全行为的模型:比以往采用的EFSA等模型更加精确,可有效处理模仿攻击(mimicry),涵盖更大范围和绝大多数的恶意行为;同时保证运行时效率,模型描述能力大幅提高的同时没有带来显著的额外开销; ● 通过描述程序安全行为的EPDA和描述安全策略的EFSA相乘获取程序行为和安全策略的冲突; ● 从以往针对过程式语言提升到针对工程化的面向对象语言Java,具有更大的实用性和现实意义。 技术创新主要包括: ■ 实现了基于Eclipse Java开发工具接口、采用访问者模式遍历抽象语法树进行数据流分析并获得EPDA的方法技术,该源代码静态分析技术比动态检测技术更加方便用户使用; ■ 实现了基于JVMDI的模型强制实施,采用通用软件接口扩展Java虚拟机,突破修改Java字节码和修改Java虚拟机的局限性,通用性和移植性更好。 实用创新性主要体现在: ◆ 解决了新问题 ○ 针对3G时代手机信息安全所面临的前所未有的新威胁; ○ 填补了正常程序和病毒之间的“灰色地带”,即针对包含恶意行为却不足以被防病毒软件识别为病毒的程序有效拦截; ◆ 采用了新方法 ○ 不依赖病毒库,摆脱病毒与防毒软件“道高一尺、魔高一丈”的循环;通过程序安全行为模型的自动获取及验证,准确识别千变万化的未知恶意行为,有效处理移动代码在移动过程中遭到篡改的情况; ○ 用户在运行程序前即可通过模型概览安全行为,避免用户中止程序的负面作用,为用户节省宝贵的手机运行时间(手机电池有限); ○ 面向特定程序自助配置安全策略,既不像代码签名机制对程序行为不加限制,也不像“沙盒”禁止一切本地资源访问而丧失功能性,从而取得安全性和可用性的平衡,优于现有软件平台的安全机制。
作品专业信息
设计、发明的目的和基本思路、创新点、技术关键和主要技术指标
- 3G时代手机功能日益丰富,用户越来越多地下载运行手机程序。然而手机信息安全隐患日益突出,如私自发送短信、窃取私人信息、删除用户数据等。防病毒软件对已知病毒查杀颇为有效,但不能完全识别程序中千变万化的恶意行为;防火墙死板地束缚了程序功能。我们的作品正是针对这些问题,为手机安全执行非信任代码设计的。 我们作品包括PC端和手机端:(1)PC端供Java程序员使用,是开发环境Eclipse的插件,可自动获得安全行为模型,并与程序一同发布;(2)手机用户下载程序和模型,首先验证模型是否与手机安全策略相符;如有冲突表明存在安全风险,用户可不执行程序,也可调整安全策略。程序执行时,我们的扩展Java虚拟机监控程序行为是否与模型相符,防止有篡改。 创新点: 一、解决了新问题:(1)针对3G手机信息安全面临的新威胁;(2)填补了正常程序和病毒之间的“灰色地带”,即包含恶意行为却不足以被识别为病毒的程序。 二、采用了新方法:(1)避免依赖病毒库的缺陷,通过程序安全行为模型准确识别未知恶意行为和遭到的篡改;(2)用户在运行程序前即可通过模型概览安全行为,避免运行时中止,为用户节省有限的电池;(3)面向特定程序自主配置安全策略,从而取得安全性和功能性的平衡。 技术关键和指标:(1)程序安全行为模型的自动生成,响应时间≤10S;(2)模型安全性形式验证器,能够根据手机安全策略验证模型的安全性,响应时间≤15S;(3)运行时模型强制实施,增加耗时≤20%。
科学性、先进性
- 作品有着坚实的理论基础。移动代码安全领域已有诸多框架;入侵检测领域发展了使用自动机建模的方法;面向对象语言的静态分析已较成熟。我们的作品以携带模型代码(MCC)方法为依托,融合了入侵检测和程序分析领域的研究成果,创新性地提出了基于扩展的下推自动机(EPDA)模型和面向对象语言静态分析技术的改进MCC方法。较以往安全机制有较大优越性: 1) 代码签名仅能证明代码来源可信; 2) 沙盒方法过分限制了代码功能; 3) 携带证明代码方法不切实际假定生产方知道使用方安全策略; 4) 协议安全为代码生产方带来了额外负担; 5) MCC方法既保证安全性又提供灵活性,同时基于自动化方法,方便使用,但模型描述能力不足、建模操作不便。 我们作品汲取了MCC方法的优势,并进行了改进: ● 采用EPDA作为描述程序安全行为的模型,更加精确,涵盖大多数恶意行为; ● 从以往针对过程式语言提升到针对工程化面向对象语言Java,具有更大的实用性和现实意义。
获奖情况及鉴定结果
- 2008年被教育部评定为“国家大学生创新性实验计划”资助项目; 2009年获本校“家曦杯”大学生课外学术科技作品竞赛科技发明制作类一等奖; 2009年获吉林省“挑战杯”大学生课外学术科技作品竞赛科技发明制作类一等奖。
作品所处阶段
- 实用原型系统
技术转让方式
- 申请及转让专利,公司产品化 吉林融信电子科技有限公司已意愿协作
作品可展示的形式
- 实物、产品,现场演示,图片,录像 需220V电源、展桌、有线网接入、3G网络覆盖
使用说明,技术特点和优势,适应范围,推广前景的技术性说明,市场分析,经济效益预测
- PC端供Java程序员使用。打开装有CoS插件的Eclipse,只需单击“产生模型”按钮即可获得模型文件。手机端供手机用户使用:模型验证器判定模型是否与本机安全策略冲突,用户可自主配置策略;扩展的Java虚拟机CoS-PhoneME部署和使用与原虚拟机相同。 本作品适用于手机程序开发人员和手机用户使用,特别是3G手机,可获得现有机制无法提供的安全保障。可推广到各大手机厂商的Java平台,用户可安全尽享下载程序的丰富功能,将为厂商赢得更大市场。 中金公司预计,09年我国3G投资将达两千亿元。另据诺基亚调查显示,55%的手机用户使用了第三方程序。可见,本作品为3G手机提供安全保障,具有巨大的市场需求,将会产生巨大的经济效益和社会效益。吉林融信电子科技有限公司已意愿协作本项目产品化及市场推广。 本作品亦有显著的理论意义。可以扩展到入侵检测、木马病毒防护等领域。而且其中对程序行为模型的提取和验证方法,也可应用于程序行为建模、代码错误检查等更广阔的范围。
同类课题研究水平概述
- 早期Java语言的安全机制采用沙盒技术,将程序分为两类,一类不可以访问任何本地资源,另外一类可以访问任何资源,这种死板的模式极大限制了程序的功能。为了解决以上缺陷,人们采用病毒扫描、完整性检测、行为检测等主动侦测技术。病毒扫描技术是目前使用最广泛的检测技术,但是每天都有成千上万条病毒问世,维持特征码数据库的快速更新仍对新病毒无能为力;另外,由于网络环境复杂化,人们对程序安全的粒度要求却在提高,导致了越来越复杂的安全软件配置。作为完整性检测中的一种,代码签名技术被现代Java安全框架所采用,但是代码签名技术对第三方攻击无能为力。 于是,更多的研究者将目光转向了基于程序行为的检测方法学。通过对程序行为建立模型来判定程序行为的安全性最早的工作可以追述到入侵检测领域。手段主要可以分为两类:误用检测和异常检测。其中最著名的是携带证明代码(Proof-Carrying Code)方法,要求代码生产方提供移动代码的安全性证明,代码使用方检查这个证明以确定是否执行。PCC方法假定了代码的生产方知道使用方的安全策略,显然假设不现实,因为不同使用方的安全策略可以不同。 近年,由R. Saker提出的Model-Carrying Code(MCC)方法日益得到重视。该方法有机地组合了以上静态验证和动态监测技术。验证阶段,程序行为模型与策略进行比较,这是一种误用检测的手段;程序运行时由运行监控器保证程序的实际行为不超出模型描述,这是一种异常行为检测手段。但MCC方法原有模型描述能力有限,无法处理模仿攻击;基于动态检测技术建模,给使用者带来极大不便;且只能处理过程式语言,实用性不强。 最新提出的携带协议安全(Security by Contract)一定程度上解决了PCC的问题,移动代码生产方可获知手机公司的策略模板,并据此设定协议。但这一方法为移动代码生产方带来了额外负担,需要开发人员手工设定协议,尚无自动化机制。 运行时强制实施一般采用两种方法,一种是通过修改Java字节码,另外一种是通过修改Java虚拟机。前者的主要思想是插入一些监控代码,但由于Java类文件一般通过了加密,操作消耗时间较多。后者修改开源Java虚拟机,添加监控操作,但修改后的虚拟机不在Java虚拟机规范的范围内,因此这种方法的实用性比较低。