MINIBLOG

Blog Note Tags Links About
Home Search
Jun 14, 2026
miniyuan

网络安全


安全威胁与目标

攻击分类

攻击类型子类型特征防御手段
被动攻击截获、流量分析仅观察分析 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│
                └────────────┘                      └────────────┘

加密: Y=EKE(X)Y = E_{K_E}(X)Y=EKE​​(X)

解密: DKD(Y)=DKD(EKE(X))=XD_{K_D}(Y) = D_{K_D}(E_{K_E}(X)) = XDKD​​(Y)=DKD​​(EKE​​(X))=X

安全性判定:

  • 无条件安全:无论截获多少密文,信息不足以唯一确定明文
  • 计算安全:现有计算资源无法在合理时间内破译

两类密码体制

对称密钥密码体制

核心思想:加密密钥与解密密钥相同,即 KE=KD=KK_E = K_D = KKE​=KD​=K,又称对称密钥系统。

通信双方通过安全信道预先共享同一密钥,实现双向保密通信。

对称密钥密码举例:DES

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

  • 分组长度:64 bit
  • 密钥长度:64 bit(实际有效 56 bit,8 bit 用于奇偶校验)
  • 算法公开,保密性仅取决于密钥的保密
  • 56 位 DES 已被专用芯片搜索攻击,不再安全

三重 DES:

为增强安全性,使用两个 56 位密钥进行三次运算:

Y=DESK1(DESK2−1(DESK1(X)))Y = \text{DES}_{K_1}(\text{DES}^{-1}_{K_2}(\text{DES}_{K_1}(X)))Y=DESK1​​(DESK2​−1​(DESK1​​(X)))

注:当 K1=K2K_1 = K_2K1​=K2​ 时退化为单 DES。

公钥密码体制

核心思想:使用不同的加密密钥与解密密钥,且由已知加密密钥推导出解密密钥在计算上不可行。

产生原因:

  • 对称密钥密码体制的密钥分配问题
  • 对数字签名的需求

密钥公开性:

  • 公钥 PKPKPK(public key):向公众公开
  • 私钥 SKSKSK(secret key):仅持有者保密
  • 加密算法 EEE 和解密算法 DDD 均公开

虽然 SKSKSK 由 PKPKPK 决定,但不能根据 PKPKPK 计算出 SKSKSK

公钥密码举例:RSA 算法

安全性基础:大整数素因子分解的困难性。

密钥生成:

  1. 随机选取两个大素数 ppp 和 qqq,计算 n=pqn = pqn=pq
  2. 计算欧拉函数 φ(n)=(p−1)(q−1)\varphi(n) = (p-1)(q-1)φ(n)=(p−1)(q−1)
  3. 选取整数 eee 满足 1<e<φ(n)1 < e < \varphi(n)1<e<φ(n) 且 gcd⁡(e,φ(n))=1\gcd(e, \varphi(n)) = 1gcd(e,φ(n))=1
  4. 计算 d≡e−1(modφ(n))d \equiv e^{-1} \pmod{\varphi(n)}d≡e−1(modφ(n))

密钥对:

  • 公钥 PK=(e,n)PK = (e, n)PK=(e,n)
  • 私钥 SK=(d,n)SK = (d, n)SK=(d,n)

运算:

操作公式使用密钥
加密Y=Xe mod nY = X^e \bmod nY=Xemodn接收方公钥 PKB=(e,n)PK_B = (e, n)PKB​=(e,n)
解密X=Yd mod nX = Y^d \bmod nX=Ydmodn接收方私钥 SKB=(d,n)SK_B = (d, n)SKB​=(d,n)

本质上利用了数论中的 Euler 定理。且 RSA 还具有以下互逆性:

DSK(EPK(X))=XD_{SK}(E_{PK}(X)) = XDSK​(EPK​(X))=X EPK(DSK(X))=XE_{PK}(D_{SK}(X)) = XEPK​(DSK​(X))=X

两种用法:

用法操作目的
保密通信PKPKPK 加密 → SKSKSK 解密仅持有 SKSKSK 的接收方可读取
数字签名SKSKSK 加密 → PKPKPK 解密仅持有 SKSKSK 的发送方可生成,任何人可验证

对称密钥 vs 公钥密码体制

特性对称密钥公钥密码
密钥关系KE=KDK_E = K_DKE​=KD​PK≠SKPK \neq SKPK=SK
密钥公开性双方共享秘密PKPKPK 公开,SKSKSK 保密
通信模式一对一双向多对一单向
主要瓶颈密钥分配困难计算开销大,仍需密钥分配协议
代表算法DES、AES、3DESRSA、ECC
典型应用大量数据加密数字签名、密钥交换

数字签名

