南软23研 信息安全 期末笔记

基于【软件安全:软件安全技术课后习题及答案】

修改

这篇文章格式不得,推荐在线文档阅读:

【金山文档】 南软 软件安全 期末笔记
https://kdocs.cn/l/cfzJLSKkWR7D

第一章


1.什么是零日(0 day)漏洞?什么是零日(0 day)攻击?

零日漏洞是指未被公开披露的软件漏洞,没有给软件的作者或厂商以时间去为漏洞打补丁或是给出建议解决方案,从而攻击者能够利用这种漏洞破坏计算机程序、数据及设备。

利用零日漏洞开发攻击工具进行的攻击称为零日攻击。

  1. 为什么说面对当前的全球网络空间安全威胁,必须对软件安全给予强烈关注?

背景:软件无处不在。信息化时代软件涉及即时通信、电子邮件、移动商务、智能家居等各方面。软件规模日益庞大,操作系统从百万行增长至亿行。

问题:软件漏洞普遍存在,零日漏洞成为主要威胁。在软件开发设计过程中,软件漏洞和不安全的软件配置这些软件安全问题时有发生。

结论:软件安全应当引起重视,成为当务之急。改善软件安全问题有利于社会、经济和国防建设,软件安全关乎国家竞争力。

  1. 当前,黑客为了能够有效达到窃取数据、破坏系统的目的,常常通过挖掘或是购买零日漏洞,开发针对零日漏洞的攻击工具,零日漏洞威胁实际上反映了软件系统存在的一个什么问题?

定义:零日漏洞不是公开披露的漏洞,软件作者/厂商没有发现或是尚未提供补丁。因此,零日攻击成功率高,造成后果严重。

结论:零日漏洞反映了软件系统的脆弱性,存在漏洞的隐秘性、修复的滞后性

  1. 根据本书的介绍,软件安全威胁可以分为哪几类?

软件自身的安全(软件漏洞)、恶意代码、软件侵权

  1. 试谈谈对软件漏洞的认识,举出软件漏洞造成危害的事件例子。

软件漏洞通常被认为是软件生命周期中与安全相关的设计错误编码缺陷运行故障等。

一方面,软件漏洞可能会造成软件在运行过程中出现错误结果或运行不稳定、崩溃等现象,甚至引起死机等情况。举例如下。

· 操作系统启动时发现未能驱动的硬件而导致蓝屏。

· 应用软件由于存在内存泄露,运行时系统内存消耗越来越大,直至最后崩溃。

· 网络软件由于对用户并发数考虑不周,导致用户数超出预计,程序运行错误。

· 多线程软件对线程同步考虑不周,导致系统因资源死锁而死机。

另一方面,软件漏洞会被黑客发现和利用,进而实施窃取隐私信息、甚至破坏系统等攻击行为,举例如下。

· 软件使用明文存储用户口令,黑客通过数据库漏洞直接获取口令明文。

· 软件存在缓冲区溢出漏洞,黑客利用溢出攻击而获得远程用户权限。

· 软件对用户登录的安全验证强度太低,黑客假冒合法用户登录。

· 软件对用户的输入没有严限制,被黑客利用后执行系统删除命令,从而导致系统被破坏。

震网病毒便是利用软件漏洞实施的攻击,通过U盘和局域网进行传播,震网病毒对伊朗等国家的核设施造成的危害不亚于1986年发生的切尔诺贝利核电站事故,最终造成伊朗核计划拖后了2年,我国近500万网民及多个行业的领军企业也遭受了此病毒的攻击。

  1. 什么是恶意代码?除了传统的计算机病毒,还有哪些恶意代码类型?

恶意代码是在未被授权情况下,以破坏硬件、窃取信息、干扰正常使用、扰乱用户心理为目的的软件或代码片段。

举例:蠕虫、特洛伊木马、后门、恶意广告、流氓软件、逻辑炸弹、僵尸网络、勒索软件等。

  1. 针对软件的版权,有哪些侵权行为?

未经软件著作权人许可,发表、登记、修改或翻译其软件。

复制、部分复制软件著作权人软件。

未经合作人许可,将合作完成的软件作为单独完成的软件发表、登记。

向公众发行、出租、传播著作权人的软件。

转让他人软件著作权或许可他人行使。

  1. 谈谈对软件安全概念的理解。

是软件工程和软件保障的一个方面,提供了一种系统的方法来标识、分析和追踪对危害及具有危害性功能的软件缓解措施和控制。

软件安全具有信息安全三大基本属性CIA: 保密性、完整性、可用性。

其他属性:可认证性、授权、可审计性、抗抵赖性、可控性、可存活性等。

  1. 简述软件和软件工程的概念。

软件:计算机程序、数据和可能相关的文档。

软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,从而经济地开发出高质量的软件并有效地进行维护。是指导计算机软件开发和维护的一门工程学科,是技术与管理紧密结合形成的工程学科。

软件工程方法学:软件生命周期中所使用到的技术方法,包括方法、工具、过程。

  1. 对照一般软件工程的概念,软件安全工程主要增添了哪些任务?

1.开发安全的代码:将安全性考虑到设计、编码和测试的整个过程中;

2.构建安全环境:根据需求进行环境的管理,提供良好的安全策略;

3.安全测试:对软件进行漏洞检测、安全测试以及安全评估;

4.网络安全:针对网络攻击和漏洞进行检测和处理;

5.安全维护:根据系统参数和安全需要定期审查,并找出潜在的安全风险;

6.维护安全标准:根据现行安全规范构建企业安全体系,确保软件通过安全标准测试;

7.进行安全审计:对软件的安全特性进行评估,以加强安全并及早发现和处理安全问题。

11.谈谈软件安全与软件危机、软件质量和软件质量保证、软件保障、软件可靠性、应用软件系统安全、可信软件和软件定义安全等概念的区别和联系。

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题:

对软件开发成本和进度的估计不准确

用户对开发完成的软件系统不满意

软件产品的质量不可靠

软件不能适应新的硬件环境,软件中的错误难以改正

等等

软件质量是“软件与明确的和隐含的定义需求相一致的程度”。软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准,以及所有专业开发的软件都应具有的和隐含特征相一致的程度。

软件质量保证是建立一套有计划、有系统的方法,向管理层保证拟定出的标准,步骤,实践和方法能够正确地被所有项目所采用。

