网络安全协议总复习 Part2

IPSec-IKE#

IKE (Internet Key Exchange): 因特网密钥交换协议, 是一个以受保护的方式动态协商 IPsec SA 的协议.

IKE 的功能: 使用某种长期密钥进行双向认证, 并建立短期会话密钥

IKEv1#

分为两个阶段:

  • 为建立 IKE 本身使用的安全信道而相互交换 SA (采用 ISAKMP)——ISAKMP SA (双向)
  • 在第一阶段建立的安全信道基础上交换 IPSec 通信中使用的 SA——IPSec SA (单向)

使用了 ISAKMP 框架, 希望独立于具体的密钥协商算法; 部分使用了 Oakley 协议和 SKEME 协议.

ISAKMP 框架负责规定如何发包, 如何建立安全信道等, Oakley 负责用 DH 算法协商密钥, SKEME 提供了一些特殊的密钥交换机制, 比如如何匿名, 如何快速刷新密钥.

第一阶段: 目的是简历 ISAKMP SA (安全通道)

步骤:

  1. 协商安全参数
  2. DH 密钥交换
  3. 实体认证

交换模式:

  • 主模式 Main Mode, 在 IKEv1 中必须配置主模式
  • 野蛮模式 Aggressive Mode: 用来简化规程和提高处理效率

认证方式: 预先共享密钥 (Pre-Shared K, PSK), 数字签名 (DSS 或 RSA), 公钥加密 (RSA 或 ElGamal), 修订的公钥加密方式

主模式使用六条报文:

野蛮模式只使用三条:

主模式在加密后才发送身份, 野蛮模式在第一步直接明文发送身份.

如果两边都是固定公网 IP, 首选主模式, 安全性最高; 如果有一边是动态 IP (比如家庭宽带拨号连总部, 且使用 PSK 认证), 通常必须妥协使用野蛮模式.

SKEYID#

  • SKEYID: 一个衍生自仅有通信双方知道的秘密密钥信息的密钥串.
  • SKEYID_e: ISAKMP 用来保护它的消息保密性的密钥信息
  • SKEYID_a: ISAKMP 用来认证它的消息的密钥信息
  • SKEYID_d: 用来在第二阶段协商中为非 ISAKMP SA生成密钥的密钥信息

公钥加密认证存在的问题: 采用了四次公钥加/解密操作, 耗费计算资源, 与签名认证算法相比, 多了两次加/解密.

修改方法: 采用修正的公钥加密认证

IKEv2#

数据结构和协议存在进一步简化的空间, 避免使用大强度的密钥和减少频繁协商的次数, 应该减少和简化交互次数.

  • 优化认证方式, 认证机制中的修改只影响单一的认证载荷, 而非重构整个交换
  • 通过消息成对 (请求和确认)+使用序列号, 使得协议更加可靠, 从而降低可能的错误状态

所有的 IKE 通信都是由消息对组成: 请求和应答.

IKEv2 包括三个阶段:

  • 初始交换阶段: 建立 IKE 本身使用的安全信道而相互交换 SA——IKE SA (双向) 和最初的 CHILD_SA, 包含两对消息: IKE_SA_INIT (确定算法, 共享密钥), IKE_AUTH (完成身份认证并建立防伪通道)
  • CREATE_CHILD_SA 阶段: 更新 IKE SA, 或者更新和创建一个新的 CHILD_SA, 一对消息
  • INFORMATIONAL 交换阶段: 用于删除 SA, 发送错误通知, 检查 IKE_SA, 一对消息的存活性等.

改进的 DH 密钥交换#

传统的 D-H 交换存在 DoS 攻击, 重放攻击和中间人攻击的风险.

DoS 攻击的应对:

  • IKEv2 的固定头标中包含各 8 字节的发起者 SPI 和响应者 SPI
  • 通过定义携带 Cookie 的辅助交换抵御常见的来自虚假 IP 地址的 DoS 攻击, 防止 SYN Flooding 攻击
  • IKEv2 中消息成对出现, 仅发起方负责重传事件, 响应者不必对响应消息进行重传, 除非收到重传请求. 这样可以避免同时发生重传, 造成资源的浪费, 同时也可以防止攻击者截获消息后, 伪装成发起者不断发起重传请求, 耗费协商双方的资源
  • IKEv2 只通过两种情况判断对方是否失效: 一种是重复尝试联系对方, 直到应答时间过期; 另外一种是收到对方的不同的 IKE_SA 加密保护的 INITIAL_CONTACT 通知消息