三要素:

  1. 报文鉴别:接收者核实发送者身份(来源认证)
  2. 完整性:发送者事后不能抵赖(防否认)
  3. 不可否认:接收者不能伪造签名(防伪造)

基于公钥的实现

发送方 A                          接收方 B
┌─────────┐    互联网    ┌─────────┐
│ 明文 X  │ ───────────→ │ 明文 X  │
│ SK_A 签名│              │ PK_A 核实│
└─────────┘              └─────────┘

原理:除 A 外无人拥有 SKASK_ASKA​,故只有 A 能产生该密文;B 用 PKAPK_APKA​ 核实即可确认来源。

具有保密性的数字签名

发送方: Y=EPKB(DSKA(X))Y = E_{PK_B}(D_{SK_A}(X))Y=EPKB​​(DSKA​​(X))

接收方: X=EPKA(DSKB(Y))X = E_{PK_A}(D_{SK_B}(Y))X=EPKA​​(DSKB​​(Y))


鉴别

密码散列函数

特征:

  • 输入任意长,输出固定短长度(散列值/摘要)
  • 多对一映射:不同输入可能产生相同输出
  • 单向性:找到两个不同报文具有相同散列输出,在计算上不可行

MD5 与 SHA-1

算法输出长度分组长度扫描轮数安全性速度
MD5128 bit512 bit4 轮较低快
SHA-1160 bit512 bit5 轮较高较慢

MD5 计算步骤:

  1. 附加:报文长度(64 bit)追加至末尾
  2. 填充:填充 1∼5121\sim5121∼512 bit,使总长度 ≡448(mod512)\equiv 448 \pmod{512}≡448(mod512),首位为 1,其余为 0
  3. 分组:分割为 512 bit 数据块,每块再分 4 个 128 bit 块
  4. 计算:4 轮复杂运算,生成 128 bit 报文摘要

报文鉴别码 MAC

问题:单纯散列 H(M)H(M)H(M) 无法防伪造(入侵者可构造 (M,H(M))(M, H(M))(M,H(M)) 冒充 A)

解决:散列值用密钥 KKK 加密,得到 MAC(Message Authentication Code) MAC=EK(H(X))\text{MAC} = E_K(H(X))MAC=EK​(H(X))

入侵者无密钥 KKK,无法伪造 MAC,实现报文鉴别与完整性保护。

实体鉴别

鉴别类型对象频率
报文鉴别每一个收到的报文每报文一次
实体鉴别通信对方实体会话期间一次

重放攻击:截获加密报文直接转发,冒充身份

防御——不重数(Nonce):

  • 一次性大随机数,“一次一数”
  • 通信双方交换不重数并签名验证,截获者无法重复使用

中间人攻击:

  • C 截获 A 的公钥 PKAPK_APKA​,冒充 A 向 B 发送自己的 PKCPK_CPKC​
  • B 用 PKCPK_CPKC​ 加密发送给 A,C 截获后用 SKCSK_CSKC​ 解密,再用 PKAPK_APKA​ 加密转发给 A
  • A、B 均无法察觉通信被窃听

密钥分配

对称密钥分配——KDC

密钥分配中心 KDC(Key Distribution Center):

  • 可信第三方,为通信用户临时分配会话密钥(一次一密)
  • 用户预先注册主密钥 KAK_AKA​、KBK_BKB​(长期密钥,与 KDC 共享)

Kerberos V5

组件:

  • AS(Authentication Server):鉴别服务器,验证用户身份
  • TGS(Ticket Granting Server):票据授予服务器,发放服务票据

票据(Ticket):用目标服务器密钥加密的报文,包含会话密钥,可转发但不可伪造

流程:

  1. A 向 AS 发送明文身份 IDA,IDTGSID_A, ID_{TGS}IDA​,IDTGS​
  2. AS 返回用 KAK_AKA​ 加密的报文 KA(KS,TGT=KTG(KS,IDA,T1,⋯ ))K_A(K_S, TGT = K_{TG}(K_S, ID_A, T_1, \cdots))KA​(KS​,TGT=KTG​(KS​,IDA​,T1​,⋯))
  3. A 向 TGS 发送 TGT,IDB,KS(IDA,TA)TGT, ID_B, K_S(ID_A, T_A)TGT,IDB​,KS​(IDA​,TA​)
  4. TGS 返回两个票据 KS(KAB,ST=KB(KAB,IDA,T2,⋯ ))K_S(K_{AB}, ST = K_B(K_{AB}, ID_A, T_2, \cdots))KS​(KAB​,ST=KB​(KAB​,IDA​,T2​,⋯))
  5. A 向 B 转发票据 ST,KAB(IDA,,TA)ST, K_{AB}(ID_A, ,T_A)ST,KAB​(IDA​,,TA​)
  6. B 加密发回下一时间戳,确认收到 KAB(TA+1)K_{AB}(T_{A}+1)KAB​(TA​+1)
