computer security

安全:机密性、报文完整性、端点鉴别

第一章 概述

计算机安全的概念

计算机安全的定义

(1) CAI三元组:机密性(confidentiality)、完整性(integrity)、可用性(availability)

一个计算机安全模型

(1)在安全语境中,我们关心的是系统资源的脆弱性(vulnerability),下图为一些 有用术语间的关系:

img

1.2 威胁、攻击和资产

1.2.1 威胁与攻击

表1-1 威胁后果及导致每种后果的威胁动作类型

img

1.2.2 威胁与资产

img

图1-2 计算机安全的范围

1.3 安全功能要求

1.4 基本安全设计原则

1.5 攻击面和攻击树

(1)攻击面:由系统中可达到的和可被利用的脆弱点构成的,分为:网络攻击面、人为攻击面和软件攻击面

(2)攻击树:是一个分支的、层次化的数据结构,表示了一系列潜在技术,这些技术可利用安全漏洞进行攻击。作为攻击目标的安全事件是这些树的根节点。

1.6 计算机安全策略

安全策略涉及以下三个方面:

规范/策略、实施/机制,正确性/保证

第二章 密码编码工具

用对称加密实现机密性

2.1.1 对称加密

(1)概念:对称加密也成为了“传统加密”和“单秘钥加密”。对称加密的简化模型:

img

(2)攻击对称加密方案两种方法:

  1. 密码分析
  2. 蛮力分析

2.1.2 对称分组加密算法:

img

DES:数据加密标准 3DES:三重DES AES:高级加密标准

2.1.3 流密码

分组密码(block cipher)一次处理输入的一组元素,每次输入元组产生一个输出元组。

流密码则持续的处理输入元素,每次产生一个元素的输出,持续进行下去。

img

img

2.2 消息认证和散列函数

关于防止主动攻击和被动攻击的方法,著名的是消息认证或数据认证。

2.2.1 利用对称加密实现认证

2.2.2 无须加密的消息认证

消息认证码:$MAC_M = F(K_{AB},M)$

img

这个过程很像加密过程,但是区别是:认证算法不需要是可逆的,而加密算法必须是可逆的。由于认证函数的数学特性,它相对于加密来说更不容易被破解。

(1)单向散列函数: 是消息认证码的一种变形。

img

img

利用单向散列函数进行消息验证

2.2.3 安全散列函数

(1)对散列函数的要求

散列函数的目的就是要产生文件、消息或其他数据块的“指纹”,一个散列函数H要是能够用于消息认证,必须具有以下性质:

  1. H可应用于任意大小的数据块;

  2. H产生固定长度的输出

  3. …………

6.

(2)散列函数的安全性

和对称加密一样,对安全散列函数的攻击有两类:密码分析和蛮力攻击。

(3)安全散列函数算法

安全散列算法(Secure Hash Algorithm)已成为使用最广泛的散列算法。

2.2.4 散列函数的其他应用

口令:当用户输入口令时,口令的散列值要与存储在系统中的散列值进行匹配。这个应用要求抗原象性,或许还要求第二抗原象性。

入侵检测:在一个系统中为每个文件存储并保存好散列值H(F).你可以通过重新计算H(F)才确定文件是否被修改了。

2.3 公钥加密

公钥加密与对称加密同等重要,它应用于消息认证和秘钥分布中。

2.3.1 公钥加密的结构

(1)公钥加密是非对称的,它使用两个单独的密钥。

任何加密方法的安全性都依赖于密钥的长度和破译密码所需要的计算量。

(2)公钥密码体制的6个组成部分

img

img

图2-6a所描述的方案,它是为了提供机密性;2-6b所描述的方案是为了提供认证和数据完整性。

2.3.2 公钥密码体制的应用

公钥密码体制的特点是使用具有两个密钥的密码算法,其中一个密钥是私有的,另一个是公有的。可以把公钥密码体制的应用划分为三类:数字签名、对称密钥分发和秘密密钥加密。

2.3.3 对公钥密码的要求

2.3.4 非对称加密算法

2.4 数字签名和密钥管理

公钥密码算法在许多方面得到了应用,这些应用可以分为两类:数字签名,与密钥管理和分发相关的一些技术。

2.4.1 数字签名

特点:数据的加密转换的结果能够提供一个机制来保证原始认证 、数据完整性以及签名的不可抵赖性。因此,数字签名是依赖于数据的位组合格式,由代理根据文件、消息或其他形式的数据块生成。

