面向pyhon的客流控制模型_第1页
面向pyhon的客流控制模型_第2页
面向pyhon的客流控制模型_第3页
面向pyhon的客流控制模型_第4页
面向pyhon的客流控制模型_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向pyhon的客流控制模型

0基于动态净化的优化设计随着互联网技术的快速发展,网络规模和网络用户的快速增长,web服务为人们的生活带来了极大的便利。与此同时,针对Web服务的各种攻击手段及技术层出不穷,安全形势日益严峻。而Web应用不可避免地会存在一些脆弱点,导致攻击者能够窃取服务端的秘密数据、破坏系统完整性,并影响服务的可用性。污点分析是查找软件脆弱点的一种自动化方法,常用于检测Web程序中的漏洞动态污点分析通过监测程序的运行状态,实时跟踪程序运行过程中污点数据的流向,可以精确检测程序中的漏洞。因此,目前的Web应用程序更倾向于采用动态污点分析。研究人员通过修改Perl、Ruby、PHP的解释器,增加一种特殊的运行模式———污点模式,实现了面向Web脚本语言的动态污点分析但是,上述动态污点分析方法大多只提供Web应用的污点跟踪和分析,缺乏完善的信息流策略和模型,对信息流的控制也较为粗糙。因此,为了更好地满足Web服务的安全需求,需要在动态污点分析的基础上,设计并实施有效的信息流控制。现有的基于动态污点分析的信息流控制(informationflowcontrol,IFC)方法及模型大部分是在操作系统进程级实现的基于上述分析,本文提出了一个面向Python的信息流控制模型(informationflowcontrolforPython,PIFC)。模型的基本思想是,将Python程序中的对象抽象为实体并赋予相应的能力和标记;将信息流控制转换为方法调用所涉及实体间(调用者、被调用者、参数及返回值)的信息交互控制;引入实体的降密及净化能力来防止污点积累。依据此模型设计并实现了一个Python库LPIFC,提供污点标记存储及标记的动态调整支持。PIFC模型实现了应用程序内部的实时污点传播和跟踪,以及细粒度、完整的、灵活的信息流控制,有效地防止了PythonWeb应用程序漏洞导致的信息泄露及系统完整性破坏等安全问题;LPIFC库的实现轻量、易用、简洁,充分利用Python中装饰器和动态分发机制等高级特性1基于python的信息流检测模型1.1对象不同1)实体O应用程序中的对象,即在Python中,类、类实例和方法等一切都是对象。2)标签(污点)一个标签t3)标记一个标记L4)能力一个能力C5)权限映射函数f(t6)决策集D={allow,reject},其中allow表示允许实体间的信息流动,reject表示拒绝实体间的信息流动。1.2实体b标记中的标签在Python、Ruby等面向对象的语言中,类、类实例和方法等一切都是对象。因此,本文将对象抽象为信息流控制模型的基本实体。对象的属性和方法记录了该对象的状态信息和行为,程序中的所有信息流都是由对象的方法调用所产生的1)信息流动规则信息可以从实体A流向实体B,当且仅当,对于实体A的标记中的任意标签,实体B的能力中都包含该标签,不论该标签的权限为正还是为负。例如,L2)污点传播规则当实体A的污点信息流向具有相应被污染能力的实体B时,实体B将会受到相应的污染,发送能力将变弱。也就是说,如果允许信息从实体A流向实体B,那么,若实体A标记中的标签在实体B的能力中权限为正,则该标签将会被添加到实体B的标记中。3)污点去除规则当实体A的污点信息流向具有相应去污能力的降密器或净化器B时,实体A的标记中的相应标签将会被去除。例如,L该模型中只对需要跟踪的敏感实体明确地赋予相应的标记和能力。而对于其他未明确授权的实体,隐含一个默认能力C1.3实体特色功能完整性意味着被保护的实体不接收其能力范围外的不可信数据。首先,将实体的能力标签集初始化为空,即该实体不具备任何接收能力和被污染能力,因而无法接收任意带有恶意污点类型标签的信息;然后,对可能产生攻击的用户恶意输入数据设置相应的污点标签,如XSS标签(跨站脚本攻击)、SQLI标签(SQL注入攻击)等;最后,分析应用程序的完整性需求,根据实体的完整性保护级别,赋予实体相应的被污染能力,即向实体的能力标签集中添加相应的标签。因此,当攻击者试图通过注入数据来实施完整性破坏时,信息流控制的实施将阻止恶意数据流向敏感实体。2)保密性保密性意味着防止敏感秘密数据被非法泄露给不可信实体。首先,对秘密数据或秘密数据源设置相应的污点标签,如secret标签(秘密数据)、privacy标签(个人隐私数据)等,保证该标签会在整个应用程序中传播;然后,对具有秘密数据处理能力的实体赋予相应的能力标签。因此,当攻击者试图将秘密数据泄露给未授权的第三方不可信实体时,将会自动被信息流控制规则所阻止。3)降密/净化降密/净化的本质是移除实体的相应污点标签,以防止污点数据积累所导致的实体发送能力越来越弱。例如,病人的病历中一般包括病人的个人隐私信息和相关疾病记录,病历实体标记为L2基于实验库的实验本文充分利用Python面向对象的特点及动态分发机制,在不修改Python解释器的前提下,针对Python应用程序实现了一个污点函数库,其核心功能是为Python应用程序中类、实例、方法等对象提供污点标记及信息流控制的支持。2.1网络地理类型的选择在Python中,类、类实例和方法等一切都是对象,Python解释器内建二十多种对象类型污点标签总是依附于对象,用于标志对象的污点信息类型,并随着对象间的信息流动自动调整,因此污点存储应伴随对象从创建到消亡的整个生命周期。为了满足这一要求,需要扩展对象内容以提供对象污点标记和动态调整的支持。2.1.1tstr的继承针对不可变性对象创建后值无法修改的特点,采用继承不可变性对象所属的类对象来创建新的子类,通过在子类中添加污点信息的属性字段,并重载父类方法的方式来支持污点分析和信息流控制。在具体实现中,以不可变字符串str为例,创建新类t_str作为str的子类,t_str继承了父类str的全部属性和方法。此外,在t_str中新增两个集合类属性字段taints和capabilities,分别表示t_str的标记和能力;同时,再创建两个字典类型字段meth_taints和meth_capabilites,分别表示t_str中方法的标记和能力,字典中键列表对应方法名,值列表分别对应方法的标记值和能力值。不可变性对象污点存储如下:功能:污点存储方法taint_class()函数的作用是为不可变类对象提供污点标记存储的支持。首先为目标类创建一个子类对象,然后在子类中定义并初始化污点信息字段,最后调用propagate_method()函数重载父类方法。taint_class()函数中使用了Python提供的自省(introspection)模块中的功能函数。2.1.2生成分类结果可变性对象一般都是复合类型,既支持任意组合的多层次嵌套且没有固定类型的约束,可分为用户自定义可变性对象和内建可变性对象两种情况讨论。对于用户自定义的类,可以直接在类定义语句外通过赋值变量名给该类增加属性。对于用户自定义的类实例,也可以在实例创建后直接赋值变量名给该对象增加属性。Python动态创建属性如下所示:这是由Python语言的动态性决定的:类和实例只是命名空间对象,属性可以通过赋值语句动态建立;类似地,方法也可以完全独立地在任意类对象和实例对象的外部动态创建。根据上述特点,可以为用户自定义的类和类实例对象动态增加属性字段taints和capabilities用于存储污点信息,同时也增加污点信息的相关处理方法,如get_taint_tags()方法,获取对象污点值。内建类中的可变性对象通常作为容器使用,容器大小可按需动态调整。因此,可以不用单独为这种可变性对象增加污点属性字段,而是通过容器内嵌套的基本对象污点标记的集合作为该对象污点标记。2.2增设加害流程见图1本文将Python程序依次分解为模块、语句、表达式以及对象。其中,程序由多个功能模块构成,每个模块由包含表达式的语句组成,表达式则用于建立并处理对象。程序中的一切数据都是以对象的形式出现———包括Python解释器提供的内建对象及用户自定义的类和类实例对象。根据Python语言的语法和语义可知,Python支持的基本语句集共有八大类,即赋值语句、调用语句、print打印、if/elif/else判断语句、for/while循环语句、pass占位符、break/continue语句、异常语句Python中的方法可以通过多种方式输入并产生输出,方法的整个执行周期分为两个阶段,即方法调用阶段和返回阶段,如图1所示。信息流控制是要跟踪和控制方法执行时涉及到的调用者、被调用者、参数与返回值四个实体间任何可能的信息流动。基于该思想,本文设计并实现了污点传播及信息流控制流程:a)在方法调用之前,收集方法调用者、被调用者及参数列表的污点信息;b)分别比较调用者标记、参数标记与被调用者的能力;c)若检查通过,则将调用者和参数的污点标记传播给被调用者;d)调用方法,将方法的污点标记传播给返回值;e)再次验证是否允许信息从返回值流向方法调用者,若允许,传播返回值污点信息至调用者。该流程的基本实现如下所示:功能:信息流控制参数:方法对象返回值:原方法返回值Python中的装饰器是一种由@符号标志的特殊函数,其后紧接一个方法或函数的定义(元函数),本质上是对元函数的运行时声明,用于修饰和管理元函数。taint_analysis()是本文实现的一个装饰器函数,通过控制污点对象的方法调用流程实现污点传播及信息流控制。本文实现了用于支持污点存储及信息流控制的Python库LPIFC(libraryofinformationflowcontrolforpython),表2中是LPIFC库提供的API接口函数。3示例分析与性能试验3.1信息安全需求本节以GNUHealth病人信息管理涉及的病人信息包括个人信息和医疗信息(如疾病信息、处方信息和诊断信息等)。实际的应用场景中,为了进行药物研究或医学实验,或者为了联合会诊应对疑难杂症,Health的各个端点(如医院、医药公司、医疗机构)之间需要共享医疗信息。然而,为了保护用户的个人隐私,病人信息的所有者不能将病人信息直接发送给其他端点。因此,需要对个人信息提供机密性保护,对医疗信息提供完整性保护,保证这两类信息是相互隔离且相互独立的。针对上述安全需求,现有的信息流控制方法,文献系统安全需求可描述为:端点B拥有接收病人个人信息和医疗信息的能力,端点C只拥有接收病人医疗信息的能力。GNUHealth应用LPIFC库后,一旦B接收A的信息,B即被污染,B的标记中将增加标签{private,medical}。此后,B的发送能力变弱,LPIFC将自动阻止B直接向C发送病人信息。实验结果表明,通过实施本文的信息流控制模型,即使Health的某个端点存在安全漏洞,LPIFC也能保证患者医疗数据的完整性,以及个人隐私数据的机密性。3.2模拟真实场景本节测试LPIFC库对系统性能的影响。在服务器(X56602.80GHz,Ubuntu10.04.2)上安装GNUHealth2.4.1,模拟真实的Health应用场景。LPIFC对系统性能的影响主要表现在方法调用的执行时间上,分析LPIFC开启前后方法调用完成所需要的时间,结果如表3所示。测试结果表明,LPIFC引入的开销较小,延迟率为11%~14%,在用户可接受的范围内。4基于fpgac的程序模拟本文提出了一个面向PythonWeb应用的信息流控制模型PIFC,该模型通过控制方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论