网络协议安全
ARP
- ARP窃听
- 从ARP的协议过程来看,ARP请求消息将通过交换机或集线器以广播形式进行发送,因此网络上所有主机均可以收到ARP请求消息
- ARP欺骗
- 如果某个ARP消息中的IP-MAC对是不真实的,则造成ARP欺骗攻击(ARP Spoofing),或称为ARP污染攻击(ARP Poisoning)
- GARP滥用攻击
- 者利用GARP技术,主动发送虚假的GARP请求消息(即伪造的IP地址和MAC地址的映射)
防御
- 采用静态绑定的方式防止ARP欺骗
- 手工绑定IP-MAC映射
- 采用ARP代理服务器
- 以引入可信的ARP代理服务器(Proxy ARP),对本网络中或跨网段的ARP请求提供服务
- 在网络设备上对ARP消息进行检测和控制
- 禁用GARP功能
IP
- IP窃听
IP协议在传输过程中没有加密
- IP地址假冒攻击
任意节点均可以构造IP分组
- IP碎片攻击
攻击者可以利用IP协议的拆包合包,将IP包切分为非常小的碎片,然后发送给被攻击目标
防御
- 入口过滤
过滤掉进来的非法IP地址的分组
- 出口过滤
过滤掉发出去的非法IP地址的分组
- IP回溯
追踪IP分组的路径
TCP
- SYN泛洪攻击(SYN Flooding)
这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式
- ACK泛洪攻击(ACK Flooding)-随机IP
- ACK泛洪攻击(ACK Flooding)-伪造IP
- 序列号预测攻击
- LAND攻击
UDP
- 假冒
- 劫持
- 泛洪
安全协议技术
安全协议是在消息交换和处理过程中使用了若干密码算法的协议
- 按目的
- 密钥交换协议
- 认证协议
- 电子商务协议
- 按参与者
- 仲裁协议
- 借助于一个称之为仲裁者的可信第三方(Trusted Third Party)来完成消息交换
- 裁决协议
- 裁决人必须是协议主体均信赖的可信第三方,但是它不需要参与协议的整个过程,只有当协议中出现争议之后,裁决人才参与到协议中来
- 自动执行协议
- 议不需要任何第三方(如仲裁者和裁决者)的参与,在协议主体之间完成协议过程
- 仲裁协议
安全协议缺陷
攻击者模型
攻击者可以以各种方式来获取到协议主体之间的通信信息,Dolev-Yao 攻击者模型假设攻击者具有的能力:
- 截获并延迟消息的发送
- 截获并重新发送消息到任意接收者
- 截获并修改消息,并可转发给任意接收者
- 可以产生新的消息(包括新鲜的消息)
- 可以对消息进行分离
- 可以对多个消息进行组合
- 知道密钥后可解密消息和重新加密消息
- 可以查看和掌握协议相关的公用信息
由于存在攻击者,因此设计一个安全的协议是非常困难的
常见缺陷
- 基本协议缺陷:协议中没有或者很少考虑对攻击者的防范而引发的协议缺陷(如TCP/IP协议的安全缺陷问题等)
- 陈旧消息缺陷:在协议设计过程中,未考虑消息的时效性(即新鲜性),从而使得攻击者可以利用协议过程中产生的过时消息来对协议进行重放攻击
- 并行会话缺陷:协议设计对仅考虑单个协议执行的情况,对多个协议(或同一个协议的多个运行实例)并行会话缺乏考虑,使得攻击者可以相互交换适当的协议消息来获得更为重要的消息
- 内部协议缺陷:协议中缺少足够的信息让协议参与者能够区分消息的真实性而导致缺陷
- 密码系统缺陷:协议中使用的密码算法的安全强度问题导致协议缺陷
中间人攻击
攻击者位于协议通信双方中间而发动的攻击
重放攻击
指攻击者利用其消息再生能力生成诚实用户所期望的消息格式,并重新发送,从而达到破坏协议安全性的目的
- 协议轮内攻击
- 协议轮外攻击
对策
- 挑战应答机制
- 挑战者能够通过他自己输入消息的新鲜性来验证应答者通信的真实性
sequenceDiagram participant Alice as Alice(挑战者) participant Bob as Bob(应答者) Alice->>Bob: 这是包含新鲜随机数(Nonce)的挑战 Bob->>Alice: 这是对该新鲜随机数(Nonce)进行变换后的应答
- 时间戳机制
- 指发送者在消息中嵌入发送消息的本地时刻,而接收者在消息达到后,通过对比消息中所包含的时间信息和本地时间信息的差值,来决定该消息是否为新鲜消息
sequenceDiagram Alice ->> Bob: 这是包含时间戳的消息 Bob ->> Alice: 这是对时间戳进行变换后的消息
- 序列号机制
- 协议主体之间首先协商一个一致的初始序列号协议过程中每条协议消息均带上序列号,每条消息的序列号必须进行保护
交错攻击
平行会话攻击
反射攻击
当一个诚实的主体给某个意定的通信方发送消息时,攻击者截获该消息,并将该消息返回给消息的发送者
类型错误攻击
攻击者欺骗某个主体,使得他把一次性随机数、时戳或者身份等信息嵌入到某个密钥中去,从而导致协议安全性被破坏
姓名遗漏攻击
如果与消息相关的主体的名字不能从消息中推断出来,则攻击者利用此缺陷所发动的攻击称之为“归因与姓名遗漏攻击”
安全协议设计原则
- 消息独立性原则
- 即消息的含义应该是一目了然,且消息含义的翻译直接通过该消息就可以完成
- 消息前提准确原则
- 消息所依赖的条件必须明确地定义出来,从而使得协议的评价者知道这些条件是否可以接受。
- 协议主体身份标识原则
- 如果协议主体的身份对于理解消息的含义是必须的,那么协议主体身份就应该在消息中明确地标识出来
- 加密目的明确原则
- 必须使用加密,则必须明确加密在协议安全中的作用和目的
- 签名原则
- 如果在一个安全协议中需要同时进行加密和签名,一般的原则是先加密后签名
- 随机数使用原则
- 对抗重放攻击,还是用来绑定时间上邻接的两条消息