智简园区交换机MACsec技术白皮书.docx
《智简园区交换机MACsec技术白皮书.docx》由会员分享,可在线阅读,更多相关《智简园区交换机MACsec技术白皮书.docx(18页珍藏版)》请在冰点文库上搜索。
智简园区交换机MACsec技术白皮书
华为智简园区交换机MACsec
技术白皮书
前言
摘要
MACsec(802.1AE)提供同一个局域网内,设备端口MAC层之间的安全通信服务,主要包含以下方面:
数据机密性、数据完整性、数据来源真实性以及重放保护。
关键词
MACsec802.1AE
1概述
MACsec(MediaAccessControlSecurity)定义了基于IEEE802局域网络的数据安全通信的方法。
MACsec可为用户提供安全的MAC层数据发送和接收服务,包括用户数据加密(Confidentiality)、数据帧完整性检查(Dataintegrity)、数据源真实性校验
(Dataoriginauthenticity)及重放保护(Replayprotection)。
MACsec主要涉及IEEE802.1AE和802.1X两个协议规范:
IEEE802.1AE-2006定义了数据封装、加密和认证的帧格式;802.1X-2010中的MKA(MACsecKeyAgreement)定义了密钥管理协议,提供了Peer-to-Peer方式或Group方式的密钥建立机制,使用MKA协议协商生成的密钥对已认证的用户数据进行加密和完整性检查,可以避免端口处理未认证设备的报文或者未认证设备篡改的报文。
MACsec不是对现有端到端IPSec、TLS等三层安全技术的替代,而是它们的互补技术。
MACsec使用二层加密技术,提供逐跳设备的数据安全传输,适用于政府、军队、金融等对数据机密性要求较高的场合,如局域网两台交换机设备之间经过光传输设备,通过MACsec加密技术可保证数据在中间传输设备上安全传输。
2MACsec技术原理
2.1MACsec典型组网模式
MACsec常用的组网模式有:
面向主机点到点模式、面向设备点到点模式。
2.1.1面向主机点到点模式
如图2-1所示,面向主机点到点模式用于保护Client主机和设备之间的数据帧传输。
图2-1面向主机点到点模式
该组网模式包括以下三个组成元素:
●客户端(Client)
客户端是请求接入局域网的用户终端,由局域网中接入设备对其进行认证,并执行
MACsec密钥协商和报文加密功能。
●接入设备(Device)
接入设备控制客户端的接入,通过与认证服务器的交互,对连接的客户端进行802.1X
认证,并执行MACsec密钥协商和报文加密功能。
●认证服务器(AuthenticationServer)
认证服务器通常是AAA服务器,用于对客户端进行Radius认证、授权和计费。
客户端通过认证后,认证服务器为客户端和接入设备分发密钥,用于后续的MACsec密钥协商。
2.1.2面向设备点到点模式
如图2-2所示,面向设备点到点模式用于保护两台设备之间的数据帧传输。
该模式下,无客户端和接入设备角色之分,可以不需要认证服务器,互连的两台设备可直接通过命令行配置CAK密钥进行MACsec密钥协商和报文加密功能。
图2-2面向设备点到点模式
☛说明
华为交换机MACsec暂不支持面向主机点到点模式,支持面向设备点到点模式,本文后续主要介绍该模式原理。
2.2MACsec基本概念
ØMKA
MKA(MACsecKeyAgreementprotocol)用于MACsec数据加密密钥的协商协议。
ØCA
CA(SecureConnectivityAssociation,安全连接关联)指通过一个LAN互连的支持
MACsec的全连接的端口集合。
CA由MKA创建和维护,CA成员称为CA的参与者。
ØCAK
CAK(SecureConnectivityAssociationKey,安全连接关联密钥)不直接用于数据报文的加密,由它和其他参数派生出数据报文的加密密钥。
CAK可以在802.1X认证过程中下发,也可以由用户直接静态配置。
ØCKN
CKN(SecureConnectivityAssociationKeyName,安全连接关联密钥名称)是对应CAK的名称。
ØSC
SC(SecureChannel,安全通道)是CA参与者之间用于传输MAC安全数据的安全通道。
每个SC提供单向点到点或点到多点的通信。
如对于点对点的两台设备A和设备B,A到B单向数据转发链路可认为一个SC(a),B到A单向数据转发链路可认为另外一个SC(b)。
ØSCI
SCI(SecureChannelIdentifier,安全通道标识符)是由6字节的MAC地址和2字节的PortIdentifier组成,唯一标识系统内的安全通道。
ØSA
SA(SecureAssociation,安全关联)是SC安全通道的安全参数集合。
包括对数据进行加密算法套件、进行完整性检查的密钥等。
一个安全通道中可包含多个SA,每一个SA拥有一个不同的密钥,这个密钥称为SAK。
ØSAK
SAK(SecureAssociationKey,安全关联密钥)由CAK根据算法推导产生,用于加密安全通道间传输的数据。
MKA对每一个SAK可加密的报文数目有所限制,当使用某SAK加密的PN耗尽,该SAK会被刷新。
例如,在10Gbps的链路上,SAK最快4.8分钟刷新一次。
ØICV
ICV(IntegrityCheckValue,完整性校验值)是报文完整性检验值,在报文发送端,通过某种算法对报文数据单元计算产生一个检验值,将此检验值放在报文的尾部,报文接收端通过相同算法得到ICV值与报文携带的ICV进行比对,如果这两个ICV相同说明报文没有被修改,否则该报文被丢弃,保证了报文的数据完整性。
ØICK
ICK(ICVKey,ICK密钥)由CAK根据算法推导产生,只用于计算MKA协议层面报文的ICV值,而数据层面没有专门的ICK。
ØKEK
KEK(KeyEncryptingKey,密钥加密密钥)由CAK根据算法推导产生,用于加密SAK,通过MKA密钥协议报文将SAK密钥发送给同一个CA内的参与者,防止用于数据加密的SAK在传输过程中被窃取。
ØPN
PN(PacketNumber,报文编号)对应SECTAG中的一个字段,发送方发报文每次按1递增,用于接收方进行重放保护,当SA的PN达到0xFFFFFFFF时,SAK必须要进行切换,以10GE链路为例,最快4.8分钟PN就会耗尽,一般PN即将耗尽时(假设PN达到0xC0000000),也可以对SAK进行切换。
ØKeyServer
KeyServer决定加密方案和进行密钥分发的MKA实体。
ØSupplicant
选举出KeyServer之后,Supplicant是确定为非KeyServer的实体。
ØConfidentialityOffset
指加密偏移,取值{0,30,or50},SECTAG后面的ConfidentialityOffset个字节不加密,目的是为了适应某些需要识别IPv4/v6头的应用(比如负载均衡)。
ØMACsecMode
指加密模式,包含None(即不加密,不校验,不封装)、Normal(即既加密又校验),Integrity-only(只做完整性验证、不加密),默认为None。
2.3MACsec运行机制
MACsec运行机制主要分为三个阶段:
CAK获取、MKA密钥协商、MACsec数据加解密。
如图2-3所示,面向设备点到点MACsec组网运行机制,网络管理员在两台设备上通过命令行预配置相同的CAK,两台设备会通过MKA协议选举出一个KeyServer,KeyServer决定加密方案,KeyServer会根据CAK等参数使用某种加密算法生成SAK数据密钥,由KeyServer将SAK分发给对端设备,这样两台设备拥有相同的SAK数据密钥,可以进行后续MACsec数据报文加解密收发。
图2-3面向设备点到点MACsec运行机制图
如图2-4所示,面向主机点到点MACsec组网运行机制,用户终端做802.1X接入认证,接入交换机做认证设备,在用户终端通过认证之后,由认证服务器给接入设备和用户终端下发CAK,后续过程同面向设备点到点MACsec模式。
图2-4面向主机点到点MACsec运行机制图
2.4MACsec密钥体系
2.4.1密钥体系结构
图2-5基于静态CAK的MACsec密钥体系结构图:
如图2-5所示,基于静态CAK的MACsec密钥体系结构,生成SAK密钥流程如下:
1、在同一个安全链接关联CA成员CA(a)和CA(b)上,用户静态配置相同的(CKN,CAK)产生的(ICK,KEK)是一样的,用于后续发布SAK对其本身进行加密,防止SAK明文传递过程中泄密;
2、在KeyServer基于用户配置的(CKN,CAK)会生成SAK,并且在本地安装SAK,用于KeyServer端收发数据报文的加解密;
3、KeyServer将SAK发布给对端Supplicant时,通过KEK加密SAK密钥本身,由ICK通过某种算法生成ICVs用于校验报文的完整性,在KeyServer上将ICVs值放在MKA协议报文尾部,将经过KEK加密的SAK一起通过MKA协议报文发送给Supplicant;
4、Supplicant接收到MKA协议报文时,根据其中的CKN查找CAK和ICK,如果没有查找到则认为不是来自相同的CA并丢弃,查找到之后对MKA报文主体进行ICV计算
得到ICVc,如果与报文中的ICVs不相同,则认为报文被修改(MKA报文中的CKN和
ICVs没有经过KEK加密);
5、经过ICV校验通过之后,使用KEK解密出SAK,Supplicant进行SAK安装,用于
Supplicant端收发数据报文的加解密。
2.4.2密钥派生关系
图2-6密钥派生关系图
如图2-6所示,CKN、CAK采用KDF算法生成SAK、KEK、ICK、ICV,该图展示了它们之间的派生关系。
KeyServer和Supplicant两边配置(CKN,CAK)生成KEK、ICK、ICV,KeyServer同时生成SAK并且在本地安装,然后KeyServer将SAK用KEK加密,将加密后的SAK通过MKA协议报文发送给Supplicant,MKA协议报文中尾部包含ICV字段。
Supplicant收到协议报文通过ICV检验之后,将SAK密钥解密并在Supplicant上安装,这样KeyServer和Supplicant两边转发层面都用相同的SAK密码,可以对收发的数据报文进行加解密通信。
2.5MKA密钥协商交互流程
图2-7MKA协议协商流程图
如图2-7所示,SAK密钥协商交互流程如下:
1、选举KeyServer
CA成员之间通过EAPOL-MKA协议报文交互选举出一个KeyServer,负责加密套件的选择、密钥管理及分发。
CA成员可以设置KeyServerPriority优先级用于KeyServer角色的协商,KeyServerPriority值越小,优先级越高。
如果KeyServerPriority相等,则选择安全通道标识SCI(即MAC地址+端口ID)小的为KeyServer。
2、SAK密钥协商
KeyServer由CKN和CAK计算生成SAK密钥后,先在本地转发层面安装SAK,同时使能允许接收方向数据解密,然后将加密SAK通过EAPOL-MKA发布给对端Supplicant;Supplicant接收到SAK解密之后在本地安装,同时使能数据双向收发加解密;接着Supplicant再发送消息通知KeyServer打开发送方向的数据加密,KeyServer再给Supplicant应答一个确认消息,这样CA成员之间完成密钥协商能够开始正常转发数据。
MI(MemberIdentifier)是成员标识符,MN(MessageNumber)是消息编号,
(MIA,MN=i)代表成员标识符A的设备当前发送报文消息编号为i。
如(MIA,MN=2)
(MIB,MN=1)表示当前A向B发送消息编号为2的报文时,最新收到过对端B报文编号是1的协商报文。
3、会话Hello探测
CA成员之间完成密钥协商之后,就进入正常数据转发阶段,成员互发Hello报文维护会话状态,MKALifeTime内如果收不到hello报文,就会导致协议重新协商。
MKAHelloTime一般为2s,MKALifeTime对端生存时间一般为6s,MKALifeTime可配置。
4、外界条件变化触发密钥切换或重新协商
外部条件发生变化会触发SAK密钥切换或重新协商,外界触发条件可能如下:
MKALifeTime超时,会导致SAK切换(仅在KeyServer上生效);
KeyServer转发层面上报报文编号PN即将或已经耗尽;
如果是非MN翻转导致的MI变化,会导致协议重新协商;
KeyServer接收到对端Supplicant的报文编号PN即将或已经耗尽;
用户配置CAK、ConfidentialityOffset(只在KeyServer侧生效,由KeyServer
通知系统内其他成员)、MACsecMode等配置;
用户配置KeyServerPriority需要重新启动KeyServer选举。
2.6MACsec数据加解密转发
图2-8MACsec数据加密报文图
如图2-8所示,CA成员之间完成SAK密钥协商和密钥安装之后就开始数据报文的转发。
在数据报文的发送端,可以采用加密算法GCM-AES-128对原始数据报文的MSDU部分和SAK一起加密变成密文(SecureData),对源/目的MAC、SECTAG、密文(SecureData)与SAK一起进行加密计算输出ICV放在报文尾部,这样组装成一个完整的MACsec加密报文发送给对端。
在数据的接收端,将密钥SAK和密文经过算法GCM-AES-128计算得到明文,同时采用加密算法计算出ICV与报文携带的ICV作比较,如果一致表明报文合法没有被修改,组装成原始报文进行后续的LAN转发,否则会丢弃该报文。
MACsec支持重放保护功能,MACsec封装的数据帧在网络中传输时,可能出现报文顺序的重排。
MACsec重放保护机制允许数据帧有一定的乱序,这些乱序的报文序号在两边约定的窗口范围内可以被合法接收,超出窗口的报文会被丢弃。
SecTAG中的报文编号PN字段可用于重放保护机制,发送方在每发送一个报文会PN计数会加一,接收方会记录已接收报文的编号,报文编号PN在重放窗口范围内的报文都允许接收。
3典型组网应用
3.1局域网MACsec典型组网
组网需求:
在金融、军队、政府等对安全比较严格网络中,需要对网络进行端到端的安全防护,通常网络接入设备通常数量比较多、分布比较分散,难以管理且安全隐患比较大,这部分设备可采用MACsec进行数据转发安全保护,接入终端可采用802.1X等认证方法进行安全接入控制,同时交换机上可采用端口隔离技术避免未认证的终端可横向互访,园区网出口可部署IPSec、TLS等技术保证Internet/WAN网络中的数据安全传输,如图3-1所示。
图3-1局域网MACsec典型组网图
3.2中间有传输设备MACsec典型组网
组网需求:
当两个局域网之间有传输设备时,传输设备对数据报文做透明传送,客户为防止数据在中间传输过程中被窃取或修改,可在两个局域网边缘设备出端口上采用MACsec进行数据加密,如图3-2所示。
图3-2中间有传输设备MACsec典型组网图
4附录
MACsec数据报文格式如下:
ICV格式:
SECTAG格式:
字段
说明
EtherType
MACsec帧的以太类型(或802.1AE以太类型),取值0x88E5。
TCI
SecTAG标签控制信息(TAGControlInformation),占6个Bit位。
AN
安全联盟编号(AssociationNumber),标识SC上下文中的SA,占2个Bit位,最多可以四个不同的SA。
SL
短帧长度(ShortLength),占6个Bit位。
当SL<48时标识SecureDate的字节数(即SecTAG最后一个字节到ICV的第一个字节间的数据长度)。
当SL=0时标识不是短帧。
PN
报文编号(PacketNumber),唯一标识同一个SA传输的报文,并防止重放攻击。
SCI
安全通道标识符(SecureChannelIdentifier),如果TCI中的SC置位,在两个以上成员的CA中,标识CA中的安全通道(如果是点对点的SC,TCI中的SC无需置位),是发送帧的SecY的网络管理标识符。
TCI字段:
TCI
V=0ESSCSCBECAN
字段
说明
V
版本号,V=0。
ES
终端站点(EndStation)标记,MPDU报文是终端站点发送,并且SCI的前六个字节等于源MAC地址,则ES可以
被置位。
如果源MAC地址不用来确定SCI,则ES清零。
如果ES置位,则SC不应置位。
SC
安全通道标记,如果SCI显式封装在SecTag中,则SC必须置位。
如果SC未置位,SecTag中不应出现SCI。
SCB
EPON广播标记,只有当与MPDU报文关联的SC支持EPONSCB(SingleCopyBroadcast)能力时置位。
如果SCB置位,则SC不应置位。
如果ES=1,SCB=0,则SCI中的端口ID(PortIdentifier)部分取值为00-01。
如果SCB=1,则SCI中的端口ID取值为SCB的保留值00-00。
E
加密标记(Encryption),标识UserData是否被加密。
E=1表示被加密,E=0表示未被加密。
(数据被加密了通常UserData肯定被修改了,所以E置位,C也必须被置位。
)
C
数据修改标记(ChangedText)。
C置位表示UserData内容被(加密算法或校验算法)修改,否则表示UserData未被修改。
即标识UserData是否与SecureData相同。
当使用缺省加密套件(GCM-AES-128)对数据进行完整性校验计算时,该算法不会修改用户报文数据,即SecureData与UserData相同,ICV为16字节长。
当使用其他某些加密算法时,即使仅提供完整性校验,这些算法也会修改用户报文数据,ICV长度不是16字节长,对于这些算法,C标记应置位(即使数据不加密)。
E=1,C=1表示报文数据被加密,那么用户数据肯定被修改了,所以C肯定置位。
E=1,C=0非法,不存在这种情况。
E=0,C=0表示未加密,只进行完整性保护,但完整性校验算法未修改用户数据。
E=0,C=1表示未加密,只进行完整性保护,并且完整性校验算法修改用户数据。