Bootstrap

网络安全笔记

# 网络安全概述

### 网络安全的特征

- **机密性:信息不泄露给非授权的实体或对象**
- **完整性:数据未经授权不能进行改变的特性, 即信息在存储或传输过程中保持不被修改,不被破坏的特性**
- **可用性:可被授权实体访问并按需求使用的特性,即当需要时应能存取所需的信息。**
- **可控性:对网络信息的传播及内容具有控制能力**

### 常见攻击手段

- 社会工程:攻击者可通过各种社交渠道获得有关目标 的结构、使用情况、安全防范措施等有用信息从而提 高攻击成功率
- 口令破解:攻击者可通过获取口令文件,然后运用口 令破解工具获得口令,也可通过猜测或窃听等方式获 取口令
- 地址欺骗:攻击者可通过伪装成被信任的IP 地址, 邮件地址等方式来骗取目标的信任
- 连接盗用:在合法的通信连接建立后,攻击者可通过 阻塞或摧毁通信的一方来接管已经过认证建立起来的 连接,从而假冒被接管方与对方通信
- 网络窃听:网络的开放性使攻击者可通过直接或间接 窃听获取所需信息
- 数据篡改:攻击者可通过截获并修改数据或重放数据 等方式破坏数据的完整性
- 恶意扫描:攻击者可编制或使用现有扫描工具发现目标的漏洞,进而发起攻击
- 基础设施破坏:攻击者可通过破坏DNS 或路由信息等基础设施,使目标陷于孤立
- 数据驱动攻击:攻击者可通过施放病毒、特洛伊木马、数据炸弹等方式破坏或遥控目标
- 拒绝服务:攻击者可直接发动攻击,也可通过控制其它主机发起攻击,使目标瘫痪,如发送大量的数据洪流阻塞目标

### 小结

- 中断(Interruption) 〈-〉可用性(Availability)
- 窃听(Interception) 〈-〉机密性(Confidentiality )
- 修改(Modification) 〈-〉完整性(Integrity)
- 伪造(Fabrication) 〈-〉可认证性(Authenticity)

### 网络

#### ISO - OSI 模型

`PDNTSPA`

**P-物理层**

**D-数据链路层**

**N-网络层**

**T-传输层**

**S-会话层**

**P-表示层**

**A-应用层**

#### TCP/IP 模型

`PNTA`

**P-网络与接口层**

**N-网络层**

**T-传输层**

**A-应用层**

#### 两个模型的比较

##### 相同点

1.都是基于独立的协议栈概念。

2.两者都有功能相似的应用层、传输层、网络层。

##### 不同点

1.在OSI模型中,严格地定义了服务、接口、协议;在TCP/IP模型中, 并没有严格区分服务、接口与协议。

2.OSI模型支持非连接和面向连接的网络层通信,但在传输层只支持面向连接的通信;TCP/IP模型只支持非连接的网络层通信,但在传输层有支持非连接和面向连接的两种协议可供用户选择。

3.TCP/IP模型中不区分、甚至不提起物理层和数据链路层。

### 安全体系结构

- **安全攻击:损害机构所拥有信息的安全的任何行为。**
- **安全机制:设计用于检测、预防安全攻击或者恢复系统的机制。**
- **安全服务:系统提供的对资源进行特殊保护的进程或者通信服务。**

#### 安全攻击

**主动攻击**(passive attack): 更改数据流,或伪造假的数据流。

- 伪造
- 重放
- 篡改
- 拒绝服务

**被动攻击**(active attack): 对传输进行偷听与监视,获得传输信息。

- 窃听
- 流量分析

#### ==安全机制(8个)==

- **加密**:用加密算法对信息加密。保护信息的机密性
- **数字签名**:用签名算法对信息进行计算,计算结果附加于信 息单元。用于身份认证、数据完整性和非否认服务 
- **访问控制**:用于实施资源访问权限的机制
- **数据完整性**:用于确保信息的完整性
- **认证交换**:确保信息交换的实体是所声称的实体,通过信息交换以确保实体身份,包括公知密码、特征、位置信息等
- **流量填充**:填充信息,防止流量分析
- **路由控制**:能够为特定数据选择特定路由
- **公证**:采用可信任的第三方以确保一些信息交换的性质

#### ==安全服务(5类)==

- **认证**(鉴别)(Authentication):提供某个实体的身份保证对等实体认证、数据源认证
- **访问控制**(Access control):保护资源,防止对它的非法使用和操纵
- **数据机密性**(Data encryption):保护信息不被泄露连接保密性、无连接保密性、选择域保密性、流量保密性
- **数据完整性**(Integrity):保护信息以防止非法篡改具有恢复功能的连接完整性、无恢复功能的连接完整性、选择与连接完整性、无连接完整性、选择域无连接完整性
- **不可否认性**(No-repudiation):防止参与通信的一方事后否认源点的不可否认性、信宿的不可否认性

#### 安全服务与机制的关系

| 服务\机制 | 加密 | 数字签名 | 访问控制 | 数据完整性 | 认证交换 | 流量填充 | 路由控制 | 公证 |
| :----------------------: | :--: | :------: | :------: | :--------: | :------: | :------: | :------: | :--: |
| 对等实体认证 | ✔️ | ✔️ | | | ✔️ | | | |
| 数据源认证 | ✔️ | ✔️ | | | | | | |
| 访问控制服务 | | | ✔️ | | | | | |
| 连接机密性 | ✔️ | | | | | | ✔️ | |
| 无连接机密性 | ✔️ | | | | | | ✔️ | |
| 选择字段机密性 | ✔️ | | | | | | | |
| 通信业务流机密性 | ✔️ | | | | | ✔️ | ✔️ | |
| 待恢复的连接完整性 | ✔️ | | | ✔️ | | | | |
| 不带恢复的连接完整性 | ✔️ | | | ✔️ | | | | |
| 选择字段的连接完整性 | ✔️ | | | ✔️ | | | | |
| 无连接完整性 | ✔️ | ✔️ | | ✔️ | | | | |
| 选择字段的无连接的完整性 | ✔️ | ✔️ | | ✔️ | | | | |
| 不可抵赖,带交付证据 | | ✔️ | | ✔️ | | | | ✔️ |

**PPT**

| 安全服务\安全机制 | 加密 | 数字签名 | 访问控制 | 完整性 | 认证 | 流量填充 | 路由控制 | 公证 |
| :---------------: | :--: | :------: | :------: | :----: | :--: | :------: | :------: | :--: |
| 对等实体认证 | ✔️ | ✔️ | | | ✔️ | | | |
| 数据源认证 | ✔️ | ✔️ | | | | | | |
| 访问控制 | | | ✔️ | | | | | |
| 机密性 | ✔️ | | | | | | ✔️ | |
| 流量机密性 | ✔️ | | | | | ✔️ | ✔️ | |
| 数据完整性 | ✔️ | ✔️ | | ✔️ | | | | |
| 非否认服务 | | ✔️ | | ✔️ | | | | ✔️ |
| 可用性 | | | | ✔️ | ✔️ | | | |

#### 网络各层安全协议

链路层:链路隧道协议、加密技术

网络层:包过滤机制、NAT、IPsec协议、 VPN

传输层/会话层 :SSL/TLS 协议

应用层:SHTTP、HTTPS、PGP、S/MIME等

