第一章 计算机与网络安全概念
首先需要介绍几个 标准(下文不会解释,也可读到再来看)
- 美国国家标准与技术研究所(NIST):NIST是一个美国联邦机构,负责处理与美国政府使用和促进美国私营部门创新有关的测量科学。
- 互联网协会(Internet Society,ISOC):它是一个具有全球组织和个人会员资格的专业会员协会。它在解决未来互联网将面临的问题方面发挥领导作用,并负责互联网基础设施便准的小组的组织机构。
- ITU-T 国际电信联盟(ITU):联合国系统内的一个国际组织,任务是制定涵盖所有电信领域的技术标准,ITU-T的标准称为建议书。
- ISO 国际标准化组织:一个非政府组织,致力于促进标准化和相关活动的发展,促进商品和服务的国际交流,并以此促进智力、科学、技术和经济活动领域的何做。
System.out.println("但行好事,莫问前程");
System.out.println("The combination of space, time, and strength that must be considered as the basic elements of this theory of defense makes this a fairly complicated matter. Consequently, it is not easy to find a fixed point of departure.");
System.out.println("防御理论必须保证破解需要 空间、时间和精力");
计算机安全的概念
计算机安全的定义
**计算机安全:**对于一个自动化的信息系统,采取保护措施确保信息系统资源(包括硬件、软件、固件、信息/数据和通信)的完整性、可用性和保密性。
计算机安全最核心的三个关键目标(称为CIA三元组)
- 保密性(Confidentiality):包括 数据保密性(确保隐私不会泄露或者被非授权者泄露) 和 隐私性(确保个人可以控制或确定哪些信息可以被保存或者公开)。对信息的访问和公开进行授权限制,保护个人隐私和秘密信息。保密性缺失:信息的非授权泄露。
- 完整性(Integrity):包括 数据完整性(确保信息和程序只能用特定和授权的方式改变) 和 系统完整性(确保系统以一种正常方式来执行预定功能,不会被非授权操控)。防止对信息的不恰当修改或破坏,包括确保信息的不可否认性和真实性。完整性缺失: 对信息的的非授权修改和毁坏。
- 可用性(Availablity):确保系统工作快速有效,对授权用户不能拒绝服务。确保及时可靠的访问和使用信息。可用性缺失:对信息和信息系统访问的中断。
除了CIA之外,还引入了两个安全概念来呈现更完整的安全概念:
- 真实性(Authenticity):一个实体是真实的、可被验证的和可被信任的。(我能证明我是我,还能向你证明我是谁)。
- 可追溯性(Accountability):要求实体的行为可以唯一追溯到该实体。(支持不可否认性、组织、故障隔离、入侵检测和预防、事后恢复,以及法律诉讼)。系统必须保留他们活动的记录,以允许事后的审计分析,进而跟踪安全事件或解决争执。
根据前面列举的三个要求,FIPS PUB 199定义了三个层次来安全泄露事件(保密性、完整性或可用性的缺失)对组织和个人的影响。(个人认为这里的内容只需要记得 这是由组织定义出来的一种标准。)
计算机安全的挑战
- 研究安全机制或算法时必须认真考虑各种各样的攻击,以与设计完全不同的方式来看问题往往可以攻击成功。
- 安全机制使用的算法和协议不止一个,而不同的位置和协议可能会导致加密算法变得没有意义。
- 入侵者的优势就在于它只需要找个一个弱点就可以,而设计者必须找到并根除所有的弱点来获取完全的安全。
OSI安全架构
OSI 开放系统互联 Open System Interconnection
ITU-T推荐方案X.800,用来解决 “有效评价安全需求以及安全产品和政策”,即OSI安全框架。对安全人员来说,OSI安全框架是提供安全的一种组织方法
OSI安全架构关注 安全攻击、安全机制 和 安全服务
- 安全攻击 : 任何危及信息系统安全的行为
- 安全机制 : 用来检测、组织攻击或者从攻击状态恢复到正常状态的过程。(或者 实现该过程的设备)
- 安全服务 : 加强数据处理系统和信息传输的安全性的一种处理过程或通信服务。目的在于 利用一种或多种安全机制进行反攻击。
威胁 && 攻击
威胁是脆弱性被利用而带来的危险。
攻击是有意违反安全服务和侵犯系统安全策略的智能行为。
安全攻击
被动攻击:试图获取或利用系统的信息但并不影响系统资源
主动攻击:试图改变系统资源或影响系统运行
被动攻击
特性:对传输进行窃听和监测。
目标:获得传输的信息。
包括两种形式:
- 信息内容泄露攻击:数据信息被攻击者截获
- 流量分析:一般针对于已经加密之后的信息,仍然可以获得这些消息模式。攻击者可以决定通信主机的身份和位置,可以观察传输消息的频率和长度。这些信息可以用于判断通信的性质。
因此,处理被动攻击的重点是 预防 而不是 监测
主动攻击
特性:对数据流进行修改 或 伪造数据流
可以分为4类:
- 伪装:某实体假装别的实体。一般会包括其它形式的主动攻击(路径2有效)
- 重放:攻击者未经授权地将截获的信息再次发送。(路径1、2、3有效)
- 消息修改:未经授权修改合法消息的一部分或延迟消息的传输或改变消息的顺序以获得非授权的效果。(路径1、2有效)
- 拒绝服务:阻止或禁止对通信设施的正常使用或管理(可能有具体目标) 另一种形式是破坏整个网络、使网络失效或使其过载来降低其性能。(路径3有效)
主动攻击 难以绝对地预防,但是容易检测。 主动攻击的重点 在于监测并从攻击造成的破坏或延迟中恢复过来。
安全服务
一种由系统提供的对系统资源进行特殊保护的处理或通信服务;安全服务通过安全机制来实现安全策略。
X.800 将安全服务分为5类14个特定服务
认证 – 保证每个实体都是他们所声称的实体
- 同等实体认证:主要用于连接的建立或数据传输阶段。保证:一个实体没有试图进行伪装或对以前的连接进行非授权重播。
- 数据源认证:为数据的来源提供确认(通信实体之间并没有预先的交互)
访问控制 – 识别或者认证后才可以获得响应的访问权限
数据保密性 – 防止传输的数据遭到被动攻击 以及 防止流量分析
- 连接保密性
- 无连接保密性
- 选择域保密性
- 流量保密性
数据完整性 – 用于处理消息流、面向连接的完整性服务保证收到的消息和发出的消息一致。往往自动恢复机制是一种更有吸引力的选择
- 可恢复的服务
- 无恢复的服务
不可否认性 – 防止发送方或接收方 否认传输或接收过某条消息。
- 源不可否认性(源头)
- 宿不可否认性(宿主)
可用性服务 – 处理拒绝服务攻击引起的安全问题,依赖于对系统资源的恰当管理和控制,依赖于访问控制服务和其它安全服务。
安全机制
安全机制分为两类:
- 在特定的协议层实现,如TCP或应用层协议
- 不属于任何协议层或安全服务
X800区分可逆和不可逆加密机制:
- 可逆加密机制:一种单纯的加密算法,数据可以加密和解密。
- 不可逆加密机制:包括用于数字签名和消息认证应用中的散列算法与消息认证码。
基本安全设计准则
虽然没有一种安全设计或实现技术能够系统地摒除安全漏洞、组织所有非授权的行为。虽然没有这种万无一失的技术,但是能有一些可被广泛人可的设计准则直到保护机制的开发也是有益的。美国国家信息保障/空间防御学术中心与美国国家安全局、美国国土安全部联合倡议了如下安全设计准则:
- 机制的经济性:嵌入在硬件和软件中的安全机制应设计得尽量简单、短小。
- 故障安全默认:访问决策应基于允许而非拒绝(默认情况下是五访问权限,保护方案核实是否负荷允许访问的条件)。
- 完整的监察:必须检查访问控制机制中的每个访问,系统不能依赖从换从中检索到的访问决策。
- 开放的设计:安全机制的设计应该是开放的,而不是保密的。
- 权限分离:定义为需要多个权限属性来访问一个受限资源
- 最小权限:意味着系统的每个进程和用户应该以执行该任务所需的最小权限集来进行操作。(比如基于角色的访问控制)
- 最小共同机制:把不同用户共享的功能设计得最小化,以便提供共同的安全性。
- 心理接受度:安全机制在满足授权访问的用户需求的同时,不应过度干预用户的工作。
- 隔离:公共部分与关键部分分离;各个用户的进程和文件应彼此隔离;安全机制也应该被隔离。
- 密封:基于面向对象的特定形式的隔离。(即类似于访问控制关键字来限定访问)
- 模块化:既指将安全功能作为单独的模块开发,也指用于机制设计和实现的模块化架构。
- 分层:使用多个叠加的保护方法来保护信息系统的人员、技术和操作。(分层方法常用于在攻击者与受保护的信息或服务之间设置多个障碍,这种技术通常称为:深度防御)。
- 最小意外:指程序或用户接口让用户感到,对意外事故的处理响应最小化。
攻击面与攻击树
在评估和分类安全威胁时很有用的两个概念:攻击面 和 攻击树
攻击面
攻击面 由系统中一系列可访问且可利用的漏洞组成
可以分为如下几类:
- 网络攻击面:此类攻击面涉及的是企业网络、广域网或互联网。(比如网络协议的漏洞,比如进行拒绝服务攻击、中断通信链路、各种形式的入侵攻击的漏洞)。
- 软件攻击面:此类攻击面涉及的是 应用程序、工具包或操作系统代码。 (比如 Web服务器软件)
- 人类攻击面:此类攻击面涉及的是 由系统人员或外部人员造成的漏洞。如社会工程学、人为错误和被信任的内部人员。
评估安全威胁的规模和严重性时,攻击面分析是很有用的技术。对漏洞的系统分析能使开发人员和安全分析师直到系统中的哪些地方需要安全机制。
一旦明确一个攻击面,设计者就可以想法设法的使攻击面变小,增加攻击者的攻击难度。
攻击面还提供设置测试、加强安全措施和修改服务或应用的优先权的依据。
攻击树
攻击树是 采用分支化、层次化表示来利用安全漏洞的可能技术集合的数据结构。
攻击的目的 —— 造成安全事件,是攻击树的根节点,而那些攻击者为达到这一目的所采用的方法,被迭代增加地表示为攻击树上的分支和子节点。
每个从根节点出发的路径上的末端节点,即叶子节点,表示发动攻击的不同方式。每个非叶子节点都是“与节点”或者“或节点”。
每条分支可以标记不同的值来表示攻击的难度、成本或其他攻击属性,用以对不同的可选攻击方式进行比较。
使用攻击树的动机:为了更有效地利用关于攻击模式的可用信息。
安全分析师可以利攻击树的这种结构化方式来归档安全攻击,进而揭示其中的关键漏洞。攻击树还可用来指导系统和应用的设计,以及对抗策略的选择和强度。
PIN : Personal Indetification Number 个人识别密码
网络安全模型
消息通过Internet服务从一方传送到另一方,而作为消息交换的主题,双方都必须和对方合作以保证交换的可靠。双方信息通过路由从源地址到目的地址,并协作使用通信协议(如TCP/IP),从而建立起一个逻辑信息通道。
所有提供安全的技术都包含以下两部分:
- 对发送消息的安全变换。如加密消息,将消息打乱,使其变得不可读;基于消息内容,附加一段基于消息内容的编码,用来验证发送者的身份。
- 被两个主体共享且不被攻击者知道的一些机密信息。如在传输之前用于加密消息、收到消息后用于解密消息的密钥。
设计安全服务应包含如下4个方面的内容:
- 设计一个算法,它执行与安全相关的变换。该算法应是攻击者无法攻破的。
- 产生算法所使用的秘密信息。
- 设计分配和共享秘密信息的方法。
- 指明通信双方使用的协议,该协议利用安全算法和秘密信息实现安全服务。
攻击者可以在计算机系统中加入程序,它利用系统的弱点影响应用程序和使用功能程序,如编辑程序和编译程序。对程序的威胁主要有:
- 信息访问威胁:以非授权用户的名义截获或修改数据
- 服务威胁:利用计算机中的服务缺陷禁止合法用户使用这些服务。
入侵者:与己方有不同观点,并深入己方进行他方观念或技术的实施。