软件安全设计讲解Word文件下载.docx

上传人:b****6 文档编号:18937429 上传时间:2023-01-02 格式:DOCX 页数:17 大小:86.25KB
下载 相关 举报
软件安全设计讲解Word文件下载.docx_第1页
第1页 / 共17页
软件安全设计讲解Word文件下载.docx_第2页
第2页 / 共17页
软件安全设计讲解Word文件下载.docx_第3页
第3页 / 共17页
软件安全设计讲解Word文件下载.docx_第4页
第4页 / 共17页
软件安全设计讲解Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

软件安全设计讲解Word文件下载.docx

《软件安全设计讲解Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件安全设计讲解Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

软件安全设计讲解Word文件下载.docx

已授权的(authorized,经授权的)和XX的(unauthorized,未被授权的,未经认可的)。

漏洞是软件的属性。

质量特性

功能性

易用性

效率

维护性

可移植性

关于软件安全的基本概念及认识

安全的代码(securecode):

能够抵抗恶意攻击的代码;

安全的代码同时也是健壮的代码(robustcode)

安全性代码(securitycode):

实现安全功能的代码。

程序是“安全的”:

安全隐含某种程度的信任(trust),程序实现了期望的机密性、完整性、可用性及其功能。

第二部分

安全问题来源

1、漏洞

漏洞是软件的属性

2、攻击者

3、软件存在的攻击路径-攻击面问题

意外行为及缺陷

意外行为(UnexpectedBehavior):

也称程序安全缺陷,是由于程序脆弱性引起的不适当的程序行为。

缺陷(Flaw):

缺陷可以是故障(Fault),或者失效(Failure)

程序安全缺陷可能来源于任何种类的软件错误:

无意或疏忽的

故意或有意的

缺陷类型

Landwehretal.提出了程序缺陷分类方法(taxonomy)

有意的缺陷(Intentional,故意的)

恶意的(Malicious)

非恶意的(Nonmalicious)

无意中的缺陷(Inadvertent,不注意的;

疏忽的)

•确认错误(Validation(验证;

合法性,有效)error)(incomplete/inconsistent)

•域的错误(Domainerror)

•顺序化和混淆现象(Serializationandaliasing)

•不完全的身份识别和认证(Inadequateidentificationandauthentication)

•边界条件违反(Boundaryconditionviolation)

•其它可利用的逻辑错误(Otherexploitablelogicerrors)

漏洞类型

软件漏洞包括设计漏洞和实现漏洞。

漏洞是软件安全威胁的根源.

设计漏洞:

设计错误,往往发现于软件的安全功能特性中。

实现漏洞:

来源于软件实际编码中的安全缺陷。

软件安全缺陷及其来源(以上)

常见软件安全设计问题

常见的安全设计问题1:

密码技术使用的败笔

创建自己的密码技术

选用了不当的密码技术

依赖隐蔽式安全

编写到程序中的密钥

错误地处理私密信息

常见的安全设计问题2:

对用户及其许可权限进行跟踪的薄弱或缺失

会话管理薄弱或者缺失

身份鉴别薄弱或缺失

授权薄弱或缺失

常见的安全设计问题3:

有缺陷的输入验证

没有在安全的上下文环境中执行验证,如在服务器验证而在客户端没有验证

验证例程不集中,验证应尽可能靠近用户输入,并应集中以便于核实

不安全的组件边界

常见的安全设计问题4:

薄弱的结构性安全

过大的攻击面

在过高权限级别上运行进程

没有纵深防御

失效时的处理不安全

常见的安全设计问题5:

其他设计缺陷

代码和数据混在一起

错将信任寄予外部系统

不安全的默认值

未做审计日志

编程语言的问题

C/C++的问题

问题1:

没有安全的本地字符串类型,

也没有安全而易用的字符串处理函数。

典型例子--缓冲区溢出(BufferOverflow)

C/C++问题2:

缓冲区超限覆盖栈中的函数返回地址

典型例子-栈溢出(StackSmashing)

C/C++问题3:

printf类型的格式化函数-格式化字符串攻击

C/C++问题4:

整数溢出

第三部分

安全工程

SSE/CMM

SSE-CMM背景知识

开发SSE-CMM的目的:

降低开发和维护系统的花费;

