NSE Week 8: IP security

NSE Week 8: IP security

Internet security

Why we need IP security, what the problems in existing TCP/IP protocols?

他们没有提供authentication或者confidentiality的功能,因此黑客可以sniffing也可以spoofing

IPsec

IP security (IPsec)通过提供额外的IP header来增强安全,适用于IPv4 or IPv6

通过在IP层实现这个安全措施,可以既保护那些已经在应用层做了安全措施的应用(例如看全邮件系统,SSL,Kerberos),也可以帮助那些没有安全措施的应用进行防护。

IPsec提供了三种安全功能:

  1. Authentication: 通过保证通信的双方的身份都经过了认证
  2. Confidentiality: 通过对payload数据的加密来防范未经授权的查看
  3. Key management: 安全的keys交换

Implementation

  • Operating systems: 对主机终端用户提供保护
  • Security gateways: firewalls or routers, 比如实现VPN

Application 应用

  1. 保护分公司内部之间的通信:公司可以在LAN或者WAN搭建VPN来减少对于private networks的依赖
  2. 保护经过Internet的远程访问:终端用户可以利用IP sec协议来通过ISP来向公司网络发起关城访问请求
  3. 保护组织之间的通信
  4. 加强电子商务的安全性:通过对网络流量的加密来增强安全性

使用场景

IPSec既可以安装在组织的网络设备上,例如router or firewall作为内外网的gate来对进出的数据进行加密和解密,也可以安装在主机终端上来保护其对外网的通信。

Benefits

  1. 将IPSec部署在firewall & router上的时候,可以减轻公司企业对于安全措施的繁重负担,只需要全部交给这些网络设备统一处理就好了
  2. 并且firewall上的IPsec可以有效的防御绕过,因为外界来的流量都需要使用IPSec并且无处可逃
  3. IPSec位于传输层下面,因此对于应用来说是透明的
    • 不需要修改软件
  4. 对用户也是透明的,不过一般来说用户也不会察觉到IPSec的存在,一切都是默默进行的
  5. 有需要的话也可以私用保护单独的用户

IPsec standard

IPsec 提供三种protocols来完成不同的任务

  • Authentication Header (AH):保护IP数据包的integrity and authenticity(但是不包括 confidentiality)
  • Encapsulating Security Payload (ESP):保护confidentiality,也可以选择性的保护integrity
  • Internet Key Exchange Protocol (IKE): 提供密钥管理

IPsec services

IPsec可以通过选择实现不同的protocol来实现不同的services

IPsec policy

IPsec policy主要是通过直接与IP packet进行互动,而具体的policy内容则需要访问两个数据库:

  1. Security association database (SAD)
  2. Security policy database (SPD)

Security association database (SAD)

Security association (SA)
  • SA是一个SAD中的关键
  • 其是一个 单向 的概念,以为着一对通信的双方的单向行为需要单独的SA进行定义
  • 其中每一个SA由三个参数进行标识:
    1. Security Parameters Index (SPI): 方便使用的系统来标识SA
    2. IP Destination Address: 之前我们提到的“单向”就体现在此,通过destination address来进行标识
    3. Security Protocol Identifier: 标识选择AH还是ESP

所有SA的定义都会放在一个指定的Security Association Database中

  • AH

  • ESP

  • Keys

  • Key lifetimes

  • Lifetime of security association

  • Protocol mode (tunnel or transport)

Security policy database (SPD)

SPD主要定义了那些IP traffic将与那些SA进行配合使用(或者不使用),通常来说使用entry来进行记录:

  • a subset of IP traffic : an SA for that traffic

在复杂的环境中,也可以是多个的entries对应一个SA或者是多个SA需要应用在一个SPD entry上

IP traffic processing

IPsec是一个包一个包的执行过来的

  • 每个出站的IP packet在发出去之前都需要用IPsec进行处理
  • 每一个入站的包在收到之后都需要被IPsec进行处理,然后才能传达的更高层进行下一步处理(TCP/UDP)

