IPSec作为主流IP安全协议之一,在单播环境下,特别是在VPN场景中应用广泛。但是在组播环境貌似看到的不多,通过RFC4301了解到IPSec首先是支持组播的,即通过手动配置的方式可以实现组播包加密的功能,简单来说就是在SPD手动添加一个策略,例如目标IP地址为224.11.11.11的组播包,通过SA1加密,SA1中又手动配置了组加密密钥、组校验密钥等参数,这样假如有10个组成员,就有10个相同的SA1,共同使用相同的组加密密钥、组校验密钥等,从而实现了组播包的安全传输。这样做的弊端也是显而易见的,安全性低,没有SA的更新,密钥容易泄露。因此RFC4301中针对组播又引入了RFC3740,RFC3740其实是一个针对大型组播的安全框架文档,并不是专门针对IPSec,而RFC5374才是正真的IPSec对组播的扩展说明文档,对这几个文档稍微看来一下,IPSec组播的结论大致如下:
IPSec与组播的关系
应该是组播的概念大于IPSec,即先有组播的环境,靠IPSec加密组播包,而不是通过IPSec实现组播的功能。在RFC3740中明确说明了安全组播与IP组播是独立的关系,即加入安全组是由一个安全设备管理(GC)的,而加入IP组是由组播路由器管理的,这两者是独立的。这也就意味着一个发送者如果没有加入安全组,他其实也能发送组播包,只不过没有加密,或者被IPSec网关丢弃了,但并不影响他加IP组和收发IP组播包的功能。加入安全组后,就有组密钥了,IP组播包被加密传输,其路由过程其实还是由组播路由协议和组播路由器完成的,IPSec和组播安全框架并不负责组播包的路由。如果原来的通信节点不能使用组播通信,那么使用IPSec组播后,这些节点依然不能使用组播通信,不像单播,使用隧道封装可以使原来无法直接通信的节点通过隧道连接起来。
IPSec组播与单播的关系
IPSec组播与单播从通信过程上说是没有关系的,也就是IPSec组播通信时可以完全不用实现IPSec单播通信的过程,只用IPSec保护组播通信,不需要实现IPSec的单播通信过程。当然,也不可能是一点关系都没有,SAD、SPD、PAD这些概念要扩展到组播上,形成组播通信相关定义。
GCKS
GCKS是RFC3740的概念,定义如下“The Group Controller and Key Server (GCKS) represent both the entity and functions relating to the issuance and management of cryptographic keys used by a multicast group. The GCKS also conducts user-authentication and authorization checks on the candidate members of the multicast group.”由此可见,GCKS主要负责组成员、组策略和组密钥的管理,它并不属于组成员,因此也不负责组播包的加密和转发。GC和KS可以在不同的实体上,为了简单部署,就把GCKS统一在一个实体上了。GCKS类似于一个服务器,部署在组播网络中,唯一的要求是发送者和接收者都能访问到他,以便执行认证过程,具体的组播数据包可以不经过GCKS。GCKS可以不具备IPSec功能。
SA
SA是单播中重要的概念,组播SA相当于对单播SA进行了扩展,如上图所示,组播SA可以分为三类:
注册SA:由组播密钥管理协议产生,发送者和接收者是IPSec设备(IPSec设备指具备IPSec定义SAD、SPD、PAD等功能,能进行AH/ESP的封装),发送者和接收者要加入安全组时都要到GCKS进行认证,认证的协议是组播密钥管理协议,有专门的RFC可以参考,不是单播的IKE。需要说明的是GCKS并不一定是IPSec设备,GCKS只要和组成员能跑组播密钥管理协议就行了,它不负责组播包的转发。发送者、接收者和GCKS通过组播密钥管理协议进行认证,认证成功后组播密钥管理协议会产生一个注册SA,注意这个注册SA和单播的IKE SA没有关系。这个注册SA就是一个安全通道,由组播密钥管理协议定义,GCKS通过这个SA下发更新SA参数和数据SA参数到认证成功的组成员。这个SA是单播双向的安全通道。
数据SA:这个就是加密组播包的SA,也就是IPSec ESP加密组播包时使用的SA。他由GCKS产生,发送者通过这个SA加密组播包,就是ESP封装,完了接收者解封即可。注意GCKS自己不使用数据SA,组播包也不需要经过GCKS,因为GCKS是一个安全设备,不是组播路由设备,简单的可理解为把GCKS从网络中拿掉,原来的IP组播通信丝毫不受影响。
更新SA:这个SA参数是由GCKS在认证完成后通过注册SA下方的,是由GCKS到组成员的一个组播,作用就是更新数据SA,类似与单播IPSec的SA更新,只不过过程更复杂,更新过程和方法是由组播密钥管理协议定义。
数据SA的使用
组播中可以有多个发送者,此时对于组策略需要定义,是所有发送者使用同一个SA,还是每个发送者使用各自的SA,这两种方案会影响到部分功能。
组播的隧道封装