软件保障是指提供一种合理的确信级别,确信根据软件需求,软件执行了正确的、可预期的功能,同时保证软件不被直接攻击或植入恶意代码。包括软件质量、软件安全性、软件可靠性、软件验证与确认等学科领域

软件可靠性,在规定条件下,在规定的时间内软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在的缺陷的函数。系统输入将确定是否会遇到已存在的缺陷;在规定的时间周期内所述条件下程序执行所要求的功能和能力。

应用软件系统安全,应用软件系统位于信息系统上层,是在信息系统的硬件系统、操作系统、网络系统和数据库管理系统的支持下运行的,是构成信息系统的最重要部分,是信息系统中直接为用户提供的部分。为了实现应用软件系统的安全,需要其余部分的安全。

可信软件,具有可信性的软件,可信指一个实体在实现既定目标的过程中,行为及结果可以预期,它强调目标与实现相符,强调行为和结果的可预测性和可控制性。软件可信是指软件系统的动态行为以及其结果总是符合人们的预期,在收到干扰时仍能提供连续的服务。

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

联系:它们都是为了确保软件具有可靠性可信度,保证软件系统运行可靠。

12.确保软件安全的基本思路是什么?软件安全涉及的技术主要有哪些方面?

思路1: 挖掘安全漏洞,分析后给出安全措施进行修复。例如补丁、防火墙等。这一方式被广泛采用,事实证明这种方式性价比低,很难从根本改善软件安全问题。

思路2: 事先分析软件安全错误的可能发生原因,在软件开发的过程中规避。该方法发生在软件生命周期较早的阶段,因而所需成本较小。

现有关于软件安全的技术主要包含软件安全属性认知信息系统安全工程软件安全开发三个方面。

第二章

  1. 试述软件漏洞的概念,谈谈软件漏洞与软件错误、软件缺陷、软件 Bug 的区别与联系。

本书中关于漏洞的定义为:软件系统或产品在设计、实现、配置和运行等过程中,由操作实体有意或无意产生的缺陷、瑕疵或错误,它们以不同形式存在于信息系统的各个层次和环节之中,且随着信息系统的变化而改变。

区别:软件错误发生在软件开发的生命周期中,是人为的差错导致的。包括需求说明错误、设计错误、编码错误、测试错误、配置错误、文档错误。

软件缺陷/Bug存在于软件产品中,由于人为差错或其他客观原因造成。是一种静态形式,一旦激活会影响用户的正常功能需求。相较而言,软件漏洞的存在更加隐蔽,关乎软件的安全问题。软件漏洞的存在体现了软件的脆弱性。

联系:这些概念都描述了软件在功能、行为上的异常和错误,对软件的可用性造成了损害。

  1. 为什么说安全缺陷或者说Bug是一个需要考虑具体环境、具体对象的概念?

举例:一般Web应用不使用HTTPS协议不算Bug,但电子商务或者网上银行不加密传输则会严重影响安全。

安全性功能实际为软件系统的一种需求,所以也被称为安全性需求。是否将安全性功能加人到项目需求中,还需要根据项目的具体情况考虑,如项目经费等。

  1. 试分析软件漏洞的成因。

计算机系统结构决定了漏洞的必然性。例如,数据和指令可能发生混淆,人为因素导致编码错误等。

软件趋向大型化,第三方扩展增多。软件漏洞的增长和软件复杂度、代码行数的增长呈正比。

新技术、新应用的设计缺乏安全性考虑。

使用场景更具威胁。网络技术的引入使得软件的使用环境变得更加复杂多变。

缺乏对软件安全的重视,开发者缺乏相关知识。

  1. 软件漏洞如何分类分级管理?

分类

基于漏洞成因的分类。内存破坏类、逻辑错误类、输入验证类、设计错误类、配置错误类。

基于漏洞利用位置的分类。本地漏洞、远程漏洞。

基于威胁类型的分类。获取控制、获取信息、拒绝服务。

分级

按照漏洞严重级别。严重、重要、中等、低。

利用通用漏洞评分系统(CVSS)分级。依照基本度量、时间度量、环境度量三个标准对漏洞打分。

  1. 软件漏洞管理应当遵循怎样的标准?

国际标准主要包括6大漏洞分级规范以及一系列安全漏洞管理规范,分级规范包括:

CVE(通用漏洞和披露)CVSS(通用漏洞评分系统)CWE(通用缺陷枚举)CWSS(通用缺陷评分系统)CPE(通用平台枚举)OVAL(开放漏洞评估语言)

国内标准主要包括《信息安全技术安全漏洞标识与描述规范》、《信息安全技术安全漏洞等级划分指南》、《信息安全技术安全漏洞分类》、《信息安全技术信息安全漏洞管理规范》。

  1. 软件漏洞买卖合法吗?软件漏洞应当如何管控?

不合法

认清“漏洞是一种武器”。漏洞交易市场日趋成熟,大量流动的高危漏洞造成危害。这种问题逐渐形成规模,必须加以重视。

通过限制“白帽”行为的尺度和规范,使软件厂家与“白帽”获得双赢。

加强法律建设,完善漏洞管控规范。企业和国家都应建立专门的部门来系统的收集、分析、修复软件安全漏洞。

7.厂商发布漏洞信息的标准过程是怎样的?

1. 识别漏洞:发布漏洞前,厂商需要识别发行的产品中是否有漏洞。厂商可以使用安全审查、公开的漏洞库、厂商集成的专家审核或第三方安全公司的安全测试方法来识别可能存在的漏洞。

2. 评估漏洞:厂商通过对漏洞的深入分析,评估漏洞的重要性,比如可能触及的用户数量、可能受影响的系统级别、漏洞公开的危害性及复杂度,等等。

3. 选择漏洞补救措施:在评估漏洞之后,厂商需要根据漏洞的重要性以及对用户和系统的安全程度,选择有效的补救措施,比如:客户端热更新、软件补丁、本地防火墙配置或者禁用恶意软件。

4. 发布漏洞信息:随后厂商需要发布漏洞信息,推送相应的补丁或者更新,同时公布有关的安全提示或者工作,以使用户能够及时的采取正确的措施对付漏洞。尽可能的减少漏洞对用户系统和安全的影响。