数据签名算法RSA数字签名算法、椭圆曲线数字签名算法

公钥和私钥是怎么来的:

私钥K:随机来的

公钥P:$P = K * G$(常数G):如果P已知,难求K值,如果给定值K,很好验证。

应用:

(1)数据加密:(针对两个人的对称密钥)

Alice:$K_aP_b=K_a(K_bG)$

Bob:$K_b , P_a = K_b (K_a ,G)$

(2)数字签名:$m * k = N$ ,N就是签名数字,$m * P = m * G*k$

图2-7展示了数字签名过程中基本要素的简化描述:

img

2.4.2 公钥证书

某个用户可以假冒用户Bob向其他参与者发送公钥或广播公钥,即任何人都可以伪造该公共通告。解决这个问题的方式就是公钥证。

2.4.3 利用公钥加密实现 对称密钥交换

2.4.4数字信封

公钥加密中另一个用来保护户=对称密钥的应用是数字信封。数字信息可以用来保护消息而不必事先让发送方和接收方具有相同的密钥。

2.5 随机数与 伪随机数

2.5.1 随机数的应用

应用时的准则:(1)均匀分布 (2)独立性 (3)不可预测性

2.5.2 随即与伪随机

密码应用大多使用算法来生成随机数,好的算法产生的序列可以经受随机性检测,这样的数一般称为伪随机数。

2.6 实际应用 :存储数据的加密

第三章 用户认证

用户认证包括两个功能:1、用户通过呈现一个凭证(例如用户ID)来实现自身以登录系统;2、系统通过交换认证信息来核实用户身份。

用户认证不同于消息认证,消息认证:通信各方验证所接收的消息没有被更改且消息源真实的过程。

3.1 数字用户认证方法

数字用户认证的定义:信息系统对用户电子式地提交的身份建立的信任的过程。

3.1.1 数字用户认证模型

img

3.1.2 认证方法

img

3.1.3 用户认证的风险评估

(1)置信等级

定义 :a. 对创建个体身份的审查过程的信任程度,其中该个体是证书的接收者;b.对证书使用者即 证书 接受者的信任程度。

(2)潜在影响 :主要有三个等级:低、中、高

(3)风险范围 :在潜在影响到与之相对应置信等级存在的一种映射关系。

3.2 基于口令的认证

对于抵御入侵者,口令系统是应用最广泛的防范手段。

3.2.1 口令的脆弱性

通常,一个基于口令认证的系统中,都会维护着一个以用户ID作为索引的口令文件。

下面是一些口令攻击策略以及针对这些攻击的对策:

  1. 离线字典攻击
  2. 特定账户攻击
  3. 常用口令攻击
  4. 单用户口令猜测
  5. 工作站劫持
  6. 利用用户疏漏
  7. 口令重复利用
  8. 电子监视

3.2.2 散列口令的使用

口令安全技术广泛使用了散列函数和”盐值“,为了加载系统设置的一个新口令。用户需要选择或被分配一个口令。这个口令与一个固定长度的”盐值“。

使用“盐值”的三个目的:

a.它可以防止复制的口令在文件中可见,即使是两个不同的用户选择了相同的口令,这些口令也会被分配不同的“盐值”。因此 ,这两个用户所拥有的散列口令是不同的。

b.它显著的增加了离线口令字典攻击的难度。对于一个b位长度的“盐值”,可能产生的口令数量将会增长2的b次方倍数,这将大大增加通过字典攻击来猜测口令的难度。

c.它使得攻击者几乎不可能发现一个用户是否在两个或更多的系统中使用了相同的口令。

对于UNIX操作系统口令方案,仍然存在两种威胁,例如某台机器的用户可以通过==gust账户==或其他方式获取权限,然后运行口令猜测程序,该程序成为==口令破译器==。

在消耗的很少的资源的情况下,攻击者就能检测成千上万个可能的口令,其次,如果攻击者能够得到一份口令文件的拷贝,那么攻击者就可以在另一台计算机运行==口令破译程序==,这使得攻击者可以在合理的时间内完成上百万次的口令猜测
最安全的UNIX散列/“盐值”方案可能是使用最广泛的开源UNIX——openBSD开发的方案。这种方案使用了Blowfish==对称分组密码==的散列函数,该散列函数被称为==Bcrypt==。

3.2.3 破解用户选择口令

