精华内容
下载资源
问答
  • 软件安全性软件可靠性

    千次阅读 2020-06-25 21:57:35
    在功能安全强调软件安全性的时候,往往与软件可靠性密不可分,航空领域一般讲究可靠性,而轨道交通领域和汽车领域通常讲究安全性,那么对于软件而言,安全性与可靠性到底是怎么的关系与区别,很多人存在这方面的疑惑...

    在功能安全实践过程中,软件安全至关重要,软件的特殊性在于它的失效不可量化,一个小小的失误在特定环境下就可能无限放大。在功能安全强调软件安全性的时候,往往与软件可靠性密不可分,航空领域一般讲究可靠性,而轨道交通领域和汽车领域通常讲究安全性,那么对于软件而言,安全性与可靠性到底是怎么的关系与区别,很多人存在这方面的疑惑,今天的功能安全小课堂带领大家一起探索研究一下。

    首先分别从软、硬件安全性与可靠性的关系来区分软件安全性的特点,软件安全性和软件可靠性到底是不是一回事,很多专家大咖仁者见仁智者见智,本文以下内容仅代表个人观点,欢迎各位交流讨论。

    • 软件安全性与软件的可靠性密不可分,如果说一套软件是安全的,那它一定是可靠的;但如果说一套软件是可靠的,那它不一定是安全的,用图形化表示关系如下:在这里插入图片描述
    • 硬件的安全性与硬件的可靠性有所差别,如果说一套硬件是安全的,那它不一定是可靠的;如果说一套硬件是可靠的,那它也不一定是安全的,用图形化表示关系如下:
      在这里插入图片描述
    • 接下来说明一下什么是可靠性,简单总结可靠性就是在规定的条件下规定的时间里,系统或软件执行规定功能的能力。它包含三个要素:
      规定的条件
      规定的时间
      规定的能力

      对于软件可靠性,规定的条件就是指软件所处的软硬件环境、运行环境、容量载荷、存储分布及运行方式等因素。规定的时间包括使用的时钟时间、执行时间等时间对象,不同时间内软件可靠性表现不同。规定的功能即是软件预期实现的功能。那么如何保障软件的可靠性,一般软件的可靠性与开发过程紧密联系,而对生产使用等过程依赖较少,软件故障多为设计故障,需要通过技术方法和管理流程等措施来确保软件的可靠性。而我们在功能安全研究时,也处处强调软件的安全性是靠技术和流程两方面来保证。那么软件安全性和软件可靠性区别与联系在哪里。
      在这里插入图片描述
      综上所述,软件安全性和可靠性在最初目标与最终结果上有所不同,软件安全性的目标是满足相应的安全等级要求,最终不发生事故,而软件可靠性的目标是减少BUG率,最终不发生失效。但本质上软件安全性与软件可靠性又是统一的,一切的努力都是保障软件按照正确的方式去执行。
      另外,从范围上研究,软件可靠性范围更广阔,而软件安全性是针对已定义功能的具体要求,而有些特殊场景下特殊功能,在软件开发之初没有考虑周全,软件开发过程没有对此进行定义,在软件产品实际使用过程中,特殊的环境条件可能导致软件产品程序发生故障,系统产生失效,也许会导致事故,但是严格来说,它是归属于软件可靠性的原因。因此,从这个角度来说,软件可靠性不仅包含软件安全性,还要考虑软件的全面性。
    展开全文
  • 软件安全性测试

    万次阅读 2017-07-08 23:18:44
    软件安全性是一个广泛而复杂的主题,每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现。要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。在软件安全测试时,运用一组好的原则来避免不...

    软件安全性是一个广泛而复杂的主题,每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现。要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。在软件安全测试时,运用一组好的原则来避免不安全的软件上市、避免不安全软件受攻击,就显得十分重要。

      一、软件安全性测试基本概念

      软件安全性测试包括程序、网络、数据库安全性测试。根据系统安全指标不同测试策略也不同。

      1.用户程序安全的测试要考虑问题包括:

      ① 明确区分系统中不同用户权限;

      ② 系统中会不会出现用户冲突;

      ③ 系统会不会因用户的权限的改变造成混乱;

      ④ 用户登陆密码是否是可见、可复制;

      ⑤ 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统);

      ⑥ 用户推出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统。

      2.系统网络安全的测试要考虑问题包括:

      ① 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上;

      ② 模拟非授权攻击,看防护系统是否坚固;

      ③ 采用成熟的网络漏洞检查工具检查系统相关漏洞;

      ④ 采用各种木马检查工具检查系统木马情况;

      ⑤ 采用各种防外挂工具检查系统各组程序的客外挂漏洞。

      3.数据库安全考虑问题:

      ① 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求);

      ② 系统数据的完整性;

      ③ 系统数据可管理性;

      ④ 系统数据的独立性;

      ⑤ 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)。

      二、根据软件安全测试需要考虑的问题

      1. 保护了最薄弱的环节

      攻击者往往设法攻击最易攻击的环节,这对于您来说可能并不奇怪。即便他们在您系统各部分上花费相同的精力,他们也更可能在系统最需要改进的部分中发现问题。这一直觉是广泛适用的,因此我们的安全性测试应侧重于测试最薄弱的部分。

      如果执行一个好的风险分析,进行一次最薄弱环节的安全测试,标识出您觉得是系统最薄弱的组件应该非常容易,消除最严重的风险,是软件安全测试的重要环节。

      2. 是否具有纵深防御的能力

      纵深防御背后的思想是:使用多重防御策略来测试软件,以至少有一层防御将会阻止完全的黑客破坏。 “保护最薄弱环节”的原则适用于组件具有不重叠的安全性功能。当涉及到冗余的安全性措施时,所提供的整体保护比任意单个组件提供的保护要强得多,纵深防御能力的测试是软件安全测试应遵循的原则。

      3. 是否有保护故障的措施

      大量的例子出现在数字世界。经常因为需要支持不安全的旧版软件而出现问题。例如,比方说,该软件的原始版本十分“天真”,完全没有使用加密。现在该软件想修正这一问题,但已建立了广大的用户基础。此外,该软件已部署了许多或许在长时间内都不会升级的服务器。更新更聪明的客户机和服务器需要同未使用新协议更新的较旧的客户机进行互操作。该软件希望强迫老用户升级,没有指望老用户会占用户基础中如此大的一部分,以致于无论如何这将真的很麻烦。怎么办呢?让客户机和服务器检查它从对方收到的第一条消息,然后从中确定发生了什么事情。如果我们在同一段旧的软件“交谈”,那么我们就不执行加密。

      遗憾的是,老谋深算的黑客可以在数据经过网络时,通过篡改数据来迫使两台新客户机都认为对方是旧客户机。更糟的是,在有了支持完全(双向)向后兼容性的同时仍无法消除该问题。

      对这一问题的一种较好解决方案是从开始就采用强制升级方案进行设计;使客户机检测到服务器不再支持它。如果客户机可以安全地检索到补丁,它就升级。否则,它告诉用户他们必须手工获得一个新的副本。但是从一开始就应准备使用这一解决方案,就会得罪早期用户。

    测试采取的防护措施是否正确装配好,有关系统的补丁是否打上就十分的重要。 4. 最小特权 最小特权原则规定:确定只授予执行操作所必需的最少访问权

      测试采取的防护措施是否正确装配好,有关系统的补丁是否打上就十分的重要。

      4. 最小特权

      最小特权原则规定:确定只授予执行操作所必需的最少访问权,并且对于该访问权只准许使用所需的最少时间。

      当软件给出了某些部分的访问权时,一般会出现滥用与那个访问权相关的特权的风险。例如,我们假设您出去度假并把您家的钥匙给了您的朋友,好让他来喂养您的宠物、收集邮件等等。尽管您可能信任那位朋友,但总是存在这样的可能:您的朋友未经您同意就在您的房子里开派对或发生其它您不喜欢的事情。

      一位程序员可能希望访问某种数据对象,但只需要从该对象上进行读。不过,不管出于什么原因,通常该程序员实际需要的不仅是必需的特权。通常,该程序员是在试图使编程更容易一些。

      如果软件设置的访问权结构不是“完全访问或根本不准访问”,那么最小特权原则会非常有效。

      5. 分隔

      分隔背后的基本思想是如果我们将系统分成尽可能多的独立单元,那么我们可以将对系统可能造成损害的量降到最低。

      通常,如果攻击者利用了代码中的缓冲区溢出,对磁盘进行原始写并胡乱修改内核所在内存中的任何数据。没有保护机制能阻止他这样做。因此,系统进行适度的分隔显得十分重要,软件要能直接支持本地磁盘上永远不能被擦去的日志文件,这意味着直到

      攻击者闯入时,才不能保持精确的审计信息。

      适度使用的分隔,将利于系统的管理,但是对每一个功能都进行分隔,那么系统将很难管理。

      三、安全性测试的主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力, 根据安全指标不同测试策略也不同,如果遵循相同的原则,去证明软件的安全性,将有利于软件安全测试的工作规范的进行,有利于软件安全测试工作的发展。

      安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。

      安全测试用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入。俗话说: “ 系统的安全当然必须能够经受住正面的攻击 —但是它也必须能够经受住侧面的和背后的攻击。 ”

      在安全测试过程中,测试者扮演着一个试图攻击系统的个人角色。测试者可以尝试去通过外部的手段来获取系统的密码,可以使用可以瓦解任何防守的客户软件来攻击系统;可以把系统“制服”,使得别人无法访问;可以有目的地引发系统错误,期望在系统恢复过程中侵入系统;可以通过浏览非保密的数据,从中找到进入系统的钥匙等等。

      只要有足够的时间和资源,好的安全测试就一定能够最终侵入一个系统。系统设计者的任务就是要把系统设计为想要攻破系统而付出的代价大于攻破系统之后得到的信息的价值。


    展开全文
  • 软件开发安全性 Casey将于10月4日在柏林LinuxCon上发表演讲 。 无论您进行编程的级别如何,安全性都将受到阻碍。 似乎没有多少应用程序抽象或现代开发过程能够使开发人员免受安全性带来的障碍。 当安全性似乎并...

    软件开发安全性

    Casey将于10月4日在柏林LinuxCon发表演讲

    无论您进行编程的级别如何,安全性都将受到阻碍。 似乎没有多少应用程序抽象或现代开发过程能够使开发人员免受安全性带来的障碍。 当安全性似乎并没有增加任何内在价值时,很难不讨厌它,并且常常会妨碍提供令人愉悦的用户体验。 最重要的是,尽管您为确保产品安全所做的所有工作,产品仍然可能遭到黑客入侵。

    行政命令12472

    要了解为什么安全性会对开发人员造成如此大的阻碍,我们需要回到1984年4月开始的美国政府执行命令12472。该命令规定了美国政府购买的所有计算机的安全功能和处理标准。 尤其是,它基于David Bell和Leonard LaPadula的工作,要求建立一个安全策略模型,后者被特许创建了美国国防部纸质标记方案的数学模型。 编写了当天UNIX系统的说明,以解释它们如何与Bell&LaPadula术语保持一致。 这些描述已被带入当今Linux系统的基本安全模型中。

    这意味着,今天我们正在使用一种安全模型,该模型最初旨在保护共享超级计算机上的用户数据,以防止该计算机的其他用户访问该数据,而现在,我们正在使用同一模型来保护从自动驾驶汽车到汽车的一切。智能灯泡和基于云的数据中心。

    开发过程保证

    Order 12472包含的安全性的另一个方面是开发过程保证。 程序不仅必须证明自己做了应该做的事情,而且还必须证明自己没有做应该做的事情。 订单12472要求详细说明用于做出这些保证的步骤。 成熟的过程被认为是好的,而轻量级的过程被认为是危险的。 在1984年这种安全模型的框架内,现代发展实践被视为灾难的良方。 考虑到所有这些因素后,大多数开发人员都希望与安全性保持距离,这不足为奇。

    使安全透明

    当今许多安全机制背后的理论涉及使安全透明。 沙箱,容器和其他现代安全机制创建了一个抽象层,该抽象层使其他所有人免受安全策略细节的影响。 尽管这实现了程序隔离的既定目标,但使合法的信息共享变得更加复杂。 在适当的粒度级别上控制共享是安全性中最困难的部分,这就是我们出现问题的地方。

    尽管为提高透明度做出了这些努力,但是开发人员经常发现,安全性要求已使它们陷入困境,没有轻松的出路。 幸运的是,开发人员有多种方法可以考虑和采用安全性,以使安全性不会破坏其产品,用户体验或时间表。

    开发团队可能犯的最大错误是,与对待其他需求的方式不同。 正如一个产品团队希望在完成所有代码后解决性能问题一样,不可避免地会创建出充满性能问题的软件,就像一个产品团队希望在发布之前打开安全系统一样,将拥有大量的技术。不再起作用。 为避免这种命运,开发团队必须将安全性视为软件规范,设计和实施的组成部分,并应在开发过程中尽早包括安全性。

    确定项目最初在何处出现安全问题同样重要。 有时,最大的安全问题是制度上的,当开发团队尝试遵守其上级组织规定的接口或程序时,这些接口或程序可能对开发人员的特殊情况没有意义。 其他时候,安全问题则源于技术选择不当,例如,要在Web浏览器上运行JavaScript中实现复杂的安全协议。 问题经常来自选择与代码将在其中运行的环境无关的安全性机制。

    采取哪种方法?

    最后,开发人员在处理安全性时有一些基本选择。 您可以采用传统的宣泄方法,并且继续讨厌它,并指责它对您要实现的目标产生的任何影响。 您也可以采用流行的方法,即忽略安全性,这出乎意料地具有成本效益。 或者,您可以将安全性作为第一要务,但是由于其高昂的成本以及对用户体验和性能的影响,这很少是一个成功的策略。

    但是,完成安全性流程的最佳方法是在产品规格,设计和实施的早期阶段以及其他基本要求中包括安全性。 尽管这看起来很不方便,并且在某些情况下可能需要重新培训(尤其是对于安全开发人员,他们可能不知道会对他们造成什么打击),但这是开发具有有效安全性而又不会给开发过程造成不必要障碍的软件的最佳方法。 。

    翻译自: https://opensource.com/life/16/9/why-you-hate-security-and-what-you-can-do-about-it

    软件开发安全性

    展开全文
  • 软件安全性测试模板

    2017-11-09 04:42:00
    软件安全性测试模板 安全性测试是安全的软件生命周期中一个重要的环节。软件安全性测试包括用户认证安全、系统网络安全、数据库安全性测试。 以上内容均出自机械工业出版社出版的《软件测试实用技术与使用...
     软件安全性测试模板

    安全性测试是安全的软件生命周期中一个重要的环节。软件安全性测试包括用户认证安全、系统网络安全、数据库安全性测试。

        以上内容均出自机械工业出版社出版的《软件测试实用技术与使用模板》一书。




         本文转自阿龙哥 51CTO博客,原文链接:http://blog.51cto.com/ililong/282256,如需转载请自行联系原作者





    展开全文
  • 软件安全性服务

    2015-08-12 16:50:58
    .比较常见的安全性漏洞: 1、后门,程序员为了方便自己维护,会留一些后门,但 是容易成为攻击的漏洞。 2、在源代码里会有网站地址遗漏,会被黑客利用,绕过防火墙, ...软件安全性服务   位置
  • 软件系统安全性测试列表

    千次阅读 2019-06-16 14:55:47
    随着互联网应用的普及,软件安全性越来越重要,今天我整理了一个软件安全测试的列表,请大家仔细看看,看看有没有漏项,多给力,给予补充,在此谢过! 1. 系统安全性及测试方法 软件系统的安全性 系统安全规范与...
  • 软件安全性检查checklist

    千次阅读 2017-05-30 20:51:58
    代码安全性检验   程序代码安全性 C++/Java安全性列表(Checklist)  JavaScript安全性列表  代码安全性扫描工具必(AppScan)   Web安全性测试  动态跟踪元素属性  检测JavaScript事件  跨站脚本...
  • 软件安全性需求是指系统可靠地控制、监控和审计谁能够在哪种资源上执行哪种动作的能力,以及检测安全漏洞并从中恢复的能力。
  • 这种调用既简单又具有很好的维护,不必因为整体架构变化或者内部类名和包名的调整而做过多的修改,因而受到很多人欢迎和支持。如下:Intent i = this.getIntent(); Bundleb = i.getExtras(); if ( b != null) {...
  • 软件测试技术——安全性测试

    千次阅读 2020-01-07 10:11:51
    软件安全性测试就是有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。 实施安全性测试时,需要考虑软件系统的安全性需求。通常包括两类:一类是作用于整个系统的系统安全性需求,另一类是与某些特定功能相关...
  • 随着互联网应用的普及,软件安全性越来越重要,今天我整理了一个软件安全性测试的列表,请大家仔细看看,看看有没有漏项,多给力,给予补充,在此谢过!   主题 项目列表 系统安全性及其...
  • 关于软件安全性测试

    千次阅读 2016-10-08 17:28:20
    软件安全性测试包括程序、数据库安全性测试。领过国际指出根据系统安全指标不同测试策略也不同。  用户认证安全的测试要考虑问题:  1. 明确区分系统中不同用户权限  2. 系统中会不会出现用户...
  • 嵌入式软件在汽车、核能、航空等安全关键领域应用普遍,软件中潜在的失效都有可能造成财产的损失、环境的破坏甚至人员的伤亡,保障嵌入式软件安全性已成为近年来软件工程领域的研究热点。近年来,由于软件故障引起...
  • 软件安全性原则

    千次阅读 2006-03-27 16:19:28
    软件安全性原则: 第一部分 http://www.ibm.com/developerworks/cn/security/s-link/ 在本系列文章中,Gary 与 John 给出了设计与构建安全系统时要记住的最重要的 10 个要点。这一部分探讨了加固系统最薄弱 ― ...
  • 防泄密软件安全性

    2015-10-13 15:51:40
    (1)密钥的安全性  加密文件的安全由算法和密钥来保证。加密算法一般都是采用国际流行的安全性高的算法,这些算法都是公开的,所以确切的说加密算法的安全性真正依赖的是密钥。  防泄密软件的密钥是否安全应该...
  • 医疗器械软件安全性级别判定

    千次阅读 2019-05-28 16:07:00
    软件描述文档的详略程度,直接由软件安全性级别和复杂程度来决定。因此,确定在编制一个医疗器械软件的描述文档时,首先要确定的就是该软件安全性级别。 根据YY/T 0664《医疗器械软件软件生存周期过程》的...
  • 软件设计-非功能性需求-性能-可靠性-安全性等 非功能 性能 可靠性 安全 兼容性_百度搜索微软的软件测试之道(10)_生命的支点_新浪博客75软件架构的非功能性需求指标和区域化支持影响架构决策的非功能性需求[转]...
  • 你了解软件安全性易用性吗?

    千次阅读 2015-07-22 09:13:16
    本来一些应用软件只是在银行或者财经的机构内部使用话,安全性、保安性要求相对比较容易控制,现在很多开始在智能手机APP使用。原本机构使用的系统,现在面向大众开放,要如何才能保证安全性? 在香港,由于...
  • 软件安全性标准

    2010-05-26 18:00:00
    一、安全目标Ø 预防:Ø 跟踪审计:从数据库系统本身、主体和客体三个方面来设置审计选项,审计对... 监控:能够对针对软件或数据库的实时操作进行监控,并对越权行为或危险行为发...
  • 随着互联网应用的普及,软件安全性越来越重要,今天我整理了一个软件安全性测试的列表,请大家仔细看看,看看有没有漏项,多给力,给予补充,在此谢过! 主题 项目列表 系统安全性及其测试...
  • 软件安全性设计

    千次阅读 2019-12-17 11:30:07
    该项目为解决BSS系统的日常运营中提前发现故障、快速定位问题、保障服务稳定运行等方面提供全方位的软件支撑,我在该项目中担任系统架构师,主要负责系统的总体架构设计和技术选型。本文以该项目为例,主要论述了安全...
  • 章13 软件安全性测试

    千次阅读 2007-02-11 22:35:00
    章13 软件安全性测试黑客、病毒、蠕虫、间谍软件、后面程序、木马、拒绝服务攻击都是计算机的安全问题。1、驾驶攻击随着在城域网中普及无线高保真(WiFi)网络,黑客们可以驾驶车子,带着笔记本,在城市的街道上兜...
  • 软件系统的安全性和保密性

    千次阅读 2009-08-08 16:40:00
    作者:Robert BK Dewar,2007年7月原文:http://www.ddj.com/security/199300140译者:logiciel,2009年8月8日 在当今世界,我们越来越倚赖于软件系统的安全性和保密性。在新生产的轿车中,刹车和控制系统依赖于...
  • 但对安全性有较高需求的软件,则必须做专门的安全性测试,以便在破坏之前预防并识别软件的安全问题。安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。应用程序级安全测试...
  • GJB 102A-2012军用软件安全性设计指南

    热门讨论 2013-12-27 10:00:48
    2012年7月24日的新标准,替代GJB/Z 102-1997《软件可靠性和安全性设计准则》。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,498
精华内容 13,799
关键字:

安全性软件