网络安全
安全威胁与目标
攻击分类
| 攻击类型 | 子类型 | 特征 | 防御手段 |
|---|---|---|---|
| 被动攻击 | 截获、流量分析 | 仅观察分析 PDU,不干扰信息流,难以检测 | 数据加密 |
| 主动攻击 | 篡改、恶意程序、DoS/DDoS | 干扰、破坏或伪造通信,可检测 | 加密 + 鉴别 |
DDoS(Distributed Denial of Service):成百上千站点集中攻击单一目标,又称网络带宽攻击或连通性攻击。
安全目标
| 目标 | 含义 | 应对攻击 |
|---|---|---|
| 保密性 | 仅收发双方理解信息内容 | 被动攻击 |
| 端点鉴别 | 验证通信双方真实身份 | 主动攻击 |
| 信息完整性 | 内容未被篡改 | 主动攻击 |
| 运行安全性 | 系统正常运行,访问控制 | 主动攻击 |
数据加密模型
plaintext X ──> ┌────────────┐ ──> cilhertext Y ──> ┌────────────┐ ──> plaintext X
│E encryption│ │D decryption│
│with key K_E│ │with key K_D│
└────────────┘ └────────────┘
加密:
解密:
安全性判定:
- 无条件安全:无论截获多少密文,信息不足以唯一确定明文
- 计算安全:现有计算资源无法在合理时间内破译
两类密码体制
对称密钥密码体制
核心思想:加密密钥与解密密钥相同,即 ,又称对称密钥系统。
通信双方通过安全信道预先共享同一密钥,实现双向保密通信。
对称密钥密码举例:DES
数据加密标准 DES(Data Encryption Standard):
- 分组长度:64 bit
- 密钥长度:64 bit(实际有效 56 bit,8 bit 用于奇偶校验)
- 算法公开,保密性仅取决于密钥的保密
- 56 位 DES 已被专用芯片搜索攻击,不再安全
三重 DES:
为增强安全性,使用两个 56 位密钥进行三次运算:
注:当 时退化为单 DES。
公钥密码体制
核心思想:使用不同的加密密钥与解密密钥,且由已知加密密钥推导出解密密钥在计算上不可行。
产生原因:
- 对称密钥密码体制的密钥分配问题
- 对数字签名的需求
密钥公开性:
- 公钥 (public key):向公众公开
- 私钥 (secret key):仅持有者保密
- 加密算法 和解密算法 均公开
虽然 由 决定,但不能根据 计算出
公钥密码举例:RSA 算法
安全性基础:大整数素因子分解的困难性。
密钥生成:
- 随机选取两个大素数 和 ,计算
- 计算欧拉函数
- 选取整数 满足 且
- 计算
密钥对:
- 公钥
- 私钥
运算:
| 操作 | 公式 | 使用密钥 |
|---|---|---|
| 加密 | 接收方公钥 | |
| 解密 | 接收方私钥 |
本质上利用了数论中的 Euler 定理。且 RSA 还具有以下互逆性:
两种用法:
| 用法 | 操作 | 目的 |
|---|---|---|
| 保密通信 | 加密 → 解密 | 仅持有 的接收方可读取 |
| 数字签名 | 加密 → 解密 | 仅持有 的发送方可生成,任何人可验证 |
对称密钥 vs 公钥密码体制
| 特性 | 对称密钥 | 公钥密码 |
|---|---|---|
| 密钥关系 | ||
| 密钥公开性 | 双方共享秘密 | 公开, 保密 |
| 通信模式 | 一对一双向 | 多对一单向 |
| 主要瓶颈 | 密钥分配困难 | 计算开销大,仍需密钥分配协议 |
| 代表算法 | DES、AES、3DES | RSA、ECC |
| 典型应用 | 大量数据加密 | 数字签名、密钥交换 |
数字签名
三要素:
- 报文鉴别:接收者核实发送者身份(来源认证)
- 完整性:发送者事后不能抵赖(防否认)
- 不可否认:接收者不能伪造签名(防伪造)
基于公钥的实现
发送方 A 接收方 B
┌─────────┐ 互联网 ┌─────────┐
│ 明文 X │ ───────────→ │ 明文 X │
│ SK_A 签名│ │ PK_A 核实│
└─────────┘ └─────────┘
原理:除 A 外无人拥有 ,故只有 A 能产生该密文;B 用 核实即可确认来源。
具有保密性的数字签名
发送方:
接收方:
鉴别
密码散列函数
特征:
- 输入任意长,输出固定短长度(散列值/摘要)
- 多对一映射:不同输入可能产生相同输出
- 单向性:找到两个不同报文具有相同散列输出,在计算上不可行
MD5 与 SHA-1
| 算法 | 输出长度 | 分组长度 | 扫描轮数 | 安全性 | 速度 |
|---|---|---|---|---|---|
| MD5 | 128 bit | 512 bit | 4 轮 | 较低 | 快 |
| SHA-1 | 160 bit | 512 bit | 5 轮 | 较高 | 较慢 |
MD5 计算步骤:
- 附加:报文长度(64 bit)追加至末尾
- 填充:填充 bit,使总长度 ,首位为 1,其余为 0
- 分组:分割为 512 bit 数据块,每块再分 4 个 128 bit 块
- 计算:4 轮复杂运算,生成 128 bit 报文摘要
报文鉴别码 MAC
问题:单纯散列 无法防伪造(入侵者可构造 冒充 A)
解决:散列值用密钥 加密,得到 MAC(Message Authentication Code)
入侵者无密钥 ,无法伪造 MAC,实现报文鉴别与完整性保护。
实体鉴别
| 鉴别类型 | 对象 | 频率 |
|---|---|---|
| 报文鉴别 | 每一个收到的报文 | 每报文一次 |
| 实体鉴别 | 通信对方实体 | 会话期间一次 |
重放攻击:截获加密报文直接转发,冒充身份
防御——不重数(Nonce):
- 一次性大随机数,“一次一数”
- 通信双方交换不重数并签名验证,截获者无法重复使用
中间人攻击:
- C 截获 A 的公钥 ,冒充 A 向 B 发送自己的
- B 用 加密发送给 A,C 截获后用 解密,再用 加密转发给 A
- A、B 均无法察觉通信被窃听
密钥分配
对称密钥分配——KDC
密钥分配中心 KDC(Key Distribution Center):
- 可信第三方,为通信用户临时分配会话密钥(一次一密)
- 用户预先注册主密钥 、(长期密钥,与 KDC 共享)
Kerberos V5
组件:
- AS(Authentication Server):鉴别服务器,验证用户身份
- TGS(Ticket Granting Server):票据授予服务器,发放服务票据
票据(Ticket):用目标服务器密钥加密的报文,包含会话密钥,可转发但不可伪造
流程:
- A 向 AS 发送明文身份
- AS 返回用 加密的报文
- A 向 TGS 发送
- TGS 返回两个票据
- A 向 B 转发票据
- B 加密发回下一时间戳,确认收到
| 密钥 | 谁持有 | 作用 |
|---|---|---|
| K_A | Alice + AS | Alice 的密码派生密钥,AS 用它加密首次响应,只有 Alice 能解密 |
| K_TG | TGS | TGS 的服务密钥,加密 TGT,客户端无法篡改 |
| K_S | Alice + TGS | AS 随机生成的临时密钥,Alice 用它向 TGS 证明身份 |
| K_B | Bob + TGS | Bob 的服务密钥,加密 ST,客户端无法篡改 |
| K_AB | Alice + Bob | TGS 随机生成的最终会话密钥,供 Alice 和 Bob 安全通信 |
要求:所有主机时钟”松散同步”(误差不超过约 5 分钟),防止重放攻击
公钥分配——CA 与 PKI
认证中心 CA(Certification Authority):
- 将公钥与实体身份绑定
- 颁发证书(Certificate),经 CA 私钥数字签名,不可伪造
X.509 证书结构:
| 字段 | 说明 |
|---|---|
| 版本号 | 区分 X.509 版本 |
| 序列号 | CA 发放,唯一 |
| 签名算法 | 签署算法及参数 |
| 发行者 | CA 的 X.509 名称 |
| 有效期 | 起始/终止时间 |
| 主体名 | 证书持有者名称 |
| 公钥 | 有效公钥及使用方法 |
| 发行者 ID | 唯一标识发行者(可选) |
| 主体 ID | 唯一标识持有者(可选) |
| 扩展域 | 扩充信息 |
| CA 签名 | CA 私钥对证书签名 |
证书吊销:私钥泄漏、用户不再被认证、CA 私钥泄漏等,维护证书吊销列表(CRL)
例:
以与 github.com 进行加密通信为例。
服务器发送:
┌─────────────────────────────────────────────────────────────┐
│ CERT 1 : End-Entity (Leaf) │
│─────────────────────────────────────────────────────────────│
│ Subject : CN = github.com │
│ Issuer : CN = DigiCert TLS RSA SHA384 2020 CA1 │
│ Subject PubKey : GitHub's RSA Public Key │
│ Signature : Signed by Intermediate CA's PRIVATE KEY│
└─────────────────────────────────────────────────────────────┘
▲
│ signed by
│
┌─────────────────────────────────────────────────────────────┐
│ CERT 2 : Intermediate CA │
│─────────────────────────────────────────────────────────────│
│ Subject : CN = DigiCert TLS RSA SHA384 2020 CA1 │
│ Issuer : CN = DigiCert Global Root CA │
│ Subject PubKey : Intermediate CA's Public Key │
│ Signature : Signed by Root CA's PRIVATE KEY │
└─────────────────────────────────────────────────────────────┘
本地已有(系统预装):
┌─────────────────────────────────────────────────────────────┐
│ CERT 3 : Root CA (Trust Anchor) │
│─────────────────────────────────────────────────────────────│
│ Subject : CN = DigiCert Global Root CA │
│ Issuer : CN = DigiCert Global Root CA │
│ Subject PubKey : Root CA's Public Key │
│ Signature : Self-Signed (by its own PRIVATE KEY) │
│ Trust Status : IMPLICITLY TRUSTED by OS │
└─────────────────────────────────────────────────────────────┘
验证方式:
- 验
github.com证书(Cert 1):从 Cert 2 取中间 CA 公钥 - 验中间 CA 证书(Cert 2):从本地 Cert 3 取根 CA 公钥
- 根证书(Cert 3):本地白名单直接信任,不验签
验完后,浏览器从 Cert 1 提取 GitHub 的公钥,开始加密通信。
安全协议
网络层安全——IPsec
IPsec 组成:
- AH(Authentication Header):源点鉴别 + 数据完整性,不保密
- ESP(Encapsulation Security Payload):源点鉴别 + 完整性 + 保密
- IKE(Internet Key Exchange):创建安全关联 SA
工作方式:
| 方式 | 封装方式 | 应用场景 | 运行位置 |
|---|---|---|---|
| 传输模式 | 在传输层报文前后加控制信息 + IP 首部 | 主机到主机 | 端系统 |
| 隧道模式 | 在原始 IP 数据报前后加控制信息 + 新 IP 首部 | VPN | 全程路由器 |
安全关联 SA(Security Association):
- 源到终点的单向逻辑连接
- 双向通信需建立两个 SA
- 标识:SPI(Security Parameter Index),32 bit 连接标识符
- 状态信息:源/终点 IP、加密类型、密钥、完整性检查类型、鉴别密钥
隧道方式 ESP 数据报格式:
┌──────────────┬──────────┬──────────────┬──────────────┬──────────────┐
│ 新 IP 首部 │ ESP 首部 │ 原始 IP 首部 │ 原始有效载荷 │ ESP MAC │
│ (未加密) │ SPI+序号│ (加密) │ (加密) │ (鉴别) │
└──────────────┴──────────┴──────────────┴──────────────┴──────────────┘
IKE 基础协议:
- Oakley:密钥生成
- SKEME:密钥交换(基于公钥加密的实体鉴别)
- ISAKMP:标准化创建 SA 的报文格式
传输层安全——SSL / TLS
位置:应用层与传输层之间,基于 TCP,与应用协议独立
SSL 安全会话建立过程:
| 步骤 | 操作 | 目的 |
|---|---|---|
| 1 | A 发送 SSL 版本号及可选加密算法 | 协商算法 |
| 2 | B 选定算法并告知 A | 协商算法 |
| 3 | B 发送含 RSA 公钥的数字证书 | 服务器鉴别 |
| 4 | A 用 CA 公钥验证证书 | 服务器鉴别 |
| 5 | A 随机产生秘密数,用 B 公钥加密发送 | 密钥交换 |
| 6 | 双方用协商算法产生共享对称会话密钥 | 会话密钥计算 |
| 7 | 双方用会话密钥加密传输并验证完整性 | 安全数据传输 |
HTTPS:HTTP over SSL/TLS,端口 443
应用层安全——PGP
功能:加密、鉴别、电子签名、压缩
密钥使用:
- A(发送方):、、一次性密钥
- B(接收方):、
发送方处理:
- 对明文 计算 MD5 摘要
- 用 加密摘要得 MAC,拼接为
- 生成一次性密钥,加密
- 用 加密一次性密钥
- 发送:加密的一次性密钥 + 加密的扩展邮件
接收方处理:
- 用 解密获得一次性密钥
- 用一次性密钥解密获得
- 用 解密 MAC 得
- 对 计算 MD5 得 ,比较
系统安全
防火墙
功能:阻止(过滤可疑通信)+ 允许
技术分类:
| 类型 | 工作层次 | 过滤依据 | 状态 | 特点 |
|---|---|---|---|---|
| 分组过滤路由器 | 网络/传输层 | IP 地址、端口、协议类型 | 无状态/有状态 | 简单高效、透明,无法过滤高层数据 |
| 应用网关(代理服务器) | 应用层 | 应用层数据内容 | 有状态 | 高层过滤、用户鉴别,开销大,需客户端配置 |
入侵检测系统 IDS
功能:在入侵造成危害前及时检测并告警/阻断
检测方法:
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 基于特征 | 维护已知攻击特征数据库 | 检测已知攻击准确 | 无法检测未知攻击 |
| 基于异常 | 学习正常流量统计规律,检测偏离 | 可检测未知攻击 | 误报率高 |
密码学原语与安全体系总结
| 原语 | 实现 | 功能 |
|---|---|---|
| 对称密码(Cipher) | AES、DES、流密码 | 加密传输;消息鉴别码 MAC |
| 公钥密码(PKE) | RSA、ECC | 加密传输;数字签名 |
| 哈希函数(Hash) | MD5、SHA-1 | 身份鉴别;辅助消息鉴别和数字签名 |
安全体系层次:
- 机密性/完整性:对称/公钥加密 + 哈希函数
- 可用性:防火墙访问控制、入侵检测防御
- 安全协议:PKI(公钥基础设施)、对称密钥分发(KDC/Kerberos)+ 网络层/传输层/应用层安全协议