SSL/TLS 基本协议#

SSL 协议族#

Secure Sockets Layer, 安全套接字层, 具有加密保护传输数据以及数据源认证和鉴别通信实体的功能.

SSL 解决的问题:

  • 客户对服务器的身份认证
  • 服务器对客户的身份认证
  • 建立服务器与客户之间安全的数据通道

提供的安全服务:

  • 用户和服务器的合法性认证
  • 传输数据的机密性
  • 传输数据的完整性

SSL 并不是单一的一个协议, 而是由两层协议组成的集合. 底层是记录协议 (负责数据的分块, 加密和传输), 上层包括握手协议 (负责双方验证身份并协商加密密钥), 改变密码规格协议, 告警协议, 用户数据.

SSL 的工作原理:

  • 采用握手协议建立客户与服务器之间的安全通道, 该协议包括双方的相互认证, 交换密钥参数
  • 采用告警协议向对端指示其安全错误
  • 采用改变密码规格协议告知改变密码参数
  • 采用记录协议封装以上三种协议或应用层数据

加密记录的产生方式:

序列号初始为 0, 随着数据包累加 1, 不需要进行传输.

会话重用: SSL/TLS 认为会话通常具有较长的生命期, 在此之上需要在会话基础上容易派生出多个连接. 在主密钥的基础上派生出多个连接中使用的相关密钥.

Bob 返回相同的 SessionID 代表同意会话重用, 返回不同的 Session 则和未进行重用的情况一样操作.

SSL 中主密钥 48 字节, TLS 中主密钥 48 字节. master_secret 总是 48 字节长, 而 pre_master_secret 长度不定, 取决于密钥交换算法

完整 SSL 会话握手协议#

  1. 建立安全协商, 客户发送 client_hello, 包括版本, 随机数, 会话 ID, 服务器发送 server_hello, 包括服务器端随机数, SessionID (考虑会话重用)
  2. 服务器认证和密钥交换
  3. 客户鉴别和密钥交换
  4. 结束, 客户用本次连接协商的算法, 密钥参数发送一个 finished 消息, 这条消息可以检查密钥交换和鉴别过程是否已经成功. 其中包括一个校验值, 用 master_secret 作为完整性密钥, 对所有以来的消息进行校验.

安全性分析:

  • 抵御监听和中间人攻击
  • 无法抵御流量数据分析攻击, 但 TLS 可以
  • 抵御截拼攻击
  • 抵御重放攻击
  • 抵御密码回滚攻击

可能存在的问题: 密钥管理问题, 加密强度问题, 数字签名问题, 传输效率问题

防火墙与 NAT#

防火墙#

  • 内部和外部之间的所有网络数据流必须经过防火墙;
  • 只有符合安全策略的数据流才能通过防火墙;
  • 防火墙自身需要具备抗攻击能力.

硬件+软件+控制策略

防火墙策略:

  • 最小权限
  • 默认拒绝
  • 日志审计

两大要求:

  • 保障内部网安全
  • 保证内部网同外部网的连通

控制能力:

  • 服务控制: 确定哪些服务可以被访问;
  • 方向控制: 对于特定的服务, 可以确定允许哪个方向能够通过防火墙;
  • 用户控制: 根据用户来控制对服务的访问;
  • 行为控制: 控制一个特定的服务的行为.

具体功能:

  • 访问控制: 隔断, 过滤, 代理
  • 状态检测
  • 加密
  • 授权认证
  • 地址翻译 (NAT)
  • VPN
  • 负载均衡
  • 内容安全: 病毒扫描, URL 扫描, HTTP 过滤
  • 日志记账, 审计报警
  • 攻击防御

可以过滤的特性信息:

  • IP 地址和协议字段
  • 应用程序协议
  • 用户身份
  • 网络活动

分类:

  • 包过滤型防火墙
  • 状态检测防火墙
  • 应用级网关型防火墙
  • 代理服务型防火墙 (电路级网关)
  • 复合型防火墙

包过滤型防火墙#

对于每个进来的包, 适用一组规则, 然后决定转发或者丢弃该包. 往往配置成双向的 (出站和入站).