第三章

  1. 程序运行时的内存布局是怎样的?

  1. 在程序运行时,用来动态申请分配数据和对象的内存区域形式称为什么?

堆区

  1. 什么是缓冲区溢出漏洞?

缓冲区溢出漏洞就是在向缓冲区写入数据时,由于没有做边界检查,导致写入缓冲区的数据超过预先分配的边界,从而使溢出数据覆盖在合法数据上而引起系统异常的一种现象。

  1. 简述 Windows安全漏洞保护的基本技术及其存在的问题。

栈溢出检测选项/GS

问题:1,cookie值可以被猜测 2.同时替换栈中的 Cookie和Cookie副本 3.覆盖SEH绕过Cookie检查 4.覆盖父函数的栈数据绕过Cookie检查。

数据执行保护DEP(使可写数据不可执行,使执行数据不可写)

问题:可以执行已经加载的模块中的指令或调用系统函数,栈上的数据作为这些函数/指令的参数

地址空间布局随机化ASLR

问题:1.对于本地攻击,DLL的地址不会重新随机化 2.造成内存碎片增多 3.利用没有采用/DYNAMICBASE选项保护的模块作跳板

安全结构化异常处理SafeSEH(生成一张安全的SEH表,保存在数据块里)

问题:当进程中存在一个不支持SafeSEH的模块时,整个SafeSEH的机制就可能失效,

增强缓解体验工具包EMET(增强型DEP,SafeSEH升级版SEHOP,强制性ASLR,HeapSpray防护)

问题:EMET不是操作系统的一部分,会给操作系统的性能,可靠性以及会给其上运行的应用程序带来严重的副作用,且未跟上windows发展的步伐

5.本章介绍了 Windows的5种典型保护机制,但是每一种保护机制仍然面临着缺陷和许多对抗的方法,这说明了什么问题?应当如何应对这一问题?

没有完美无缺的保护机制,需要加强防范意识,采取多种手段保护。

第四章

1 常用的Web三层架构是怎样的?

2 当在浏览器的地址栏中输入一个完整的URL,再按Enter键直至页面加载完成,整个过程发生了什么?

DNS 域名解析、TCP连接、HTTP请求、处理请求返回HTTP响应、页面渲染和关闭连接。

3 根据OWASP2013发布的Web安全十大威胁报告,Web漏洞分为哪几大类型

注入

失效的身份认证与会话管理

跨站脚本

不安全的直接对象引用

错误的安全配置

敏感数据泄漏

缺失功能级访问控制

跨站请求伪造

使用有漏洞的组件

未验证的重定向和转发

4 试将Web典型漏洞根据客户端和服务器端来划分,并根据漏洞原理阐述这样划分的理由

Web客户端

XSS(跨站脚本攻击):恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的。

CSRF(跨站请求伪造):攻击者获取用户信息后伪造请求(例如Cookie),利用用户身份完成攻击操作,如发布文章、购买商品、转账、修改资料甚至密码等。

Web服务端

Sql注入漏洞:攻击者将恶意的数据插入SQL查询中,提交到后台数据库引擎执行非授权操作。

5 简述SQL注入漏洞的原理?为什么SQL注入漏洞多年来一直名列Web安全漏洞的榜首

原理:SQL 注入漏洞是指,攻击者能够利用现有Web 应用程序,将恶意的数据插入SQL 查询中,提交到后台数据库引擎执行非授权操作。

危害:

1.SQL 注入攻击具有广泛性,基于SQL语言的标准数据库软件以及与之连接的网络应用程序都面临此类攻击。并且SQL注入攻击原理相对简单,教程很多。

2.相较于其他漏洞,对于SQL 注入漏洞的防范要困难。

6 防范SQL注入漏洞的基本方法有哪些?重点谈谈在代码开发层面的安全措施。

1. 采用强类型语言,如Java、 C#等强类型语言几乎可以完全忽略数字型注入。

2. 尽可能避免使用拼接的动态SQL语句,所有的查询语句都使用数据库提供的参数化查询接口。参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。

3. 在服务器端验证用户输入的值和类型是否符合程序的预期要求。

4. 在服务器端对用户输入进行过滤。

5. 避免网站显示SQL错误信息 。

6. 加固应用程序服务器和数据库,利用最低权限账户与数据库连接。

7 什么是SQL盲注?它与一般的SQL注入有什么区别?

盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知。

8

9 简述XSS跨站脚本漏洞的原理

恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的。

XSS漏洞是指,应用程序没有对接收到的不可信数据经过适当的验证或转义就直接发给客户端浏览器。Web浏览器执行HTML页面中的脚本时就会执行到注入的恶意脚本代码。

有反射型,存储型,基于DOM的3类

10 简述CSRF跨站请求伪造漏洞原理,并比较其与XSS漏洞的不同

CSRF通过伪装来自受信任用户的请求来执行脚本,CSRF迫使用户的浏览器将伪造的HTTP请求,包括该用户的会话Cookie和其他认证信息,发送到一个存在漏洞的web应用程序,这些请求会被应用程序认为是用户的合法请求。

XSS的目的是在客户端执行脚本,CSRF的目的是在web应用中执行操作。

11 什么是命令执行漏洞?什么是文件包含漏洞?什么是文件上传漏洞?

命令执行漏洞是PHP Web 应用程序中比较常见的一种漏洞类型,PHP中包含很多可以执行命令的函数(exec()等),攻击者可以将恶意代码提交给有包含漏洞的Web 应用服务器,从而执行一些系统命令。

文件包含漏洞实际上是代码注入的一种,其原理就是开发人员为了动态调用文件和代码灵活性,将文件包含设置为变量,所以能注入一段用户能控制的脚本或代码,并让服务器端执行。

文件上传漏洞是指,用户上传一个可执行的脚本文件,由于服务器处理逻辑不够恰当,通过此脚本文件获得执行服务器端命令的能力。

第五章

1 什么是软件的生命周期?软件生命周期通常包括哪几个阶段?

软件生命周期由定义、开发和维护3个时期组成

软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

软件开发时期通常由4个阶段组成:总体设计、详细设计、编码和单元测试,以及综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

通常对维护时期不再进一步划分阶段

2 什么是软件过程?什么是软件开发(过程)模型?为什么从20世纪90年代以后,人们更多使用“软件过程”来替代传统的“软件开发模型”