Outbound packets

  1. 收到一个outbound packet之后,IPsec会从SPD中匹配entries
  2. 如果没有匹配上,那么就会直接被丢弃并产生错误信息
  3. 如果匹配上了,那么就会决定packet的去处,可能是“丢弃”,也可能直接绕过IPsec(就是我们之前说的没有SA)
  4. 如果policy是PROTECT的话,就去SAD中寻找匹配的entry,如果没有找到的话, IKE 就会被调用来创造一个新的SA以及合适的密钥
  5. 如果SAD中又匹配的entry,那么就会按照SA进行处理,最终发送出去

Inbound Packets

  1. IPsec首先查看IP packet的header来决定着是一个不安全的IP packet还是已经有IPsec保护的(ESP or AH headers)
  2. 如果IP packet是不安全的,那么IPsec就会从SPD中寻找匹配的entry,如果第一个匹配到的policy是BYPASS,那么就直接发到TCP/UDP去处理了,如果是其他的,例如PROTECT or DISCARD或者没有匹配到,通通都丢弃,因为是不安全的
  3. 如果是安全的IPSec包,那么就直接去SAD中找对应的entries以及SA,接着如果匹配到了,那就执行对应的操作(AH/ESP),没有匹配到的话就直接丢弃

Authentication Header (AH)

这一章中,我们具体来看一下AH的组成结构

AH作为一个额外的header,其夹在IP & TCP header之间,提供足够的信息来识别SA,其只提供 Integrity 的保障

  1. Security Parameters Index (SPI): 方便使用的系统来标识SA
  2. IP Destination Address: 之前我们提到的“单向”就体现在此,通过destination address来进行标识
  3. Security Protocol Identifier: 标识选择AH还是ESP
  4. Sequence number field会从1开始不断增加,

Anti-relay service

relay attack就是攻击者通过重复使用可以通过认证的数据包来进行绕过

假设我们使用这样一个SA

发送者:

  1. 将sequence number计数器设置为0
  2. 每一个packet的sequence number进行递增
  3. 如果达到上限(2^32 - 1),就结束当前这个SA,并重新开启一个SA和新的密钥进行加密

接收者,设置一个 window size W (default = 64)

  1. 如果接收到一个数据包的sequence number落到window size中,并且 Integrity 检查也没有问题,就标记为valid
  2. 如果接收到一个数据包落在窗口右边(未来窗口的数据包),同时Integrity 检查也没有问题,标记为valid,同时窗口向右滑动
  3. 如果接收到的数据包落在窗口左边(以前的数据包)或者认证失败,那么packet会被丢弃,同时记录该事件

通过sequence number就可以有效判断数据包是否是以前的被攻击者用在现在的数据流上

AH modes

原始的TCP segment

  • Transport mode

    1. AH插入在IP header与TCP header之间

    2. MAC (Message Authentication Code)会对整一个包进行认证

    3. 提供端对端的IPsec系统保护

  • Tunnel mode

    1. 整个原始数据包都会被进行验证,会有一个新的 outer IP header
    2. inner(original) IP header中携带最终的 source/destination address
    3. new outer header 同样也会收到保护,但是包含的是例如firewall/security gateway的地址

Encapsulating Security Payload (ESP)

ESP可以提供confidentiality, data origin authentication, connectionless integrity, an anti-replay service, and traffic flow confidentiality.

ESP header 指定了加密的算法以及authentication策略

