网络攻击常见手段总结
本文整理完善自TCP/IP 常见攻击手段 - 暖蓝笔记 - 2021这篇文章。
这篇文章的内容主要是介绍 TCP/IP 常见攻击手段,尤其是 DDoS 攻击,也会补充一些其他的常见网络攻击手段。
IP 欺骗
什么是 IP 欺骗?
IP 欺骗(IP Spoofing)是一种网络攻击技术,攻击者通过伪造 IP 数据包的源地址,冒充其他设备与目标服务器通信。目标设备会误以为数据来自合法来源,从而可能泄露信息或执行不安全的操作。
IP 欺骗的工作原理
伪造 IP 地址
攻击者在发送网络数据包时,将源 IP 地址替换为受信任的设备地址,而不使用自己的真实地址。欺骗服务器信任
被攻击的服务器无法区分伪造的地址和真实地址,可能对伪造的请求做出信任或响应。干扰通信或攻击用户
- 阻断合法用户的连接(例如发送伪造的 RST 数据包)。
- 发起拒绝服务攻击(DDoS),通过伪造大量源地址,使目标服务器资源耗尽。
IP 欺骗的常见应用场景
拒绝服务攻击(DoS/DDoS)
攻击者伪造成大量的不同 IP 地址,向目标服务器发送大量请求,消耗资源导致合法用户无法访问。中间人攻击(MITM)
伪装成合法的设备,拦截和篡改两端的通信数据。会话劫持
冒充合法用户的 IP 地址,插入伪造的数据包干扰或接管通信会话。分布式拒绝服务攻击(DDoS)放大
攻击者伪造源地址为目标服务器,向开放的服务(如 DNS 或 NTP)发送请求,从而放大流量攻击目标。
如何缓解 IP 欺骗?
入口过滤(Ingress Filtering)
- 检查传入数据包的源 IP 地址是否与预期的子网匹配。
- 丢弃不合理或伪造的 IP 数据包。
出口过滤(Egress Filtering)
- 在出站数据包上验证源地址是否属于本地网络,以防止内部设备伪造地址发起攻击。
TCP 序列号随机化
- 确保序列号不可预测,减少攻击者成功伪造 TCP 包的可能性。
启用 BCP38
- 遵循互联网最佳实践,配置网络设备过滤伪造的 IP 地址。
部署防火墙和入侵检测系统(IDS)
- 使用防火墙和 IDS 筛查异常流量,实时阻断恶意数据包。
限制对特权端口的访问
- 仅允许特定的可信 IP 地址访问敏感服务,降低伪造攻击的风险。
总结
IP 欺骗是一种通过伪造源 IP 地址来实施攻击的技术,常用于拒绝服务攻击和会话劫持。尽管完全防范伪造数据包并不现实,但通过入口/出口过滤、随机化 TCP 序列号以及网络设备配置优化,可以有效减少此类攻击的成功率。
SYN Flood?
什么是 SYN Flood?
SYN Flood 是一种利用 TCP 三次握手机制的经典 DDoS(分布式拒绝服务)攻击,通过发送大量伪造或不完整的 TCP SYN 数据包,迫使目标服务器资源耗尽,从而无法响应合法用户的请求。
SYN Flood 的攻击原理
利用三次握手机制
TCP 连接的建立需要三次握手:- 客户端发送 SYN(同步)包,要求建立连接。
- 服务器返回 SYN-ACK(同步-确认)包,确认请求并表示准备接收数据。
- 客户端再发送 ACK(确认)包,完成握手,连接建立。
攻击实现
攻击者通过伪造源 IP 地址,发送大量的 SYN 请求数据包到目标服务器,但不发送后续的 ACK 数据包,或者使用伪造地址让服务器的响应(SYN-ACK)无法到达。- 服务器为每个未完成的连接保留资源(如内存、队列)。
- 随着伪造请求不断涌入,服务器的连接队列被填满,导致无法为合法请求分配资源。
半开连接的作用
服务器在收到 SYN 后进入半开连接状态,并分配内核资源维持状态等待 ACK。如果大量半开连接存在,服务器将耗尽资源,拒绝服务。
SYN Flood 的常见形式
直接攻击
- 攻击者不伪造源 IP,直接从单一设备发起大量 SYN 数据包。
- 容易被追踪和阻止,但仍能在小范围内造成影响。
伪造 IP 的攻击
- 伪造源地址,使服务器无法向合法设备发送 SYN-ACK。
- 增加了防御和追踪的复杂性。
分布式攻击(DDoS)
- 利用大量受控设备(僵尸网络)发送 SYN 数据包。
- 通常伪造 IP 地址,使攻击规模更大且更难追踪。
缓解 SYN Flood 的方法
1. 扩展积压队列
- 增大操作系统允许的半开连接队列的大小,以容纳更多请求。
- 限制:受内存大小限制,可能影响系统性能。
2. 启用 SYN Cookie
- 原理:服务器在响应 SYN 时,不直接分配资源,而是通过 SYN-ACK 包发送一个加密的 Cookie,客户端需要在 ACK 包中返回此 Cookie。
- 优点:只有返回正确 Cookie 的请求才会被记录为合法连接。
- 限制:可能丢失部分 TCP 连接信息(如窗口大小)。
3. 使用防火墙和入侵检测系统
- 配置防火墙规则限制每秒允许的 SYN 请求数量。
- 实施流量分析和行为检测,识别并阻断异常流量。
4. 启用反向代理或负载均衡
- 使用反向代理或负载均衡设备分散流量,减少单一服务器的负载压力。
5. 实现网络入口过滤(Ingress Filtering)
- 拦截伪造源 IP 地址的数据包,防止非法请求进入网络。
- 参考 BCP38(最佳实践)配置网络设备。
6. 动态调整连接管理策略
- 回收最早的半开连接,以腾出资源应对新请求。
- 设置连接超时时间,快速清理无效连接。
总结
SYN Flood 是一种针对 TCP 协议的资源耗尽攻击,通过占用服务器连接队列导致服务不可用。防御措施应从流量控制、资源优化和协议增强三个层面入手,其中 SYN Cookie 是一种轻量有效的防御方式。结合防火墙、负载均衡和入口过滤,可以显著提高防御效果,确保系统稳定性和可靠性。
UDP Flood(洪水)
什么是 UDP Flood?
UDP Flood 是一种拒绝服务(DoS)或分布式拒绝服务(DDoS)攻击,通过向目标服务器发送大量的 UDP 数据包,耗尽目标的处理能力和带宽资源,导致其无法正常响应合法流量。这种攻击利用 UDP 的无连接特性,使服务器资源在处理伪造流量时迅速枯竭。
UDP Flood 的攻击原理
无状态特性
- UDP 是无连接的协议,数据包发送后无需等待确认或建立连接,直接传输。
- 服务器在接收到 UDP 数据包时,需要判断目标端口是否有应用程序在监听。
攻击步骤
- 攻击者向目标的随机端口发送大量 UDP 数据包。
- 如果目标端口没有应用监听,服务器需要发送 ICMP(目标不可达)消息作为响应。
- 这种处理消耗服务器的计算资源和带宽。
IP 伪造
- 攻击者通常伪造数据包的源 IP 地址,掩盖攻击来源。
- 目标服务器可能将响应数据包发送到伪造的 IP 地址,进一步浪费资源。
UDP Flood 的影响
资源耗尽
- 服务器需要检查每个 UDP 数据包的目标端口并处理未连接端口的响应,导致 CPU 和内存消耗增加。
- 带宽可能被大流量数据包填满。
网络拥塞
- 攻击可能不仅影响目标服务器,还会影响周围的网络设备,导致局部网络瘫痪。
合法流量中断
- 由于资源被恶意流量占用,合法用户的请求无法得到正常响应。
如何缓解 UDP Flood?
1. 限制 ICMP 响应速率
- 配置服务器限制 ICMP 数据包的响应频率,减少因处理伪造 UDP 数据包而浪费的资源。
- 例:通过操作系统配置参数调整 ICMP 响应速率。
2. 启用流量过滤
- 使用防火墙或网络设备过滤可疑的 UDP 流量,例如:
- 丢弃伪造源地址的数据包。
- 限制每秒允许的 UDP 数据包数量。
- 过滤无效的目标端口流量(例如非必要服务的端口)。
3. 流量清洗服务
- 使用云提供商的 DDoS 防护服务,通过流量清洗技术区分正常流量和恶意流量。
- 这些服务通常位于服务器的上游,能够大规模缓解攻击。
4. 启用入口/出口过滤
- 在网络边界设备(如路由器)上配置过滤规则,阻止伪造的 UDP 数据包进入或离开网络。
- 遵循 BCP38 实现入口过滤。
5. 部署负载均衡
- 通过负载均衡设备将流量分发到多个服务器,避免单点资源耗尽。
6. 启用应用层防护
- 配置基于应用的防护机制(如限制某些服务的速率),减少高频恶意请求的影响。
7. 带宽扩展
- 增加网络带宽和服务器资源,降低因流量激增导致的影响。
总结
UDP Flood 利用 UDP 协议的无连接特性,通过伪造数据包攻击目标服务器,使其处理资源和带宽耗尽。防御措施包括限制响应速率、过滤恶意流量和启用上游清洗服务。结合多层次防护手段可以有效缓解此类攻击,确保服务的稳定性和可用性。
HTTP Flood
什么是 HTTP Flood?
HTTP Flood 是一种针对应用层(OSI 模型第 7 层)的分布式拒绝服务(DDoS)攻击,攻击者通过发送大量合法的 HTTP 请求,使目标服务器资源耗尽,无法响应合法用户的请求。相比其他攻击,这种攻击看似正常流量,更难检测和防护。
HTTP Flood 的攻击原理
工作机制
HTTP Flood 利用服务器处理 HTTP 请求的特点,通过向目标发送大量的合法 HTTP GET 或 POST 请求,使其过载:- HTTP GET 攻击:请求目标资源(如网页、图像、视频等),迫使服务器处理这些请求并传输数据。
- HTTP POST 攻击:提交复杂表单或执行消耗高的操作(如数据库查询),进一步增加服务器处理负担。
利用僵尸网络
攻击者通常通过僵尸网络控制成千上万的受感染设备,发送海量请求,形成高效且难以追踪的攻击。伪装真实流量
恶意请求与合法请求非常相似(如使用真实的 HTTP 头部和内容),使防御系统难以区分和过滤。
HTTP Flood 的常见形式
GET Flood
- 发送大量 HTTP GET 请求,要求目标服务器加载静态或动态资源。
- 特点:请求消耗小,但目标的响应成本高(如加载动态内容、生成图表等)。
POST Flood
- 向目标服务器提交大量表单数据(如登录请求、文件上传等)。
- 特点:服务器需要解析数据并执行数据库操作,资源消耗极高。
随机 URL 请求
- 通过伪造随机的 URL 或参数,绕过缓存系统,直接触发服务器生成动态内容。
慢速 HTTP 请求攻击
- 发送部分 HTTP 请求,并延迟后续数据,长时间占用服务器连接。
HTTP Flood 的防护措施
1. Web 应用防火墙(WAF)
- 配置规则识别和拦截恶意流量。
- 检测异常请求模式(如频繁的相同 URL 请求)。
2. 流量速率限制
- 限制每个 IP 的请求速率,防止单一来源产生过多请求。
- 配置动态阈值,根据流量模式调整限速策略。
3. CAPTCHA 验证
- 向可疑流量发送验证码挑战(如图形验证码或 JavaScript 验证),阻止自动化工具继续发送请求。
4. 行为分析
- 使用机器学习分析用户行为,标记异常访问模式(如短时间内大量请求、未完成的表单提交等)。
5. IP 信誉数据库
- 利用信誉服务屏蔽已知的恶意 IP 或僵尸网络源地址。
6. 内容缓存
- 在边缘服务器或 CDN 上启用缓存,减少动态内容生成的压力。
- 静态资源(如图像、CSS、JavaScript 等)通过缓存直接响应,避免触发后端服务器处理。
7. 慢速攻击防护
- 配置超时策略,及时关闭未完成的连接。
- 限制每个连接的最大持续时间。
8. 动态防御系统
- 结合流量监控和实时分析动态调整防御规则。
- 部署反向代理分散流量。
总结
HTTP Flood 是一种复杂且隐蔽的攻击,直接针对目标服务器的计算能力和资源。有效防护需要结合 WAF、行为分析、CAPTCHA 验证、速率限制等多层防御策略。此外,借助 CDN 和分布式流量清洗服务(如 Cloudflare)可以显著提升抵御能力,确保服务稳定性和可用性。
DNS Flood?
什么是 DNS Flood?
DNS Flood 是一种基于域名系统(DNS)的分布式拒绝服务(DDoS)攻击,攻击者通过向目标 DNS 服务器发送大量的 DNS 查询请求,使其过载,无法正常响应合法用户的请求。这种攻击主要针对 DNS 基础设施,目的是中断域名解析,导致网站、API 或应用无法访问。
DNS Flood 的攻击原理
DNS 的功能
DNS 将易记的域名(如 example.com)转换为 IP 地址(如 192.168.0.1)。用户通过 DNS 解析找到目标服务器,从而访问内容。攻击方式
攻击者通过僵尸网络(如 IoT 设备)生成大量的 DNS 查询请求:- 请求真实的 DNS 记录,模仿合法流量。
- 消耗 DNS 服务器的计算资源和带宽。
- 阻塞合法用户的 DNS 查询。
与 DNS 放大攻击的区别
- DNS Flood:直接向 DNS 服务器发送大量请求,耗尽其处理能力。
- DNS 放大攻击:利用开放的 DNS 服务器,通过伪造源地址放大流量,最终攻击目标受害者。
高带宽僵尸网络的作用
攻击者利用物联网设备(如 IP 摄像头、DVR 盒)构建高带宽僵尸网络,发起高流量攻击。这些设备常因安全防护不足而成为攻击工具。
DNS Flood 的危害
中断服务
- 阻止合法用户访问目标域名,导致业务中断。
- API 或 Web 应用可能因此无法正常运行。
影响范围广
- DNS 是互联网的关键基础设施,攻击可能影响多个依赖同一 DNS 提供商的服务。
难以检测和缓解
- 恶意流量与正常流量难以区分。
- 攻击流量来源广泛,通常由多个伪装的 IP 地址生成。
如何防护 DNS Flood?
1. 使用分布式 DNS 基础设施
- 部署高度分布式的 DNS 网络,确保攻击流量能够被分散吸收。
- 通过 CDN 和边缘节点分担负载,减少对单点服务器的压力。
2. 流量监控和分析
- 实时监控 DNS 查询流量,检测异常模式(如同一 IP 的高频查询)。
- 自动识别并阻止可疑流量源。
3. 限制查询速率
- 配置 DNS 服务器限制每秒允许的查询次数(Rate Limiting)。
- 针对异常请求行为采取速率限制或阻断策略。
4. 启用 DNS 缓存和前置代理
- 利用缓存减少对后端 DNS 服务器的查询负载。
- 前置代理可以拦截和过滤异常查询请求。
5. 实施僵尸网络防护
- 利用僵尸网络信誉数据库屏蔽已知的恶意设备。
- 通过 DDoS 防护服务清洗流量,减少攻击影响。
6. 部署 DNSSEC
- 实现 DNS 查询和响应的签名验证,防止恶意伪造的 DNS 数据。
7. 分级处理请求
- 对关键资源(如权威 DNS 服务器)和次要资源(如递归服务器)进行分级保护。
- 确保关键服务优先处理,降低业务中断风险。
8. 频繁更新 IoT 设备固件
- 针对已知漏洞更新固件,避免设备被攻击者控制用于发起攻击。
总结
DNS Flood 是一种针对 DNS 基础设施的高效攻击手段,旨在通过海量查询使服务器资源耗尽。有效防护需要多层次的安全策略,包括分布式基础设施、流量监控、速率限制和僵尸网络防护。结合专业的 DDoS 缓解服务,可以显著提高 DNS 系统的可用性和抗攻击能力。
TCP 重置攻击
什么是 TCP 重置攻击?
TCP 重置攻击是一种通过伪造 TCP RST(重置)报文,强制终止正常 TCP 连接的攻击方式。攻击者利用 TCP 协议中 RST 报文的特性,通过伪造合法通信双方的消息,欺骗一方或双方提前关闭连接,从而中断数据交换。
TCP 重置攻击的原理
TCP 重置的正常机制
- 当一方检测到无效的 TCP 报文(如序列号错误或非法数据),会发送一个 RST 报文,强制关闭连接。
- 这一机制可以快速释放连接资源,防止占用系统资源的异常情况。
攻击实现
- 攻击者监听目标通信,获取必要的信息(如 IP 地址、端口、序列号)。
- 构造伪造的 TCP RST 报文,使其看起来像来自通信一方的合法报文。
- 发送伪造的 RST 报文到通信双方,强制中断连接。
- 长连接更易受此攻击影响,因为攻击者有足够时间收集信息并伪造报文。
为什么 TCP 易受攻击
- TCP 本身没有身份验证机制,无法验证 RST 报文的来源。
- 攻击者只需要知道目标连接的 IP 地址、端口号和序列号范围即可成功实施攻击。
TCP 重置攻击的影响
中断通信
- 导致应用程序的正常通信中断。
- 对需要长时间保持连接的服务(如视频流、文件传输)影响尤为显著。
降低服务可用性
- 攻击者可以持续发送 RST 报文,使服务端或客户端频繁重连,影响用户体验。
无法验证攻击来源
- 由于报文是伪造的,追踪攻击源头变得非常困难。
如何防护 TCP 重置攻击?
1. 加密通信
- 使用
TLS
等加密协议保护应用层数据,即使连接被重置,敏感信息仍然安全。 - 虽然无法防止 RST 报文本身,但可以确保数据的完整性和安全性。
2. 验证 TCP 报文完整性
- 在应用层实现额外的序列号验证。
- 客户端或服务端在关闭连接前进行额外的协议交互以确认 RST 报文的真实性。
3. TCP 扩展协议
- 使用
TCP-AO
(TCP Authentication Option)等扩展协议对 TCP 报文进行验证,增加伪造难度。
4. 限制网络访问
- 使用防火墙或访问控制列表(ACL)限制通信双方的访问范围,阻止恶意流量的注入。
5. 加大序列号范围
- 随机化 TCP 初始序列号,增加攻击者伪造正确序列号的难度。
6. 缩短长连接的生命周期
- 定期重建连接,减少攻击者干扰的时间窗口。
7. 网络入侵检测和防御
- 部署入侵检测系统(IDS)监控异常 RST 流量。
- 设置阈值以识别并阻止异常频率的 RST 报文。
总结
TCP 重置攻击通过伪造 RST 报文中断通信,是一种利用 TCP 协议设计漏洞的攻击方式。虽然无法完全避免此类攻击,但通过加密通信、验证报文、限制访问和使用网络防护设备等措施,可以显著提高系统的抗攻击能力,保障服务的稳定性和可靠性。
模拟攻击
模拟 TCP 重置攻击的实验步骤
以下是在本地计算机上执行 TCP 重置攻击的完整实验过程,包括建立连接、嗅探流量、伪造重置报文和观察实验结果。
1. 建立 TCP 连接
使用 netcat
工具在本地建立一个 TCP 连接:
启动监听服务
打开第一个终端窗口,运行以下命令:nc -nvl 8000
此命令启动一个 TCP 服务,监听本地端口 8000。
连接到服务
打开第二个终端窗口,运行以下命令:nc 127.0.0.1 8000
此命令连接到第一个窗口启动的服务。
测试连接
在两个终端之间输入一些文本,验证是否可以通过 TCP 连接正常通信。
2. 嗅探流量
编写一个 Python 脚本使用 scapy
来嗅探本地 TCP 连接数据包。
代码示例:
from scapy.all import sniff
# 嗅探规则:监听 lo0 接口,仅捕获端口为 8000 的 TCP 数据包
def packet_callback(packet):
if packet.haslayer('TCP'):
print(f"Sniffed Packet: {packet.summary()}")
sniff(
iface="lo0", # 本地回环接口
filter="tcp port 8000", # 过滤条件
prn=packet_callback, # 数据包处理函数
count=10 # 嗅探数据包数量
)
运行脚本后,发送数据时可以在终端看到捕获到的 TCP 数据包信息。
3. 伪造并发送重置报文
修改 scapy
脚本,伪造一个 TCP 重置(RST)数据包并发送。
关键逻辑:
- 提取嗅探到的 TCP 数据包的关键信息(源 IP、源端口、目标 IP、目标端口、ACK 号)。
- 构造一个 TCP 重置报文,将 RST 标志位置为 1,序列号设置为嗅探数据包的 ACK 号。
- 发送伪造的数据包。
代码示例:
from scapy.all import sniff, IP, TCP, send
def reset_connection(packet):
if packet.haslayer(TCP) and packet[TCP].flags == "A": # 检查是否是 ACK 数据包
src_ip = packet[IP].dst
dst_ip = packet[IP].src
src_port = packet[TCP].dport
dst_port = packet[TCP].sport
seq = packet[TCP].ack
# 构造 TCP 重置数据包
rst_packet = IP(src=src_ip, dst=dst_ip) / TCP(sport=src_port, dport=dst_port, flags="R", seq=seq)
send(rst_packet)
print(f"Sent RST Packet: {rst_packet.summary()}")
sniff(
iface="lo0",
filter="tcp port 8000",
prn=reset_connection,
count=5
)
运行攻击脚本后,在任意终端窗口输入数据,TCP 连接将被强制中断。
4. 进一步实验
调整序列号
- 修改伪造数据包的序列号,加减不同的值,观察目标是否仍然接受重置报文。
- 如果序列号不完全匹配,目标可能会忽略该报文。
使用 Wireshark 观察细节
- 启动 Wireshark,监听
lo0
接口。 - 设置过滤规则:
ip.src == 127.0.0.1 && ip.dst == 127.0.0.1 && tcp.port == 8000
。 - 捕获并分析实验过程中所有的 TCP 数据包,包括伪造的重置报文。
- 启动 Wireshark,监听
加快数据传输
- 在终端快速输入或传输大量数据流,增加流量动态性,观察攻击程序是否还能成功中断连接。
总结
通过以上实验,您可以全面了解 TCP 重置攻击的实施原理和防御难点。可以观察到:
- 序列号的正确性是攻击成功的关键。
- 长连接比短连接更易受到攻击。
- 工具(如 Wireshark)可帮助分析和验证攻击效果。
中间人攻击
什么是中间人攻击?
中间人攻击(Man-in-the-Middle Attack,简称 MITM 攻击)是一种网络攻击方式,攻击者在通信双方之间充当中间人,拦截并可能篡改通信内容,使双方误以为是在直接对话。实际上,整个通信过程都被攻击者监视甚至操控。
中间人攻击的原理
拦截通信
攻击者利用漏洞(如不安全的 Wi-Fi 或网络配置),在通信双方之间插入自己,拦截并转发数据。伪装身份
攻击者分别伪装为通信的两端:- 对客户端,攻击者伪装成服务器。
- 对服务器,攻击者伪装成客户端。
操控通信
攻击者可以:- 被动监听通信内容(如窃取密码、敏感信息)。
- 主动篡改通信内容(如修改交易金额、发送虚假信息)。
中间人攻击的常见形式
网络监听
- 攻击者在不安全的网络(如公共 Wi-Fi)上截获通信流量。
DNS 欺骗
- 伪造 DNS 解析结果,将用户引导至攻击者控制的假冒网站。
HTTPS 劫持
- 攻击者通过伪造证书,冒充 HTTPS 网站,绕过加密保护。
ARP 欺骗
- 在局域网中,攻击者伪造 ARP 数据包,将通信重定向到自己的设备。
如何防范中间人攻击?
1. 使用加密通信协议
- 采用 HTTPS 协议,确保通信内容经过 TLS 加密。
- 检查网站是否使用有效的 SSL/TLS 证书。
2. 验证身份
- 使用双向身份验证(如客户端和服务器双方使用证书)。
- 对通信双方的身份进行严格验证,防止伪装。
3. 避免不安全的网络
- 避免在公共 Wi-Fi 网络上处理敏感信息。
- 使用 VPN 加密网络流量,防止数据被拦截。
4. 使用强密码和多因素认证
- 为账户设置复杂密码,启用多因素认证,降低被攻击后的风险。
5. 检测和阻止可疑行为
- 部署入侵检测系统(IDS)监控网络流量异常。
- 定期更新设备和软件,修复已知漏洞。
6. 启用 DNS 安全机制
- 使用 DNSSEC(DNS Security Extensions)验证 DNS 解析的完整性和真实性。
7. 防护局域网攻击
- 配置交换机启用 ARP 绑定或防御功能,阻止 ARP 欺骗。
摘要算法与完整性保护
为了防止篡改数据,中间人攻击中的一种缓解策略是利用摘要算法(如 SHA-256):
生成数据摘要
- 对原始数据(如合同)生成唯一的散列值(哈希值),该值用于验证数据的完整性。
验证完整性
- 收到数据时,通过同样的算法重新计算散列值,确保收到的数据与原始数据一致。
数字签名
- 结合非对称加密,发送方用私钥签署数据摘要,接收方用公钥验证,确保数据未被篡改且来源可信。
常用的摘要算法
摘要算法是一种将任意长度的输入映射到固定长度输出的加密方法,主要用于确保数据完整性。以下是常用的摘要算法:
1. MD5(消息摘要算法 5)
- 特点:输出 128 位(16 字节)摘要值。
- 优点:速度快、计算简单。
- 缺点:容易发生碰撞(两个不同的输入产生相同的摘要值),已被证明不安全。
- 适用场景:非安全性需求的校验场景(如文件完整性校验)。
2. SHA 系列(安全散列算法)
- 由美国国家安全局(NSA)设计,安全性和性能较 MD5 更高。
常用版本:
- SHA-1:输出 160 位摘要值,但已被证明不够安全,逐渐被淘汰。
- SHA-256:输出 256 位摘要值,适用于密码学场景。
- SHA-512:输出 512 位摘要值,适合高安全需求。
- SHA-3:更现代的散列算法,基于不同的数学结构,抗碰撞能力强。
3. HMAC(基于散列的消息认证码)
- 特点:结合密钥和摘要算法(如 HMAC-SHA256)生成摘要值,进一步提高安全性。
- 适用场景:消息认证、数据完整性校验。
数字签名与证书:进一步保障安全
为解决摘要算法独立存储和可信性不足的问题,引入了数字签名和数字证书机制。
1. 数字签名
定义:
数字签名是一种基于公钥加密的技术,用于验证数据的完整性和来源。
实现过程:
- 发送方对原始数据生成摘要值。
- 使用发送方的私钥对摘要值加密,生成数字签名。
- 发送方将原始数据和数字签名一并发送给接收方。
验证过程:
- 接收方使用发送方的公钥解密数字签名,得到摘要值。
- 接收方对收到的原始数据重新计算摘要值。
- 比较两者是否一致,验证数据的完整性和发送方的身份。
2. 数字证书
定义:
数字证书是由权威机构(CA,证书颁发机构)签发的电子文档,用于证明公钥的真实性。
关键内容:
- 公钥及其归属者信息(如身份信息、域名)。
- 证书颁发机构的签名。
作用:
- 确保通信双方的身份可信。
- 防止中间人攻击(通过伪造公钥冒充他人)。
工作流程:
- 客户端通过 HTTPS 请求服务器的数字证书。
- 客户端验证证书是否由受信任的 CA 签发,确保公钥可信。
- 使用公钥建立安全连接,防止数据篡改或窃取。
安全模型的加强
1. 分离存储与责任
- 将合同和摘要分别存储在不同的机构中,避免单点篡改风险。
- 每个机构仅负责其权限范围内的操作。
2. 多方签名
- 引入多方参与的签名机制(如多重签名)。
- 即便某一方受到攻击,篡改仍然需要获得其他签名方的授权。
3. 区块链技术
- 利用区块链的分布式存储和不可篡改特性,将合同摘要存储在链上。
- 任何更改都会留下完整的审计痕迹,进一步提升安全性。
总结
常用摘要算法(如 SHA-256)在现代应用中依然是重要的数据完整性保障手段。然而,摘要算法无法完全杜绝篡改行为。通过引入数字签名、数字证书、多方签名或区块链等机制,可以进一步增强数据安全性和可信度。未来的安全设计需要技术和组织架构的综合优化,以应对更加复杂的安全威胁。
数字证书和数字签名的作用
数字证书和数字签名基于非对称加密技术,广泛用于确保数据传输的 完整性、真实性 和 不可否认性,是现代网络安全的重要保障。
数字签名的作用
数据完整性
- 确保传输的数据未被篡改。
- 数据在签名前会通过摘要算法(如 SHA-256)生成固定长度的摘要值,即便原文发生微小变化,摘要值也会完全不同。
身份认证
- 验证发送方的身份是否可信。
- 发送方用自己的私钥加密摘要生成签名,接收方用发送方的公钥验证签名,确保数据来源的真实性。
不可否认性
- 发送方无法否认自己发送过数据。
- 私钥只有发送方掌握,因此任何用私钥生成的签名都能证明是由发送方生成的。
数字证书的作用
公钥可信性验证
- 数字证书由权威的证书颁发机构(CA)签发,用于证明公钥的真实性。
- 防止攻击者伪造公钥冒充通信方。
身份认证
- 确保通信双方的身份真实可信。
- 例如,数字证书中包含服务端的公钥、身份信息以及 CA 的签名,验证后确保用户与合法服务器通信。
防止中间人攻击
- 通过验证数字证书,防止中间人伪造证书和公钥,确保通信过程安全。
非对称加密与数字签名的原理
1. 非对称加密
- 公钥:公开的加密密钥,用于加密数据或验证签名。
- 私钥:保密的解密密钥,用于解密数据或生成签名。
核心特性:
- 公钥加密的数据只能由私钥解密。
- 私钥加密的数据只能由公钥解密。
2. 数字签名
签名过程:
- 发送方对原文生成摘要(固定长度的散列值)。
- 使用发送方的私钥对摘要加密,生成数字签名。
- 将原文和签名一并发送。
验证过程:
- 接收方用发送方的公钥解密签名,得到摘要 X。
- 对收到的原文重新计算摘要 Y。
- 比较 X 和 Y:
- 如果相等,证明数据完整且来源可信。
- 如果不相等,表明数据被篡改或签名无效。
数字证书的工作原理
证书结构
数字证书中包含:- 服务端的公钥。
- 服务端的身份信息(如域名)。
- 证书颁发机构(CA)的签名。
验证过程
- 客户端向服务端请求数字证书。
- 验证证书是否由可信 CA 签发(使用 CA 的根证书验证)。
- 验证通过后,使用证书中的公钥建立安全连接。
数字证书和签名的核心价值
确保通信安全
- 通过加密和签名,确保数据在传输过程中不被窃取或篡改。
提供身份信任
- 通过 CA 签发的证书验证通信双方身份,防止伪装。
支撑现代网络协议
- HTTPS、TLS/SSL 等协议基于数字证书和签名,提供互联网通信的基础安全保障。
什么是对称加密?
对称加密是一种加密方式,加密方和解密方使用同一把秘钥(密钥)进行数据的加密和解密。这种方法简单高效,是现代加密技术的基础之一。
对称加密的工作原理
加密过程
- 发送方使用加密算法和秘钥对明文数据进行加密,生成密文。
- 密文是无法直接理解的编码数据,即使被拦截也无法轻易破解。
解密过程
- 接收方使用相同的秘钥和解密算法对密文解密,还原为明文。
- 只有持有正确秘钥的接收方才能解密成功。
对称加密的特点
单一秘钥
- 加密和解密使用相同的秘钥。
- 秘钥的安全性直接决定了加密系统的安全性。
效率高
- 对称加密算法计算量小,适合处理大规模数据。
- 常用于数据传输的速度和性能要求高的场景。
秘钥分发难题
- 需要安全地将秘钥分发给接收方,秘钥泄露会导致系统失效。
- 秘钥分发和管理是对称加密的主要挑战。
常见的对称加密算法
DES(Data Encryption Standard)
- 输出长度:64 位密文,秘钥长度为 56 位。
- 缺点:秘钥长度较短,已被淘汰。
3DES(Triple DES)
- 输出长度:64 位密文,秘钥长度增加到 168 位。
- 安全性比 DES 高,但计算效率低。
AES(Advanced Encryption Standard)
- 输出长度:可选 128 位、192 位或 256 位密文。
- 优点:安全性高、效率高,是目前广泛使用的标准。
RC4
- 一种流加密算法,处理速度快。
- 缺点:已被发现多种漏洞,不推荐使用。
对称加密的应用场景
数据存储加密
- 本地文件加密,例如数据库存储的敏感数据。
网络通信加密
- 用于 VPN(虚拟专用网络)或 SSL/TLS 的数据加密(结合非对称加密分发秘钥)。
无线通信
- 用于 Wi-Fi 加密协议(如 WPA2)。
对称加密的优缺点
优点:
- 算法简单,计算速度快,适合处理大量数据。
- 消耗资源少,尤其适合低性能设备。
缺点:
- 秘钥分发问题:安全传输秘钥给通信双方具有挑战性。
- 扩展性差:当参与通信的节点增多时,管理秘钥的复杂性显著增加。
总结
对称加密是一种快速高效的加密方式,广泛应用于数据存储和传输中。尽管存在秘钥分发的问题,但结合非对称加密用于秘钥交换,可以显著增强其安全性。现代加密协议(如 TLS/SSL)通常将对称和非对称加密结合使用,兼顾安全性与效率。
常见的非对称加密算法有哪些?
非对称加密简介
非对称加密是一种加密方法,使用一对密钥:公钥和私钥。公钥用于加密,私钥用于解密(也可以反过来用于签名验证)。这种方法有效解决了密钥分发过程中的安全问题。
常见的非对称加密算法
RSA(Rivest-Shamir-Adleman)
- 特点:
- 基于大整数分解的数学难题。
- 密钥长度通常较长(如 2048 位或更长)以保证安全。
- 性能较快,但对大数据加密效率较低,通常用于密钥交换或数字签名。
- 应用场景:
- SSL/TLS 加密协议。
- 数字签名和证书。
- 特点:
ECC(Elliptic Curve Cryptography)
- 特点:
- 基于椭圆曲线离散对数问题。
- 相较于 RSA,在提供同样安全级别的情况下,密钥长度更短。
- 计算效率高,适合嵌入式设备和移动设备。
- 应用场景:
- SSL/TLS 协议(现代 HTTPS 普遍采用)。
- 区块链中用于生成钱包地址和数字签名。
- 特点:
SM2
- 特点:
- 中国国家密码标准,基于 ECC 的实现。
- 具有 ECC 的高效特性,同时得到国家认可和支持。
- 应用场景:
- 国内密码应用场景,如金融支付、电子政务等。
- 特点:
非对称加密的优势
- 解决了密钥分发的安全问题。
- 支持数字签名,用于验证消息完整性和身份认证。
总结
- RSA:性能快,广泛应用,但密钥长度较长时效率降低。
- ECC:安全性高,密钥短,效率高,适合现代网络和硬件。
- SM2:中国国密标准,适合国内特定领域。
非对称加密通常结合对称加密使用,在实际应用中实现安全、高效的数据传输。
常见的散列算法有哪些?
散列算法简介
散列算法(哈希算法)是一种将任意长度的输入映射为固定长度输出的算法,输出称为哈希值或散列值。散列算法具有不可逆性和高效性,常用于数据完整性验证、密码存储和数字签名。
常见的散列算法
MD5(Message-Digest Algorithm 5)
- 特点:
- 生成 128 位(16 字节)的散列值,通常以 32 个十六进制字符表示。
- 算法效率高,广泛应用于生成文件校验码和唯一标识。
- 不足:存在碰撞漏洞(不同输入可能生成相同的哈希值),因此不适合安全敏感场景。
- 应用场景:
- 文件完整性校验。
- 唯一性标识(如生成 UUID)。
- 特点:
SHA(Secure Hash Algorithm)
- SHA1:
- 生成 160 位(20 字节)的散列值。
- 安全性较 MD5 提升,但已被证实存在碰撞攻击风险,不推荐用于安全性要求高的场景。
- SHA2:
- 包括 SHA-224、SHA-256、SHA-384 和 SHA-512 等,数字表示生成的散列值位数。
- SHA-256 和 SHA-512 是目前最常用的版本,具有高安全性和广泛支持。
- 应用场景:
- 密码存储(结合加盐)。
- 数字签名和证书。
- SHA1:
SM3
- 特点:
- 中国国家密码标准,生成 256 位散列值。
- 加密强度与 SHA-256 相当,设计符合国家安全要求。
- 应用场景:
- 国内加密场景,如电子政务、金融行业。
- 特点:
散列算法的应用场景
- 密码存储:散列算法存储密码可以防止明文泄露,通常结合加盐(salt)以抵御彩虹表攻击。
- 完整性验证:文件下载时的 MD5 校验,用于检测文件是否被篡改。
- 数字签名:使用散列算法生成消息摘要,结合非对称加密用于验证消息完整性和来源。
总结
- MD5:效率高,但安全性低,适合非安全性场景如文件校验。
- SHA:推荐使用 SHA-256 或 SHA-512,安全性高,适用范围广。
- SM3:国密算法,与 SHA-256 性能和安全性相当,适合国内法规要求的场景。
散列算法不可逆且计算效率高,是密码学的重要组成部分,需根据具体场景选择合适的算法类型。
第三方机构和证书机制有什么用?
第三方机构和证书机制的作用
第三方机构和证书机制的主要目的是解决信任问题,为通信双方提供可信的公钥分发渠道,防止信息篡改和身份伪造。核心作用包括:
- 公钥认证:确保公钥的合法性和来源真实,防止伪造。
- 身份背书:通过权威机构确认身份,增强公钥的可信度。
- 防止抵赖:利用数字签名确保数据来源无法被否认。
工作机制
证书的生成:
- 公钥拥有者(例如 Sum)向权威第三方机构申请证书。
- 第三方机构核实申请人的身份,并生成证书原文,包含申请者的公钥和相关信息(如身份、有效期等)。
- 第三方机构使用自己的私钥对证书原文签名,生成数字签名,形成完整的证书。
证书的验证:
- Mike 收到证书后,用第三方机构的公钥解密证书中的数字签名,得到原文摘要。
- Mike 同时计算证书原文的摘要,验证两者是否一致。
- 如果一致,说明证书确实由该权威机构签发,且内容未被篡改,公钥可信。
信任链
为了避免单一机构失信造成的风险,证书机制引入了多级信任链,逐步增强体系的稳定性。
- 根证书机构:
- 提供根证书,是信任链的起点,通常由全球范围内高度权威的机构担任。
- 二级机构:
- 根证书机构签发二级机构的证书,提供区域或行业内的认证服务。
- 三级机构:
- 二级机构签发三级机构证书,负责具体用户的认证。
验证流程:
- 使用上一级机构的证书公钥验证当前证书的签名,逐级向上追溯至根证书,完成整个链条的验证。
信任链的优势
- 分级管理:分担根证书机构的压力,提升管理效率。
- 风险控制:单点失效风险降低,链条中的欺诈需要所有机构联合造假,成本极高。
- 广泛应用:HTTPS、数字签名和电子政务等广泛使用信任链机制。
总结
- 第三方机构通过数字签名为公钥提供信任背书,解决了公钥分发的信任问题。
- 信任链通过多级认证增强稳定性和安全性,防止单点失效。
- 这种机制广泛用于保障网络通信的安全性,是现代加密体系的核心组成部分。
中间人攻击如何避免?
什么是中间人攻击
中间人攻击(MITM,Man-In-The-Middle Attack)是一种攻击方式,攻击者在通信双方之间拦截并伪装通信内容,使双方误以为直接在安全通信。常见的中间人攻击场景包括伪造 HTTPS 证书、劫持 Wi-Fi 热点等。
避免中间人攻击的方法
客户端不要轻易相信证书
- 客户端在建立 HTTPS 连接时会验证服务器的证书合法性。
- 如果发现证书不可信,浏览器或客户端会提示警告信息,例如“不安全连接”页面。
- 遇到此类情况:
- 不要忽略警告直接继续访问。
- 检查证书的颁发机构、有效期、域名是否匹配。
- 对于敏感操作(如网银、支付),需特别小心,确保证书可信。
App 预埋证书(证书固定,Certificate Pinning)
- 客户端提前将可信的服务器证书或公钥预埋到本地。
- 通信时,客户端会直接与预埋的证书进行匹配,而不是依赖操作系统或第三方机构的信任。
- 优点:
- 即使中间人伪造证书,只要与预埋证书不匹配,通信就会被拒绝。
- 应用场景:
- 移动应用或桌面应用中,特别适合需要高安全性的服务(如金融 App)。
其他防御措施
使用 HTTPS 并验证证书链
- 确保服务器使用有效的 HTTPS 证书。
- 配置正确的证书链,避免客户端因中间证书缺失而信任伪造证书。
开启 HSTS(HTTP Strict Transport Security)
- 通过 HTTP 头部强制客户端仅使用 HTTPS 与服务器通信。
- 防止客户端首次访问时被劫持到不安全的 HTTP。
使用强加密协议
- 确保服务器和客户端支持最新版本的 TLS(如 TLS 1.3),并禁用已知不安全的协议和加密算法(如 SSLv3)。
监控网络和证书状态
- 实时监控网络中的异常流量。
- 定期检查服务器证书的状态,确保未被替换或篡改。
总结
- 核心是通过可信证书和安全协议建立安全的通信链路。
- 证书固定适用于高安全需求的场景。
- 遇到证书警告信息时,需谨慎操作,确保连接的合法性。
DDoS 攻击及应对策略
什么是 DDoS 攻击?
DDoS(Distributed Denial of Service,分布式拒绝服务)是一种通过分布式协作方式,使目标服务器、网络或服务因资源耗尽而无法响应正常请求的网络攻击。
攻击原理:
- 攻击者通过控制大量被入侵的设备(称为“肉鸡”)组成“僵尸网络”。
- 利用“肉鸡”向目标服务器发送大量虚假请求,耗尽其带宽、计算资源或存储空间,导致正常用户无法访问服务。
常见攻击方式:
- ICMP Flood:利用 ICMP 回显请求(Ping)淹没目标系统。
- UDP Flood:发送大量伪造的 UDP 数据包,耗尽目标的带宽。
- NTP Flood:通过放大 NTP(网络时间协议)响应数据量对目标发动攻击。
- SYN Flood:滥用 TCP 协议三次握手阶段,使目标服务器资源耗尽。
- DNS Query Flood:发送大量伪造的 DNS 请求,导致 DNS 服务器崩溃。
- CC 攻击:伪装为正常用户,大量发送耗资源的业务请求。
如何应对 DDoS 攻击?
1. 高防服务器
- 作用:
- 提供高带宽和强大防御能力,抵御大规模流量攻击。
- 适用场景:
- 在线游戏、电子商务、金融行业等对可用性要求高的服务。
- 劣势:
- 成本高,对小型企业不太友好。
2. 黑名单策略
- 作用:
- 阻止攻击流量的源 IP 或特定范围访问服务。
- 劣势:
- 可能误封正常用户,适用于少量攻击源的场景。
- 改进:
- 使用智能分析系统减少误封。
3. DDoS 清洗
- 作用:
- 通过流量监测分析,分离恶意流量并清洗,确保正常流量继续服务。
- 优势:
- 精确清理,影响范围小。
- 实现方式:
- 使用云服务提供商的 DDoS 清洗服务。
4. CDN 加速
- 作用:
- 分散攻击流量,隐藏源站 IP。
- 将用户请求分配到多个 CDN 节点,降低单点压力。
- 优势:
- 提高网站访问速度,提升用户体验。
- 应用场景:
- 静态内容分发(如图片、CSS、JS 等)。
其他防御措施:
- 启用限速机制:
- 限制单位时间内的请求数量。
- 配置防火墙规则:
- 设置访问频率限制和 IP 阻止策略。
- 负载均衡:
- 通过负载均衡器分散流量压力到多个服务器节点。
- 监控和报警:
- 实时监控流量和系统性能,及时发现异常。
总结
DDoS 攻击是一种常见的高威胁网络攻击,常用的应对方法包括高防服务器、黑名单、DDoS 清洗和 CDN 加速等。根据具体业务需求选择合适的防御措施,可以有效降低攻击带来的影响。