所谓软件过程,是指为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件开发模型(Software Development Model)是跨越整个软件生存周期的系统开发、运行和维护所实施的全部工作和任务的结构框架,它给出了软件开发活动各阶段之间的关系。

20世纪90年代以后,因为“软件过程”模型能够更快更有效地完成软件产品,人们更多地使用它来代替传统的“软件开发模型”。它支持灵活的插入及替换,使开发人员可以避免在开发的任何一个阶段中做出决定,并能实现更高的精度减少了质量问题的风险。此外,它还可以更好地利用团队的能力,实现分配任务的整个程序和过程。

3 有哪些典型的软件开发模型?这些软件开发模型有什么区别与联系?

瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,Rational统一过程,极限编程和敏捷开发,微软过程。

主要区别在于他们的迭代次数时机不同,以及对开发时间的要求不同。而联系是他们都是软件开发的模型,所以它们都会影响软件开发的过程和时间。

4 SD3+C原则是SDL模型实施的基本原则,试简述其内容

安全设计(Security by Design)。软件的设计和实现需考虑如何保护其本身(和存储的信息)抵御外部攻击。

安全配置(Security by Default)。软件的缺省配置运行环境应考虑如何降低安全风险。重要的一个假设是软件自身代码总存在安全漏洞。那么,如何减少这些安全漏洞的危害?例如,是否可以运行于普通用户权限,而不需要管理员权限?是否可以缺省关闭某些高风险的代码模块?

安全部署(Security by Deployment)。软件需要提供相应的文档和工具,以帮助最终用户或管理员安全地使用。此外,更新应该易于部署。

沟通(Communication)。 软件开发人员应为产品漏洞的发现准备响应方案,并与系统应用的各类人员不断沟通,以帮助他们采取保护措施(如打补丁或部署变通办法)。

5 微软的SDL模型与传统的瀑布模型的关系是怎样的?

SDL模型由瀑布模型发展而来,在瀑布模型的各个阶段添加了安全活动业务活动目标。

6 什么是敏捷SDL?敏捷SDL和经典SDL的主要区别是什么?

很多软件产品开发的时间都很紧迫,一般 Web项目开发可能只有2~3周的时间,采用完整的SDL开发流程显然不切实际,因此需要更加简洁、快速的软件安全开发方法。为此,微软对SDL进行了调整,使其能够快速利用敏捷开发流程更好地实现安全需求,这就是敏捷SDL。

敏捷SDL与典型SDL的差别主要有两点。

1)敏捷SDL不采用传统的瀑布模型,而是采用无阶段的迭代开发模型,以实现软件版本的快速更新和发布。如果开发团队采用瀑布式开发流程(具有明确定义的设计、实现、验证和发布阶段),那么更适合采用典型的SDL模型,而并不适合敏捷SDL。

2)在敏捷SDL中,并不是每个发布版本(或每次“突击发布”)都需要达到所有的要求,这也是敏捷SDL与传统SDL之间最大的差别。

第六章

  1. 为什么要进行需求分析?通常对软件系统有哪些需求?

为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件。

功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。

  1. 为什么要进行安全需求分析?通常对软件系统有哪些安全需求?

软件安全需求分析的目的是描述为了实现信息安全目标,软件系统应该做什么.才能有效地提高软件产品的安全质量,减少进而消减软件安全漏洞。

一个缺少安全需求分析的软件开发项目,将威胁到信息的保密性、完整性和可用性,以及其他一些重要安全属性。

1. 外部安全需求

外部安全需求通常主要指法律、法规等遵从性需求,包括相应国家和地区关于安全技术与管理的法规、标准及要求等。这些安全技术和管理的合规性要求往往是已有安全威胁的经验性对策的总结,因而遵循这些要求不仅是法规制度上的要求,也是软件安全性保障的要求。

2. 内部安全需求

内部安全需求通常包括两个部分,一是组织内部需要遵守的政策、标准、指南和实践模式,二是与软件业务功能相关的安全需求。

  1. 软件安全需求分析的主要工作是什么?它和软件需求分析有什么区别与联系?

在软件开发生命周期的需求分析阶段,首先确定目标系统的业务运行环境、规则环境及技术环境,然后在了解各类软件安全需求内容的基础上,通过一定的安全需求获取过程,对软件应该包含的安全需求进行分析,而对于如何实现这些安全需求将在软件安全设计和开发部分进行讨论。

区别:

客观性:安全需求并不是从使用者的要求和兴趣出发,而是由系统的客观属性所决定的。

系统性:软件安全需求分析不能只从软件本身出发,必须从系统角度进行分析。

经济性和适用性: 软件安全的需求内容非常丰富,并不是所有的应用安全需求控制都要采纳和实施。

联系:

1、软件安全需求分析是软件需求分析的一个衍生

2、软件安全需求分析应以功能性需求分析为基础,以更严格的标准审视安全功能性方面的问题;

3、软件安全需求分析可以帮助从安全角度考虑并确定系统需求,为软件系统更好地提供保护。

  1. 为什么说软件安全需求更多地来源于遵从性需求?

在软件安全性需求分析中,软件用户由于安全知识的缺乏,很难从专业角度提出安全需求。因此,软件安全需求更多地来自于对组织内部和外部的一些安全政策和标准的遵从。

  1. 本章中介绍的安全需求遵从性标准有哪些类别,它们之间有何联系与区别?

《可信计算机系统评估标准》(TCSEC)大型计算机系统机密文档处理方面的安全要求

《信息技术安全性评估标准》(ITSEC)在上一个基础上提出了信息安全的保密性、完整性和可用性的概念。

《信息技术安全评估通用标准》(CCITSE)基于风险管理理论,对安全模型、安全概念和安全功能进行了全面系统描绘,强化了评估保证。

《信息技术安全技术信息技术安全性评估准则》此标准致力于保护资产的机密性、完整性和可用性

《信息技术安全技术信息技术安全性评估方法》为评估人员在具体评估活动中的评估行为和活动提供指南。

  1. 我国为什么要实行网络安全等级保护制度?网络安全保护能力划分为哪些等级?具体每个等级有什么要求?

对信息安全分级保护是客观需求。信息系统的建立是为社会发展、社会生活的需要而设计、建立的,是社会构成、行政组织体系及其业务体系的反映,这种体系是分层次和分级别的。因此,信息安全保护必须符合客观存在。

