精华内容
下载资源
问答
  • 面向应用类的安全策略将用户使用的应用抽象为应用类,定义了主体的运行状态~用户域和应用域以及客体的类别――用户数据和应用类数据,定义了用户数据访问控制规则、应用类数据访问控制规则以及主体安全状态的迁移...
  • 理解什么是线程安全性、原子性

    万次阅读 2019-12-29 11:56:30
    进程想要执行任务需要依赖线程,换句话说就是进程中的最小执行单位就是线程,并且个进程中至少有个线程。提到多线程这里要说两个概念,就是串行和并行,搞清楚这个我们才能更好的理解多线程。所谓串行其实是相...

    目录

    •写在前面

    •原子性

    加锁机制


    •写在前面

    进程想要执行任务需要依赖线程,换句话说就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。提到多线程这里要说两个概念,就是串行和并行,搞清楚这个我们才能更好的理解多线程。所谓串行其实是相对于单条线程来执行多个任务来说的,我们就拿下载文件来举个例子,我们下载多个文件,在串行中它是按照一定的顺序去进行下载的,也就是说必须等下载完A之后,才能开始下载B,它们在时间上是不可能发生重叠的。

    要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问。要是的对象是线程安全的,需要采用同步机制来协同对对象可变状态的访问,如果无法实现协同,那么可能会导致数据破坏以及其他不该出现的结果。java中的同步机制是关键字synchronized,它提供了独占式的加锁方式,不仅如此还包括volatile类型变量,显式锁Lock以及原子变量。

    单线程近似定义为“所见即所知”,那么定义线程安全性,则当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。一个类在单线程中运行都不正确,那么它肯定是不会是线程安全的。如果正确的实现了某个对象,那么在任何操作中(包括调用对象的公有方法或者对其公有域进行读写操作)都不会违背不变性条件或后验条件。在线程安全类的对象实例上执行的任何串行或并行操作都不会处于无效状态。

    无状态的对象一定是安全的,啥是无状态?这个类既不包括任何域,也不包括任何对其他类中域的引用。举个例子,大多数Servlet都是无状态的,从而极大的降低了在实现Servlet线程安全性时的复杂性,只有当Servlet在处理请求时需要保存一些信息,线程安全性才会成为一个问题。

    •原子性

    其实原子性就是一个不可分割的,我们怎么理解呢?举个例子,当我们在无状态对象中增加一个状态时,会发生什么情况?比我们要计算一个类调用了多少次(这个类可以是Servlet),我们定义一个私有的Long类型的域(命名为count),在方法中没调用一次就将这个值加一(即count++),如下。

       Integer count = 0;
       public void getCount() {
           count ++;
           System.out.println(count);
       }

    由于我们没有对这个类进行任何的同步机制操作,所以这个类是非线程安全的,虽然在单线程环境中能正确运行,但在多线程情况下就会出现问题。我们注意到count++这个操作,这个操作看上去是一个操作,其实这个操作并非原子性的,因为它并不会作为一个不可分割的操作来执行,实际上count++ 包含了三个独立的操作,分为读取count的值,将值加1,然后计算结构写入count中,这是一个“读取-修改-写入”的操作序列,并且其结果依赖于之前的状态。在并发下就会出现问题,我再多线程下跑了上面那段代码,结果如下

    我们可以看到,这里出现了两个26,为什么会出现这种情况,出现这种情况显然表明我们这个方法根本就不是线程安全的,出现这种问题的原因有很多,我们说最常见的一种,就是我们A线程在进入方法后,拿到了count的值,刚把这个值读取出来还没有改变count的值的时候,结果线程B也进来的,那么导致线程A和线程B拿到的count值是一样的。

    在并发编程中,这种由于不恰当的执行时序而出现不正确的结果是一种非常重要的情况,它有一个正式的名字,叫“竞态条件”。竞态条件是啥?当某个计算的正确性取决于多个线程的交替执行时序时,那么就会发生竞态条件,最常见的竞态条件类型就是“先检查后执行”操作,即通过一个可能失效的观察结果来决定下一步的动作。比如首先观察到某个条件为真(例如文件X不存在),然后根据这个观察结果采用相应的动作(创建文件X),但事实上,在你观察到这个结果以及开始创建文件之间,观察结果可能变得无效(另一个线程在这个期间创建了文件X),从而导致各种问题(未预期的异常、数据覆盖、文件被破坏等)。

    与大多数并发错误一样,竞态条件并不总是会产生错误,还需要某种不恰当的执行时序。原子操作是对于访问同一个状态的所有操作(包括该操作本身)来说,这个操作是一个以原子方式执行的操作。而我们前面提到的类似count++的这种操作,叫做复合操作,即包含了一组必须以原子方式执行的操作以确保线程安全性。在实际情况中,应该尽可能的使用现有的线程安全对象来管理类的状态,与非线程安全的对象相比,判断线程安全对象的可能状态及其状态转换情况要更为容易,从而也更容易维护和验证线程安全性。这里值得一提的是,java中给我们弄好了很多原子操作的类型,在这个包下java.util.concurrent.atomic。

    加锁机制

    上面我们说了,我们可以对单个类进行原子性操作,这样可以保证我们程序的安全性,但是,我们想一想,如果当多个原子性的操作同时进行时,而且各个原子性操作之间都存在相互依赖的关系,这种情况下,我们怎么保证程序运行正确(线程安全)?如果还是使用原子性操作的方法,那么我们要保持状态的一致性,就需要在单个原子操作中更新所有相关的状态变量。

    说到这里,我们就不得不提一下java提供的一种内置的锁机制来支持原子性,即同步代码块(synchronized block),同步代码快包括两部分,一个作为锁的对象引用,一个作为由这个锁保护的代码块。以关键字synchronized来修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所在的对象。每个Java对象都可以用作一个实现同步的锁,这些所被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获得锁,并且在退出同步代码块时自动释放锁,这里要说,获得内置锁的唯一途径就是进入由这个锁保护的同步代码块或方法。值得一提的是,内置锁相当于一种互斥锁,意味着最多只有一个线程能持有这种锁。要注意了,任何一个执行同步代码块的线程,都不能看到有其他线程正在执行由同一锁保护的同步代码块(这里涉及到可见性的问题)。synchronized直接加在方法上,虽然能很方便的解决线程安全的问题,但是也会带来性能低下的问题,所以synchronized怎么使用,也是值得学习的。

    可重入函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。

    当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会被阻塞,然而,由于内置锁是可重入的,因此如果某个线程试图获得一个已经由它自己持有的锁,那么这个请求就会成功。“重入”意味着获取锁的操作的粒度是线程,而不是调用。重入的一种实现方式是,为每一个锁关联一个获取计数值和一个所有者线程,当计数值为0时,这个锁就被认为是没有被任何线程持有。当线程请求一个未被持有的锁时,JVM将记下锁的持有者,并且将获取计数值置为1,如果同一个线程再次请求获取这个锁,计数值将递增,而当线程退出同步代码块时,计数器会相应的递减,当计数值为0时,这个锁将被释放。

    到此我们就可以将多个复合操作封装到一个同步代码块中,但是这样是不够的,如果用同步代码块来协调对某个变量的访问,那么在访问这个变量的所有位置上都需要使用同步。而且,当使用锁来协调对某个变量的访问是,在访问变量的所有位置上都要使用同一个锁。而且,并不是只有在写入共享变量时才需要使用同步,对于可能被多个线程同时访问的可变状态变量,在访问它时都需要有同一个锁,这种情况下,我们成状态变量时由这个锁保护的。

    在这里值得一提的是,当使用锁时,你应该清楚代码块中实现的功能,以及在执行该代码块时是否需要很长的时间。无论是执行计算密集的操作,还是在执行某个可能阻塞的操作,如果持有锁的时间过长,那么都会带来活跃性或性能的问题。当执行时间较长的计算或者可能无法快速完成的操作时(例如网络IO或控制台IO),一定不要持有锁。

    展开全文
  • 软件定义安全点点理解

    千次阅读 2019-01-15 10:39:17
    万事开头难,中间也难,最后也难。...软件定义网络(SDN),是网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的...

    万事开头难,中间也难,最后也难。第一次写博客,内容、排版都不太好,请见谅。文章内容部分来源绿盟的《软件定义下的新型安全架构和实践》、《软件定义安全》以及《软件定义安全:SDN/NFV新型网络的安全揭秘》这本书。

    1.SDN/NFV

    软件定义网络(SDN),是网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。

    SDN侧重于将设备层面的控制模块分离出来,简化底层设备,进行集中控制,底层设备仅仅只负责数据的转发。目的在于降低网络管理的复杂度、协议部署的成本以及网络创新

    SDN架构具有以下特点:

      1.控制平面与数据平面相互分离;

      2.智能和状态在逻辑上集中;

      3.开放接口;

    网络功能虚拟化(NFV),通过软硬件解耦及功能抽象,使网络设备功能不再依赖于专用硬件,资源可以充分灵活共享,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。

    SDN关注的是网络流量调度,NFV关注的是网络资源管理。SDNNFV是可以相互独立存在的,据相关研究表明,二者结合起来的效果更优。

    2.SDN/NFV环境中的安全问题

    NFVSDN、开源、网络转型,无疑是这两年电信业的热词。不少运营商正进入兴奋的验证阶段。

    然而,传统网络设备虽然是“黑匣子”解决方案,但这样的好处是安全。SDN/NFV虽灵活、敏捷、低成本,但这种基于开源软件和白盒硬件的网络构架,伴随而来的还有敞开的漏洞和不可忽视的安全问题。

    一旦网络开放,如果安全问题处理不好,我们固若金汤的通信网络可能就会像这次感染勒索病毒一样,漏洞被攻击,且不断传播、感染。

    SDN 虽然带来了很多好处,但在安全方面, 也带来了新的特有的安全威胁。

    架构安全:

    控制层面的安全威胁:管理集中性使得网络配置、网络服务访问控制、网络安全服务部署等都集中在SDN控制器上。攻击者一旦实现对控制器的控制,将造成网络服务的大面积瘫痪,影响控制器覆盖的整个范围。由于SDN网络的可编程性、开放性,SDN控制器安全防护的重要性远大于传统网络中网管系统的安全。所以围绕控制器的攻防是SDN自身体系安全中最关键的节点。

    例如,在OpenFlow交换机流表中不存在的初始流信息将通过集中的控制器进行处理,虽然控制器可能并不是某次分布式拒绝服务攻击的直接目标,但大量的初始流量将使控制器的负载急剧上升;攻击者向控制器发送多个服务请求并且所有请求的返回地址都是伪造的直到控制器因过载而拒绝提供服务。

    应用层面的安全威胁:可编程性使控制器向应用层提供大量的可编程接口,这个层面上可能会带来很多安全威胁。例如,向应用层的应用中植入蠕虫木马程序等达到窃取网络信息更改网络配置占用网络资源等目的,从而干扰控制面的正常工作进程影响网络的可靠性和可用性;利用某些接口实现拒绝服务攻击、进行网络窃听等。

    数据平面的安全威胁:攻击者通过直接侵入交换机,用虚假信息填满流表,导致交换机产生“流表满”错误,增大流结束超时时间,增加恶性攻击成功的几率。这种攻击方法对交换机的输入缓存也是有效的,当前OpenFlow协议对交换机输入缓存设置了最小数率控制,当包到达速率超过控制门限时,也表现出丢包。

    开放性也给SDN带来很多安全隐患:安全和网络的应用插件都具备一定的规则写入权限, 随着应用的复杂化,多个应用之间会出现安全规则冲突,从而造成网络管理混乱、安全规则被绕过、服务中断等现象; 第三方应用或插件可能带有恶意功能、未声明功能、安全漏洞等多种风险。

    OpenFlow协议安全

    §1.信息泄露:嗅探出控制器与交换机的信息,特别是流表信息。

    §2.非法接入与协议传输安全问题

    §3.连接建立的安全问题

    §4.action动作处理的安全问题

    针对 SDN 引入的新安全威胁,相应的防护建议策略包括但不限于以下几个方面:

    §1.在控制器层面,在控制器入口处部署流量清洗设备,防止大规模流量攻击造成拒绝服务;使用分布式多控制器方案,当某一台控制器受到攻击或者发生故障,马上自动选择其他控制器代替其功能,使得网络不会因为控制器故障而产生大面积瘫痪; 部署安全代理,由于控制策略都是应用程序实现的,对应用程序进行漏洞检测和安全加固,可以在一定程度上缓解控制器安全问题;制定一系列严密的授权、访问控制、安全管理等规则赋予使用者一定的管理权限。

    §2.在应用层层面,制定一系列安全准入规则,对应用提供的服务以及需要控制器提供的接口等进行鉴定,负责任的应用才允许成为SDN中合法的应用;利用可编程接口针对目前存在的安全威胁,利用已有的技术对安全威胁进行监控和排除;应用软件认证机制,例如自信任管理方法确保交换机的 安全。

    §3.其他层面的,设计实现安全服务和网络服务之间、安全服务之间等接口的安全标准;慎重开放 API接口,开放之前做好安全分析;设计精巧的算法及优先级政策,以避免安全策略冲突或被绕过。

    同样的,NFV也带来了新的特有的安全威胁:

    §1.OpenStack的安全隐患:OpenStackNFV的标准构建模块,它应用于创建开源的云或数据中心平台。它假定OpenStack控制器和计算节点位于同一网络,且距离甚近可一旦应用到庞大的电信NFV网络中,计算节点在核心网之外,运营商不得不妥协折中,放宽控制器和计算节点间的安全规则,这就带来了安全风险。

    所有的OpenStack控制器需运行专用协议,且必须在防火墙配置规则来管理流。在某些情况下,必须在防火墙打开多个pinholes(针孔),OpenStack才能工作。英国BT对企业网虚拟化的测试显示,为了使计算节点工作,其不得不在防火墙为控制器打开500多个pinholes。显然,在这种构架下,安全是一个问题。OpenStack目前表面上看起来还安全,不排除有规模化的因素,一旦电信网络大量采用,规模庞大,难保喜欢搞事的攻击者们不认真研究一番。

    §2.软件在攻击面前不堪一击:尽管传统电信设备功能单一,但采用专用ASIC,可实现高性能处理且运行稳定,尤其在网络高峰期能经受考验,坚挺而可靠。NFV现在要把传统电信设备的一些物理功能软件化,并将这些软件运行于通用的CPU之上。问题来了。一些物理功能被软件代替,这些软件在网络负载增加时,相对更加脆弱,尤其在受到DoSDDoS攻击时,网络负荷狂增,难说不会不堪一击。

    §3.控制面开放且可远程操作很危险:NFV将控制面从设备分离,并抽取出来,整个主机都可以通过外部控制器来进行编程,这为那些黑客提供了机会。另外,我们说网络转型要以用户为中心,要实现终端用户的自助服务,这一切需用户通过一个公共的外部网站或平台来实现。当用户自助修改功能时,需求通过外部网络传送到NFV编排器,这就意味着,在外网和运营商内网之间为终端用户打开了一条控制网络的通道。可怕的是,这个“用户”也可能是个不怀好意的黑客,他可以通过漏洞或pinhole发起攻击

    §4.恶意软件可以在虚拟机和主机间快速传播:NFV讲的是虚拟化,计算要虚拟化,存储要虚拟化,网络要虚拟化。它利用虚拟化软件Hypervisor将物理服务器和软件功能分开,运行不同操作系统的各种虚拟机运行于物理服务器上。通俗的讲,传统的电信设备的物理功能变成了通用服务器,这些服务器运行于虚拟化环境。每一个主机上运行一个虚拟化网络,并与整个网络连接。这种运行于虚拟环境下的主机遍布网络,从数据中心到基站,到客户驻地。这样,由于虚拟机是经常被实例化的软件(打开和关闭),一旦受到攻击,病毒就可能从一个虚拟机传播到另一个,或从一个主机上的虚拟机传播到其它主机上,最终蔓延整个网络。为此,每个主机运行的虚拟化网络,都必须被单独监视和保护。以前高高的防护围墙,现在要细化到一个个封闭的格子间。

    3.传统安全面临巨大的挑战

    传统安全面临巨大的挑战:IT系统变革及安全威胁的挑战。

    IT环境变化:虚拟化、自动化、软件化、互联网化。

    安全威胁的挑战:

    网络环境变化所带来的新的安全威胁

    安全机制是否适应软件化、虚拟化环境

    安全策略是否能够及时、正确地跟随环境迁移

    互联网上的安全事件不减反增

    Mirai,乌克兰电力门,RansomewareSwift系统$8100w盗窃,OpenSSLStruct 2……

    4.百家论

    (1)自适应安全

    不再假设防护能实现万无一失的安全

    更强调检测和响应的能力

    更重要的是将这四个步骤有机的进行编排,实现针对不同攻击的动态防御

    (2)应用编排

    PhantomRSAC 2016创新沙盒Winner从应用层入手,构建自动化、可编排的安全应用体系支持多种数据源和主流的SIEM平台;同时,可以让安全管理团队编写脚本Playbook,调用相应的安全服务,实现安全运维自动化

    Resilient System:被IBM收购,推出弹性的灾难恢复服务

    编排引擎可以软件定义安全为支撑体系,利用北向应用编排机制进行安全资源和策略的灵活调配,实现多种防护手段的协同运作

    (3)零信任/微分段

    Google BeyondCorp

    §彻底打破内外网之别,通过统一的访问控制引擎,管理不同用户对不同资源的访问,而不将用户和资源的位置作为决策依据

    Skyport Systems

    §基于TPM的虚拟化零信任访问控制体系

    CSA SDP

    §面向企业关键基础设施的集中访问控制体系

    VMWare Micro-Segmentation

    §虚拟化环境中的东西向内部网络访问控制

    5.软件定义安全

    软件定义安全理念:

    连接协同有机结合多种安全机制,实现协同防护、检测和响应;

    敏捷处置在出现异常时进行智能化的判断和决策,自动化地产生安全策略,并通过安全平台快速分发到具有安全能力的防护主体;

    随需而变当安全事件爆出后,攻击者的攻击方法更新很快,那么就要求防护者能紧跟甚至超过攻击者,以快制快,在数据泄露的窗口期内阻止攻击者。

    软件定义安全是从软件定义网络引申而来,原理是将物理及虚拟的网络安全设备与其接入模式、部署方式、实现功能进行了解耦,底层抽象为安全资源池里的资源,顶层统一通过软件编程的方式进行智能化、自动化的业务编排和管理,以完成相应的安全功能,从而实现一种灵活的安全防护。

    安全机制软件化

    接口开放、易扩展

    架构功能分离

    软件定义安全的特点是:开放生态环境、数据平面和控制平面分离、可编程的安全能力、与网络环境解耦。

    软件定义架构:

     安全资源层:由各种物理形态或虚拟形态的网络安全设备组成,兼容各厂商的产品。这些安全设备接受统一部署、管理、调度,以实现相应的安全功能。

     转发层:即SDN网络中的网络设施层是一类仅需根据控制器指令进行数据包转发,而无需自主的理解和处理各种网络协议的网络交换设备。将网络安全设备接入转发层,通过将流量导入或绕过安全设备,即可实现安全设备的部署和撤销。

     控制层:能够根据不同业务的安全策略,从全局的视野对转发层、安全资源进行集中管理并下发调度命令。

     管理编排层:由侧重于安全方面的应用组成,将用户配置的或运行中实时产生的安全功能需求转化为具体的安全资源调度策略,并通过控制层予以下发,实现安全防护的智能化、自动化、服务化。

    6.软件定义安全应用在云环境的落地困境

    实现价值:

    §1.纵深防御的安全体系:基于安全域部署相应的防护措施,实现纵深防御,满足云计算平台的安全保障要求。

    §2.模块化架构可灵活扩展:根据应用场景和需求的不同,选择和部署相应的安全资源、系统功能模块、安全应用。

    §3.横向(东西)流量的防护:通过部署虚拟化的安全资源池和流量引导技术,可以实现牵引东西向流量到安全资源池内做检测和防护。

    §4.满足等保合规要求通过构建安全监测、识别、防护、审计和响应的综合安全能力,保障云计算资源和服务的安全,确保符合等级保护的要求。

    难点:

    §1.安全产品的虚拟化及适配云平台Hypervisor较为困难

    §2.安全设备的证书体系在云平台中不能直接适用

    §3.安全方案无法控制云平台的内部流量

    资源池:打通最后一环

    1种逻辑结构=n种物理形态资源池化

     多种形态的安全设备通过池化形成一个个安全资源池

     资源池按需提供安全能力

     安全资源池与其他基础设施一起构建SDx

       

     

     

     

     

     

     

     

    展开全文
  • 什么安全测试

    万次阅读 多人点赞 2020-10-18 13:47:09
    安全测试的目的,怎么做安全测试,与传统测试的区别

    一 什么是安全测试

    安全测试是在软件产品的生命周期过程中,对产品检验是否符合安全需求定义

    二 安全测试的目的

    提升软件产品的安全质量
    尽量在发布前找到安全问题予以修补降低成本
    电量安全
    验证安装在系统内的保护机制能否在实际应用中对系统进行保护
    使之不被非法入侵

    三 怎么做安全测试

    3.1 一个完整的安全性测试

    从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密、参数操作、异常管理、审核和日志记录

    3.2 部署与基础结构

    网络是否提供了安全的通信,部署是否包括内部的防火墙,基础结构安全性需求的限制是什么,目标环境支持怎样的信任级别

    3.3 输入验证

    如何验证输入,是否验证Web页输入,是否对传递到组件或Web服务的参数进行验证,是否验证从数据库中检索的数据,是否依赖客户端的验证,应用程序是否易受SQL注入攻击,应用程序是否易受XSS攻击,如何处理输入

    3.4 身份验证

    是否区分公共访问和受限访问,如何验证数据库的身份

    3.5 授权

    如何向最终用户授权,如何在数据库中授权应用程序,如何将访问限定于系统级资源

    3.6 配置管理

    是否保证配置存储的安全

    3.7 敏感数据

    是否存储机密信息,如何存储敏感数据,是否在网络中传递敏感数据,是否记录敏感数据

    3.8会话管理

    是否限制会话生存期,如何确保会话存储状态的安全

    3.9 加密

    如何确保加密密钥的安全性

    3.10 参数操作

    是否验证所有的输入参数,是否在参数过程中传递敏感数据,是否为了安全问题而使用HTTP头数据

    3.11异常管理

    是否使用结构化的异常处理,是否向客户端公开了太多的信息

    四 传输安全

    传输级的安全测试是考虑到Web系统的传输的特殊性,重点测试数据经客户端传送到服务器端可能存在的安全漏洞,以及服务器防范非法访问的能力

    4.1 HTTPS和SSL

    HTTPS和SSL测试:默认的情况下,安全HTTP(Soure HTTP)通过安全套接字SSL(Source Socket Layer)协议在端口443上使用普通的HTTP
    HTTPS使用的公共密钥的加密长度决定的HTTPS的安全级别,安全性的保证是以损失性能为代价 的。除了要测试加密是否正确,检查信息的完整性和确认HTTPS的安全级别外,还要注意在此安全级别下,其性能是否达到要求

    4.2 服务器端的脚本漏洞检查

    服务器端的脚本漏洞检查:存在于服务器端的脚本常常构成安全漏洞,这些漏洞又往往被黑客利用

    4.3 防火墙测试

    防火墙测试:防火墙是一种主要用于防护非法访问的路由器,在Web系统中是很常用的一种安全系统

    五 与通常测试的区别

    5.1 目标不同

    测试以发现BUG为目标,安全测试以发现安全隐患为目标

    5.2 假设条件不同

    测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面。安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径

    5.3 思考域不同

    测试以系统所具有的功能为思考域。安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等

    问题发现模式不同

    测试以违反功能定义为判断依据。安全测试以违反权限与能力的约束为判断依据

    展开全文
  • 针对软件安全性问题,提出一种新的软件安全性分析方法。首先探索将软件组件AADL错误模型转化为马尔科夫链模型,计算组件处于不同危害级别状态概率,分析组件安全性。并且进一步,根据AADL错误模型组合实现定义,由其内部...
  • 什么是功能安全

    万次阅读 2018-07-06 09:15:33
    什么是功能安全(FS)?在现代工业控制领域中,可编程电子硬件、软件系统的大量使用,大大提升了自动化程度。但由于设备设计中的缺失,以及开发制造中风险管理意识的不足,这些存在设计缺陷的产品大量流入相关行业的...

    什么是功能安全(FS)?

    在现代工业控制领域中,可编程电子硬件、软件系统的大量使用,大大提升了自动化程度。但由于设备设计中的缺失,以及开发制造中风险管理意识的不足,这些存在设计缺陷的产品大量流入相关行业的安全控制系统中,已经造成了人身安全、财产损失和环境危害等灾难频出。为此,世界各国历来对石化过程安全控制系统、电厂安全控制系统、核电安全控制系全领域的产品安全性设计技术非常重视,并且将电子、电气及可编程电子安全控制系统相关的技术发展为一套成熟的产品安全设计技术,即“功能安全”技术。

    欧美已经颁布了成套的功能安全相关产品指令和设计标准,并深入到各个领域,如:汽车(ISO26262)轨道控制(EN 5012X)、核电(EN 61513)、工业装备及机器控制(EN 62601, EN ISO 13849-1/2)、过程控制(EN 61511)等,国际上,IEC 形成的 IEC 61508,IEC 61511 等系列标准已经逐步成为各国家、行业广泛认可的基本功能安全标准,中国也仿效并形成了的相应国家标准,其他行业性功能安全标准也在参照并将逐步形成为国家行业性标准。

    ISO26262    

    ISO26262是从电子、电气及可编程器件功能安全基本标准IEC61508派生出来的,主要定位在汽车行业中特定的电气器件、电子设备、可编程电子器件等专门用于汽车领域的部件,旨在提高汽车电子、电气产品功能安全的国际标准。

    ISO26262从2005年11月起正式开始制定,经历了大约6年左右的时间,已于2011年11月正式颁布,成为国际标准。中国也正在积极进行相应国标的制定。

    安全在将来的汽车研发中是关键要素之一,新的功能不仅用于辅助驾驶,也应用于车辆的动态控制和涉及到安全工程领域的主动安全系统。将来,这些功能的研发和集成必将加强安全系统研发过程的需求,同时,也为满足所有预期的安全目的提供证据。

    随着系统复杂性的提高,软件和机电设备的应用,来自系统失效和随机硬件失效的风险也日益增加,制定ISO 26262标准的目的是使得人们对安全相关功能有一个更好的理解,并尽可能明确地对它们进行解释,同时为避免这些风险提供了可行性的要求和流程。。

    ISO 26262为汽车安全提供了一个生命周期(管理、开发、生产、经营、服务、报废)理念,并在这些生命周期阶段中提供必要的支持。该标准涵盖功能性安全方面的整体开发过程(包括需求规划、设计、实施、集成、验证、确认和配置)。

    ISO 26262标准根据安全风险程度对系统或系统某组成部分确定划分由A到D的安全需求等级(Automotive Safety Integrity Level 汽车安全完整性等级ASIL),其中D级为最高等级,需要最苛刻的安全需求。伴随着ASIL等级的增加,针对系统硬件和软件开发流程的要求也随之增强。对系统供应商而言,除了需要满足现有的高质量要求外还必须满足这些因为安全等级增加而提出的更高的要求。


    应用     

    系统安全可以从大量的安全措施中获得,包括各种技术的应用(如:机械,液压,气动,电力,电子,可编程电子元件)。尽管ISO26262是相关于E/E系统的,但它仍然提供了基于其他相关技术的安全相关系统的框架。

    ISO26262:

    -提供了汽车生命周期(管理,研发,生产,运行,服务,拆解)和生命周期中必要的改装活动。

    -提供了决定风险等级的具体风险评估方法(汽车安全综合等级,ASILs)

    -使用ASILs方法来确定获得可接受的残余风险的必要安全要求。

    -提供了确保获得足够的和可接受的安全等级的有效性和确定性措施。

    功能安全受研发过程(包括具体要求,设计,执行,整合,验证,有效性和配置),生产过程和服务流程以及管理流程的影响。

    安全事件总是和通常的功能和质量相关的研发活动及产品伴随在一起。ISO26262强调了研发活动和产品的安全相关方面。

    ISO26262主要用于安装在最大毛重不超过3.5吨的乘用车上的一个或多个E/E系统的安全相关系统。ISO26262唯一不适用于为残疾人设计的特殊目的车辆的E/E系统。系统研发早于ISO26262出版日期的,也不在标准的要求之内。ISO26262表述了由E/E安全相关系统,包括这些系统的互相影响,故障导致的可能的危险行为,不包括电击,火灾,热,辐射,有毒物质,可燃物质,反应物质,腐蚀性物质,能量释放及类似的危险,除非这些危险是由于E/E安全相关系统故障导致的。


    行各业都会制定标准,指导未来发展并限定最低准入门槛。在汽车电子行业,这一标准就是ISO 26262,它将功能安全定义为:

    “避免因电气/电子系统故障而导致的不合理风险”。

    不同领域的标准并不完全一致,例如针对电气和电子系统的IEC 61508以及飞行器电子硬件的DO-254都有各自的定义方式。更需值得注意的是,它们都拥有专用术语,并提供了包括目标参数在内的工程研发指导。因此,开始产品研发前确定目标市场并制定合适的流程至关重要,因为中途修改研发流程必然会导致效率低下。图1展示了硅片IP的不同应用标准。实际操作中,如果需要满足多套标准,则可以求同存异,先列出专属需求,再执行质量管理等通用准则;最一开始就要做到安全第一。

    什么是功能安全?汽车功能安全的设计方案

    图1:硅片IP的功能安全标准

    实际操作中,功能安全系统必须由独立评估员认证,符合所有安全标准。实现功能安全需要具备预测能力的故障模式,实时判断系统状态是功能完整,部分功能损坏,还是系统必须关闭进行重启或重置。

    并不是所有故障都会立刻引发严重事故。比如,汽车动力转向系统故障可能会导致突发性的错误转向,但是由于电气和机械设计天然的时间延迟,故障并不会马上产生后果,这一延迟通常是几毫秒以上,ISO 26262将之定义为容错时间间隔,间隔长短取决于潜在的事故类型和系统设计。所以,不难理解,对系统安全要求越高,产生不安全事件的故障就越应该避免。

    理想情况下,功能安全不会影响系统性能;但现实生活中,现行的许多安全措施都会严重影响系统性能、功率和面积(PPA)。如何在保证功能安全的前提下减轻对系统性能的不利影响以及设计制造成本的上升,是设计师们面临的一大难题。

    为什么需要功能安全?

    芯片IP的功能安全曾是非常小众的领域,只有少数汽车、工业、航空航天和其他类似市场的芯片与系统开发商感兴趣。然而,随着过去几年各类汽车应用的兴起,情况已经发生巨大变化。除了汽车外,还有很多其他行业也能从电子器件的增加受益,当然保障功能安全是大前提。医疗电子和航空就是两个典型例子。

    自动驾驶过去几年吸引了不少人的眼球,但一直是雾里看花;如今,随着高级驾驶辅助系统(ADAS)及富媒体车载信息娱乐系统(IVI)的普及,尽管高度自动化驾驶的时代依然遥远,但自动驾驶汽车的前景已变得愈发清晰。尺寸形状各异的无人机和日益普及的物联网也是亟需功能安全的领域,ARM 的技术将成为一大助力。

    ARM功能安全技术

    与其他技术市场一样,新兴的功能安全应用也需要半导体的驱动;这并不是纸上谈兵,日新月异的产品创新已经引起了ARM合作伙伴的浓厚兴趣。多数功能安全嵌入式系统都需要具备安全防护及实时处理两大核心要素,ARM Cortex-R系列处理器为此需求量身定制,为嵌入式系统提供高性能运算解决方案,确保产品的高可靠性、高可用性、容错、以及/或强大实时自主判断能力。这些特性为实现ADAS和IVI系统的高安全完整性打下基础,不仅可以执行关键行为处理,应对安全相关的中断事件,与其他系统通讯,还可以对集成度较低的复杂功能进行监管。

    什么是故障?

    故障可能是系统性的(如规范制定和设计过程中的人为因素);也有可能与使用的工具有关。减少故障的一种方法是执行严苛的质量管控流程,必须包括详细的规划、审查和量化评估。合理的规划使用工具认证非常重要,管理与追踪需求变更的能力也同样关键。ARM的Compiler 5编译器已经通过南德集团(TÜV SÜD)认证,助力安全研发,客户无需对编译器进行额外认证。

    还有一种故障类型被称为随机硬件故障。它们可能是图2显示的永久性故障,比如短路;也有可能是由于天然辐射而造成的软性故障。这类故障可以利用集成在软硬件的方案进行处理,因此系统级的技术也同样重要。举例来说,逻辑内建自测试(BIST)可以应用于系统启动和关闭,区分软性和永久性故障。

    什么是功能安全?汽车功能安全的设计方案

    图2:故障类型

    应对措施

    故障检测和控制措施的选择和设计是流程设计师最喜欢的环节,因为他们可以同时用系统级和微架构级的技术大展手脚。建立故障模式概念和效果分析(FMEA)是个不错的开始,列举出所有可能出现的故障模式及其后果的严重程度。有了这些信息,加上设计师对复杂系统的深入理解,即可鉴别出最严重的故障模式,并设计出应对措施。

    应对潜在故障的方法较多,下面列出了一些最常用的技术:

    ·多样化检查器:使用另一条电路检查主电路是否发生故障。举个例子,检查器可以为中断控制器计数,持续记录人为及系统引起的中断总数。

    ·完整锁步复制:该技术主要用于Cortex-R5处理器,对一个IP元件(如一个处理器)进行多次实例化,利用循环产生操作延迟,生成时间和空间冗余。大容量存储通常由多个实例共享,以降低所需面积。尽管这一技术非常可靠,但也极为昂贵。

    ·选择性硬件冗余:这个方案里,只有硬件的关键部分可以复制,如仲裁器。

    ·软件冗余:硬件冗余通常非常复杂,而且会产生间接成本,是对资源的不合理使用。硬件运算的替代方法就是,在多个处理器内核上运行同一次计算,检查结果是否匹配。

    ·错误检测和校正码是另一种为人熟知的技术,通常被用于保护存储器和总线。代码类型多种多样,但目标只有一个,既通过少量附加位获得更高冗余,无需复制所有底层数据。汽车系统中,这一尖端技术可以利用足够多的冗余检测出一个存储字的2位错误;并支持错误修正。

    故障日志

    检测出故障后就必须进行记录,以帮助监管软件判断系统的健康和安全状况。安全故障(如存储器修正)和危险故障(如不能挽回的硬件故障)必须分别记录。

    故障记录通常从故障计数开始,可以由系统级架构记录有信号事件(类似于中断)的数量;或者由IP计数器记录。为了解这些事件发生的原因,最好还能将过去的事件作为参考,判断当前时间的发生原因。为支持这一需求并进行调试纠错,可以允许一些IP捕捉额外信息,如被侦查的存储地址。因为该地址通常会由软复位保存,所以可以在系统启动和系统自检过程中被读取。

    有一点需要牢记,故障也可能发生在安全架构本身。与硬件故障不同的地方是,后者通常可以在使用过程中被很快发现,但安全检查器中的故障可能是潜伏的,它已经无法侦测危险故障,但故障却已经悄悄地蔓延开了。这样的故障被称为潜伏故障,定期测试检查器是个不错的方法。

    安全完整性等级

    不同的标准体系反应安全等级的方法也各不相同,但其主要目的是直观的反映功能的关键性。比如说,控制挡风玻璃雨刮、安全气囊或制动器的ECU,完整性必须高于控制车速表或泊车传感器的ECU,因为前方视野至关重要,突然刹车或气囊充气可能造成致命后果,驾驶员也会凶多吉少;而车速表或泊车传感器对安全停车的重要性就低得多了。

    换句话说,安全完整性等级是与人避免危险情况的必要性和能力相关的;而各项标准的作用就是指导人们如何定义安全完整性等级,并提供相关参数,帮助其对系统完整性进行量化。

    IEC 61508将安全完整性等级(SIL)分成4级,第4级为最高完整性。与之相似,ISO 26262提出了汽车安全完整性等级(ASIL),最低为ASIL A,最高为ASIL D。此外,就表二所示,针对ASIL B到ASIL D,ISO 26262分别就单点故障、潜伏故障和硬件故障概率指标(PMHF,业内也称及时故障)提出了建议参数。可检测故障的比例被称为诊断覆盖率。

    什么是功能安全?汽车功能安全的设计方案

    表1. ISO 26262的推荐标准

    尽管这些指标通常被视为标准要求,但在实际应用中,它们一般只被视为建议,供应商可以自行制定目标参数。最重要的目标是打造安全的产品,而不是在产品参数表上多加几个数字。让我们再次借用前面提到过的例子——挡风玻璃雨刮、制动器和安全气囊,这些元件的安全级别可能达到ASIL D,而车速表和泊车传感器可能是ASIL B或更低,具体级别取决于整体系统安全设计。

    无论诊断覆盖率多高,打造功能安全应用的时候都必须遵循合适的流程——这也是标准体系最大的益处。此外,无论采用何种功能安全措施,严格的质量流程都可以提升任何应用的整体质量。

    功能安全IP的设计流程

    开发功能安全应用IP时,“循规蹈矩”非常重要。这个过程必须从一开始就将安全纳入考虑,而且还必须营造支持安全的文化。

    完整的开发流程必须包含以下几个重要方面:

    ·安全管理:包括团队组织架构,具体内容如:明确不同职位的定义和职责、打造安全文化、定义安全生命周期,定义功能安全支持级别。安全生命周期的设定包括制定一份成功计划,选择合适的开发工具,确保团队接受充分的培训。

    ·需求管理和故障检测及控制措施(应对措施)的可追溯性。为精确实现需求追溯,需求本身定义必须要明确,精准,且具备唯一性。追溯等级取决于完整性的要求,文件可以高等级;产品则需要从故障检测到验证等各个环节面面俱到——计划过程不得空穴来风,必须经过详细验证。

    ·质量管理是需求追溯的拓展和延伸。勘误表必须得到妥善管理和使用。ARM在这一领域拥有丰富的经验。此外,流程的记录和传达也同样重要。

    安全文件包

    IP开发是ARM支持合作伙伴的一种途径,我们的合作关系并不会止于客户收到IP的那一刻。就功能安全相关的IP开发,ARM定义了2个安全文件包等级:

    ·最高至ASIL B的标准支持

    ·最高至ASIL D的延伸支持

    每个安全文件包都包含一份安全手册,详细说明遵循的流程、故障检测及控制功能、适用场景和其他信息。我们同时提供“故障模式及效果分析报告”,并提供案例分析,阐述如何用IP实现更高的诊断覆盖率;我们也为客户的独立分析提供芯片级的更多支持。此外,文件包也就ARM和被授权方的开发接口做出了明确定义。

    独立安全单元

    安全状况报告的建立和使用需要步步递进。该报告由芯片开发商提供信息,所有厂商的信息都必须综合考虑,最后交付客户使用,层层递进。获许可最多的芯片IP被称为“独立安全单元”(SEooC),其设计师们无需了解该芯片后续的使用方式。因此,安全手册必须说明 IP开发商对芯片使用建议和说明,避免误用。同样,OEM的1级控制器供应商也可以使用SEooC模型开发安全功能。因此,IP级的安全文件包可用于整个价值链,是 IP开发的重要部分。

    功能安全将逐渐成为硬性要求

    从汽车到医疗再到工业设备,依赖电子器件的应用越来越多,功能安全正变得更加重要,并将成为常规要求。功能安全是IP厂商必须达成的要求,也是让基于该IP建造的模型顺利运行的必要条件,因此IP厂商必须将每项研究成果授予尽可能多的芯片合作伙伴,反之亦然。有了坚实的质量和可靠性,功能安全才能带来更广泛的好处,进而推动全行业的质量和可靠性提升。包括驾驶员安全、燃油经济性、舒适度和车载信息娱乐系统等,功能安全是芯片设计师解决更高级别汽车难题的基础。


    展开全文
  • 一,Session:含义:有始有终的一系列动作\消息1,隐含了“面向连接”和“保持状态”两种含义2,一种用来在客户端与服务器之间保持状态的解决方案3,也指这种解决方案的存储结构“把××保存在session里”二,http...
  • 什么是线程安全?如何保证线程安全

    万次阅读 多人点赞 2019-05-27 23:22:44
    什么是线程安全 参考: 《Java并发编程实践》中对线程安全定义: 当多个线程访问个对象时,如果不用考虑这些线程在运行时环境下...本人也认为这是个恰当的定义,因为线程安全的主体是什么?是方法还是代码块...
  • readyState的5种状态含义

    千次阅读 2018-03-29 22:50:28
    可这里的readyState的状态码代表什么呢?这里记录如下: 0:未初始化,但是已经创建了XHR实例 1:调用了open()函数 2:已经调用了send()函数,但还未收到服务器回应 3:正在接受服务器返回的数据 4:...
  • 网络安全个通用定义指网络信息系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的破坏、更改、泄露,系统能连续、可靠、正常地运行,服务不中断。网络安全简单的说是在网络环境下能够识别和消除不...
  • 功能安全学习笔记002-功能安全定义

    万次阅读 多人点赞 2018-04-07 21:52:59
    1,功能安全定义1.1 本质安全与功能安全为了了解功能安全的概念,先得熟悉下 和“本质安全”和“功能安全”的概念。假如以铁道的路口为例,比较一下基于两种安全概念的避免路口事故的方法。这里避免路口事故就是...
  • ospf邻居状态有7,分别是: down init 2way Exstart Exchange Loading Full. 路由器A刚启动时,ospf处于down的状态,因为它还没有与其他路由器交换信息。它使用组播地址224.0.0.5发送hello分组。 所有运行ospf...
  • java中定义类的关键字是什么

    千次阅读 2021-02-12 22:57:02
    类是 Java 中的一种重要的引用数据类型,也是组成 Java 程序的基本要素,因为所有的 Java 程序都是基于类的。在 Java 中定义一个类,需要使用 class 关键字、一个自定义的类名和一对表示程序体的大括号。完整语法...
  • 什么状态机?

    万次阅读 多人点赞 2020-10-23 11:30:27
    个健壮的状态机可以让你的程序,不论发生何突发事件都不会突然进入个不可预知的程序分支。 本篇通过C语言实现个简单的进程5状态模型的状态机,让大家熟悉一下状态机的魅力。 什么状态机? 定义 状态机...
  • HTTP是一种状态协议,即服务器不保留与客户交易时的任何状态。 也就是说,上一次的请求对这次的请求没有任何影响,服务端也不会对客户端上一次的请求进行任何记录处理。 二、HTTP协议的无状态性带来的问题: ...
  • 用于安全系统的VIS组件,用于监视状态并确认系统的运行状况。 所有代码均基于D3.js version 3.x编写。 介绍 这是我的工作的演示项目,内容涉及如何使用纯d3可视化图表。 当前页面是从个js文件integrateIndex.js...
  • 进程的含义和几种状态

    千次阅读 2018-04-02 21:47:56
    2.安全属性,包括所有权凭据和特权;3.程序代码的个或多个执行县城;4.进程状态。程序:二进制文件,静态/bin/date,usr/sbin/httpd,/usr/sbin/sshd,/usr/local/nginx/sbin/ngix进程:是程序运行的过程,动态,有...
  • 让我们说人话!好的数学概念都应该是通俗易懂的。...起码直觉上而言是可以的,不然怎么可能我们觉得有些人说的废话特别多,“没什么信息量”,有些人一语中的,句话就传达了很大的信息量。 为什么有的信
  • 逻辑的四种含义

    千次阅读 2020-05-26 22:05:51
    3、常见的四种含义: 3.1、客观事物的规律: 例如:“历史的逻辑决定了人类社会将一直向前发展。” 3.2、某种理论、观点: 例如:“只许官家放火,不许百姓点灯,这是哪一家的逻辑!” 3.3、思维的规律、规则...
  • (7)操作系统安全机制

    万次阅读 2017-12-30 10:22:19
    操作系统安全机制:自主访问控制、强制访问控制机制、客体重用机制、标识与鉴别机制、可信路径机制、安全审计
  • 常用的Web安全认证方式

    万次阅读 2019-05-26 20:13:12
    这是一种最古老的安全认证方式,这种方式就是简单的访问API的时候,带上访问的username和password,由于信息会暴露出去,所以现在也越来越少用了,现在都用更加安全保密的认证方式,可能某些老的平台还在用。...
  • 有限状态机是什么

    千次阅读 2018-06-16 09:38:55
    有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机, 是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 其作用主要是描述对象在它的生命周期内所经历的状态...
  • 本书链接:人工智能:一种现代的方法(第3版) 本人人工智能小白,为了恶补知识,所以买了一本综述型的入门教材。 一、前提 AI的任务是设计Agent程序,实现的是把感知信息映射到行动的Agent函数。 二、什么是...
  • arm的具体含义什么

    千次阅读 2017-07-16 22:07:18
     1、ARM既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。  2、ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产...
  • 状态代码由三位数字组成,第个数字定义了响应的类别,且有五可能取值。 1xx:指示信息 —— 表示请求已接收,继续处理。 2xx:成功 —— 表示请求已被成功接收、理解、接受。 3xx:重定向 —— 要完成请求必须...
  • 为了有效地感知物联网环境下的网络安全状况,提出了一种基于免疫的物联网环境安全态势感知(IIESSA)模型。 在IIESSA中,给出了关于自身,非自身,抗原和检测器的一些正式定义。 根据记忆检测器抗体浓度与网络攻击...
  • 动态规划()一一状态定义状态转移方程

    万次阅读 多人点赞 2019-09-12 10:57:56
    动态规划真让人看得头疼,这只是一种思想,并没有一定的解题规律,当问题出现的时候,对于不太熟悉动态规划的人来说,确实有点难以想到,一般都是采用暴力求法。这里贴一个知乎链接,我觉得动态规划讲的还挺好的,...
  • T状态(CPU Throttling state) 一种节能状态,也是在C0状态下降低CPU功耗的一种方式,与P状态不同,T状态是通过调整单位时间内CPU Clock On的占空比(CPU Clock On /(Clock On + Clock Off))的方式 ,改变系统...
  • TCP11种状态

    万次阅读 多人点赞 2018-09-03 10:48:08
    TCP11种状态图 CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。 LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。 SYN_RCVD:表示服务器接收到了来自客户端请求连接的SYN...
  • Java的六线程状态

    千次阅读 2021-09-09 09:19:22
    Java语言定义了6种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,这6种状态分别如下。 新建(New):创建后尚未启动的线程处于这种状态。 运行(Runable):Runable包括了操作系统线程状态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,773,677
精华内容 709,470
关键字:

安全的定义是一种什么状态