提高工程进度和预算的一致性;

选择合适的承包者。

发起者

国防部;

国家安全局。

SSE-CMM主要内容

能力方面:

1、通用实施:

增强执行任何过程能力的实现和制度化实施。

2、公共特征:

一组实施,列出管理和制度化过程的相同方面。

3、能力级别:

共同工作的一组公共特征,主要增强执行一个过程的能力。

能力级别:

能力级别1――非正式执行

能力级别2――计划与跟踪

能力级别3――充分定义

能力级别4――定量控制

能力级别5――连续改进

域方面:

1、基础实施:

工程和安全实施是安全工程过程中必须存在的性质,指出特殊过程区的目的属于该过程区。

2、过程区:

每个过程区(PA)是一组相关安全工程过程的性质,当这些性质全部实施后则能够达到过程区定义的目的。

3、过程类:

一组过程区指出活动的同一通用区。

CMM的5个级别

一级为初始级,

二级为可重复级,

三级为已定义级,

四级为已管理级,

五级为优化级。

安全工程的三个基本过程

安全工程分三个基本过程:

风险、工程和保证

风险过程是要确定产品或者系统的危险性,并对这些危险性进行优先级排序

工程过程是针对面临的危险性,安全工程过程与相关工程过程一起来确定并实施解决方案

保证过程是建立起对解决方案的信任,并把这种信任传达给顾客

SDL及它的三个阶段

什么是SDL?

SecureDevelopmentLifecycle

微软可信计算(TrustWorthyComputing)努力的一个组成部分

基于并行理念的标准软件开发过程

基于威胁建模和测试

SDL从三个方面考虑软件安全的保障。

设计安全:

为了保护软件自身以及软件处理的信息,并抵御攻击,软件应该从架构,设计和实现上进行考虑.

缺省安全:

设计者应该假定安全缺陷将会出现。

为了当攻击者对软件存在的缺陷进行攻击时使损害降到最小,软件的缺省状态应该保证安全。

比如,最小特权原则。

提交安全:

工具和指南应该随着软件提供以帮助最终用户或管理员安全使用。

关于软件的更新应该容易提交。

威胁建模

威胁建模过程:

定义应用场景

收集外部依赖列表

定义安全假设

创建外部安全备注

绘制待建模应用的一个或多个数据流图

确定威胁类型

识别系统威胁

判断风险

规划消减措施

常见安全设计原则

隐私分级

第四部分

软件测试

测试相关概念

白盒、黑盒和灰盒测试

白盒测试:

也称明盒测试、开盒测试或信息充分测试。

白盒测试可以看作是内部的攻击。

测试人员可以访问源代码和设计文档,可以进行威胁建模或逐行的代码检查。

白盒测试是找出漏洞最为有效的方法。

黑盒测试:

以局外人的身份对系统进行攻击,使用工具检查系统的攻击面,并探查系统的内部信息。

黑盒测试是白盒测试的补充。

方向工程团队利用黑盒测试验证隐蔽式安全方法的强度。

灰盒测试:

组合使用白盒测和黑盒测试。

白盒测试用于发现在设计和开发中详细说明的功能中的缺陷;

黑盒测试在无法了解程序内部信息的时候找出缺陷。

程序开发中的调试运行是典型的灰盒测试方法。

两个模型TRAP模型及DREAD模型

DREAD模型:

进行威胁程度级别分析的有效技术。

MichaelHoward和DavidLeblanc在《编写安全的代码》提出。

DREAD:

潜在的破坏(Damagepotential)

再现性(Reproducibility)

可利用性(Exploitability)

受影响用户(Affectedusers)

可发现性(Discoverability)

利用DREAD模型对威胁分级:

潜在的破坏

如果该漏洞被利用,所产生的破坏程度

再现性

探测并利用该漏洞所需要的努力要多久

可利用性

是否需要身份鉴别?

需要身份鉴别

不需要身份鉴别,但需要难以确定的知识

不需要身份鉴别,也不需要特殊的知识

受影响的用户

漏洞利用的影响面有多大

仅仅是特殊的配置

普通情况

默认用户或者大多数用户

可发现性

漏洞研究人员或黑客找出该漏洞的可能性

TRAP模型

基于可利用性提出。