等级化保护是信息安全发展规律。按组织业务应用区域,分层、分类、分级进行保护和管理,分阶段推进等级保护制度建设,这是做好国家信息安全保护必须遵循的客观规律。

等级保护是国家法律和政策要求。为了提高我国信息安全的保障能力和防护水平,维护国家安全、公共利益和社会稳定,保障和促进信息化建设的健康发展,1994年国务院颁布的《中华人民共和国计算机信息系统安全保护条例》规定:“计算机信息系统实行安全等级保护,安全等级的划分标准和安全等级保护的具体方法,由公安部会同有关部门制定”。

等级

第一级,属于一般网络,其一旦受到破坏,会对公民、法人和其他组织的合法权益造成损害,但不危害国家安全、社会秩序和社会公共利益。

第二级,属于一般网络,其一旦受到破坏,会对公民、法人和其他组织的合法权益造成严重损害,或者对社会秩序和社会公共利益造成危害,但不危害国家安全。

第三级,属于重要网络,其一旦受到破坏,会对公民、法人和其他组织的合法权益造成特别严重损害,或者会对社会秩序和社会公共利益造成严重危害,或者对国家安全造成危害。

第四级,属于特别重要网络,其一旦受到破坏,会对社会秩序和社会公共利益造成特别严重危害,或者对国家安全造成严重危害。

第五级,属于极其重要网络,其一旦受到破坏,会对国家安全造成特别严重危害。

  1. 对网络安全等级划分通常有两种描述形式,即根据安全保护能力划分安全等级的描述,以及根据主体遭受破坏后对客体的破坏程度划分安全等级的描述这两种形式。试谈谈这两种等级划分的对应关系。

zhuanlan.zhihu.com/p/567149771,两种等级划分的各个级别一一对应,级别越高越严重。

  1. 简述网络等级保护信息安全管理体系的联系和区别。

信息安全管理体系是站在管理的角度上对信息进行管理,而等级保护则是管理体系中的一部分,是基础性的工作,两者在管理目标上具有一致性,而且还有相辅相成的作用。

1)两者工作重点不同信息安全管理体系是站在管理的角度上对信息进行保护的,而等级保护则是站在技术及管理两个方面来开展工作的。

2)两者所依据的标准不同信息安全管理体系实施的标准,在实施规则中对管理的措施等进行了阐述。等级保护信息安全管理体系中的一部分,其主要作用是为了检查信息系统有没有达到规定的安全等级要求,而每个地区的信息安全管理要求及实际情况不同。

3)两者的实施对象不同信息安全管理体系建立的主要目的是为各企业提供信息保障服务,所以其针对的主要群体是企业,而等级保护的主要目的是对信息安全管理体系进行测评,所以其针对的主要对象是需要使用信息安全管理体系的政府部门。

  1. 软件安全需求获取过程中涉及哪些相关方人员?他们各自主要的职责是什么?

软件安全需求获取的相关方包括业务负责人最终用户客户安全需求分析人员安全技术支持等。

业务负责人、最终用户和客户在安全需求确定时应发挥重要作用,他们应当积极参与安全需求的采集和分析过程。业务负责人是业务风险的最终责任人,负责确定可接受的风险阈值,明确哪些残余风险是可以接受的,因此他们应该了解软件的安全漏洞,协助安全需求分析人员和软件开发团队考虑风险的优先顺序,权衡决定哪些风险是重要的。

安全需求分析人员要负责软件安全需求的收集和分析,并帮助软件开发团队将安全需求转化为功能说明。

运维小组和信息安全小组等安全技术支持也是软件安全需求获取相关方,安全需求分析人员、任务负责人、最终用户及客户应当积极与之保持联系和沟通,寻求他们的支持与帮助。

  1. 软件安全需求的获取方法有哪些?

一些最常见的安全需求获取方法包括头脑风暴、问卷调查和访谈、策略分解、数据分类、主/客体关系矩阵、使用用例和滥用案例建模,以及软件安全需求跟踪矩阵。

  1. 软件安全需求的获取方法中的策略分解是指什么?

策略分解是指将组织需要遵守的内部和外部政策,包括外部法律法规、隐私和遵从性命令分解成详细的安全需求。

  1. 软件安全需求的获取方法中的数据分类是指什么?

根据数据生命周期管理对数据的分阶段划分来决定响应的安全需求;也可以根据数据的重要性对保护级别的划分来决定相应的安全需求。

  1. 针对信息系统中的数据生命周期,通常应当考虑的安全需求有哪些?

·谁可以创建数据?谁可以对数据进行访问?访问权限是什么(授权的级别)?

·当进行数据处理时,是否需要数据泄漏保护(Data Leakage Prevention,DLP)?

·当数据被传输时,是否需要采用传输层或网络层安全协议(如SSL/TLS或 IPSec)来保护数据?

·数据是以结构化还是非结构化的方式进行存储,数据存储和使用的环境(私人、公共或混合)面临哪些安全威胁?

·从数据的可访问性和可用性角度来看,一些需要频繁访问的关键业务数据必须存储在更快的存储介质上,但是,如何应对这些存储介质的可靠性、易失性等物理安全问题?

·当数据归档时,需要遵循企业的数据保留政策,或是当地法律法规对数据存档的要求。当数据失去其效用(即不再被业务操作或连续性所需要),且没有监管或规范要求保留时,数据是否需要通过数据逻辑删除、物理媒体破坏或存储媒体消磁等被安全地处理?

14.软件安全需求的获取方法中的主/客体关系矩阵是指什么?

采用主/客体关系矩阵来刻画一个基于使用用例的主/客体之间的操作关系。主/客体关系矩阵是角色和组件的二维表示,主体(角色)作为列,客体(对象/组件)作为行。当主/客体关系矩阵产生后,与主/客体关系矩阵所允许的对应动作和相违背的事件就可以判定为威胁,在此基础之上可以确定安全需求。

第七章

  1. 软件设计阶段的主要工作是什么?

软件架构设计、界面接口设计、模块/子系统等构件设计、数据模型设计、过程/算法设计及部署设计等。

  1. 软件安全设计阶段的主要工作是什么?

