410 likes | 804 Views
IPSec 技 术. 产品部 叶 榕 Oct.2005. 提 纲. 什么是 IPSec 协议 提供的安全机制 IPSec 的结构 IPSec 协议的组成 IPSec 工作原理 IPSec 的两种模式 IKE 协议 IPSec 技术疑难. 什么是 IPSec 协议. IPSec (网络安全协议)协议是一个协议集而不是一个单个的协议; IPSec 协议给出了应用于 IP 层上网络数据安全的一整套体系结构; 自 1995 年 IPSec 的研究工作开始以来, IETF 组织已经积累了大量的标准文件集( RFC )。. IPSec 协议.
E N D
IPSec 技 术 产品部 叶 榕 Oct.2005
提 纲 • 什么是IPSec协议 • 提供的安全机制 • IPSec的结构 • IPSec协议的组成 • IPSec工作原理 • IPSec的两种模式 • IKE协议 • IPSec技术疑难
什么是IPSec协议 • IPSec(网络安全协议)协议是一个协议集而不是一个单个的协议; • IPSec协议给出了应用于IP层上网络数据安全的一整套体系结构; • 自1995年IPSec的研究工作开始以来,IETF组织已经积累了大量的标准文件集(RFC)。
IPSec协议 • IPSec协议包括AH协议、ESP协议、密钥管理协议(IKE协议)和用于网络验证及加密的一些算法等。 • IPSec规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源验证、数据加密等网络安全服务。
IPSec协议提供的安全机制 1机密性保护:IKE使用Diffie-Hellman算法完成密钥的交换,并使后续的协商处在加密保护中完成; 2数据完整性与身份验证:IKE通过交换验证载荷完成对数据完整性的检验,并同时完成对对端身份的验证; 3抗拒绝服务攻击(DoS):在IKE交换中,首先交换的是cookie,在一次交换中首先检查cookie值,把需要CPU密集运算的处理放在cookie值检验之后,这样可以对DoS攻击提供一种简单的防范机制;
IPSec协议提供的安全机制 4防止中间人攻击:中间人攻击包括窃听、插入、删除、修改、反射旧消息、重放旧消息以及重定向消息等。IKE协议通过将认证、加密与SA交换相结合等方式,提供对中间人攻击的较好防范; 5完美向前保密(Perfect Forward Secrecy,简称PFS):完美向前保密是指即使攻击者破解了一个密钥,也只能获得该密钥加密的信息,而不能获得其它的数据信息。而IKE提供的PFS,指即使攻击者破解了第一阶段的密钥交换,也只能获得受该SA保护的信息,但却不能获得受IPsec SA保护的数据信息。
体 系 封装安全载荷 验证头 加密算法 认证算法 解释域(DOI) 密钥管理 策 略 IPSec的结构
IPSec协议的组成 • 验证头协议( AH-Authentication Header) • 封装安全协议( ESP-Encapsulating Security Protocol) • Internet密钥管理协议(IKE-Internet Key Exchange) • 安全政策
IPSec工作原理 • IPSec 认证-AH • IPSec 加密-ESP • IPSec DOI(解释域) • 安全联盟(SA)
IPv4包头 AH包头 高层协议 IPSec 认证-AH协议 • AH协议提供数据的认证服务;保证数据在传输过程中没有被改变或破坏,数据的顺序也没有很大变化; • 其使用的包头号放在标准的IPv4和IPv6包头和下一个高层协议帧(如TCP、UDP、ICMP、ESP等)之间; • 国际IANA机构分配给AH的协议号为51。
IPv4包头 ESP包头 高层协议 IPSec 加密-ESP协议 • ESP协议为IP数据包提供机密性、数据源验证、抗重播以及数据完整性等安全服务; • 其使用的包头号放在标准的IPv4和IPv6包头和下一个高层协议帧(如TCP、UDP、ICMP等)之间。 • 国际IANA机构分配给ESP的协议号为50。
IPSec DOI • 用于IPSec的DOI确定与AH和ESP协议有关的所有参数,并且给它们分配唯一的标志符。 • IKE定义了安全参数如何协商,以及共享密钥如何建立。但没有定义协商的内容,这个方面的定义是由DOI文档来进行的。 • 实际上,DOI在IPSec安全联盟的协商过程中起一个可参考调用的数据库的作用。
安全联盟(SA) • 安全联盟简称SA,是构成IPSec的基础。 • SA是两个通信实体经协商建立起来的一种协定。 • SA是单向的,双向的通信需要两个SA。 共享相同的加密参数 SA(out) SA(in) SA(in) SA(out) 共享相同的加密参数 主机B 主机A
安全联盟(SA) • SADB-SA数据库 • 为进入和外出包处理维持一个活动的SA列表。 • SPD-安全策略数据库 • 策略:定义了两个实体之间的安全通信特性,什么模式下用什么协议,以及如何对待IP包。 • 外出包和进入包的处理都要查阅SPD。对外出包,通过查阅SPD,判断这个包是否需要安全保护;对进入包,通过查阅SPD,判断为这个包提供的安全保护是否和策略配置的安全保护相符。 • SPI-安全参数索引 • 一个长度为32位的数据实体,用于独一无二地标识出接收端上的一个SA。
SA的管理 • SA管理的两大任务 • 创建 • 先协商SA参数,再用SA更新SADB • 删除 • SA管理方式 • 手工进行 • 通过Internet密钥交换协议来完成,如IKE
IPSec的两种模式 • 通道模式 • AH和ESP保护的是传输头;AH和ESP会拦截从传输层到网络层的数据包,根据具体的配置提供安全保护。 • 主要用于主机-主机的VPN应用。 • 隧道模式 • 用于数据包的最终目的地不是安全终点的情况下。 • 主要用于网关-网关的VPN应用。
AH+ESP AH(51) ESP(50) IP头 网络载荷 网络载荷 ESP(50) IP头 ESP 网络载荷 IP头 AH(51) AH 加密通道 通道模式下IPSec数据包格式
Media 用户数据 内部IP协议头 外部IP协议头 隧道模式(IPinIP协议) • 对一个IP报文进行封装,在原有的IP头前,又添加一个新的IP报头的协议,就像隧道一样保护原来的IP报文。从而隐藏了网络的相关信息。 • 国际IANA机构分配给IP传输协议(IPinIP)的协议号为4。
AH+ESP ESP 加密通道 AH 隧道模式下IPSec数据包格式 AH(51) ESP(50) 上层协议 新IP头 原IP头 原IP头 上层协议 ESP(50) 新IP头 原IP头 新IP头 AH(51) 上层协议
IKE协议 • 什么是IKE • IKE协商机制 • IKE协商模式 • IKE认证方式 • IKE对证书的要求
什么是IKE • IKE(Internet Key Exchange)是一个密钥协商协议; • IKE提供了身份认证,协商信息的保护,并为IPSec等安全协议进行安全联盟的协商。 • IKE是一个通用的协议,它不仅可以为IPSec协商安全参数,也可以为其它的协议协商安全参数。
IKE协议 • IKE协议是Oakley和SKEME协议的一种混合,并在由ISAKMP规定的一个框架内运行。 • ISAKMP(Internet Security Association and Key Managerment Protocol)Internet安全联盟和密钥管理协议 • 为认证和密钥交换提供了一个框架。 • 它定义了包格式、重发计数器以及消息构建要求。即整套加密通信语言。但并没有定义认证和密钥交换,它用来实现多种密钥交换; • Oakley描述了多种密钥交换(称为模式)以及每种模式提供的服务(例如:完美向前保护、身份保护和验证); • SKEME描述了一个通用的密钥交换技术,它能提供匿名性、抗抵赖性和快速密钥更新。 Oakley和SKEME定义了通信双方建立一个共享的验证密钥所必须采取的步骤。IKE利用ISAKMP语言对这些步骤以及其它信息交换措施进行表述。
IKE协商机制 • IKE采用的密钥协商机制分两个阶段。 • 第一阶段进行身份认证和ISAKMP的安全联盟的协商;即IKE SA的协商并完成身份认证和保护。 • 第二阶段则利用第一阶段协商的安全联盟来保护信息,并为IPSec等安全协议进行安全联盟的协商;即IPSec SA的协商。 • IKE第一阶段协商分6个步骤 • IKE第二阶段协商分3个步骤
IKE协商模式 • 第一阶段两种协商模式 • 主模式(身份保护交换)-Main Mode • 灵活 • 野蛮模式(根据基本ISAKMP文档制定的)-Aggressive Mode • 速度快 • 第二阶段仅一种协商模式 • 快速模式-Quick Mode
IKE认证方式 • IKE的认证方式只存在于第一阶段 • 共有有三种方式 • 预共享密钥方式(PSK,Preshared Key) • 数字签名方式(RSA SIGNATURE) • 公钥加密方式
IKE的协商步骤 • 第一阶段 • 预共享密钥方式,主模式的协商步骤 • 数字签名方式,主模式的协商步骤 • 公钥加密方式,主模式的协商步骤 • 第二阶段 • 快速模式的协商步骤
KE:Key Exchange DH:Diffie-Hellman Nonce:随机数 第一阶段的6个步骤 预共享密钥方式、主模式协商 协商IKE SA的各项参数, 并对交换的其余部分拟定规范。 发起者(客户端) 响应者(服务器端) 步骤1 HDR、SA 步骤2 HDR、SA 交换DH公共值以及伪随机nonce。完成DH交换, 并生成SKEYID状态。 步骤3 HDR、KE、Nonce 步骤4 HDR、KE、Nonce 步骤5 HDR、ID、散列 步骤6 HDR、ID、散列 标定自己的身份, 并相互交换验证散列摘要。
第一阶段的6个步骤 数字签名方式、主模式协商 发起者(客户端) 响应者(服务器端) 步骤1 HDR、SA 步骤2 HDR、SA 步骤3 HDR、KE、Nonce 步骤4 HDR、KE、Nonce 步骤5 HDR、ID、[Cert] 步骤6 HDR、ID、[Cert]
第一阶段的6个步骤 公钥加密方式、主模式协商 发起者(客户端) 响应者(服务器端) 步骤1 HDR、SA 步骤2 HDR、SA 步骤3 HDR、KE、{ID}pub_r, {Ni}pub_r 步骤4 HDR、KE、{ID}pub_I, {Nr}pub_r 步骤5 HDR、散列 步骤6 HDR、散列
第二阶段的3个步骤 快速模式协商 发起者(客户端) 响应者(服务器端) 步骤1 HDR、散列、SA … 步骤2 HDR、散列、SA … 步骤3 SA、写IPSec SA 、写IPSec 将SA加入自己的IPSec SADB数据库。 发起方在收到响应方的“已连接”消息后,将SA加入自己的IPSec SADB数据库。 IKE SA是双向的,双方都可以发起一次快速模式交换。
隧道建立中易出错的阶段 • 阶段一的步骤1 • 协商算法不一致 • 阶段一的步骤5 • 预共享密钥不一致 • 公钥过期 • 没有私钥 • 没有CA证书 • 证书ID不一致 • 阶段二的步骤7 • 算法不匹配 • 子网不一致
IKE对证书的要求 • 一般采用X.509证书 • X.509标准是国际标准,现行版本为V3版; • X.509证书是符合一定格式的电子文件,用来识别数字证书持有者的真实身份; • 它由具有权威性、可信任性即公正性的第三方机构(CA)所颁发,实现身份的鉴别与识别(认证)、完整性、保密性及不可否认性安全服务。
隧道建立中认证方式填写注意 • 在配置隧道时,必须指定双方的ID: • 当认证方式为PSK时,ID默认为双方的IP地址。 • 当为数字签名方式时,ID必须与证书相关。可以接收的ID有下列四种方式: • 1:证书的SUBJECT(C=CN, ST=HB, O=TIT, OU=VPN, CN=308/Email=308@topsec.com.cn) • 2:IP地址(192.168.16.16) • 3:FQDN (@star-net.cn) -域名 • 4:UFQDN (yer@star-net.cn) -邮件地址 • 选用2、3、4三种ID必须在证书的SubjectAltName字段必须存在此ID。
IPSec技术疑难 ? • 穿越NAT • MTU问题
再次AH校验=B 不相等,校验失败 AH校验=A A VPN 2 VPN 1 NAT 接收方 发起方 操作提示:当VPN的应用中存在NAT环境时,请不要选择AH算法。 IPSec为啥不能穿越NAT • NAT只对TCP、UDP、ICMP有效,IPSec报文是AH、ESP协议的,因此NAT无法正确处理这两类的报文,导致IPSec 报文无法穿透NAT设备。 • AH的目的是保护IP头部中不变的区域(包括地址域),而NAT必须转换地址,从而使AH完整性检验失效。 • 因此,NAT和AH从根本上就是不兼容的。在IPSec-NAT兼容性方案中,没有必要支持AH。
IPSec如何实现NAT穿越 ESP 传输模式下 • UDP封装 ESP 隧道模式下
MTU问题-MTU与MSS • MTU: Maxitum Transmission Unit 最大传输单元 • EthernetII 帧结构:DMAC+SMAC+Type+Data+CRC • 64bytes >= 每个帧 <= 1518bytes • 除去帧头 和帧尾, Data域最大就只能有1500Bytes 即MTU值 • 网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。 • 分片会降低传输性能 • 加DF标签,转发设备会丢弃数据包,并返回一个错误信息给发送者。 • MSS就是TCP数据包每次能够传输的最大数据分段。 • MSS值=MTU-IP包头(20bytes)-TCP包头(20bytes)<=1460Bytes • 通讯双方会根据双方提供的MSS值的最小值确定为这次连接的最大MSS值。
IPSec与MTU • IPSec封装会引入了额外的头(一般100 bytes左右),这样就会使原来的报文变大(1500+100=1600 bytes),因此会造成分片。 • 分片的缺点: • 分片降低传输性能; • 某些低端路由器芯片,对NAT后的UDP分片报文处理不好,导致报文丢失,使得IPSec报文无法还原。 • 产品实现 • VPN客户端提供设置MTU值的小工具,可修改范围是576至1500。 • 目前系统提供默认值1414,这是经过多次反复的测试,性能很好的一个值。