1.传统方法 传统的口令猜测或口令破解法,开发一个庞大的口令字典并使用其中的每个口令对口令文件进行尝试。这种方法通过对口令文件中每个口令使用“盐值”来进行散列运算,并和口令文件中存储的散列值进行比较。如果没有发现相匹配的口令,那么口令程序尝试改变口令字典中相似的口令,如倒置拼写,添加相似字符等。
2.预结算潜在的散列值 以空间代价换取时间代价。攻击者会产生一个包含所有可能的口令的较大口令字典,对于口令字典中的每一个口令,攻击者都要根据可能的“盐值”进行散列计算。对口令字典中的每个口令,攻击者都要根据可能的“盐值”进行散列计算,产生的结果是个巨大的散列表,被称为彩虹表
马尔科夫过程:马尔可夫经多次观察试验发现,一个系统的状态转换过程中第n次转换获得的状态常决定于前一次(第’n-1次’)试验的结果。

3.2.4 口令文件访问控制

一种阻止口令的攻击方法就是拒绝对手访问口令文件。如果文件的散列口令只能被特定用户访问,那么对手就不能够读取口令文件,除非他拥有特权用户的口令。通常,散列后的口令保存在与用户ID分离的单独文件中,这个文件叫做影子口令文件,应该防止其非授权访问。
口令访问策略要补充到访问控制方法中,以强制用户选择那些不容易被破解的口令

3.2.5 口令选择策略

目前有四种:
1.用户教育
2.计算机生成口令
3.后验口令检查:周期性的运行口令破解程序来找到容易被猜测到的口令,系统将取消这种口令。
4.先验口令检查(目前最被认可的提高口令安全的方法):允许用户选择自己的口令,在选择过程中系统将会对该口令检查,在系统的充分提示下,用户可以从大量的口令空间中选择不容易被破解而容易被记住的口令,这样可能避开通过口令字典进行的口令破解的攻击。

针对先验口令检查提供一些可行的方法:

  1. 规则实施:构造一个简单实施规则的系统

  2. 口令检查器:构造一个不能作为口令选择的字符串组成的“不可行”口令字典(时间消耗、空间消耗)

  3. Bloom过滤器(采用概率统计的原理):生成高效的后验口令检查器,通过拒绝使用在一些系统(Linux)上使用的口令列表中的口令而实现的。下面介绍Bloom过滤器运行原理:

当口令检测器收到一个新的口令时,检测器将计算该口令的K个散列值。如果散列表中的所有的对应位的值都是1,那么这个口令将会被弃用。因此应设计一种使“误判”情况较少的散列方案,误判概率的近似公式可以用以下式子表示:

3.3 基于令牌的认证

3.3.1存储卡

常见的就是银行卡

3.3.2 智能卡

最重要的智能令牌就是智能卡,智能卡包含一个完整的微处理器,由处理器、内存、输入/输出端口组成。一个典型的智能卡包含三个存储器:*电子可擦写可编程存储器,只读存储器(ROM),随机存取存储器(RAM) * 。

3.3.3 电子身份证

3.4 生物特征认证

3.4.1 用于生物特征认证应用的身体特征

3.4.2 生物特征认证系统的运行

认证者首先在系统中注册,认证者需要提供给系统一个用户名以及某种类型的的口令或PIN,同时认证系统的传感器采集需要采集用户的生物特征。系统将代表生物唯一特征的数据或数据集合保存起来,该集合称为用户的模板。

3.4.2 生物特征认证的准确度


图3-9中设置了一个阈值t,当分数s>=t时,就认为匹配;当得分s<t时,认为不匹配。阈值t右边的阴影部分表示可能发生误匹配的区域;左边的阴影部分表示可能发生漏匹配的区域。每个阴影区域的面积分别表示误匹配和漏匹配的概率。通过阈值t的左移右移可以调整概率。误匹配率下降必将导致漏匹配率上升。
对于一个给定的生物特征认证方案 ,可以绘制误匹配率吧-漏匹配率曲线,我们称之为运行特征曲线。

3.5 远程用户认证

最简单的用户认证方式就是本地认证,即用户试图访问本地的系统。

3.5.1 口令协议

下图a提供了一个通过口令认证的挑战——应答协议的例子。

在这个例子中,用户首先把他的身份发送给远程主机,远程主机产生一个随机数r,通常称为nonce值,并将其返回用户。此外,远程主机需要指定两个函数f()h()在响应过程中使用。从远程主机到数据的传输称为挑战。
远程主机存储了每一个注册用户的口令的散列值。

3.5.2 令牌协议