软件架构安全性设计、软件架构安全性分析及软件安全功能设计

  1. 为什么要进行软件架构设计?软件架构设计的主要工作是什么?软件架构安全性设计的主要工作是什么?

软件架构设计对于开发高质量软件具有较大作用。

一般而言,软件架构的设计首先需要理清业务逻辑的功能要求,了解业务逻辑的变化性要求,包括可维护性和可扩展性,分离出概要业务逻辑层。接着,设计业务逻辑层和系统其他部分的接口与交互关系,按照职责分离原则设计包、类、方法和消息,设计业务逻辑算法。然后,使用自底向上和自顶向下相结合的方式,不断渐进地迭代架构设计。

软件架构安全设计首先需要进行系统描述,包括系统功能、安全要求、系统部署和技术需求,确定软件系统的安全级别。接着,设计软件网络、数据库等应具备的安全功能,根据软件具体安全需求的不同,设计的安全功能包括加密、完整性验证、数字签名、访问控制及安全管理等。在架构安全设计过程中,还需要解决软件安全功能的易用性、可维护性和独立性问题。

  1. 为什么要进行软件架构安全性分析?软件架构安全性分析的基本过程是什么?

软件架构安全性分析可以帮助开发人员在编码之前对安全设计要素进行验证,提供一个识别和处理任何安全漏洞的机会,减少后续阶段重新设计软件的需要。

软件架构安全性分析的基本过程如图,首先进行架构建模,然后根据软件的安全需求描述或相关标准,对架构模型是否满足要求进行检查,如果不满足则需要修改设计架构,如此反复,直至满足所有安全需求和相关标准。

  1. 软件受攻击面是指什么?举例说明软件设计时可以采取哪些策略来降低受攻击面。

软件受攻击面是指,用户或其他程序及潜在的攻击者都能够访问到的所有功能和代码的总和,它是一个混合体,不仅包括代码、接口和服务,也包括对所有用户提供服务的协议,尤其是那些未被验证的或远程用户都可以访问到的协议。

原则:

重要性低的功能可取消;重要等级为中的功能可设置为非默认开启,需要用户配置后才予以开启;重要性高的功能则关闭或增加一些安全措施进行限制。

重用那些经过测试、已证明安全的现有库和通用组件,而不是用户自己开发的共享库。

举例:IOS不支持java和flash,部分支持.mov和.pdf

  1. 什么是最小授权原则?试举例说明软件设计时哪些措施是采用了最小授权原则。

最小授权原则是指,系统仅授予实体(用户、管理员、进程、应用和系统等)完成规定任务所必需的最小权限,并且该权限的持续时间也尽可能短。最小授权原则可使无意识的、不需要的、不正确的特权使用的可能性降到最低,从而确保系统安全。

举例:

·将超级用户的权限划分为一组细粒度的权限,分别授予不同的系统操作员/管理员。对管理员账户分配安全资源的访问权限也要设置为受限访问,而不是超级用户权限。

·采用高内聚、低耦合的模块化编程方法,也就是模块之间的依赖关系是弱链接(低耦合),每一个模块只负责执行一个独立的功能(高内聚)。

  1. 什么是权限分离原则?试举例说明软件设计时哪些措施是采用了权限分离原则。

权限分离原则在软件设计中是指,将软件功能设计为需要在两个或更多条件下才能实现,以防止一旦出现问题,整个软件都可能面临风险。

举例:

清晰的模块划分,将风险分散到各个模块中去。这样,如果出现问题就可以快速定位到模块,以便进行修复;其次,还可以对单个模块进行测试,保证各个模块的正确性;还可以重复使用已经开发的模块,并且可以在已有模块上增加和替换模块,同时不影响原有模块的功能。

不允许程序员检查自己编写的代码。

  1. 针对第6章介绍的核心安全需求,软件安全功能设计通常有哪些内容?

在软件设计阶段,将考虑如何将这些安全需求纳入到软件架构和设计方案中,将它们转化为可实现的功能组件,具体包括保密性、完整性、可用性、认证性、授权和可记账性等核心安全需求的设计,以及其他相关安全需求设计。

  1. 什么是软件设计模式?有哪些软件设计模式?

设计模式是对软件设计中普遍存在、反复出现的各种问题,根据多次处理的经验,提出的一套能够快速、准确响应此类问题的解决方案。设计模式描述在各种不同情况下,应解决共性问题。

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

  1. 什么是安全模式?为什么说能够利用安全模式来快速、准确地进行软件安全设计?

安全模式是在给定的场景中,为控制、阻止或消减一组特定的威胁而采取的通用解决方案。该解决方案需要应对一系列的问题,并且可以使用UML类图、时序图、状态图和活动图等进行表述。

安全模式封装了反复出现的系统问题的解决方案,同时精确地表述了系统要求和解决方案。采用模式的系统架构描述比较容易让人看懂,也为设计和分析提供了指南,还定义了使架构更安全的方法。安全模式使得不具备专业安全知识的应用开发人员也可以使用安全措施。还可以通过分析现有系统看它们是否包含特定的模式,进而评估它们的安全性。

  1. 试给出一种利用安全模式进行软件安全设计的方法。

(1)风险确定阶段:识别和评估风险

(2)系统安全架构阶段:1)浏览模式库 2)选择相应安全模式 3)评估安全模式 4)建立系统高层架构

(3)系统设计细化阶段:构建类图,实例化安全模式,整合和重构

  1. 什么是威胁建模?试简述威胁建模的过程。

软件威胁建模是指,通过抽象的概念模型对影响软件系统的威胁进行系统的识别和评价。

1.确定安全目标

2.创建应用程序概况图

3.分解应用程序

4.确定威胁

5.威胁评估

6.确定威胁缓解计划或策略

7.验证威胁

8.验证建档

  1. 为什么说组织自身的威胁建模能力水平对提升组织的整体安全保障能力起到至关重要的作用?

采用威胁建模方法,可以系统性地分析其架构、软件体系和程序部署,分析网络和信息系统可能面临的潜在威胁,确认有哪些攻击面,之后提出有针对性的安全防范措施,这才是有效解决网络安全对抗的良策。

威胁建模具有重要的存在价值,包括早期发现安全缺陷,理解安全需求,设计和交付更安全的产品,解决其他技术无法解决的问题等作用。

  1. 在威胁排序的几种计算方法中,为什么说相比Delphi法和平均排序法,P×I排序方法更科学?