### 网络安全技术

第二代安全技术

- 保护
- 响应
- 检测
- 恢复

包括

- 防火墙
- 入侵检测
- 虚拟专用网
- 公钥基础设施

# 密码学

### 发展进程

- **古典密码**: 基于字符替换的密码,现在已很少使用了,但是 它代表了密码的起源
- **对称密钥体制( Symmetric System** ):加密密钥和解密密钥 相同,这些算法也叫作单钥密码体制(one-key system)
- **非对称密钥体制(Asymmetric System)** :加密密钥和解密密 钥不同,也叫**公钥密码体制(public key system)或双钥密码体制(two-key system)**

### 加密模式

- **序列密码(stream cipher)**: 序列密码**按位或字节加密**,也 可以称为流密码,序列密码是手工和机械密码时代的主流。

- **分组密码(block cipher)**: 分组密码**将明文分成固定长度的组**,用同一密钥和算法对每一块加密,**输出也是固定长度的密文**。

## 对称密码

### DES(数据加密标准,Data Encryption Standard )

DES是一种对二元数据进行加密的算法,数据分组长度为 **64位**,密文分组长度也是**64位**,使用的密钥为**64位**,有效密钥长度为**56位**,**有8位用于奇偶校验**,解密时的过程和加密时相似,但密钥的顺序正好相反,DES的整个体制是公开的,系统的安全性**完全靠密钥的保密**。

## 对加密系统的攻击

- 唯密文攻击:根据加解密算法和密文进行破译
- 已知明文攻击:攻击者拥有部分密文和对应的明文,根据算法寻找密钥
- 选择明文攻击:有选择地使用任意明文和与之对应的密文信息,根据算法寻找密钥
- 选择密文攻击:有选择地使用密文和与之对应的明文信息,根据算法寻找密钥

## 分组密码

分组密码一次处理一个数据分组

对于较长的明文,在分解成若干个分组之 后,采用相同的密钥进行加密,NIST定义 了5种工作模式

- **电码本ECB(Electronic Codebook)**
- **密码分组反馈CBC(Cipher-block chaining)**
- **密码反馈CFB(Cipher feedback)**
- **输出反馈OFB(Output Feedback)**
- **计数器CRT(Counter)**

## 公钥密码

### RSA

#### 过程

##### 密钥生成

1. **选择两个互异的素数p和q**
2. **计算n=p*q**
3. **计算φ(n)=(p-1)(q-1)**
4. **选择与φ(n)互素的e,且1<e<φ(n)**
5. **计算d*e mod φ(n)= 1 **

**公钥为Pk为{e,n},私钥为{d,n}**

**加密**
$$
C=M^e\,(mod\,n)
$$
**解密**
$$
M=C^d\,(mod\,n)
$$

### ELGamal密码

- todo

# 消息认证与身份认证

数字签名-消息的不可否认性

消息认证-消息的完整性

### 数字签名

#### 基本概念

① 签名者事后不能抵赖自己的签名;

② 任何其他人不能伪造签名;

③ 如果当事的双方关于签名的真伪发生争执,能够在公正的仲裁者面前通过验证确认其真伪。

#### 与加解密的区别

数字签名的加密/解密过程和信息(报文)的加密/解密 过程都可适用公开秘钥算法,但实现**过程正好相反**,适用的密钥对也不同。数字签名使用的是发送方的密钥对, 发送方用自己的私钥进行加密(签名),接收方用发送方的公开秘钥进行解密(验证)

这是一个一对多的关系:任何拥有发送方公开秘钥的人都可以验证数字签名的正确性

签名

设施加签名的算法为 SIG,产生签名的密钥为K,被签 名的数据为M,产生的签名信息为S
$$
S = SIG (M,K)
$$
验证签名的算法为VER ,用VER对签名S进行验证,可鉴别S的真假
$$
VER(S, K)=
\begin{cases}
true \quad当S=SIG(M, K)\\
false \enspace当S\neq SIG(M, K)
\end{cases}
$$


#### 公钥实现数字签名

1. **A用自己的解密钥K~dA~对数据M进行签名:S~A~=D(M,K~dA~)**

2. **如果不需要保密,则A直接将S~A~发送给用户B**

3. **如果需要保密,则A用B的公开的加密钥K~eB~对S~A~ 加密, 得到密文C,其中C=E(S~A~,k~eB~)**

4. **最后,A把C发送给B,并将S~A~或C 留底**

5. **B收到后,若是不保密通信,则用 A的公开加密钥K~eA~对签名进行验证**
$$
E(S_A,K_{eA})=E(D(M,K_{dA}),K_{eA})=M
$$

6. **若是保密通信,则 B先用自己的保密的解密钥K~dB~对C解密, 然后再用A的公开加密钥K~eA~对签名进行验证**
$$
D(C,K_{dB})=D(E(S_A,K_{eB}),K_{dB})= S_A \\
E(S_A,K_{eA})=E(D(M,K_{dA}),K_{eA})= M
$$

7. **M如果能够恢复出正确的 M,则说明S~A~是A的签名,否则SA不是A的签名**

8. **B对收到的 C或S~A~留底**

分析

因为只有 A才拥有K~dA~ ,而且由公开的K~eA~在计算上不 能求出保密的解密钥K~dA~ 。因此签名的操作只有A才能进行,任何其他人都不能进行。所以,K~dA~就相当于A的印章或指纹,而SA就是A对M的签名。对此A不能抵赖,任何其他人不能伪造

##### 合理设计明文的数据格式

![image-20230618184645954](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618184645954.png)

![image-20230618184712103](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618184712103.png)

![image-20230618184724145](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618184724145.png)

##### RSA签名

设 M 为明文 , K~eA~= 是 A 的公开加密钥 , K~dA~=是A的保密的解密钥,则A对M的签名过程是
$$
S_A=D(M,K_{dA})=M^d(mod\;n)
$$
S~A~便是签名

验证
$$
M=E(S_A,K_{eA})=(M^d)^emod\;n
$$

#### 盲签名

**需要 某个人对某数据签名,而又不能让他知道数据的内容。称这种签名为盲签名( Blind Signature)**

![image-20230618183034976](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618183034976.png)

双联签名

双联签名是实现盲签名的一种变通方法。它利用协议和 密码将消息与人关联起来而并不需要知道消息的内容。从 而实现盲签名

双联签名采用单向HASH函数和数字签名技术相结合, 实现盲签名的两个特性

#### 作业

1.为什么数字签名能够确保数据真实性?

因为只有 A才拥有K~dA~,而且由公开的K~eA~在计算上不能求出保密的解密钥K~dA~ 。因此签名的操作只有A才能进行,任何其他人都不能进行。所以,K~dA~就相当于A的印章或指纹,而S~A~就是A对M的签名。对此A不能抵赖,任何其他人不能伪造

2.说明对于RSA的数字签名,为什么先加密后签名不安全?

1. 容易受到重放攻击。攻击者可以截获密文并重复发送,因为签名是对加密数据的签名,而不是对明文的签名。
2. 容易受到中间人攻击。攻击者可以截获密文,然后用自己的密钥对密文重新签名,然后将签名后的密文发送给接收者。接收者无法检查签名是否来自合法的发送者,因为签名是对整个消息(包括加密的数据和签名)进行的。

3.说明HASH函数在数字签名中的作用。