ESP mode

  • Transport Mode ESP

    Transport Mode ESP 一般端对端的安全通信上,可以对IP数据包进行加密和认证。

    • 对于IPv4数据包,IPsec一旦介入:
      1. ESP header会插入IP header和TCP header之间
      2. 同时ESP trailer (including Padding, Pad length, and Next Header fields) 将会被添加在IP packet的最后
      3. 如果添加了认证的选项,那么在最后还会加上 ESP Authentication Data, 这时对前面所有内容的加密

    这里补充一下Padding的作用,主要是当加密算法需要规定数量的bytes的时候,由于原来的内容不够bytes数,就需要添加一些内容来凑齐,这些就会放在ESP trailer里面

    • 对于IPv6的数据包:
      1. 在IPv6中,ESP会被当作是端对端的payload,因此无法被主动的路由,因此就需要附带上具体的路由在header上面
      2. hop-by-hop路由会被添加在Original IP header与ESP header之间

    总的来说Transport mode的操作主要是:

    1. 传输的数据再加上ESP trailer中padding的数据和整一个Transport-layers segment (e.g., TCP segment)一起被加密并将原本的明文data换成是经过加密的数据。是否开启认证可以自由选择
    2. 数据包被路由到destination,所有经过的路由器都会处理IP header中的内容,但是不需要也不能处理加密的密文
    3. destination node根据ESP header中的SPI选择SA来解密,并恢复原本的Transport-layers segment (e.g., TCP segment).

    Transport mode的好处在于提供了统一的confidentiality,而不需要每一个application还需要实现自己的加密.

    但是有一个缺点就是,路上的路由器还是可以对流量进行分析,这点无法阻止。

  • Tunnel mode ESP

    如下图就是Tunnel mode的一个使用场景,每个公司的内网通过tunnel mode 建立的VPN进行互相的通信,而完成不和Internet的路由上的任何其他主机或者设备进行交互。

    那么为了避免沿路的路由器对通信进行流量分析,Tunnel mode ESP将会加密整一个IP packet,然后将 ESP header 加在 Original IP header 前面

    由于Original IP header中包含目标地址以及routing的信息,因此一旦全部被加密之后,途径的路由器就无法处理这些数据包。因此就需要一个新的IP header,其中包含必要的信息,但是不能被进行流量分析

    同时,为了保护内网的主机,ESP会提供内网的边界设备,例如firewall or security gateway

    我们来看一个具体的例子,看看一个外网的主机是如何通过Tunnel mode ESP来与内网主机进行通信的

    1. 构建一个安全的 outer IP packet:

      • 首先构造一个original IP packet其中包含了内网用户的信息
      • 然后添加一个 ESP header
      • 接着加上 ESP trailer 来padding上合适的信息用于加密算法,接着将原本的data以及 ESP trailer 加密,并在末尾添加上认证的信息 ESP authentication
      • 最后再最前面加上一个新的 new IP header (如果是IPv6的话还要加上 hop-by-hop options
    2. 接着这个 outer packet 将会被路由到目标的防火墙,途径的路由器只能处理最外面的新的IP header以及扩展的headers,但是无法处理中间加密的信息

    3. Destination firewall也会先处理外部的几个headers,之后便会根据 ESP header中的 SPI 信息查找对应的SA来进行解密,最终在内网中进行路由,传递到指定的主机上

Combining security associations

一般来说,一个SA只会实现AH or ESP其中一个protocol,无法都实现,但是我们之前提到过有一种用法是一个数据流对应很对个SAs来组成IPsec services, 这种很多SAs一起使用的就叫做 security association bundle refers

一般来说,综合的使用方法有两种:

  1. Transport adjacency
    • 将多种安全协议运用在用一种IP packet上而不挑用隧道
  2. Iterated tunneling:
    • 将多层的安全协议运用在IP tunneling上

Case study

  • Case 1

    端对端的安全(通过交换密钥)

    一般为内网的主机访问外网的服务器提供保护

    可能的组合

    • AH in transport mode
    • ESP in transport mode
    • ESP followed by AH in transport model (an ESP SA inside an AH SA)
    • Any of the above inside an AH or ESP in tunnel mode
  • Case 2

    只提供gateway (routers, firewall, etc.)之间的安全通信,主机不需要实现IPSec,因此在security gateway之后的网络中不提供任何保护

    VPN就是其中一种应用

    同时采用IP tunneling,可以用以下方式实现:

    1. AH
    2. ESP
    3. ESP加上authentication选项(AH是没有的)

  • Case 3

    Case3可以被看作是Case 1 加上Case2,即在Case2的IP tunneling所提供的 security gateways之间的保护的基础上,又加上了case1中的点对点的保护措施,通过提供端对端的SAs组合来实现内网中的保护

  • Case 4

    使用场景一般是外网的主机需要访问在security gateway中所保护的内网中的主机

    • 远程主机会与security gateway之间建立 IP tunneling
    • 同时security gateway也会与内网的主机建立SAs的保护

Licensed under CC BY-NC-SA 4.0
Last updated on May 29, 2022 23:03 +0100
comments powered by Disqus
Cogito, ergo sum
Built with Hugo
Theme Stack designed by Jimmy