令牌存储一个静态验证码或一次性生成一个随机的验证码。对于一次性随机的验证码,令牌必须以一定方式和远程主机保持同步。无论哪种情况,用户需要口令p'来激活验证码,这个口令仅仅被用户和令牌共享,而与远程主机无关。

下图b提供了一个令牌协议的例子。

3.5.3 静态生物特征认证协议

下图c是一个静态生物特征的用户协议认证的例子。和前面一样,用户发送主机ID,远程 主机通过随机数和r和加密函数的标识符进行响应。在用户端,有一个控制生物特征采集设备的的客户端系统。 该系统通过生物的特征B产生生物特征模板BT,并返回密文E(r',D',BT'),其中,D'表示该特定的生物特征采集设备。

3.5.4 动态生物特征认证协议

和静态最主要的区别是远程主机提供了一个随机序列x以及产生一个随机数r作为挑战。这个挑战序列是由数字、字符或单词组成的序列。涉及到了比较值与预设阈值的比较,下图d为动态图。

3.6 用户认证中的安全问题

3.7和3.8 实际应用和案例学习

3.9 关键术语和复习题

第四章 访问控制

对于访问控制有如下定义:
1 授予或拒绝下列特定要求的过程:(1)获得并使用信息及相关信息处理服务;(2)进入特定物理设施。
2 实现依据安全策略对使用系统资源进行控制,且许可授权实体依据该策略使用系统资源。
我们可以把访问控制看作是计算机安全的核心因素,计算机安全的主要目标是:防止非授权用户访问资源,防止合法用户使用非授权方式访问资源,使合法用户用授权方式访问资源。

4.1 访问控制原理

本章讨论的访问控制的概念更狭义、更具体:访问控制实现的安全策略是,指定对于每一个具体的系统资源,谁或什么(如一个进程)可以访问,以及每个实例允许的访问类型。

4.1.1 访问控制语境

下图为访问控制与其他安全功能的关系。

访问控制机制在用户与系统资源之间工作。认证功能决定用户是否被允许访问整个系统,访问控制功能决定是否允许这个用户具体的访问请求,审计功能监视并保存用户访问系统资源的记录。

4.1.2 访问控制策略

访问控制策略一般包含以下几种:
1.自主访问控制:允许一个实体按照自己意志赋予另一个实体访问某些资源的权限;
2.强制访问控制:具有访问某种资源许可的实体不能按照自己的意志赋予另一个实体访问那种资源的权限;
3.基于角色的访问控制:基于用户在系统中所具有的角色和说明各种角色用户享有哪些访问权限的规则来控制访问。
4.基于属性的访问控制:基于用户、被访问资源及当前环境条件来控制访问。
DAC是实现访问控制的传统方法

4.2 主体、客体和访问权限

访问控制的基本元素:主体、客体和访问权限。
主体:能够访问客体的实体,一般的,主体的概念等于进程的概念。访问控制系统定义了三种主体:所有者、组、世界。
客体:是外界对其访问受到控制的资源。客体是一个用来包含或接受信息的实体。
访问权描述了实体可以访问客体的方式,可以包括以下内容:读、写、执行、删除、创建、搜索;

4.3 自主访问控制

自主访问控制方案:一个实体可以被授权按照其自己的意志使另一个实体可以访问某些资源。DAC常用方式是在操作系统或数据库管理系统中运用的访问矩阵。矩阵中的一维由试图访问资源的被标识的主体组成,另一维列出可以被访问的客体,矩阵中的每一项表示一个特定主体对一个特定客体的访问权。
实践当中,访问矩阵通常是稀松的,用以下两种方式分解。按列分解,产生访问控制表(Access Control List,ACL),见图4-2b。


按行分解产生能力权证,见表4-2c.能力权证用来指定一个用户的授权客体和操作。每个用户可以有很多权证,可以授权借给或访问其他用户。因为权证可以分散在系统中,所以产生了一个比访问控制表更严重的安全问题,就是权证一定不可伪造。

4.3.1 一个访问控制模型

本节介绍一个通用的DAC模型。该模型假定了一组主体、一组客体、一组控制主体访问客体的规则。我们把系统的保护状态定义为在一定的时间点指定每个主体对客体的访问权的信息集。可以识别出三种需求:表示保护状态、执行访问权、允许主体以某些方式更改保护状态。

从逻辑或功能的观点来看,分离的访问控制模块与每种客体类型相关联。该模块评估主体访问客体的每个要求,以确定访问权是否存在。

4.3.2保护域

保护域是一组客体及对这些客体的访问权,根据访问矩阵的规定,一行定义一个保护域。