​ Hash函数在数字签名中应用的意义是为了增加可识别信息。在数字签名中,对消息进行Hash的作用是将**任意长度的消息压缩成固定长度的消息指纹**。同时提供完整性

4. 盲签名与普通签名有何不同?举出一个盲签名的实例。

盲签名是一种数字签名技术,可以让一个签名者在不知道签名信息内容的情况下,对这个信息进行签名,从而保护用户的隐私

实例:电子商务和电子政务

5. 举出一个双联盲签名的实例

```
双联盲签名是一种密码学协议,用于在保护用户隐私的同时进行数字签名。这里给出一个基于椭圆曲线加密算法(Elliptic Curve Cryptography)实现的双联盲签名示例:

假设有两个参与者Alice和Bob,他们想要对某条消息m进行双联盲签名。

1. Alice选择一个随机数r1,并计算R = r1 * G,其中G为预定义的生成点。
2. Bob也选择一个随机数r2,并计算S = r2 * G。
3. Alice将R发送给Bob,而Bob则将S发送给Alice。
4. Alice使用自己持有的私钥a来计算T = R + a*H(m),其中H()表示哈希函数应用到消息m上得到结果h。然后她将T返回给Bob。
5. Bob同样使用自己持有的私钥b来计算U = S + b*H(m)并返回给Alice。

至此,在不泄露彼此信息以及原始消息内容情况下完成了“双”、“联”、“盲”的过程。

最后, 通过以下方式验证该签名:

- 验证步骤:检查 T ?= U

如果相等,则说明该数字签名有效且匿 名性质满足条件。
```

- 签名算法利用私钥生成签名,称消息m的签名为sig(m),然后将(m,sig(m))发给接收方
- 验证算法利用签名者的公钥对sig(m)进行解密,如果解密输出与m一致,则为合法数据。

由于无法识别数字签名与其拷贝之间的差异,所以, 在数字签名前应加上时间戳

### 消息认证

- 加密函数
- 消息认证码MAC
- 散列函数

散列函数

- **抗原像攻击(单项):给任意的h,找到H(x)=h在计算上不可行**
- **抗弱碰撞:给任意的x,找到y!=x 满足H(x)=H(y)在计算上不可行**
- **抗强碰撞:找到任意的满足H(x)=H(y)的偶对(x,y)在计算上不可行**

应用

- 消息认证 确保消息没有被修改、插入、删除或重放确保消息发送方声称的身份真实有效
- 文件完整性校验
- 数字签名保护消息完整性,验证消息发送方身份
- 单向口令
- 入侵检测与病毒检测
- 区块链

**保障多种安全的方案**

![image-20230618152256779](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618152256779.png)

**只保证完整性的方案**

![image-20230618152515784](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618152515784.png)

MAC

消息认证码(Message Authentication Code, MAC):通信双方需要**共享一个密钥,以K来表示**。同时,需要用于生成消息认证码的函数F。对于消息M,其消息认证码 MAC~M~与M和K相关,可以表示为:
$$
MAC_M=F(M,K)
$$
不管消息的长短,都生成固定大小的数据块

#### 消息顺序

- 序列号
- 时间戳
- 挑战与响应

**现时(Nonce)**

Nonce是Number used once或Number once的缩写,是一个随时间而改变的参数,在密码学中通常是一个只被使用一次的任意或非重 复的随机数值

### 身份认证

- **口令认证**
- **信物认证**
- **地址认证**
- **用户特征认证**
- **密码学认证**

#### 口令认证

##### 静态口令

##### 动态口令

也称为**一次性口令**,其基本原理:在用户登录过程中,基于用户口令加入不确定因子,**对用户口令和不确定因子进行单向散列函数变换**, 所得的结果作为认证数据提交给认证服务器。 认证服务器接收到用户的认证数据后,把用户的认证数据和自己用同样的散列算法计算出的数值进行比对,从而实现对用户身份的认证

动态口令按生成原理可分为**非同步和同步两种认证**技术。

非同步认证技术生成的动态口令主要是依据**挑战- 响应原理**来实现。

![image-20230618155000373](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618155000373.png)

同步认证技术包括与时间有关的时钟同步认证技术和与时间无关的事件同步认证技术。

#### 密码学认证

##### 一次一密(OTP)

一般双因子

固定因子-即用户的口令或口令散列值

动态因子-每次不一样的因子,如时间,事件序列,挑战/应答(challenge/response)。 每种各有优缺点

##### 其于共享密钥的认证

###### **Needham-Schroeder**

![image-20230618162315203](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618162315203.png)

执行完上述三个步骤后,A和B 已得到了由KDC分配的一次性会话密钥 ,可用于后续的保密通信,为什么还要增加后面两个步骤?

**防止攻击者截获步骤三的消息并重放攻击**

第(5)步中,为什么要问个题f(N2 ) ,而不是直接用N2?

**防止重放攻击**

###### **Ke5rberos**

Kerberos认证协议以N-S协议为基础,通过可信第 三方进行客户和服务器间的相互认证,交换会话 密钥,以建立客户和服务器间的信任和安全传输 信道,由MIT首先提出并实现。

![image-20230618163108269](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618163108269.png)

![image-20230618163143604](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618163143604.png)

分析

Kerberos认证中使用的时间戳机制依赖于域内时钟同步,如果时间不同步存在较大的安全风险;

Kerberos无法应付口令猜测攻击;

主体必须保证他们的私钥的安全;

Kerberos中AS和TGS采用集中式管理,容易 形成瓶颈。

#### 公钥分发

##### 公钥证书

**证书:是一个数据结构,由证书用户可信的某一成员进行数字签名**

**公钥证书:一个数据结构,用来绑定实体姓名(以及有关该实体的其他属性)和相应的公钥**

**公钥证书=用户ID+用户公钥+可信第三方的签名**

![image-20230618163755346](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618163755346.png)

# PKI和数字证书(重点)

### 密钥管理

基于密钥保护的安全策略

密钥管理包括密钥的**产生、存储、分发、组织 、使用、停用、更换、销毁**等一系列问题,涉及每个密钥的从产生到销毁的整个生命周期。

### 数字证书

#### 概念

将**用户身份ID与其所持有的公钥PK** 绑定,再由CA对该用户身份及对应公钥的组合**{ID||PK}** 进行**数字签名得到S**,然后将**{签名S||身份ID||公钥PK}**加 以存储,即数字证书。

#### 文件格式

- X.509证书 Windows系统中后缀一般是DER、CER。
- PKCS#12证书 包含一个或多个证书以及证书的私钥,后缀名PFX。
- PKCS#7证书 可以封装多个X.509证书、PKCS#6、证书链的CA证书、证书撤销列表信息,后缀是 P7B。

#### x509格式

版本号:

序列号

唯一标识

签名算法标识符

颁发者名称

有效期

主体名称

主题的公钥信息

颁发者的唯一标识符

主体唯一标识符

颁发者签名

#### 签名

![image-20230623113019388](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230623113019388.png)

#### 验证

![image-20230623113037478](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230623113037478.png)

### ==PKI==

PKI:**公钥基础设施(Public Key Infrastructure)** 就是一种用公钥密码理论和技术实施和提供安全服务的、具有普适性的安全基础设施。

组成

![image-20230618165420556](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618165420556.png)

#### 组成