TRAP包括因素:

时间(Time)

可靠性(Reliability)/再现性(Reproducibility)

访问(Access)

定位(Positioning)

利用TRAP模型对威胁分析

时间:

某些漏洞可能需要长时间的探测并利用。

如加密漏洞需要数千年的时间计算才能利用,表示该漏洞的风险非常低。

可靠性/再现性:

漏洞的严重程度依赖于该漏洞可被攻击者利用的可靠性或再现性。

通常高级别漏洞的可靠性和可再现性高。

访问:

利用漏洞通常可以为攻击者提供更高的访问权。

定位:

利用一个漏洞,攻击者必须能够与存在该漏洞的应用程序交互,并能访问到含有该漏洞的代码。

基于风险的测试的三个步骤:

•Step1信息搜集

•Step2威胁(风险)建模

•Step3可用性分析

9个高风险活动

数据解析

文件访问

数据库访问

生成子进程

身份鉴别

授权

同步或会话管理

处理私密数据

网络访问

第五部分

SDL的3原则

安全设计

安排具体的安全设计的人员;

进行安全教育教育;

确保威胁分析已经完成;

符合安全设计和编码的指导原则;

尽可能修补任何安全编程指南上的BUG;

确保安全指南是逐步改进的;

针对已经修复的缺陷开发回归测试;

简化代码和安全模型;

在打包以前完成穿透测试。

缺省安全

缺省状态下,不要设置所有的特点和功能;

允许最小权限;

恰当的资源保护。

安全提交

确认程序给管理员提供了安全功能;

尽可能提供高质量的补丁;

提供足够的信息以使用户安全的使用软件。

第六部分

信息系统安全

一个信息系统的主要特征包括:

•一定是依赖于计算机的;

•涉及了计算机的软件和硬件;

•实现数据的采集、传递、加工、处理功能。

系统的主要特性可以概括为:

•1整体性—系统的各个部分一定以整体目标为目标,追求全局最优;

•2目的性—一个系统一定是具有明确目标的,并完成一定的功能;

•3层次性—一个系统可以分为若干层次和子系统;

•4边界性—每一个系统都能够明显地区别于其他系统,系统之间有明确的界限;

•5关联性—系统包括若干元素,元素之间存在一定的关联性;

•6环境性—系统处于一定的环境之中并受环境影响。

典型问题:

1如何使经理消除对敏感信息失密的顾虑?

2系统管理员是否可信?

3系统第一次如何启动?

即如何使用户获得第一次权限?

4如何建立一个可信的口令机制?

5如何确认某个操作人员的行为?

6…

安全模型

系统的使用者划分为:

1.用户,2.系统管理员,3.信息主管(或企业主管)

把整个系统划分为以下三个部分:

1用户界面逻辑;

2业务逻辑;

3异常检测机。

在系统安全方面要实现的主要功能包括:

1访问控制;

2抗抵赖;

3数据保密;

4身份鉴别;

5授权机制;

6日志审计;

7系统异常探测。

用户界面逻辑:

用户界面逻辑主要包括两个部件:

数据访问和登录控制。

在系统启动时,用户首先登录系统,通过系统验证后才可以完成数据访问功能。

通过登录控制界面,可以完成的主要功能包括:

1口令验证;

2口令修改;

3口令数据的加密;

4登录时间记录。

关于登录控制的设计考虑:

用户ID:

用户输入用户ID,从权限数据中提取出相应的用户名。

采用用户编号的原因是回避重名,简化输入,同时用户号本身也可以增加一定的安全性。

用户修改口令,而不是系统管理员:

用户修改口令,而不是系统管理员

系统管理员对用户授权,但是口令由用户在用户界面输入,并加密存储至后台数据库中,以避免系统管理员获取用户口令造成泄密。

初始口令的安全:

初始口令的安全

系统的第一次运行关键是初始口令的赋予,由信息主管(或其他高层)完成用户身份的确认,同时要求用户第一次登录时必须更改初始口令.

口令安全:

口令安全(越复杂越长越好,最复杂是指数字加字母加符号)

下表为在www.LockD公布的采用“暴力字母破解”方式获取密码的“时间列表”(该结果采用一台双核心PC)。

用户封锁