过滤的规则以 IP 和传输层的头中的域 (字段) 为基础, 通常包括源和目的 IP 地址, IP 协议域, 源和目的端口号 (五元组), 接口.

过滤器往往建立一组规则, 根据 IP 包是否匹配规则中指定的条件来做出相应的决定. 如果匹配到一条规则, 则根据此规则决定转发或者丢弃; 如果所有规则都不匹配, 则根据缺省策略.

两种缺省策略:

  • 默认允许: 一切未被禁止的就是允许的
  • 默认拒绝: 一切未被允许的就是禁止的 (RFC2979 推荐)

缺点:

  • 正确制定完全符合安全特性的规则并不容易
  • 无状态监测, 无法跟踪连接的上下文, 易受到 ACK 欺骗攻击
  • 不可能引入认证机制

状态检测防火墙#

通过建立一个出网的 TCP 连接目录 (连接状态表) 而加强 TCP 数据流的检测规则, 报文过滤机制只允许那些和连接记录目录中某个连接匹配的数据流通过防火墙.

例如, 对于简单 HTTP, 包过滤对于进入的包必须开放以下规则:

  • 所有源 TCP 端口为 80, IP 地址任意, 目标为内部 IP, 端口号大于 1024.

容易受到攻击.

状态检测防火墙只需要配置一条出站规则, 例如:

  • 允许内部任意 IP 访问外部任意 IP 的 TCP 80 端口

会自动放行对应连接的数据.

应用级网关型防火墙#

应用级网关 (Application Level Gateways) 是在应用层上建立协议过滤和转发功能. 它针对特定的网络应用服务协议使用指定的数据过滤逻辑, 并在过滤的同时, 对数据包进行必要的分析, 登记和统计, 形成报告.

包过滤和应用网关防火墙有一个共同的特点, 就是它们仅仅依靠特定的逻辑判定是否允许数据包通过. 一旦满足逻辑, 则防火墙内外的计算机系统建立直接联系 (区别于后面提到的代理服务型防火墙), 防火墙外部的用户便有可能直接了解防火墙内部的网络结构和运行状态, 这有利于实施非法访问和攻击.

代理服务型防火墙#

其特点是, 针对特定应用, 将所有跨越防火墙的网络通信分为两段. 防火墙内外计算机系统间应用层的链接, 由两个终止代理服务器上的链接来实现, 外部计算机的网络链路只能到达代理服务器, 从而起到了隔离防火墙内外计算机系统的作用.

优点:

  • 允许用户直接访问 Internet
  • 易于记录日志

缺点:

  • 代理更新速度较慢: 新的服务不能及时地被代理
  • 代理配置复杂: 每个被代理的服务都要求专门的代理软件模块
  • 影响通信质量: 客户需要对软件修改, 重新编译或者配置, 且有传输时延
  • 有些服务要求建立直接连接, 无法使用代理
  • 代理服务不能避免协议本身的缺陷或者限制

针对每一个服务都需要编写模块或者单独的程序

复合型防火墙#

屏蔽路由器型结构

屏蔽主机结构: 包过滤路由器和堡垒主机一起构成安全系统 (逻辑隔离)

双宿主主机

屏蔽子网结构

NAT#

NAT 将数据包中的端口号和专用的 IP 地址换成它自己的某个端口号和公用的 IP 地址, 然后将数据包发给外部网络的目的主机, 同时会记录一个跟踪信息在映射表中, 以便向客户端发送回答信息时的反映射.

SNAT Source Network Address Translation, 即源网络地址转换. 修改网络数据包的源 IP 地址. 它最常见的应用场景是让局域网内的多台设备共享一个或几个公网 IP 地址来访问外部的互联网.

对于来自 NAT 协议的传出数据包, 源 IP 地址 (专用地址) 被映射到 ISP 分配的地址 (公用地址), 并且 TCP/UDP 端口号也会被映射到不同的 TCP/UDP 端口号, 建立映射表信息.

对于到 NAT 协议的传入数据包, 根据映射表信息, 目标 IP 地址 (公用地址) 被映射到源 Internet 地址 (专用地址), 并且 TCP/UDP 端口号被重新映射回源 TCP/UDP 端口号.

DNAT 目的网络地址转换, 端口映射.

我觉得这玩意会考大题.