![image-20230624101242451](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230624101242451.png)

#### CA

- 提供网络身份认证服务**负责发放和管理数字证书**。

- 负责证书**签发及签发后证书生命周期中的所有方面的管理**。
- 跟踪证书状态
- 在证书需要撤销时发布证书撤销通知
- **维护证书档案和证书相关的审计**。

#### RA

注册机构(RA)是数字证书**注册审批**机构,是认证中心的延伸。RA按照政策与管理规范对用户的资格进行审查, 并执行“是否同意给该申请者发放证书、撤销证书”等操作,**承担因审核错误而引起的一切后果**。如果审核通过, 即可实时或批量向CA提出申请,要求为用户签发证书

- 接受与验证最终用户的注册信息
- 为最终用户生成密钥
- 接收与授权密钥备份与恢复请求、证书撤销请求

#### 证书发布库

用于集中存放**CA颁发的证书**和**证书撤销列表(CRL)**

==**LDAP**==协议是 创建高效的大规模PKI认证的关键技术

#### 密钥的备份与恢复

针对用户密钥丢失情形,PKI提供密钥备份与恢复机制

公钥的用途

- 验证数字签名(**验证公钥**,用发送方公钥验证)

- 加密数据(**加密公钥**,用接收方公钥加密)

签名证书


签名密钥对由**签名私钥和验证公钥**组成

签名私钥具有日常生活中公章、私章的效力,为保证其唯一性,签名私钥不能做备份和存档,**丢失后需要重新生成新的密钥对**

**验证公钥需要存档**(因为原来的签名需用旧公钥的备份来验证)

加密证书

加密密钥对由**加密公钥和解密私钥**组成

加密公钥无需备份和存档,加密公钥丢失时,只需重新产生密钥对即可

为防止密钥丢失时丢失数据,**解密私钥应该进行备份**,同时还可能需要进行存档,以便在必要时进行恢复,能在任何时候解密历史密文数据

#### 证书撤销

##### 实现方法

**在线证书状态协议OCSP**(在线证书查询)

![image-20230618215527453](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618215527453.png)

**证书撤销列表CRL**(周期性发布机制)

CRl

1. 检查证书是否过期

2. 检查证书链

3. 确保Bob的序列号没有出现在CA发布的CRL中

#### PKI应用接口

#### 数字证书的生成

##### 密钥生成

- 用户自己生成公私钥对
- 注册机构生成公私钥对

##### 注册

用户将公钥和证明材料发送给注册机构

##### 验证

RA验证用户材料,已明确是否接受用户注册。

检查私钥的拥有证明POP(Proof Of Possession)。

##### 生成

1. RA将用户申请数据信息传递给证书机构CA
2. 证书机构验证后生成数字证书
3. 证书机构将证书发给用户
4. 在CA维护的证书目录中保留一份证书记录

### 习题

简述公开密码体系中公钥可能遇到的安全威胁与应对策略?

安全威胁:由于公开密码体系的公钥完全公开,所以用户难以验证公钥的隶属关系的真实性。也就是说,用户无法确定公钥是否隶属与他所宣称的公钥,因此会存在公钥伪造问题。

应对策略:采用公钥与所有人绑定的策略,这种绑定的方法就是数字证书,同时利用PKI来管理数字证书的签名,发布,验证,撤销。

有了公钥证书,为何还学要PKI?

有了公钥证书,还需要数字证书的签名,发布,验证,撤销的一系列的管理任务,所以需要PKI。

简要说明PKI系统多个CA的建立信任的过程?

对于有层次结构的组织,采用树形信任模型

双向交叉认证证书:

各个CA互签名

有用户控制的交叉认证

由桥接CA控制的交叉认证

简述CA签发用户数字证书的过程

1. RA将用户申请数字证书的请求发给CA
2. 证书机构验证后生成数字证书
3. 证书机构将证书发给用户
4. 在CA维护的证书目录中保留一份证书记录

==简述撤销数字证书的过程==

发现问题

提出撤销申请

RA审核申请

CA撤销数字证书

通知各方

更新客户端

==说明数字证书的各项的作用==

身份认证:可以通过数字证书,将公钥和实体绑定起来。

数据加密:通过公钥密码学算法,可以通过数字证书对敏感信息进行加密。

数字签名:通过数字证书的公钥和自己的私钥进行数字签名。确保其完整性。

==分析利用区块链技术来实现PKI数字证书的可行性,说明优缺点==

比较分析证书签名和证书指纹的区别和联系

证书签名是对证书中的tbsCertificate部分进行ANSI.1 DER编码并对编码后的内容执行签名算法后得到的结果,签**名值是证书内容的一部分**。证书指纹是指对证书全部编码内容(也就是证书文件)进行散列运算得到的散列值。**证书指纹并不是证书的组成部分,主要是为了方便证书的管理**。利用证书指纹,系统可以比较容易地从证书库中检索到一个证书,此外指纹还可以用于检测一个证书是否被篡改。

简要说明是否所有的CA证书需要通过验证才能信任?

根证书不需要验证

简要说明实际应用中常见的证书错误有哪些?

证书异常(过期、错误主机、被摊销、弱签名、不受信任的证书等)导致浏览器无法验证网站的身份,如果继续访问,用户可能访问的是一个攻击者建立的假冒网站(如钓鱼网站),从而导致您的敏感信息(例如:密码、通讯内容或信用卡信息)被窃取

PPT

==掌握PKI的基本功能、加密及认证机制==

​ 基本功能:负责证书的**申请,发布,查询,撤销**以及一系列管理任务。

​ 认证——向一个实体确认另一个实体确实是他自己。

​ 完整性——向一个实体确保数据没有被有意或者无意地修改。

​ 机密性——向一个实体保障只有接收者,没有任何人可以解密数据的关键部分。

​ 加密:通过公私钥对进行加解密。

​ 认证机制:使用CA的私钥进行签名,其他组织使用CA的对应的公钥进行验证和认证。

==PKI的主要组成部分及这些组成部分的主要功能==

- ​ CA:证书的生成,颁发,申请,撤销,验证的功能
- ​ RA:审批证书的各种申请
- ​ 证书发布库:存在证书和证书撤销列表(CRL)
- ​ 密钥备份与恢复:针对证书的密钥丢失情形,PKI提供密钥备份与恢复
- ​ 证书撤销:证书撤销列表,ocsp
- ​ PKI应用接口:

# IP与路由安全

### IPv4

- IPV4没有认证机制
- 没有源IP认证
- 没有完整性检测
- IPV4没有加密机制
- 无机密性
- 泄露拓扑结构
- 无宽带控制
- DDOS攻击

> IP(Internet Protocol)首部和IP载荷是在网络通信中的两个不同概念。
>
> 1. IP首部:每个经过互联网传输的数据包都会有一个IP首部,它位于整个数据包的开头。IP首部主要用来存储与该数据包相关的控制信息,如源地址、目标地址、协议类型等。这些信息帮助路由器将数据正确地发送到目标设备,并确保有效交付。
>
> 2. IP载荷:除了IP首部之外,在实际进行网络通信时还需要传输具体的应用层或者传输层所需处理的真正“负载”内容,即被称为"payload" 或 "data segment" 的东西。例如,在使用HTTP协议进行网页浏览时,HTML文档就是作为TCP/IP报文段中承载在其上面运行着HTTP请求/响应消息以及其他必要字段和元素组成而形成最终封装好后通过底层基础架构逐跳转发至对端接收方并解析出原始文件再展示给用户看见
>
> 因此可以说,“IP 首部” 是指IPv4或IPv6 数据报文结构里固定长度且规范化定义格式下前置位置处存在一块区域;而 “ip 载荷 ” 则代表了从 ip 头开始直达 tcp/ip 协议栈中的上层协议所需传输或处理内容。