所谓的用户封锁是当出现用户多次登录系统失败的情况时,系统将锁定用户的操作并提示,解锁过程必须由系统管理员完成。

如果是其他人员冒用用户身份尝试对系统攻击,则锁定后合法用户将会发现。

ISO7498五种

ISO7498-2标准中所定义的五种安全服务类型:

1身份鉴别(Authentication);

2访问控制(AccessControl);

3数据保密(DataConfidentiality);

4数据完整性(Dataintegrity);

5抗抵赖(Non-reputation)。

第七部分

web安全(多啊,没抄完)

关于WEBAPPLICATION(4个定义):

采用HTTP协议完成通信的应用程序

与后台WEBServer实现交互的程序

与互联网(Internet)服务器,包括WebServer,databaseserver进行交互的程序

位于中间层,进行数据交互或者其他服务程序

WEB应用特征:

远程客户端程序

专用客户端

BROWSER

通过Internet进行数据通信

后端系统包括WEBServer,OS,以及数据库

可能包括中间层(中间件):

----中间层应用实现客户端数据处理或者其他服务

----中间层应用请求服务数据

7.2.1WEB应用安全建模(微软)

活动:

Web应用程序的威胁建模

目的:

确定方案中的相关威胁和漏洞,以帮助您构建应用程序的安全设计。

输入:

主要用例和使用方案

数据流

数据架构

部署关系图

输出:

威胁列表

漏洞列表

威胁建模的五个主要步骤如下图所示。

应该通过重复执行步骤2至步骤5来逐步细化威胁模型。

随着应用程序开发周期的向前推进,您会发现有关应用程序设计的更多内容,并能够添加更多细节。

(图)

五个步骤:

步骤1:

确定安全目标。

目标清晰有助于您将注意力集中在威胁建模活动上,以及确定后续步骤要做多少工作。

步骤2:

创建应用程序概述。

逐条列出应用程序的重要特征和参与者有助于在步骤4中确定相关威胁。

步骤3:

分解应用程序。

全面了解应用程序的结构可以使您更轻松地发现更相关、更具体的威胁。

步骤4:

确定威胁。

使用步骤2和3中的详细信息来确定与您的应用程序方案和上下文相关的威胁。

步骤5:

确定漏洞。

检查应用程序的各层以确定与威胁有关的弱点。

使用漏洞类别来帮助您关注最常出现错误的区域。

7.3一个WEB应用安全模型:

威胁建模:

一种用于理解和消除系统安全威胁的形式化的方法

信息收集方法:

定位文档(Locatewrittendocument)

访问相关人员(Interviewstakeholders)

探查系统(Inspectsystem)

分析:

用户Users

构件,资产,动机Components,assets,andmotivation

入口Entrypoints

弱点和威胁Weaknessesandthreats

消除:

建立预算Establishyourbudget.

排序处理Ranktreatsusingamodelthatworksforyou.

确立针对威胁的工作Decidewhattodowiththreats.

7.3.2一个安全模型

电子商务:

Website(CMS-powered)

在线商店.

两个服务器:

Applicationserver

Databaseserver.

物理安全:

服务器托管在主页寄存公司(hostingcompany):

严格限制物理访问

在入口采用生理特征识别方法

采用自锁方法

系统用户

(1):

客户(public).

商店管理职员.

市场部.

开发者.

系统管理员.

系统用户

(2)

系统用户(3):

系统用户(4):

威胁:

由于采用明文通信协议的口令和数据危害

消除方法:

禁用plain-text协议:

在商店的采购过程

管理接口

代码安全检查文档(没找着)

通用编码规范:

为常用的任务使用已测试且已认可的托管代码,而不创建新的非托管代码。

使用特定任务的内置API以执行操作系统的任务。

不允许应用程序直接将代码发送给操作系统,特别是通过使用应用程序初始的命令shell。

使用校验和或哈希值验证编译后的代码、库文件、可执行文件和配置文件的完整性。

使用死锁来防止多个同时发送的请求,或使用一个同步机制防止竞态条件。

在同时发生不恰当的访问时,保护共享的变量和资源。

附加

微软安全工具使用相关知识

CWE,OWP

题型

选择

判断改错2分

综合威胁分析至少2个,威胁分析表格和UML模型

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1