P×I排序考虑业务影响(潜在损失和受影响的用户)和发生概率(可再现性、可利用性和可发现性)。P×I排序法对事件发生概率、业务影响及它们合并的影响进行深入分析,使得设计团队能够灵活地掌握如何降低事件发生的概率、减小业务影响或二者同时降低;此外,P×I排序方法还给出了更精确的风险图谱

第八章

1 软件安全编码阶段的主要工作有哪些?

选择安全的编程语言、版本(配置)管理、代码检测、安全编译

  1. 什么是类型安全语言?哪些程序开发语言是类型安全的?

提供类型安全保障机制的语言是类型安全语言,它们能确保操作仅能作用于适当的类型,本质上是对未被授权的内存区域的访问进行禁止。C# Java

  1. 安全编译是指在代码编译阶段采取的哪些安全措施?

采用最新的集成编译环境、编译在安全环境中进行、对应用环境的真实模拟、应用多样化编译技术

  1. 试列举几条安全编码原则,并举例说明这些原则的重要意义。

1)验证输入 (Validate input)。对于不可信任数据源的输入应当进行验证。正确的输人验证能减少大量软件漏洞。这些数据源包括命令行参数、网络接口、环境变量,以及用户文件。

2)留意编译器警告(Heed compiler warnings)。应采用实现了安全特性的编译器,并启用编译器的警告和错误提示功能。不仅要处理和解决代码中的错误,而且也应处理和解决所有的警告,确保不将任何一个警告带入到程序的最终编译版本中。

3)安全策略的架构和设计(Architect and design for security policies)。创建一个软件架构来实现和增强安全策略。例如,如果系统在不同的时间需要不同的权限,则考虑将系统分成不同的互相通信的子系统,每个系统拥有适当的权限。

4)保持简单性(Keep it simple)。这是第7章中介绍的减少软件被攻击面原则的体现。程序越复杂,控制会越复杂,就会增加代码出错的可能。要尽量使程序短小精悍,代码中的每个函数应该具有明确的功能,在编写函数代码时,应在保持功能完整实现的前提下控制该函数内代码量的多少。对于复杂的功能,应将该功能分解为更小、更简单的功能,确保软件仅包含所要求或规定的功能。

5)默认拒绝 (Default deny)。这是第7章中介绍的默认安全配置原则的体现。默认的访问权限是拒绝,除非明确是允许的。

6)坚持最小权限原则(Adhere to the principle of least privilege)。这是一个通用的安全原则,在本书第7章已经提及,这里从编码角度再次重申。每个进程拥有完成工作所需的最小权限,任何权限的拥有时间要尽可能短,以阻止攻击者利用权限提升执行任意代码的机会。

7)清洁发送给其他系统的数据(Sanitize data sent to other systems)。清洁所有发送给子系统的数据,以免攻击者实施注入类等攻击。输入验证后再次净化数据是纵深防御的体现。

8)纵深防御(Practice defense in depth)。这是一个通用的安全原则,在本书第7章已经提及。

9)使用有效的质量保证技术(Use effective quality assurance techniques)。好的质量保证技术能有效地发现和消除漏洞。渗透测试、模糊测试及源代码审计可以作为有效的质量保证措施。独立的安全审查能够促成更安全的系统,外部审查人员能带来独立的观点。

10)采用安全编码标准(Adopt a secure coding standard)。为开发语言和平台设计安全编码标准,并应用这些标准。多数漏洞很容易通过使用一些规范编码的方法来避免,例如对代码进行规范缩进显示,可以有效避免出现遗漏错误分支处理的情况。

  1. 为什么要避免使用C语言中原有的字符串函数?所谓的安全字符串函数解决了原有C字符串函数的什么安全漏洞?

C语言中原有的字符串函数由于安全性的问题,有可能破坏接受字符串的缓冲区,导致程序出错或者数据丢失。安全字符串函数就是为了解决这个漏洞而设计的,它们会检查字符串的长度,通过将空格截断字符串,或扩充缓冲区的大小来保护数据的完整性。

  1. Java提供的沙箱安全机制的核心思想是什么?

本地环境中的代码能够访问系统中的关键资源,而从远程下载的程序则只能访问“沙箱“内的有限资源。

7.试谈谈Java提供的安全机制。

1)语言层安全

通过某些关键字(如private,protected)定义代码中的可见性范围。

通过类型规则确保程序运行时变量的值始终与声明的类型一致。

  1. 字节码层安全

类加载器可以排除恶意代码对正常代码的干扰,保证可信类库不会被替代,把每个类加载到相应的保护域中

字节码验证器保证加载的类文件内容有正确的内部结构,并且这些类文件相互协调一致,以确保只有合法的java代码才能被执行且执行时不会带来破坏性的操作。

  1. 应用层安全

安全管理器是一个由java API提供的类。它的作用是说明一个安全策略并实施这个安全策略。

十二章

  1. 试解释以下与恶意代码程序相关的计算机系统概念,以及各概念之间的联系与区别:进程、线程、动态链接库、服务、注册表。

进程是操作系统对一个正在运行的程序的一种抽象。它是一个动态的实体,它有生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤销。反映了一个程序在一定的数据集上运行的全部动态过程。

线程是系统分配处理器时间资源的基本单元,或者说是进程内独立执行的一个单元执行流。一个进程至少有一个线程,一个线程只能在一个进程的地址空间内活动。进程为线程提供了生存空间和线程所需要的其他资源。

动态链接库DLL是共享函数库的可执行文件,它不能独立运行,只能通过其他运行的程序加载到内存中执行。同一个动态链接库可以同时被多个进程加载到内存中,并且执行DLL中的功能。

服务是windows系统在后台完成系统任务的程序,它与系统的核心相关并拥有各种权限。

注册表是windows中使用的中央分层数据库,用于存储一个或多个用户、应用程序和硬件设备配置系统所必须的信息。

  1. 从危害、传播、激活和隐藏4个主要方面分析计算机病毒、蠕虫、木马、后门、Rootkit及勒索软件这几类恶意代码类型的工作原理。

病毒

蠕虫

木马

后门

Rootkit

勒索软件

危害

破坏系统的机密性完整性和可用性

造成网络拥塞;降低系统性能;产生安全隐患;反复性;破坏性