### ==IPSEC(重点)==

**端到端的确保IP通信安全:认证、加密及密钥管理**

IPV6必选,IPV4可选

安全认证

**安全服务:访问控制、 无连接完整性、数据源认证、拒绝重放包(部分顺序完整性格式)、保密性(加密)以及限制流量保密性**

#### 标准内容

![image-20230619140558381](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619140558381.png)

![image-20230619220855769](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619220855769.png)

#### 安全策略

**源端到目的端**传输的IP包的安全策略

IPSEC主要由两个交互的数据库

**安全关联数据库(Security Associate Database,SAD)**

**安全策略数据库(Security Policy Database,SPD)**

确定

指定对IP数据包提供何种保护,并以何种方式实施保护

主要根据源IP,目的IP,入数据,出数据标识

用户设定自己的安全策略的粒度:IP地址,传 输层协议,TCP/UDP端口号

操作:Bypass,Discard,Protect

#### ==IPsec运行模式==

==**传输模式和隧道模式的区别**==

| | 传输模式SA | 隧道模式SA |
| :----: | :----------------------------------------------------------: | :----------------------------------------------------------: |
| AH | **对IP载荷和IP首部的选中部分**、IPV6拓展首部认证 | **对整个内部IP包(内部首部和IP载荷)和外部IP首部的选中部分**、外部IPV6的拓展首部进行认证 |
| ESP | 对**IP载荷**和跟在ESP首部后面的任何IPV6拓展首部进行加密 | **加密整个内部IP包** |
| AH+ESP | **对IP载荷和ESP首部后面的任何IPV6拓展首部进行加密,同时对IP载荷进行认证,但不认证IP首部** | **加密并认证整个内部包** |

#### AH协议

AH协议功能:**IP包的数据完整性、数据来源认证和抗重放攻击服务**

完整性:采用HMAC算法:HMAC-MD5( 必须)、HMAC-SHA1 (必须) 、HAMCRIPEMD-160等

抗重放:序列号

##### 传输模式

![image-20230619162452032](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619162452032.png)

**可以看到在IP首部加入了AH首部**

##### 隧道模式

![image-20230619162525134](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619162525134.png)

**可以看到新添加了ip首部,同时在新的ip首部添加了AH首部**

##### 抗重放攻击

![image-20230619162848053](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619162848053.png)

##### 完整性校验

算法:在SA中指定

> - HAMC-MD5-96;
> - HMAC-SHA1-1-96

96表示鉴别数据默认字段长,由HMAC计算出完整校验值后截断

##### 作业

AH传输模式和隧道模式的区别?

**AH传输模式对原始的IP数据头进行认证**

**AH隧道模式新建一个IP头,也会对新建的IP头进行认证**

AH与NAT的兼容性问题?

**不兼容,因为NAT会修改IP头的源/目的IP地址,到达目的地后从而导致完整性校验失败**

#### ESP协议

ESP协议功能:**除了提供IP包的数据完整性、数据来源认证和抗重放攻击服务,还提供数据包加密和数据流加密服务**

完整性:采用HMAC算法:HMAC-MD5(必须)、HMAC-SHA1 (必须) 、HAMCRIPEMD-160,NULL(无认证)等;ESP认 证的数据范围要小于AH协议

加密:对称密码,必须支持:DES-CBC和 NULL算法(认证和加密不能同时为NULL)

##### 首部

![image-20230619163454609](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619163454609.png)

##### 传输模式

![image-20230619163523996](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619163523996.png)

传输模式下ESP装包过程:

首先,给原IP报文添加ESP尾部;

然后,将尾部和原IP报文的载荷一起进行加密;

第三,将机密数据加入ESP头部;

第四,对加密区域和ESP头部进行验证,得到完整性度量值,附在ESP报文最后;

最后,将IP头部附在ESP报文前,构成新的IP报文。

拆包时

首先,检查协议类型,确定为IPSec包;

然后,通过ESP头部SPI确认SA内容,以及通过序列号确认不是重放攻击;

第三,计算验证区域的摘要,与ESP验证数据做比较,相同则数据完整;

第四,根据SA提供的算法和密钥,解密加密区域,得原IP数据包和ESP尾部;

第五,根据尾部填充长度学习删除填充字段,即可得原IP数据包;

最后,根据IP的目的地址进行转发。

解包过程:
1、接收⽅方收到数据报⽂文后,对除IP和ESP Message Authentication Code的部分计算摘要与ESP MAC进⾏行⽐比较,验证数据的完整性。假如⽐比对不同,可以断定所收到的报⽂文已经经过篡改了。
2、查看ESP Header,通过⾥里⾯面的SPI得到数据报⽂文所对应的SA;检查序列号,保证数据不是回放攻击。
3、根据SA所提供的加密算法与密钥,解密被加密算法加密过的部分(IP Datagram、ESPTrailer)。
4、根据ESP Trailer⾥里的填充⻓长度信息,可以找出填充字段的字段,删去后就能得到完整地IP Datagram

![image-20230619163717956](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619163717956.png)

##### 隧道模式

![image-20230619224512404](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230619224512404.png)


装包过程:

1. 在原IP报文末尾添加尾部(ESP trailer)信息。尾部包含三部分。由所选加密算法可能是块加密,那么当最后一块长度不够时就需要进行填充(padding),附上填充长度(Pad length)方便解包时顺利找出用来填充的那一段数据。而Next header则用来标明被加密的数据报文的类型,例如TCP。
2. 将原IP报文以及第1步得到的ESP尾部作为一个整体进行加密。具体的加密算法与密钥由SA给出。
3. 为第2步得到的加密数据添加ESP头部。ESP头由两部分组成,SPI和序号(Sequence number)。加密数据与ESP头合称为“enchilada”。
4. 附加完整性度量结果(ICV, Integrity check value)。对第三步得到的“enchilada”做摘要,得到一个完整性度量值,并附在ESP报文的尾部。
5. 加上新的IP头。新构造的IP头附在ESP报文的前面组成一个新的IP报文。注意这个新的IP头的目的地址跟源地址可以不一样。协议类型为50,说明它里面装的是一个IPsec报文。

解包过程:

1. 接收方收到数据报文后,发现协议类型是50,故知道这是一个IPsec包。首先查看ESP头,通过里面的SPI决定数据报文所对应的SA。
2. 计算“enchilada”部分的摘要,与附在末尾的ICV做对比,如果一样的话说明数据是完整的。否则可以断定所收到的报文已经不是原来的报文了。
3. 检查Seq里的顺序号,保证数据是“新鲜”的。
4. 根据SA所提供的加密算法和密钥,解密被加密过的数据,即“enchilada”。得到原IP报文与ESP尾部(trailer)。
5. 根据ESP尾部里的填充长度信息,我们可以找出填充字段的长度,删去后就得到原来的IP报文。
6. 最后根据得到的原IP包的目的地址来进行转发。

**ESP传输模式与隧道模式对比**

传输模式由于**IP包首部不被加密**,因此无法提供数据流加密服务

隧道模式对**整个IP包进行认证和加密**,因此可以提供数据流加密服务

传输模式适合保护ESP协议主机间的通信连接,而隧道模式在防护墙或其他可信内网不受外网攻击的防火墙上的配置比较有效

##### 作业

ESP传输模式和隧道模式的区别?

​ ESP传输模式对IP载荷和ipv6的拓展首部进行加密,不对ip首部进行加密。

​ ESP隧道模式对整个内部IP包进行加密,同时创建一个新的ip头。

ESP传输模式下:如果修改了IP包的首部,IPsec是否能检测出来这种修改?

不能。

ESP与NAT的兼容性问题

兼容NAT

ESP与AH的区别?

ESP可以对报文进行加密,AH不能。

AH对IP的头部也进行了认证,ESP不对IP头部认证。

#### ==AH和ESP比较==

| | AH | ESP |
| :--------------: | :----: | :----------------: |
| 协议号 | 50 | 51 |
| 数据完整性校验 | 支持 | 支持(不验证IP头) |
| 数据源验证 | 支持 | 支持 |
| 数据加解密 | 不支持 | 支持 |
| 抗重放攻击 | 支持 | 支持 |
| NAT-T(NAT穿透) | 不支持 | 支持 |

IPsec体系结构文档中指出,当两个传输模式SA被绑定,在同一个端对端流中允许AH 和ESP两种协议,但认为只有先施ESP协议 再实施AH协议才合适,为什么?

接收方先对接受的数据进行完整性校验,只有通过了完整性校验的数据包才进行解密。如果没有通过完整性校验,就不用进行耗时的解密操作。

#### 网络密钥交换

手动:管理员为每个系统手动配置所需密钥,只适用于规模相对较小且结点配置相对稳定的环境

自动:系统通过IKE(Internet Key Exchange)协议自动为SA创建密钥,适用于大型分布式系统中的密钥管理

后面介绍是==**IKEv2**==

Diffie-Hellman回顾

优点:

​ 需要时才生成密钥对

​ 除了全局参数外,密钥对不需要事先存在的基础设施

缺点:

​ 没有提供双方的身份信息,容易收到中间人攻击

​ 算法是计算密集的,容易受到阻塞攻击

IKE对Diffie-Hellman改进:

​ 采用**Cookie**来防止**拥塞攻击**

​ 允许双方协商得到一个组(group),相录于Diffie-Hellman密钥交换的全局参数

​ 使用**现时值**来防止**重放攻击**

​ 对**Diiffie-Hellman交换进行是身份认证,阻止中间人攻击**

![image-20230620110959429](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620110959429.png)

### ==SA组合==

![image-20230620114252032](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620114252032.png)

![image-20230620140546910](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620140546910.png)

![image-20230620140619132](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620140619132.png)

## ==作业==

IPsec提供哪些服务?

​ **访问控制、 无连接完整性、数据源认证、拒绝重放包(部分顺序完整性格式)、保密性(加密)以及限制流量保密性**

传输模式和隧道模式的区别?

​ 传输模式,隧道模式新加了ip头。

IPsec在协议栈中处于什么位置?

​ 再TCP/IP协议上处于**网络层与传输层之间**

通过实验课程,总结IKE SA和IPsec SA建立流程,他们之间的先后关系是什么?

​ 手动方式

​ 自动方式

课本选择题与简答题2、6、7、8、15题。

2.分析AH协议不兼容NAT的原因

​ AH协议对IP头部进行认证,NAT传输会造成IP头部的改变。会导致AH认证失败。

6.IPSEC体系文档指出,当两个传输模式SA被绑定,对同一个端口对端端流中允许AH和ESP协议,但认为先用ESP,再用AH再合适。说明不推荐先用AH再用ESP的原因

​ 如果先用AH再用ESP,则ESP会修改AH认证的载荷部分,会导致AH认证失败。或者,当接受方接受到报文之后,先解密会消耗大量的时间和资源。

7.当且仅当采用ESP传输模式下,如果修改了IP包的首部,IPSEC是否能检测出来

不能,因为ESP传输模式不对IP头部加密和认证。

8.ESP传输模式下,如果使用加密,为何ESP首部(SPI和序列号)不在加密范围之内?

​ **SPI和序列号属于ESP协议本身的控制信息,并且需要在接收端用于解析、验证和重组报文**

15.IKE的作用是什么?他与AH和ESP协议有什么关系?

IKE用于密钥管理,定义了通信实体进行身份的认证,协商加密算法以及生成会话密钥的方法。它将协商的结果保存在SA中,供AH和ESP协议使用。

# 传输层安全

## ==SSL==

SSL协议为TCP连接提供**数据加密,消息完整性,服务器认证,可选的客户机认证**几项安全功能

### 协议体系

**上层:SSL握手协议,SSL密码变化协议,SSL警告协议**

**底层:SSL记录协议**

### SSL高层协议

#### ==握手协议(难点)==

参与方:clinet和server

实现:**由一系列客户机和服务器交换信息来实现**

作用:

**当客户机和服务器第一次通信时候,负责确定SSL的协议版本**

**交换必要的密码参数以及在客户端和服务器上生成premaster secret**

**协商premaster secret的交换方式**

**协商客户端和服务器的加密算法和MAC算法**

**交换数字证书和密码信息以便客户机认证服务器和服务器认证客户端(可选)**

过程

<img src="https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230621151841693.png" alt="image-20230621151841693" style="zoom: 80%;" />

SSL流程

![image-20230621152241124](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230621152241124.png)

##### 四个阶段

###### 阶段一 -建立安全能力

首先在第一阶段客户端发送client hello,服务器回应server hello,协商协议版本,会话标识,密码套件,压缩方法和初始随机数

###### 阶段二 -服务器认证和密钥交换

**服务器是本阶段的唯一发送方,客户端是本小阶段的唯一的接收方。**

发送证书(可选):服务器发送自己的证书或者证书链

服务器密钥交换(可选):服务器没有证书时,需发送此消息;服务器有证书,但证书没有包括足够的信息来完成密钥交换时,需要发送此消息

证书请求(可选):如果要验证客户端证书

服务器握手完成(必选):服务器发送server_hello_done, 然后等待应答

###### 阶段三 -客户端认证和密钥交换

客户端是本阶段的唯一发送方,客户端是本阶段的唯一接受方

证书(可选):如果服务器发送了证书请求

客户端密钥交换(必选):

证书验证(可选):客户机和服务器使用master secret来生成密钥,它是对称密钥,在SSL会话过程中用来进行数据的加密和解密,也用于验证数据的完整性

###### 阶段四 -完成

前两个来自客户端,后两个来自服务器

客户发送一个change_cipher_spec消息,声明后面发送出去的数据将使用session keys加密;并且把协商得到的Cipher Suite拷贝到当前连接的状态之中

客户机发送一个finished消息,表明握手过程客户机部分的工作已完成 。

服务器同样发送change_cipher_spec消息,声明后面的数据将使用session key加密,接着再发送一条finished消息,表明握手过程中服务器部分的工作已完成。

握手过程完成,客户和服务器可以交换应用层数据。

#### SSL密钥生成

客户端生成Premaster secret,并用服务器的公钥加密后传给服务器端

客户端和服务器端根据Premater secret生成master secret

客户端和服务器端根据master secret生成session key

##### 握手协议小结

| **流程中消息** | **相关参数** |
| ----------------------- | ---------------------------------------- |
| **hello_request** | Null |
| **client_hello** | 版本,随机数,会话id,密码参数,压缩方法 |
| **server_hello** | |
| **certificate** | X.509 v3证书链 |
| **server_key_exchange** | 参数,签名 |
| **certificate_request** | 类型,CAs |
| **server_done** | Null |
| **certificate_verify** | 签名 |
| **client_key_exchange** | 参数,签名 |
| **finished** | Hash值 |

#### 密码变化协议

此消息是的从挂起状态改变到当前状态,用于更新此连接的使用的密码组

#### 警告协议

处理错误。

#### 记录协议

提供两种服务

**保密性:使用握手协议得到的传统加密共享密钥来加密SSL载荷**

**完整性:使用握手协议得到的MAC共享密钥来对SSL载荷进行消息完整性校验**

### 作业

分析IPSEC VPN和SSL VPN的优缺点和各自的应用场景?

IPSEC优点:安全性高

缺点:性能低,需要特定的网络设备支持

应用场景:主要用于将远程终端和分支机构网络与机构内部网络安全连接。

SSL协议优点:SSL/TLS VPN建立在传输层上,使用加密和身份验证技术来保护连接。它不需要特定的硬件设备,因此具有更简单的部署和管理。此外,它可以通过任何支持Web浏览器的设备访问,包括PC、移动设备等

缺点:安全性低

应用场景:SSL主要用于远程终端通过web浏览器访问内部网络的服务器。

简述SSL协议是如何进行密钥的安全分发的?

使用RSA密钥交换,以及基于DIFFIE-HELLMAN协议的匿名DIFFIE-HELLMAN交换与瞬时DIFFILE-HELLMAN交换

# 网络防火墙

## 概念

**防火墙**是由软件和硬件组成的系统,它处于安全的网络和不安全的网络之间,根据由系统管理员设置的访问控制规则,对数据流进行过滤。

路由器:连接不同的网络,通过路由协议保证互联互通,确保报文被转发至目的地。--转发

交换机:用于组建局域网,通过二层/三层交换快速实现转发报文。--转发

防火墙:对网络的访问行为进行控制,安全防护是其核心。--控制

## 功能

- 定义了一个必经之点
- 审计和报警
- NAT,IPSEC/VPN
- 访问控制:隔断、过滤、代理
- 加密
- 授权认证
- 地址翻译(NAT)
- VPN
- 负载均衡
- 内容安全:病毒扫描(特征码)、URL扫描、HTTP过滤
- 日志记帐、审计报警

处理方式

- 允许
- 丢弃
- 拒绝

## 包过滤防火墙

对于静态包过滤防火墙来说,决定接收还是拒绝一个数据包,取决于对**数据包中IP头和协议头等特定域的检查和判定。**

防火墙可根据数据包的 源地址 目的地址 端口号
确定是否丢弃数据包。若符合规则,则丢弃数据包

攻击

IP地址欺骗 黑客用某个已知可信客户机的源地址替代恶意数据包的实际源地址进行攻击,进入受保护的内部网络。

隐信道攻击 不检查数据包的净荷部分,黑客有机会将恶意的命令或数据隐藏到数据净荷中

无状态感知 包过滤防火墙并无“状态感知”能力。管理员必须为某个会话的两端都配置相应的规则以保护服务器。

## 状态检测防火墙

状态检测又称**动态包过滤**,在网络层由一个检查引擎截获数据包,抽取出与应用层状态有关的信息,并以此作为依据决定对该数据包是接受还是拒绝。
检查引擎维护一个**动态的状态信息表**并对后续的数据包进行检查。一旦发现任何连接的参数有意外变化,该连接就被中止
它在协议底层截取数据包,然后分析这些数据包,并且将当前数据包和状态信息与前一时刻的数据包和状态信息进行比较,从而得到该数据包的控制信息,来达到保护网络安全的目的。

状态检测防火墙克服了包过滤防火墙的局限性,能够根据协议、端口及源地址、目的地址的具体情况决定数据包是否可以通过。

状态检测防火墙的安全特性是最好的,但其**配置非常复杂**,会降低网络效率。

## 应用网关防火墙

应用级网关(Application Level Gateways)是在**应用层上建立协议过滤和转发**功能。它针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时,对数据包进行必要的分析、登记和统计,形成报告。
包过滤和应用网关防火墙有一个**共同的特点**,就是它们仅仅依靠特定的逻辑判定是否允许数据包通过。一旦满足逻辑,则防火墙内外的计算机系统建立直接联系,防火墙外部的用户便有可能直接了解防火墙内部的网络结构和运行状态,这有利于实施非法访问和攻击。

## 代理服务防火墙

应用代理(**应用网关**)是代理内部网络用户与外部网络服务器进行信息交换的程序。
它将内部用户的请求确认后送达外部服务器,同时将外部服务器的响应再回送给用户。

![image-20230620224643891](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620224643891.png)

**优点**

由于代理直接和应用程序交互,它可以根据应用上下文进行决策和判定,而不仅仅依据IP地址和端口号。可以做出更为准确的判定。

- **缺点**
- 性能差
- 更加昂贵

- 对于每一类应用,需要专门的代理

- 有些服务建立直接的连接,无法使用代理


## 安全区域

- Trust区域:该区域内网络的受信任程度高,通常用来定义内部用户所在的网络。
- DMZ区域:该区域内网络的受信任程度中等,通常用来定义内部服务器所在的网络。
- Untrust区域:该区域代表的是不受信任的网络,通常用来定义Internet等不安全的网络。

### 流动

![image-20230620224959315](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620224959315.png)

**报文从低级别的安全区域向高级别的安全区域流动时为入方向(Inbound),报文从由高级别的安全区域向低级别的安全区域流动时为出方向(Outbound)**。报文在两个方向上流动时,将会触发不同的安全检查。下图标明了Local区域、Trust区域、DMZ区域和Untrust区域间的方向。

## ==NAT==

| **源NAT**转换方式 | **含义** | **应用场景** |
| :-------------------: | :------------------------------------------------------: | :----------------------------------------------------------: |
| NAT No-PAT | IP转换,端口不变 | 私网用户少,公网IP数量和私网用户基本相同。 |
| NAPT | IP转换,端口转换 | 公网IP少,用户多。 |
| 出接口方式 (Easy-IP) | IP转换,端口转换,但转换后的IP地址只能为出接口的IP地址。 | 一个公网IP,并且公网地址在接口上是动态获取的。 |
| Smart NAT | 预留一个公网IP进行NAPT,其它的公网IP进行NAT No-PAT转换。 | 公网IP地址数量与最大私网上网用户数量基本相同;个别时间段上网用户激增。 |
| 三元组NAT | 将私网IP和端口转换为固定公网IP地址和端口。 | 外网用户主动访问私网用户的场景,例如P2P场景。 |

## NATServer

![image-20230620225539659](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620225539659.png)

## 双向NAT

**同时改变报文的源地址和目的地址**

