计算机网络第七章:网络安全学习总结
计算计网络第七章
计算机网络第七章:网络安全学习总结
随着计算机网络的普及和深入应用,网络安全已成为信息社会不可或缺的重要组成部分。本章旨在介绍网络安全的基本概念、核心技术和常用协议,帮助理解如何保护网络通信和数据免受各种威胁。
1. 安全基础
网络安全的目标是保护信息系统及其数据免受未经授权的访问、使用、泄露、破坏、修改或拒绝服务。
1.1 CIA 三要素
这是信息安全最基本的三大目标:
- 机密性 (Confidentiality):确保信息只被授权用户访问,防止信息泄露给未经授权的实体或进程。
- 实现手段:加密、访问控制。
- 完整性 (Integrity):确保信息在存储或传输过程中不被未经授权地修改或破坏,并保证信息的一致性和准确性。
- 实现手段:散列函数(Hash)、数字签名。
- 可用性 (Availability):确保授权用户在需要时能够及时、可靠地访问和使用信息及信息系统。
- 实现手段:冗余、备份、负载均衡、DDoS 防护。
1.2 攻击类型
网络攻击通常分为两大类:
- 被动攻击 (Passive Attacks):攻击者不改变数据,只是窃听或分析通信。
- 窃听 (Eavesdropping):截获通信内容。
- 流量分析 (Traffic Analysis):通过观察通信模式、频率、长度等推断信息。
- 特点:难以检测,但可以预防(如加密)。
- 主动攻击 (Active Attacks):攻击者修改数据流或创建虚假数据流。
- 篡改 (Modification):修改传输中的数据。
- 伪造 (Masquerade):冒充合法用户进行通信。
- 重放 (Replay):截获合法通信并重新发送。
- 拒绝服务 (Denial of Service, DoS/DDoS):阻止合法用户访问服务。
- 特点:容易检测,但难以完全预防。
1.3 恶意软件类型
恶意软件 (Malware) 是指旨在损害、破坏或未经授权访问计算机系统的软件。
- 病毒 (Virus):依附于其他程序,通过执行宿主程序传播。
- 蠕虫 (Worm):独立运行,通过网络自我复制传播,无需宿主程序。
- 木马 (Trojan Horse):伪装成合法软件,但执行恶意功能。
- 后门 (Backdoor):绕过正常认证机制,提供对系统的秘密访问。
- 僵尸网络 (Botnet):被恶意软件感染的计算机组成的网络,受攻击者控制。
- 勒索软件 (Ransomware):加密用户文件并要求支付赎金才能解密。
- 间谍软件 (Spyware):秘密收集用户信息的软件。
- 广告软件 (Adware):强制显示广告的软件。
2. 密码学基础
密码学是网络安全的核心,通过数学方法实现信息的机密性、完整性和认证。
2.1 对称加密 (Symmetric Encryption)
- 原理:加密和解密使用相同的密钥。
- 特点:速度快,适合大量数据加密;密钥分发困难。
- 传统密码:
- 替代密码 (Substitution Cipher):将明文中的字符替换为其他字符(如凯撒密码)。
- 置换密码 (Transposition Cipher):改变明文中的字符顺序(如栅栏密码)。
- 现代算法:
- DES (Data Encryption Standard):
- 分组长度:64 位。
- 密钥长度:56 位(实际使用)。
- 安全性:因密钥长度较短,已被认为不安全,易受暴力破解。
- AES (Advanced Encryption Standard):
- 分组长度:128 位。
- 密钥长度:128 位、192 位或 256 位。
- 安全性:目前公认的安全标准。
- DES (Data Encryption Standard):
2.2 非对称加密 (Asymmetric Encryption / Public-Key Cryptography)
- 原理:使用一对密钥——公钥 (Public Key) 和私钥 (Private Key)。公钥公开,私钥保密。
- 用公钥加密的数据只能用对应的私钥解密。
- 用私钥签名的数据只能用对应的公钥验证。
- 特点:解决了密钥分发问题;速度慢,不适合大量数据加密。
- RSA 算法:
- 原理:基于大整数分解的困难性。即给定两个大素数 ppp 和 qqq,计算它们的乘积 n=pqn=pqn=pq 很容易,但给定 nnn 很难反向分解出 ppp 和 qqq。
- 密钥生成:
- 选择两个大素数 p,qp, qp,q。
- 计算模数 n=p×qn = p \times qn=p×q。
- 计算欧拉函数 ϕ(n)=(p−1)(q−1)\phi(n) = (p-1)(q-1)ϕ(n)=(p−1)(q−1)。
- 选择一个整数 eee (公钥指数),满足 1<e<ϕ(n)1 < e < \phi(n)1<e<ϕ(n) 且 eee 与 ϕ(n)\phi(n)ϕ(n) 互质。
- 计算私钥指数 ddd,满足 d×e≡1(modϕ(n))d \times e \equiv 1 \pmod{\phi(n)}d×e≡1(modϕ(n))。
- 公钥为 (e,n)(e, n)(e,n),私钥为 (d,n)(d, n)(d,n)。
- 加密:密文 C=Me(modn)C = M^e \pmod nC=Me(modn),其中 MMM 是明文。
- 解密:明文 M=Cd(modn)M = C^d \pmod nM=Cd(modn)。
3. 消息完整性与认证
3.1 报文摘要 (Message Digest) / Hash 函数
- 原理:将任意长度的输入数据通过散列算法转换成固定长度的输出(散列值、摘要)。
- 特点:
- 单向性 (One-way):从摘要无法逆推出原始数据。
- 抗碰撞性 (Collision Resistance):很难找到两个不同的输入产生相同的摘要。
- 雪崩效应 (Avalanche Effect):输入微小变化导致输出巨大变化。
- 长度固定:无论输入多大,输出长度固定。
- 常用算法:
- MD5 (Message-Digest Algorithm 5):输出 128 位,已被证明存在碰撞,不推荐用于安全敏感场景。
- SHA-1 (Secure Hash Algorithm 1):输出 160 位,也存在理论上的碰撞攻击,逐渐被淘汰。
- SHA-2 (SHA-256, SHA-384, SHA-512):输出 256 位、384 位、512 位,目前广泛使用。
- 用途:验证数据完整性(文件校验、密码存储)。
3.2 数字签名 (Digital Signature)
- 原理:发送方使用自己的私钥对报文摘要进行加密,生成数字签名。接收方使用发送方的公钥解密签名,并与自己计算的报文摘要进行比对。
- 功能:
- 认证 (Authentication):证明消息确实来自声称的发送方(只有私钥持有者能生成有效签名)。
- 完整性 (Integrity):确保消息在传输过程中未被篡改(摘要比对)。
- 不可否认性 (Non-repudiation):发送方不能否认曾发送过该消息。
- 流程:
- 发送方 A 对原始消息 MMM 计算 Hash 值 H(M)H(M)H(M)。
- A 使用自己的私钥 PRAPR_APRA 对 H(M)H(M)H(M) 进行加密,得到数字签名 S=EPRA(H(M))S = E_{PR_A}(H(M))S=EPRA(H(M))。
- A 将消息 MMM 和签名 SSS 一起发送给接收方 B。
- B 收到 MMM 和 SSS。
- B 使用 A 的公钥 PUAPU_APUA 解密 SSS,得到 H(M)′H(M)'H(M)′。
- B 对收到的消息 MMM 重新计算 Hash 值 H(M)′′H(M)''H(M)′′。
- B 比较 H(M)′H(M)'H(M)′ 和 H(M)′′H(M)''H(M)′′。如果两者一致,则消息完整且确实由 A 发送。
3.3 身份认证 (Identity Authentication)
- 数字证书 (Digital Certificate):
- 一种由证书认证机构 (CA) 签名的电子文档,它将某个实体的公钥与其身份信息(如姓名、组织、电子邮件地址等)绑定在一起。
- 包含:公钥、所有者信息、CA 信息、有效期、CA 的数字签名。
- CA (Certificate Authority):
- 受信任的第三方机构,负责颁发、管理、吊销数字证书。
- CA 的公钥通常预装在操作系统或浏览器中,作为信任链的根。
- PKI (Public Key Infrastructure):
- 公钥基础设施,一套创建、管理、分发、使用、存储和撤销数字证书的系统。
- 包括 CA、注册机构 (RA)、证书库、证书吊销列表 (CRL) 或在线证书状态协议 (OCSP) 等组件。
4. 网络安全协议
4.1 传输层:SSL/TLS (Secure Sockets Layer / Transport Layer Security)
- 作用:在应用层和传输层之间提供安全通道,实现数据机密性、完整性和身份认证。广泛用于 HTTPS。
- TLS 握手过程详解:
- Client Hello:客户端向服务器发送支持的 TLS 版本、加密套件(加密算法、Hash 算法)、压缩算法、随机数 RCR_CRC。
- Server Hello:服务器选择一个 TLS 版本、加密套件、压缩算法,并发送服务器的随机数 RSR_SRS。
- Server Certificate:服务器发送其数字证书(包含服务器公钥)。
- Server Key Exchange (可选):如果选择了 Diffie-Hellman 等密钥交换算法,服务器会发送密钥交换参数。
- Server Hello Done:服务器通知客户端握手消息发送完毕。
- Client Certificate (可选):如果服务器要求客户端认证,客户端发送其数字证书。
- Client Key Exchange:
- 客户端生成一个预主密钥 (Pre-Master Secret) PMSPMSPMS。
- 客户端使用服务器证书中的公钥加密 PMSPMSPMS,发送给服务器。
- Change Cipher Spec:客户端通知服务器后续通信将使用协商好的加密套件和密钥。
- Client Finished:客户端发送一条加密的握手消息,验证握手过程。
- Server 解密 PMS:服务器使用自己的私钥解密收到的 PMSPMSPMS。
- 双方生成主密钥和会话密钥:客户端和服务器分别使用 PMSPMSPMS、RCR_CRC、RSR_SRS 共同计算出主密钥 (Master Secret),再从主密钥派生出用于对称加密和 MAC 的会话密钥 (Session Keys)。
- Change Cipher Spec:服务器通知客户端后续通信将使用协商好的加密套件和密钥。
- Server Finished:服务器发送一条加密的握手消息,验证握手过程。
- 安全通信:双方使用协商好的会话密钥进行对称加密通信。
4.2 网络层:IPsec (Internet Protocol Security)
- 作用:在 IP 层提供安全服务,包括数据源认证、数据完整性、机密性和抗重放攻击。
- 主要协议:
- AH (Authentication Header) 鉴别首部:
- 提供:数据源认证、数据完整性、抗重放攻击。
- 不提供:机密性(不加密数据)。
- 工作方式:在 IP 数据报中插入一个 AH 首部,包含一个 MAC (Message Authentication Code)。
- ESP (Encapsulating Security Payload) 封装安全载荷:
- 提供:机密性、数据源认证、数据完整性、抗重放攻击。
- 工作方式:加密 IP 数据报的有效载荷,并添加 ESP 首部和尾部。
- AH (Authentication Header) 鉴别首部:
- 工作模式:
- 传输模式 (Transport Mode):
- 保护范围:只保护 IP 数据报的有效载荷(传输层报文及以上)。
- 应用场景:主机到主机之间的端到端安全通信。
- 隧道模式 (Tunnel Mode):
- 保护范围:保护整个原始 IP 数据报(包括原始 IP 首部和有效载荷)。
- 工作方式:将整个原始 IP 数据报封装在一个新的 IP 数据报中,并对新的有效载荷(即原始 IP 数据报)进行加密和/或认证。
- 应用场景:VPN (Virtual Private Network),网关到网关或主机到网关的通信。
- 传输模式 (Transport Mode):
4.3 应用层:PGP (Pretty Good Privacy)
- 作用:提供电子邮件和文件加密、数字签名、压缩等功能。
- Web of Trust (信任网络):
- PGP 不依赖于中心化的 CA,而是通过用户之间相互签名公钥来建立信任。
- 用户可以为其他用户的公钥签名,表示信任该公钥的真实性。
- 信任是传递的:如果 A 信任 B,B 信任 C,那么 A 可能(但不一定)信任 C。
- 邮件加密流程:
- A 对邮件签名:A 对邮件内容计算 Hash 值,用自己的私钥加密 Hash 值生成数字签名。
- A 对邮件加密:A 生成一个随机的会话密钥,用该会话密钥对称加密邮件内容和数字签名。
- A 加密会话密钥:A 使用接收方 B 的公钥加密会话密钥。
- A 发送:A 将加密后的邮件内容、加密后的数字签名和加密后的会话密钥发送给 B。
- B 解密会话密钥:B 用自己的私钥解密会话密钥。
- B 解密邮件:B 用会话密钥解密邮件内容和数字签名。
- B 验证签名:B 用 A 的公钥解密数字签名,得到 Hash 值,并与自己计算的邮件内容 Hash 值比对。
5. 系统安全
5.1 防火墙 (Firewall)
- 作用:隔离内部网络和外部网络,根据预设规则控制网络流量,阻止未经授权的访问。
- 类型:
- 分组过滤防火墙 (Packet Filtering Firewall):
- 工作在:网络层和传输层。
- 原理:根据 IP 数据报的头部信息(源/目的 IP 地址、源/目的端口号、协议类型等)进行过滤。
- 特点:简单、高效,但安全性较低,无法理解应用层协议。
- 状态检测防火墙 (Stateful Inspection Firewall):
- 工作在:网络层、传输层。
- 原理:在分组过滤的基础上,跟踪 TCP 连接的状态,只允许符合已建立连接状态的报文通过。
- 特点:比分组过滤更安全,能有效防御某些攻击。
- 应用网关防火墙 (Application Gateway Firewall / Proxy Firewall):
- 工作在:应用层。
- 原理:作为应用层代理,所有应用层流量都必须经过代理服务器。它会检查应用层协议的完整性和合法性。
- 特点:安全性最高,但性能开销大,对每种应用协议需要专门的代理。
- 分组过滤防火墙 (Packet Filtering Firewall):
5.2 入侵检测系统 (IDS - Intrusion Detection System)
- 作用:监控网络或系统活动,发现可疑行为或已知的攻击模式,并发出警报。
- 类型:
- 特征检测 (Signature-based Detection / Misuse Detection):
- 原理:维护一个已知攻击模式(特征码)的数据库,将网络流量或系统日志与这些特征码进行匹配。
- 特点:对已知攻击检测准确率高,误报率低。但无法检测未知攻击。
- 异常检测 (Anomaly-based Detection):
- 原理:首先建立一个正常行为的基线模型,然后将实时活动与基线进行比较,任何显著偏离基线的行为都被认为是异常或潜在入侵。
- 特点:能够检测未知攻击。但可能产生较高的误报率,且需要持续学习和更新基线。
- 特征检测 (Signature-based Detection / Misuse Detection):
重点突破
典型例题
1. RSA 算法计算
Problem: 给定两个小质数 p=3,q=11p=3, q=11p=3,q=11 和公钥指数 e=3e=3e=3。请计算:
(1) 模数 nnn 和欧拉函数 ϕ(n)\phi(n)ϕ(n)。
(2) 私钥指数 ddd(展示扩展欧几里得计算过程)。
(3) 若明文 m=5m=5m=5,计算密文 ccc。
Solution:
(1) 计算模数 nnn 和欧拉函数 ϕ(n)\phi(n)ϕ(n):
- 模数 n=p×q=3×11=33n = p \times q = 3 \times 11 = 33n=p×q=3×11=33。
- 欧拉函数 ϕ(n)=(p−1)(q−1)=(3−1)(11−1)=2×10=20\phi(n) = (p-1)(q-1) = (3-1)(11-1) = 2 \times 10 = 20ϕ(n)=(p−1)(q−1)=(3−1)(11−1)=2×10=20。
(2) 计算私钥指数 ddd:
- 我们需要找到 ddd 使得 e×d≡1(modϕ(n))e \times d \equiv 1 \pmod{\phi(n)}e×d≡1(modϕ(n)),即 3d≡1(mod20)3d \equiv 1 \pmod{20}3d≡1(mod20)。
- 使用扩展欧几里得算法:
* 我们希望找到整数 x,yx, yx,y 使得 ax+by=gcd(a,b)ax + by = \text{gcd}(a, b)ax+by=gcd(a,b)。在这里,我们找 ddd 使得 3d+20k=13d + 20k = 13d+20k=1。
* 20=6×3+220 = 6 \times 3 + 220=6×3+2
* 3=1×2+13 = 1 \times 2 + 13=1×2+1
* 从第二个方程反推:1=3−1×21 = 3 - 1 \times 21=3−1×2
* 将第一个方程中的 2=20−6×32 = 20 - 6 \times 32=20−6×3 代入上式:
1=3−1×(20−6×3)1 = 3 - 1 \times (20 - 6 \times 3)1=3−1×(20−6×3)
1=3−20+6×31 = 3 - 20 + 6 \times 31=3−20+6×3
1=7×3−1×201 = 7 \times 3 - 1 \times 201=7×3−1×20
* 因此,d=7d=7d=7。 - 验证:3×7=21≡1(mod20)3 \times 7 = 21 \equiv 1 \pmod{20}3×7=21≡1(mod20)。所以私钥指数 d=7d=7d=7。
(3) 计算密文 ccc:
- 加密公式为 c=me(modn)c = m^e \pmod nc=me(modn)。
- c=53(mod33)c = 5^3 \pmod{33}c=53(mod33)
- c=125(mod33)c = 125 \pmod{33}c=125(mod33)
- 125=3×33+26125 = 3 \times 33 + 26125=3×33+26
- 所以,密文 c=26c=26c=26。
Analysis: 本题考察了 RSA 算法密钥生成和加密过程中的核心计算。理解模数 nnn 和欧拉函数 ϕ(n)\phi(n)ϕ(n) 的计算是基础;私钥指数 ddd 的计算是关键,它依赖于模逆运算,通常通过扩展欧几里得算法求解;最后是明文加密为密文的幂运算和模运算。
2. 混合加密流程
Problem: 描述 A 向 B 发送一份既加密又签名的文档的完整步骤。请明确指出使用了谁的公钥、谁的私钥、以及会话密钥 (Session Key) 的生成和传递方式。
Solution:
为了实现文档的机密性(加密)和认证/不可否认性(签名),A 和 B 将采用混合加密和数字签名相结合的方案。
发送方 A 的操作:
- 生成会话密钥 (Session Key):A 生成一个随机的、一次性的对称会话密钥 KSK_SKS。
- 对称加密文档:A 使用 KSK_SKS 对原始文档 MMM 进行对称加密,得到密文 C=EKS(M)C = E_{K_S}(M)C=EKS(M)。这保证了文档的机密性。
- 计算报文摘要:A 对原始文档 MMM 计算其 Hash 值 H(M)H(M)H(M)。
- 数字签名:A 使用自己的私钥 PRAPR_APRA 对 H(M)H(M)H(M) 进行加密,得到数字签名 S=EPRA(H(M))S = E_{PR_A}(H(M))S=EPRA(H(M))。这保证了文档的认证性和不可否认性。
- 加密会话密钥:A 使用接收方 B 的公钥 PUBPU_BPUB 对会话密钥 KSK_SKS 进行非对称加密,得到加密的会话密钥 EPUB(KS)E_{PU_B}(K_S)EPUB(KS)。这保证了会话密钥传递的机密性。
- 发送消息:A 将加密后的文档 CCC、数字签名 SSS 和加密后的会话密钥 EPUB(KS)E_{PU_B}(K_S)EPUB(KS) 一起发送给 B。
接收方 B 的操作:
- 解密会话密钥:B 收到消息后,首先使用自己的私钥 PRBPR_BPRB 解密 EPUB(KS)E_{PU_B}(K_S)EPUB(KS),得到会话密钥 KSK_SKS。
- 解密文档:B 使用会话密钥 KSK_SKS 对密文 CCC 进行对称解密,得到文档 M′M'M′。
- 验证数字签名:
- B 使用发送方 A 的公钥 PUAPU_APUA 解密数字签名 SSS,得到 Hash 值 H(M)′′H(M)''H(M)′′。
- B 对解密后的文档 M′M'M′ 重新计算 Hash 值 H(M)′H(M)'H(M)′。
- B 比较 H(M)′′H(M)''H(M)′′ 和 H(M)′H(M)'H(M)′。
- 结果判断:
- 如果两个 Hash 值一致,则表明文档在传输过程中未被篡改(完整性),且确实是由 A 发送的(认证性)。
- 如果 Hash 值不一致,则文档可能已被篡改或并非来自 A。
Analysis: 本题展示了混合加密在实际应用中的完整流程。它巧妙地结合了对称加密的高效性(用于加密大量数据)和非对称加密的安全性(用于密钥交换和数字签名)。关键在于明确区分公钥和私钥在加密和签名中的不同用途,以及会话密钥在整个流程中的生成、加密和传递方式。
易错点分析
-
公钥/私钥的用途:
- 误区:认为公钥就是用来加密,私钥就是用来解密,反之亦然。
- 正解:
- 为了保证机密性:发送方使用接收方(B)的公钥加密数据,只有接收方能用其私钥解密。
- 为了保证认证性和不可否认性:发送方使用自己的(A)私钥对报文摘要进行签名,任何人都可以用发送方公钥验证签名。
- 总结:加密用接收方公钥,解密用接收方私钥;签名用发送方私钥,验证用发送方公钥。
-
KDC vs CA:
- 误区:混淆对称密钥分发中心 (KDC) 和公钥认证中心 (CA) 的功能和信任根源。
- 正解:
- KDC (Key Distribution Center):用于对称密钥的分发。通信双方都信任 KDC,KDC 为他们生成并安全地分发共享的对称密钥。KDC 本身是信任的根源。
- CA (Certificate Authority):用于非对称密钥的公钥认证。CA 颁发数字证书,证明某个公钥确实属于某个实体。用户信任 CA 的根证书,从而信任 CA 签发的其他证书。CA 解决的是公钥的真实性问题。
- 区别:KDC 解决对称密钥分发问题,CA 解决公钥的真实性问题。
-
Hash vs 加密:
- 误区:误以为 Hash 函数本身可以提供机密性或直接用于认证。
- 正解:
- Hash 函数:是一种单向函数,将任意长度输入映射为固定长度输出(摘要)。它不可逆,主要用于验证数据完整性(通过比较摘要判断数据是否被篡改)。Hash 函数本身不提供机密性,因为任何人都可以计算 Hash 值。
- 加密:是一种可逆过程,通过密钥将明文转换为密文,主要用于提供机密性。
- 认证:单纯的 Hash 值不能用于认证,因为攻击者可以篡改数据并重新计算 Hash 值。要实现认证,Hash 函数必须与密钥(如 HMAC)或数字签名(用私钥加密 Hash 值)结合使用。
更多推荐


所有评论(0)