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提供了三种安全功能:
- Authentication: 通过保证通信的双方的身份都经过了认证
- Confidentiality: 通过对payload数据的加密来防范未经授权的查看
- Key management: 安全的keys交换
Implementation
- Operating systems: 对主机终端用户提供保护
- Security gateways: firewalls or routers, 比如实现VPN
Application 应用
- 保护分公司内部之间的通信:公司可以在LAN或者WAN搭建VPN来减少对于private networks的依赖
- 保护经过Internet的远程访问:终端用户可以利用IP sec协议来通过ISP来向公司网络发起关城访问请求
- 保护组织之间的通信
- 加强电子商务的安全性:通过对网络流量的加密来增强安全性
使用场景
IPSec既可以安装在组织的网络设备上,例如router or firewall作为内外网的gate来对进出的数据进行加密和解密,也可以安装在主机终端上来保护其对外网的通信。
Benefits
- 将IPSec部署在firewall & router上的时候,可以减轻公司企业对于安全措施的繁重负担,只需要全部交给这些网络设备统一处理就好了
- 并且firewall上的IPsec可以有效的防御绕过,因为外界来的流量都需要使用IPSec并且无处可逃
- IPSec位于传输层下面,因此对于应用来说是透明的
- 不需要修改软件
- 对用户也是透明的,不过一般来说用户也不会察觉到IPSec的存在,一切都是默默进行的
- 有需要的话也可以私用保护单独的用户
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内容则需要访问两个数据库:
- Security association database (SAD)
- Security policy database (SPD)
Security association database (SAD)
- Security association (SA)
- SA是一个SAD中的关键
- 其是一个
单向
的概念,以为着一对通信的双方的单向行为需要单独的SA进行定义 - 其中每一个SA由三个参数进行标识:
- Security Parameters Index (SPI): 方便使用的系统来标识SA
- IP Destination Address: 之前我们提到的“单向”就体现在此,通过destination address来进行标识
- 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
- 收到一个outbound packet之后,IPsec会从SPD中匹配entries
- 如果没有匹配上,那么就会直接被丢弃并产生错误信息
- 如果匹配上了,那么就会决定packet的去处,可能是“丢弃”,也可能直接绕过IPsec(就是我们之前说的没有SA)
- 如果policy是PROTECT的话,就去SAD中寻找匹配的entry,如果没有找到的话,
IKE
就会被调用来创造一个新的SA以及合适的密钥 - 如果SAD中又匹配的entry,那么就会按照SA进行处理,最终发送出去
Inbound Packets
- IPsec首先查看IP packet的header来决定着是一个不安全的IP packet还是已经有IPsec保护的(ESP or AH headers)
- 如果IP packet是不安全的,那么IPsec就会从SPD中寻找匹配的entry,如果第一个匹配到的policy是BYPASS,那么就直接发到TCP/UDP去处理了,如果是其他的,例如PROTECT or DISCARD或者没有匹配到,通通都丢弃,因为是不安全的
- 如果是安全的IPSec包,那么就直接去SAD中找对应的entries以及SA,接着如果匹配到了,那就执行对应的操作(AH/ESP),没有匹配到的话就直接丢弃
Authentication Header (AH)
这一章中,我们具体来看一下AH的组成结构
AH作为一个额外的header,其夹在IP & TCP header之间,提供足够的信息来识别SA,其只提供 Integrity 的保障
- Security Parameters Index (SPI): 方便使用的系统来标识SA
- IP Destination Address: 之前我们提到的“单向”就体现在此,通过destination address来进行标识
- Security Protocol Identifier: 标识选择AH还是ESP
- Sequence number field会从1开始不断增加,
Anti-relay service
relay attack就是攻击者通过重复使用可以通过认证的数据包来进行绕过
假设我们使用这样一个SA
发送者:
- 将sequence number计数器设置为0
- 每一个packet的sequence number进行递增
- 如果达到上限(2^32 - 1),就结束当前这个SA,并重新开启一个SA和新的密钥进行加密
接收者,设置一个 window size W (default = 64)
- 如果接收到一个数据包的sequence number落到window size中,并且 Integrity 检查也没有问题,就标记为valid
- 如果接收到一个数据包落在窗口右边(未来窗口的数据包),同时Integrity 检查也没有问题,标记为valid,同时窗口向右滑动
- 如果接收到的数据包落在窗口左边(以前的数据包)或者认证失败,那么packet会被丢弃,同时记录该事件
通过sequence number就可以有效判断数据包是否是以前的被攻击者用在现在的数据流上
AH modes
原始的TCP segment
-
Transport mode
-
AH插入在IP header与TCP header之间
-
MAC (Message Authentication Code)会对整一个包进行认证
-
提供端对端的IPsec系统保护
-
-
Tunnel mode
- 整个原始数据包都会被进行验证,会有一个新的
outer IP header
- inner(original) IP header中携带最终的 source/destination address
- 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一旦介入:
- ESP header会插入IP header和TCP header之间
- 同时ESP trailer (including Padding, Pad length, and Next Header fields) 将会被添加在IP packet的最后
- 如果添加了认证的选项,那么在最后还会加上
ESP Authentication Data
, 这时对前面所有内容的加密
这里补充一下Padding的作用,主要是当加密算法需要规定数量的bytes的时候,由于原来的内容不够bytes数,就需要添加一些内容来凑齐,这些就会放在ESP trailer里面
- 对于IPv6的数据包:
- 在IPv6中,ESP会被当作是端对端的payload,因此无法被主动的路由,因此就需要附带上具体的路由在header上面
- hop-by-hop路由会被添加在Original IP header与ESP header之间
总的来说Transport mode的操作主要是:
- 传输的数据再加上ESP trailer中padding的数据和整一个Transport-layers segment (e.g., TCP segment)一起被加密并将原本的明文data换成是经过加密的数据。是否开启认证可以自由选择
- 数据包被路由到destination,所有经过的路由器都会处理IP header中的内容,但是不需要也不能处理加密的密文
- destination node根据ESP header中的SPI选择SA来解密,并恢复原本的Transport-layers segment (e.g., TCP segment).
Transport mode的好处在于提供了统一的confidentiality,而不需要每一个application还需要实现自己的加密.
但是有一个缺点就是,路上的路由器还是可以对流量进行分析,这点无法阻止。
- 对于IPv4数据包,IPsec一旦介入:
-
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来与内网主机进行通信的
-
构建一个安全的
outer IP packet
:- 首先构造一个original IP packet其中包含了内网用户的信息
- 然后添加一个
ESP header
- 接着加上
ESP trailer
来padding上合适的信息用于加密算法,接着将原本的data以及ESP trailer
加密,并在末尾添加上认证的信息 ESP authentication - 最后再最前面加上一个新的
new IP header
(如果是IPv6的话还要加上hop-by-hop options
)
-
接着这个
outer packet
将会被路由到目标的防火墙,途径的路由器只能处理最外面的新的IP header以及扩展的headers,但是无法处理中间加密的信息 -
Destination firewall也会先处理外部的几个headers,之后便会根据 ESP header中的
SPI
信息查找对应的SA来进行解密,最终在内网中进行路由,传递到指定的主机上
-
Combining security associations
一般来说,一个SA只会实现AH or ESP其中一个protocol,无法都实现,但是我们之前提到过有一种用法是一个数据流对应很对个SAs来组成IPsec services, 这种很多SAs一起使用的就叫做 security association bundle refers
一般来说,综合的使用方法有两种:
- Transport adjacency
- 将多种安全协议运用在用一种IP packet上而不挑用隧道
- 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,可以用以下方式实现:
- AH
- ESP
- 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的保护