非法用户进入系统、控制系统甚至破坏系统

仅仅是一个访问系统或控制系统的通道,其本身并不具有其他恶意代码的直接攻击行为

使攻击者获得访问权限并隐藏在计算机中

劫持用户资产或资源并以此为条件向用户勒索钱财

传播

移动存储设备/网络传播

自我复制传播,通过局域网/因特网

自我传播,诱骗用户上当

垃圾邮件、漏洞、捆绑、社交网络、可移动存储介质等

激活

满足特定条件

自动化、智能化,利用系统漏洞

用户操作

开发者调试/攻击者设置

隐藏

寄生在别的有用的程序或文档上

实体隐藏模块

难以确定具体位置

修改操作系统软件

  1. 病毒程序与蠕虫程序的主要区别有哪些?

病毒需要人为干预,蠕虫不需要;传统计算机病毒主要感染计算机的文件系统,而蠕虫影响的主要是计算机系统和网络性能

  1. 什么是Rootkit?它与木马和后门有什么区别与联系?

Rootkit指:一类木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权限并隐藏在计算机中。

Rootkit与木马、后门等既有联系又有区别。首先,Rootkit属于木马的范畴,它用恶意的版本替换修改现有操作系统软件来伪装自己,从而掩盖其真实的恶意的目的,而这种伪装和隐藏机制正是木马的特性。此外,Rootkit还作为后门行使其职能,各种 Rootkit 通过后门口令、远程Shell或其他可能的后门途径,为攻击者提供绕过检查机制的后门访问通道,这是后门工具的又一特性。Rootkit 强调的是强大的隐藏功能、伪造和欺骗功能,而木马、后门强调的是窃取功能、远程侵入功能。两者的侧重点不一样,两者结合起来则可以使得攻击者的攻击手段更加隐蔽、强大。

  1. 什么是勒索软件?为什么勒索软件成为近年来数量增长最快的恶意代码类型?

勒索软件是黑客用来劫持用户资产或资源,并以此为条件向用户勒索钱财的一种恶意软件。原因有:

1)加密手段有效,解密成本高。勒索软件都采用成熟的密码学算法,使用高强度的对称和非对称加密算法对文件进行加密。除非在实现上有漏洞或密钥泄密,否则在没有私钥的情况下几乎没有可能解密。当受害者数据非常重要又没有备份的情况下,除了支付赎金没有别的方法去恢复数据,正是因为这点勒索者能源源不断地获取高额收益,推动了勒索软件的快速增长。

2)使用电子货币支付赎金,变现快,追踪困难。几乎所有勒索软件支付赎金的手段都是采用比特币来进行的。比特币因为匿名、变现快、追踪困难,再加上大众比较熟知比特币,支付起来困难不是很大而被攻击者大量使用。可以说比特币帮助勒索软件解决了支付赎金的问题,进一步推动了勒索软件的发展。

3)勒索软件即服务(Ransomware-as-a-server)的出现,降低了攻击的技术门槛。勒索软件服务化,开发者提供整套勒索软件的解决方案,从勒索软件的开发、传播到赎金的收取都提供完整的服务。攻击者不需要任何知识,只要支付少量的租金即可租赁他们的服务,从而开展勒索软件的非法勾当。这大大降低了使用勒索软件的技术门槛,推动了勒索软件的大规模爆发。

  1. 恶意代码防范的基本措施包括哪些?

1 增强法律意识,促进行业内人员明确恶意代码相关的法律责任,自觉履行恶意代码防治责任。

2 健全管理制度,严格执行恶意代码防治规定,对恶意代码违法行为进行法律制裁。

3 开展面向恶意代码检测的软件可信验证。从软件特征可信、软件身份可信、软件能力可信、软件环境可信四个方面开展验证。

7.试为所在学院或单位拟定恶意代码防治管理制度。

十四章

  1. 我国对于软件的知识产权有哪些法律保护途径?

《计算机软件保护条例》《中华人民共和国专利法》《商业秘密所有权保护法》

《中华人民共和国商标法》《互联网著作权行政保护办法》《信息网络传播权保护条例》

《移动互联网应用程序信息服务管理规定》

  1. 根据我国法律,软件著作权人有哪些权利?在日常学习和生活中,有哪些违反软件著作权的行为?

软件著作权人拥有的权利:

信息网络传播权、修改权、发表权、署名权、复制权、出租权、翻译权、发行权等。

违反行为:

(1)未经软件著作权人许可,发表或者登记其软件的;

(2)将他人软件作为自己的软件发表或者登记的;

(3)未经合作者许可,将与他人合作开发的软件作为自己单独完成的软件发表或者登记的;

(4)在他人软件上署名或者更改他人软件上的署名的;

(5)未经软件著作权人许可,修改、翻译其软件的;

(6)其他侵犯软件著作权的行为;第一章第7题

(7)复制或者部分复制著作权人的软件的;

(8)向公众发行、出租、通过信息网络传播著作权人的软件的;

(9)故意避开或者破坏著作权人为保护其软件著作权而采取的技术措施的;

(10)故意删除或者改变软件权利管理电子信息的;

(11)转让或者许可他人行使著作权人的软件著作权的。

  1. 试述软件版权的概念。针对软件的版权,有哪些侵权行为?有哪些保护措施?

概念:软件版权是软件知识产权的一部分,指软件著作权

针对软件版权的侵权行为:软件盗版;逆向工程;信息泄露

保护措施:

基于硬件:对发行介质进行保护;软件狗;可信平台模块TPM(受信任的计算芯片,win11需要TPM2.0才能安装)

基于软件:注册验证;软件水印;代码混淆;软件加壳;虚拟机保护

4.软件版权保护的目标有哪些?它与软件保护的目标有什么联系与区别?

1)防软件盗版,即对软件进行防非法复制和使用的保护。

2)防逆向工程,即防止软件被非法修改或剽窃软件设计思想等。

3)防信息泄露,即对软件载体及涉及数据的保护,如加密硬件、加密算法的密钥等。

与软件保护:

1 软件版权保护的目标是软件保护目标的一个子集。软件保护除了确保软件版权不受侵害以外,还要防范针对软件的恶意代码感染、渗透、篡改和执行等侵害。

2 软件版权保护的许多措施同样可以应用于软件保护。

  • 33
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值