**源NAT**还可以根据报文的源、目的地址所在安全区域进行分类:
1、域间NAT
报文的源地址和目的地址属于不同的安全区域。按照转换报文的方向,又可以分为以下两类:
(1)NAT Inbound(外网访问内网)
(2)NAT Outbound(内网访问外网)
2、域内NAT(内网访问内网)
报文的源地址和目的地址属于相同的安全区域。一般来说,域内NAT都会和NAT Server配合使用,单独配置域内NAT的情况较少见。

![image-20230620230321526](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620230321526.png)

![image-20230620230335042](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620230335042.png)

此时,如果希望PC像外网用户一样通过公网地址访问server,就要在防火墙上配置NAT Server。到此就配置完了吗?我们通过下图来看看吧:如果只配置了NAT Server,报文到达防火墙后转换目的地址,server回应报文时发现自己的地址和目的地址在同一网段,这就和之前分析的组网是同样情况了――server通过二层转发报文,回应报文经交换机直接转发到PC,不会经过防火墙转发!

![image-20230620230453772](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230620230453772.png)

## 体系结构

- **过滤路由器或屏蔽路由器结构( Packet-filtering Router or Screening Router )**
- **双穴主机或双宿主机结构 (Dual Homed Gateway)**
- **屏蔽主机或主机过滤结构(Screened Host Gateway)**
- **过滤子网或屏蔽子网结构(Screened Subnet)**

### 过滤路由器

过滤路由器结构是最简单的防火墙结构

![image-20230622102657759](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230622102657759.png)

### **双穴主机体系结构**

定义:用一台装有两块网卡的堡垒主机(称为双穴主机或双宿主主机)做防火墙。两块网卡各自与受保护网和外部网相连,每块网卡都有独立的IP地址。堡垒主机上运行着防火墙软件(应用层网关),可以转发应用程序,也可提供服务等功能。

![image-20230620230645664](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620230645664.png)

### **屏蔽主机体系结构**

定义:屏蔽主机体系结构包括:一个分组(包)过滤路由器(或称为屏蔽路由器)连接外部网络,再通过一个堡垒主机与内部网络相连,通常在路由器上设立过滤规则,并使这个堡垒主机成为从外部网络惟一可直接到达的主机,确保内部网络不受未被授权的外部用户的攻击

![image-20230620230724876](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620230724876.png)

### **过滤子网体系结构**

在外界网络和内部网络之间建立一个双方都可以访问的独立网络(过滤子网),用两台分组过滤路由器将这一子网分别与内部网络和外部网络分开:

![image-20230620230748960](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230620230748960.png)

## 作业

1、防火墙一般有几个接口?什么是防火墙的DMZ区域?它的作用是什么?默认情况下,它和其它几个区域的数据流向?

一般有三个或者三个以上接口-UnTrust、Trust、DMZ区

DMZ:非军事区,介于严格的军事区和松散的公共区域

作用:是内外网的安全保护层,相当于一个应用网关

数据流向:由低水平到高水平的数据流向称为入,由高水平到低水平的数据留校称为出

DMZ到UnTrust为出,DMZ到Trust为入

2、防火墙为什么要具有NAT功能?

保护内网的IP地址,增强安全性

3、各种源NAT功能都应用在什么场景下?

| NAT方式 | 场景 |
| --------------------- | ---------------------------------------------------------- |
| NAT No-PAT | 私网用户少,公网IP和私网用户数量相当 |
| NAPT | 公网IP少,用户多 |
| 出接口方式(Easy-IP) | 一个公网地址,并且公网地址是随机获取的 |
| SMART NAT | 公网IP地址和最大私网用户数量相当,且有个别时间上网用户激增 |
| 三元组NAT | 外网用户主动访问私网,例如:P2P |

# Internet协议的安全性

## 网络层协议

![image-20230622104502606](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230622104502606.png)

### IP包碎片攻击

对于==人为设计偏移量,长度有矛盾==的数据包进行重组处理,可能导致操作系统异常。

### ARP协议

地址解析协议是**根据IP地址获取物理地址的**一个TCP/IP协议

#### ARP攻击

攻击者发动ARP欺骗攻击,可以完全控制主机A和主机B之间的流量,发动被动攻击(流量监测、获取涉密信息)或主动攻击(伪造数据)。

### ICMP协议

控制报文协议是一种重要的错误处理和信息处理的协议

**它是一种差错和控制报文协议,不仅用来传输差错报文,并且传输控制报文**

## 传输层协议

### TCP

传输控制协议(TCP)是一种**面向连接,可靠**的传输层协议

### UDP

用户数据包(UDP)是一种**不可靠的服务**

## 应用层协议

### HTTP

#### HTTPS

HTTP、HTTPS与SSL的关系

![image-20230622105628151](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230622105628151.png)

### DNS

DNS欺骗

思路

让DNS服务器的缓存中存在错误的DNS记录

### TELNET

远程登录协议

# VPN

VPN是利用Internet等公共网络的基础设施,通过某些技术,为用户提供一条与专用网络具有相同通信功能的安全数据通道。VPN技术实现了内部网信息在公用信息网中的传输,就如同在茫茫的广域网中为用户拉出了一条专线。对用户来讲,虽然他们身处在世界的不同地方,但感觉仿佛是在同一个局域网里工作。

是指将物理上分布在不同地点的网络通过公用网络连接而构成逻辑上的虚拟子网

## 隧道技术(核心技术)

隧道技术实质上是一种封装,将一种协议(协议X)封装在另一种协议(协议Y,称为隧道协议)中传输,从而实现协议X对公用传输网络(采用协议Y)的透明性

隧道协议是一种封装协议,它把其它协议的数据(帧或包)重新进行封装,然后再在重新封装后的数据上添加一个头部,头部提供了路由信息,从而使封装的负载数据能够通过具有路由功能的公共网络进行传输。

### 加解密技术

- GRE与L2TP:不提供加解密技术,通常和IPSec协议一块使用。
- IPSec:支持数据报文和协议报文加密。
- SSL VPN:支持数据报文和协议报文加密。

### 身份认证技术

方向:用于移动办公的用户远程接入的情况。
不同的VPN技术能够提供不同的身份认证方式:

- GRE:不支持身份认证技术。。
- L2TP:依赖PPP提供的认证(比如CHAP、PAP、EAP)。
- IPSec:通过IKE协商。
- SSL VPN:支持本地认证、证书认证和服务器认证。

### 隧道协议

三层隧道协议:

- IPSec:IP Security
- GRE:Generic Routing Encapsulation

二层隧道协议 :

- PPTP:Point to Point Tunneling Protocol
- L2F:Layer 2 Forwarding
- L2TP:Layer 2 Tunneling Protocol

## ==分类==

隧道协议层次

- 二层隧道VPN:是将整个PPP帧封装在内部隧道中。
- 三层隧道VPN:隧道内只携带第三层报文。
- 应用层VPN:SSL VPN。

业务类型

- Access VPN:适用于公司内部经常有流动人员远程办公的情况
- Intranet VPN:网关到网关,通过公司的网络架构连接来自同公司的资源
- Extranet VPN:与合作伙伴企业网构成Extranet,将一个公司与另一个公司的资源进行连接

## 优劣

### GRE

没有加密

### IPSEC

组网不灵活

需要客户端软件

### SSL VPN

不影响原有的网络拓扑图

细分程度更加精细

;