密钥谁持有作用
K_AAlice + ASAlice 的密码派生密钥,AS 用它加密首次响应,只有 Alice 能解密
K_TGTGSTGS 的服务密钥,加密 TGT,客户端无法篡改
K_SAlice + TGSAS 随机生成的临时密钥,Alice 用它向 TGS 证明身份
K_BBob + TGSBob 的服务密钥,加密 ST,客户端无法篡改
K_ABAlice + BobTGS 随机生成的最终会话密钥,供 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               │
└─────────────────────────────────────────────────────────────┘

验证方式:

  1. 验 github.com 证书(Cert 1):从 Cert 2 取中间 CA 公钥
  2. 验中间 CA 证书(Cert 2):从本地 Cert 3 取根 CA 公钥
  3. 根证书(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 安全会话建立过程:

步骤操作目的
1A 发送 SSL 版本号及可选加密算法协商算法
2B 选定算法并告知 A协商算法
3B 发送含 RSA 公钥的数字证书服务器鉴别
4A 用 CA 公钥验证证书服务器鉴别
5A 随机产生秘密数,用 B 公钥加密发送密钥交换
6双方用协商算法产生共享对称会话密钥会话密钥计算
7双方用会话密钥加密传输并验证完整性安全数据传输

HTTPS:HTTP over SSL/TLS,端口 443

应用层安全——PGP

功能:加密、鉴别、电子签名、压缩

密钥使用:

  • A(发送方):SKASK_ASKA​、PKBPK_BPKB​、一次性密钥
  • B(接收方):SKBSK_BSKB​、PKAPK_APKA​

发送方处理:

  1. 对明文 XXX 计算 MD5 摘要 H(X)H(X)H(X)
  2. 用 SKASK_ASKA​ 加密摘要得 MAC,拼接为 (X,MAC)(X, \text{MAC})(X,MAC)
  3. 生成一次性密钥,加密 (X,MAC)(X, \text{MAC})(X,MAC)
  4. 用 PKBPK_BPKB​ 加密一次性密钥
  5. 发送:加密的一次性密钥 + 加密的扩展邮件

接收方处理:

  1. 用 SKBSK_BSKB​ 解密获得一次性密钥
  2. 用一次性密钥解密获得 (X,MAC)(X, \text{MAC})(X,MAC)
  3. 用 PKAPK_APKA​ 解密 MAC 得 HHH
  4. 对 XXX 计算 MD5 得 H(X)H(X)H(X),比较 H=?H(X)H \stackrel{?}{=} H(X)H=?H(X)

系统安全

防火墙

功能:阻止(过滤可疑通信)+ 允许

技术分类:

类型工作层次过滤依据状态特点
分组过滤路由器网络/传输层IP 地址、端口、协议类型无状态/有状态简单高效、透明,无法过滤高层数据
应用网关(代理服务器)应用层应用层数据内容有状态高层过滤、用户鉴别,开销大,需客户端配置

入侵检测系统 IDS

功能:在入侵造成危害前及时检测并告警/阻断

检测方法:

方法原理优点缺点
基于特征维护已知攻击特征数据库检测已知攻击准确无法检测未知攻击
基于异常学习正常流量统计规律,检测偏离可检测未知攻击误报率高

密码学原语与安全体系总结

原语实现功能
对称密码(Cipher)AES、DES、流密码加密传输;消息鉴别码 MAC
公钥密码(PKE)RSA、ECC加密传输;数字签名
哈希函数(Hash)MD5、SHA-1身份鉴别;辅助消息鉴别和数字签名

安全体系层次:

  • 机密性/完整性:对称/公钥加密 + 哈希函数
  • 可用性:防火墙访问控制、入侵检测防御
  • 安全协议:PKI(公钥基础设施)、对称密钥分发(KDC/Kerberos)+ 网络层/传输层/应用层安全协议
目录
  • 安全威胁与目标
    • 攻击分类
    • 安全目标
    • 数据加密模型
  • 两类密码体制
    • 对称密钥密码体制
    • 对称密钥密码举例:DES
    • 公钥密码体制
    • 公钥密码举例:RSA 算法
    • 对称密钥 vs 公钥密码体制
  • 数字签名
    • 基于公钥的实现
    • 具有保密性的数字签名
  • 鉴别
    • 密码散列函数
    • MD5 与 SHA-1
    • 报文鉴别码 MAC
    • 实体鉴别
  • 密钥分配
    • 对称密钥分配——KDC
    • Kerberos V5
    • 公钥分配——CA 与 PKI
  • 安全协议
    • 网络层安全——IPsec
    • 传输层安全——SSL / TLS
    • 应用层安全——PGP
  • 系统安全
    • 防火墙
    • 入侵检测系统 IDS
  • 密码学原语与安全体系总结
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo