第七章 网络安全
7.1 计算机网络面临的安全性威胁
计算机网络上的通信面临以下两大类威胁:被动攻击和主动攻击。
被动攻击
- 指攻击者从网络上窃听他人的通信内容。
- 通常把这类攻击成为截获。
- 在被动攻击中,攻击者只是观察和分析某一个协议数据单元 PDU,以便了解所交换的数据的某种性质。但不干扰信息流。
- 这种被动攻击又称为流量分析 (traffic analysis)。
(1) 篡改——故意篡改网络上传送的报文。这种攻击方式有时也称为更改报文流。
(2) 恶意程序——种类繁多,对网络安全威胁较大的主要包括:计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹、后门入侵、流氓软件等。
(3) 拒绝服务——指攻击者向互联网上的某个服务器不停地发送大量分组,使该服务器无法提供正常服务,甚至完全瘫痪。
分布式拒绝服务 DDoS
若从互联网上的成百上千的网站集中攻击一个网站,则称为分布式拒绝服务 DDoS (Distributed Denial of Service)。有时也把这种攻击称为网络带宽攻击或连通性攻击。
对付被动攻击可采用各种数据加密技术。
对付主动攻击则需将加密技术与适当的鉴别技术相结合。
7.1.2 安全的计算机网络
一个安全的计算机网络应达到四个目标:
1. 保密性
2. 端点鉴别
3. 信息的完整性
4. 运行的安全性
7.1.3 数据加密模型
用户 A 向 B 发送明文 X,通过加密算法 E 运算后,就得出密文 Y。
加***和解***可以一样,也可以不一样。
**通常是由**中心提供。
当**需要向远地传送时,一定要通过另一个安全信道。
7.2 两类密码体制
7.2.1 对称**密码体制
加***与解***是相同的密码体制。这种加密系统又称为对称**系统
数据加密标准 DES
数据加密标准 DES 属于对称**密码体制,是一种分组密码。
在加密前,先对整个明文进行分组。每一个组长为 64 位。
然后对每一个 64 位 二进制数据进行加密处理,产生一组 64 位密文数据。
最后将各组密文串接起来,即得出整个的密文。
使用的**为 64 位(实际**长度为 56 位,有 8 位用于奇偶校验)。
最长是128位**
DES 的保密性仅取决于对**的保密,其算法是公开的。
三重 DES
使用两个 56 位的**。把一个 64 位明文用一个**加密,再用另一个**解密,然后再使用第一个**加密,即
7.2.2 公钥密码体制
公钥密码体制(又称为公开**密码体制)使用不同的加***与解***,是一种“由已知加***推导出解***在计算上是不可行的”密码体制。
公钥密码体制产生的主要原因:
常规**密码体制的**分配问题。
对数字签名的需求。
在公钥密码体制中,加***(即公钥) PK 是公开信息,而解***(即私钥或秘钥) SK 是需要保密的。
**对产生器产生出接收者 B 的一对**:加*** PKB 和解*** SKB。
加*** PKB 就是接收者B的公钥,它向公众公开。
解*** SKB 就是接收者B的私钥,对其他人都保密。
发送者 A 用 B 的公钥 PKB 对明文 X 加密(E 运算)后,在接收者 B 用自己的私钥 SKB 解密(D 运算),即可恢复出明文:
公开**与对称**的区别
- 在使用对称**时,由于双方使用同样的**,因此在通信信道上可以进行一对一的双向保密通信,每一方既可用此**加密明文,并发送给对方,也可接收密文,用同一**对密文解密。这种保密通信仅限于持有此**的双方(如再有第三方就不保密了)。
- 在使用公开**时,在通信信道上可以是多对一的单向保密通信。
如果某一信息用公开**加密,则必须用私有**解密,这就是实现保密的方法
如果某一信息用私有**加密,那么,它必须用公开**解密。这就是实现数字签名的方法
7.3 数字签名
用于证明真实性。
数字签名必须保证以下三点:
(1) 报文鉴别——接收者能够核实发送者对报文的签名(证明来源);
(2) 报文的完整性——发送者事后不能抵赖对报文的签名(防否认);
(3) 不可否认——接收者不能伪造对报文的签名(防伪造)。
现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。
同时实现秘密通信和数字签名
7.4 鉴别
在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别 (authentication) 。报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。使用加密就可达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。应当使接收者能用很简单的方法鉴别报文的真伪
鉴别与授权不同:授权涉及到的问题是:所进行的过程是否被允许(如是否可以对某文件进行读或写)。
可再把鉴别细分为两种。
报文鉴别:即鉴别所收到的报文的确是报文的发送者所发送的,而不是其他人伪造的或篡改的。这就包含了端点鉴别和报文完整性的鉴别。
实体鉴别:仅仅鉴别发送报文的实体。实体可以是一个人,也可以是一个进程(客户或服务器)。这就是端点鉴别
1. 密码散列函数
数字签名就能够实现对报文的鉴别。
但这种方法有一个很大的缺点:对较长的报文(这是很常见的)进行数字签名会使计算机增加非常大的负担,因为这需要进行较多的时间来进行运算。
密码散列函数 (cryptographic hash function)是一种相对简单的对报文进行鉴别的方法。
散列函数的两个特点
(1) 散列函数的输入长度可以很长,但其输出长度则是固定的,并且较短。散列函数的输出叫做散列值,或更简单些,称为散列。
(2) 不同的散列值肯定对应于不同的输入,但不同的输入却可能得出相同的散列值。这就是说,散列函数的输入和输出并非一一对应的,而是多对一的。
密码散列函数的特点
在密码学中使用的散列函数称为密码散列函数。
特点:单向性。
要找到两个不同的报文,它们具有同样的密码散列函数输出,在计算上是不可行的。
也就是说,密码散列函数实际上是一种单向函数 (one-way function)。
散列 H(X) 可用来保护明文X的完整性,防篡改和伪造。
2. 实用的密码散列函数MD5和SHA-1
报文摘要算法 MD5 公布于RFC 1321 (1991年),并获得了非常广泛的应用。SHA-1比 MD5 更安全,但计算起来却比 MD5 要慢些。
MD5 实现的报文鉴别可以防篡改,但不能防伪造,因而不能真正实现报文鉴别。为防范上述攻击,可以对散列进行一次加密。散列加密后的结果叫做报文鉴别码 MAC (Message Authentication Code)。
7.4.2 实体鉴别
实体鉴别与报文鉴别不同。报文鉴别是对每一个收到的报文都要鉴别报文的发送者。实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需验证一次。
可以使用共享的对称**实现实体鉴别。
存在明显漏洞:这种攻击被称为重放攻击(replay attack) IP 欺骗
使用不重数进行鉴别:不重数(nonce)就是一个不重复使用的大随机数,即“一次一数”。由于不重数不能重复使用,所以 C 在进行重放攻击时无法重复使用所截获的不重数。
中间人攻击
7.5.1 对称**的分配:目前常用的**分配方式是设立**分配中心 KDC (Key Distribution Center)。
7.5.2 公钥的分配:认证中心 CA (Certification Authority),来将公钥与其对应的实体(人或机器)进行绑定(binding)。每个实体都有 CA 发来的证书(certificate),里面有公钥及其拥有者的标识信息。此证书被 CA 进行了数字签名。任何用户都可从可信的地方获得认证中心 CA 的公钥,此公钥用来验证某个公钥是否为某个实体所拥有。互联网 X.509 公钥基础结构 PKI (Public Key Infrastructure)。
7.6.1 网络层安全协议
1. IPsec 协议
IPsec 就是“IP安全(security)”的缩写。
IPsec 并不是一个单个的协议,而是能够在 IP 层提供互联网通信安全的协议族。
IPsec 是个框架,它允许通信双方选择合适的算法和参数(例如,**长度)。
为保证互操作性,IPsec 还包含了所有 IPsec 的实现都必须有的一套加密算法。
IPsec 由三部分组成
1,IP 安全数据报格式的两个协议
鉴别首部 AH (Authentication Header)协议
- 提供源点鉴别和数据完整性,但不能保密。
- 提供源点鉴别、数据完整性和保密。
3,互联网**交换 IKE (Internet Key Exchange)协议。
IP 安全数据报有两种工作方式
1,运输方式 (transport mode):
在整个运输层报文段的前后分别添加若干控制信息,再加上 IP 首部,构成 IP 安全数据报。
把整个运输层报文段都保护起来,适合于主机到主机之间的安全传送。
需要使用 IPsec 的主机都运行 IPsec协议。
2,隧道方式 (tunnel mode):
在原始的 IP 数据报的前后分别添加若干控制信息,再加上新的 IP 首部,构成一个 IP 安全数据报。
这需要在 IPsec 数据报所经过的所有路由器上都运行 IPsec 协议。
隧道方式常用来实现虚拟专用网 v*n
无论使用哪种方式,最后得出的 IP 安全数据报的 IP 首部都是不加密的。所谓“安全数据报”是指数据报的数据部分是经过加密的,并能够被鉴别的。通常把数据报的数据部分称为数据报的有效载荷(payload)。
安全关联 SA
在使用 AH 或 ESP 之前,先要从源主机到目的主机建立一条网络层的逻辑连接。此逻辑连接叫做安全关联 SA (Security Association) 。IPsec 就把传统互联网无连接的网络层转换为具有逻辑连接的网络层。
安全关联是从源点到终点的单向连接,它能够提供安全服务。在安全关联 SA 上传送的就是 IP 安全数据报.如要进行双向安全通信,则两个方向都需要建立安全关联。
安全关联 SA 状态信息
(1) 一个 32 位的连接标识符,称为安全参数索引 SPI (Security Parameter Index)。
(2) 安全关联 SA 的源点和终点的 IP 地址(例如路由器 R1 和 R2 的 IP 地址)。
(3) 所使用的加密类型(例如,DES 或 AES)。
(4) 加密的**。
(5) 完整性检查的类型(例如,使用报文摘要 MD5 或 SHA-1 的报文鉴别码 MAC)。
(6) 鉴别使用的**。
7.6.2 运输层安全协议
现在广泛使用的有以下两个协议:
安全套接字层 SSL (Secure Socket Layer)
运输层安全 TLS (Transport Layer Security) 。
SSL 作用在端系统应用层的 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层数据提供安全保障。 https
SSL 提供的安全服务
(1) SSL 服务器鉴别
(2) SSL 客户鉴别
(3) 加密的 SSL 会话
(1) 协商加密算法。 浏览器 A 向服务器 B 发送浏览器的 SSL 版本号和一些可选的加密算法。 B 从中选定自己所支持的算法(如RSA),并告知 A。
(2) 服务器鉴别。 服务器 B 向浏览器 A 发送包含其 RSA 公钥的数字证书。 A 使用该证书的认证机构 CA 的公开发布的RSA公钥对该证书进行验证。
(3) 会话**计算。由浏览器 A 随机产生一个秘密数。 用服务器 B 的 RSA 公钥进行加密后发送给 B。 双方根据协商的算法产生共享的对称会话**。
(4) 安全数据传输。 双方用会话**加密和解密它们之间传送的数据并验证其完整性。