610 likes | 798 Views
计算机系统安全. 第十二章 IP 安全. IETF 的各个工作小组从不同角度解决互连网安全问题,形成一些 RFC 和草案: DNSSEC 工作组 RFC2137、2535、2541 研究 DNS 安全及 DNS 动态更新 WTS(Web Transaction Security) 工作组 建立 SHTTP 认证、完整性保护; RFC2084 SECSH 工作组 安全 Shell IPSEC 工作组 TLS 工作组( SSL 协议). Internet 安全协议. 一、 IP 安全概述. IP 安全面临的问题.
E N D
计算机系统安全 第十二章 IP安全
IETF的各个工作小组从不同角度解决互连网安全问题,形成一些RFC和草案:IETF的各个工作小组从不同角度解决互连网安全问题,形成一些RFC和草案: DNSSEC工作组 RFC2137、2535、2541 研究DNS安全及DNS动态更新 WTS(Web Transaction Security)工作组 建立SHTTP 认证、完整性保护;RFC2084 SECSH工作组 安全Shell IPSEC工作组 TLS工作组(SSL协议) Internet安全协议
一、IP安全概述 IP安全面临的问题 伪造IP包的地址;修改其内容 重播以前的包;拦截并查看包的内容 如何确保收到的IP数据报: 1)来自原先要求的发送方(IP头内的源地址); 2)包含的是发送方当初放在其中的原始数据; 3)原始数据在传输中途未被其它人看过。
一、IP安全概述 IPSec协议 IP安全是整个TCP/IP安全的基础与核心。它可对上层的各种应用服务提供透明的安全保护。IPv4没有考虑安全性,缺乏对通信双方身份的认证,缺乏对传输数据的保护,并且容易受窃听、IP地址欺骗等攻击。IPSec工作组于1994年成立,1995年8月公布了一系列建议标准: RFC2401:IP安全结构 RFC2406:AH; RFC2406:ESP RFC2409:IKE RFC2403:HMAC-MD5-96 RFC2404:HMAC-SHA-96
一、IP安全概述 IPSec概述 IPSec可保障主机之间、网络安全网关(如路由器或防火墙)之间或主机与安全网关之间的数据包的安全。 由于受IPSec保护的数据报本身不过是另一种形式的IP包,所以完全可以嵌套提供安全服务,同时在主机之间提供像端到端这样的认证,并通过一个隧道,将那些受IPSec保护的数据传送出去(隧道本身也通过IPSec受到安全网关的保护)。
一、IP安全概述 IPSec的协议 对IP数据报或上层协议进行保护的方法是使用某种IPSec协议:“封装安全载荷(ESP:Encapsulating Security Payload)”或者“认证头(AH:Authentication Header)”。 AH可证明数据的起源地、保障数据的完整性、防止相同数据包的重播。 ESP除具有AH的所有能力之外,还可选择保障数据的机密性,以及为数据流提供有限的机密性保障。
AH ESP (加密) ESP (加密并认证) 访问控制 √ √ √ 无连接完整性 √ √ 数据来源认证 √ √ 对重放数据的拒绝 √ √ √ 保密性 √ √ 受限业务流的保密性 √ √ IPSec的安全业务
一、IP安全概述 密钥管理协议IKE 密钥管理协议IKE(Internet Key Exchange)用于动态地认证IPSec参与各方的身份、协商安全服务以及生成共享密钥等。 IPSec提供的安全服务需要用到共享密钥,它既可用于保障数据的机密性,亦可用于数据完整性(消息认证码MAC),或者同时应用于两者。 IPSec的运算速度必须够快,而现有公共密钥技术(如RSA或DSS)的速度均不够快。公共密钥技术仍然限于在密钥交换期间完成一些初始的认证工作。
二、结构 IPSec协议组成 安全关联SA (Security Association) 安全策略数据库SPD (Security Policy Database) 认证头AH (Authentication Head ) 封装安全载荷ESP(Encapsulation Security Payload) IKE(Internet密钥交换) ISAKMP/Oakley(密钥管理协议) ISAKMP:Internet Security Association and Key Management Protocol Oakley:是D-H密钥交换协议的改进
二、结构 结构图
二、结构 IPSec实施 IPSec既可在终端系统上实现,亦可在某种安全网关上实现(如路由器及防火墙)。 在主机中实施可以有两种方式: 1、与操作系统的集成实施。 2、在协议堆栈中的网络层和数据链路层之间实施。
二、结构 操作系统集成 IPSec作为网络层协议,可在网络层实现,由IP层的服务构建IP头。这个模型与其它网络层协议(比如ICMP)的实施等同。
二、结构 在协议堆栈中实施
二、结构 在主机实施的特点 a.保证端到端的安全性 b.能够实现所有的IPSEC安全模式 c.能够对每个数据流提供安全保障 d.在建立IPSEC的过程中,能够维持用户身份的认证。
二、结构 在路由器中实施 如果在路由器中实施,可在网络的一部分中对传输的数据包进行安全保护。 例如某公司只打算对传给地理位置分散的那些部门的数据实施保护,而且只在数据流经Internet的时候进行保护,从而构建自己的VPN或者内联网。IPSec实施方案通过对数据包进行“隧道传输”,从而实现了对它们的保护。
二、结构 IPSec两种不同的使用模式 传送模式:保护上层协议;用于两主机之间; 隧道模式:保护整个IP数据报;当一方为网关时。 原始IP包: IP头 + TCP头 + 数据 传送模式: IP头 + IPSec头 + TCP头 + 数据 隧道模式:新 IP头 + IPSec头 + IP头 + TCP头 + 数据
二、结构 安全关联 为正确封装及提取IPSec数据包,要将安全服务、密钥与要保护的通信数据联系到一起;同时要将远程通信实体与要交换密钥的IPSec数据传输联系起来。这样的方案称为安全关联(Security Association,SA)。 SA是构成IPSec的基础。它由两个通信实体协商建立。它们决定了用来保护数据包安全的IPSec协议、密钥以及密钥的有效存在时间等。任何IPSec实施方案都会构建一个SA数据库(SAD),由它来维护保障数据包安全的SA记录。
二、结构 安全关联 SA是单向进行的,它仅朝一个方向定义安全服务,要么对通信实体收到的包进行“进入”保护,要么对实体外发的包进行“外出”保护。SA由一个三元组唯一标识: 1)安全参数索引(SPI):存在于IPSec协议头内; 2)安全协议(AH、ESP)标识符; 3)目标IP地址:它同时决定了关联方向。 通常SA是以成对的形式存在的,每个朝一个方向。既可人工创建它,亦可采用动态创建方式。SA驻留在“安全关联数据库(SAD)”内。
二、结构 SA创建 若用人工方式加以创建,SA便会一直存在下去,除非再用人工方式将其删除。 若用动态方式创建,则SA有一个存活时间与其关联在一起。存活时间(TTL)由IPSec通信双方在密钥管理协议中协商。TTL非常重要,因为受一个密钥保护的通信量必须加以谨慎地管理。若超时使用一个密钥,会为攻击者侵入系统提供更多的机会。
SAD用于定义每个SA的参数值: 顺序号:以AH/ESP报头中32位bit值表示 顺序号溢出标记:防止溢出数据报的传送 反重放窗口:收到的AH/ESP数据报是否重放 AH/ESP信息:认证/加密算法、密钥、有效期 SA有效期:该时间间隔之后,SA结束/被替代 IPSec协议模式:传输模式/隧道模式 路径最大传输单元:最大数据报长度(不分段) 安全关联数据库SAD
二、结构 安全策略数据库SPD SPD (Security Policy Database)定义了对所有出/入业务应采取的安全策略,为IP数据项提供什么服务以及以什么方式提供。对所有出/入包括非Ipsec业务的处理必须咨询SPD,处理有三种可能: 1)丢弃:不允许在此主机上存在,或不允许通过此网关。 2)绕过Ipsec:允许通过而无需Ipsec保护 3)采用Ipsec:对这种业务流,SPD要指明提供的安全服务,采用的协议及使用的算法等。
二、结构 安全策略 用户可以根据自己的要求,对不同的通信设定不同级别的安全策略。 例:在一个网络安全网关上制订IPSec策略,对本地子网与远程网关的子网间通信数据采用DES加密,并用HMAC-MD5进行认证;对从远程子网发给一个邮件服务器的所有Telnet数据用3DES进行加密,同时用HMAC-SHA进行认证;对于需要加密的、发给另一个服务器的所有Web通信数据,则用IDEA满足其加密要求,同时用HMAC-RIPEMD进行认证。
二、结构 安全参数索引(SPI ) SPI长度为32位,用于唯一地标识出接收端上的一个SA。作为两个主机秘密通信的协定, SA决定了密钥和加密算法等参数。必须采用某种机制,让通信源指出用哪个SA来保护数据包;而对通信的目的地,则需指出用哪个SA来检查收到的包是否安全。SPI是个任意数,一般是在IKE交换过程中由目标主机选定的。 SPI被当作AH和ESP头的一部分传送。接收主机使用<SPI,DST,Protocol>这个字元组来唯一地标定SA(DST是IP头中的目标地址;而protocol代表协议是AH或ESP)。
二、结构 消息认证码MAC MAC:使用一个保密密钥生成固定大小的小数据块,并加入到消息中,称MAC, 或加密和。 用户A和用户B,共有保密密钥K,消息M, MAC=CK(M) 1、接收者可以确信消息M未被改变。 2、接收者可以确信消息来自所声称的发送者; 3、如果消息中包含顺序码,则接收者可以保证消息的正常顺序; MAC函数类似于加密函数,但不需要可逆性。因此在数学上比加密算法被攻击的弱点要少。
二、结构 MAC的基本应用方式 • 1)消息认证 • AB: M||CK(M) • 2)消息认证+保密 • AB: EK2[ M||CK1(M)] • 3)消息认证+保密 • AB: EK2 [M]||CK1(EK2 [M])
三、封装安全载荷 封装安全载荷概述 ESP(Encapsulating Security Payload)属于IPSec的一种协议,可用于确保IP数据包的机密性、数据的完整性以及对数据源的身份认证。此外,它也要负责对重播攻击的抵抗。 具体做法是在IP头之后、需要保护的数据之前,插入一个新头——ESP头。受保护的数据可以是一个上层协议,或者是整个IP数据报。最后,还要在最后追加一个ESP尾。ESP是一种新的IP协议,对ESP数据包的标识是通过IP头的协议字段来进行的。
ESP保护示意图 ESP原理
三、封装安全载荷 ESP格式
三、封装安全载荷 ESP格式 作为IPSec头,ESP头中会包含一个SPI字段。它和IP头之前的目标地址以及协议结合在一起,用来标识用于处理数据包的特定的SA。 通过序列号,ESP具有了抵抗重播攻击的能力。序列号是一个不重复的、单向递增的、由发送端插在ESP头的一个号码。 ESP保护的实际数据包含在载荷数据字段中。因此,这个字段的长度由数据长度决定。某些加密算法要用到初始化向量(IV),它也受到保护。
三、封装安全载荷 隧道模式 隧道模式下受ESP保护的一个IP包,下一个头是TCP 认证 加密
三、封装安全载荷 传输模式
三、封装安全载荷 加密与认证 由于ESP同时提供了机密性以及身份认证机制,所以在其SA中必须同时定义两套算法——用来确保机密性的算法叫作cipher(加密器),而负责身份认证的叫作authenticator(认证器)。每个ESP SA都至少有一个加密器和一个认证器。
三、封装安全载荷 处理外出数据包:传送模式 对在IPv4上运行的传送模式应用来说,ESP头跟在IP头后,IP头的协议字段被复制到ESP头的“下一个头”字段中,ESP头的其余字段则被填满—SPI字段分配到的是来自SAD的、用来对这个包进行处理的特定SA的SPI;填充序列号字段的是序列中的下一个值;填充数据会被插入,其值被分配;同时分配的还有填充长度值。随后,IP头的协议字段得到的是ESP的值,50。 除了头插入位置不同之外,IPv6处理规则基本上类似于IPv4。ESP头可插在任意一个扩展头之后。
三、封装安全载荷 处理外出数据包:隧道模式 对隧道模式应用来说,ESP头是加在IP包前面的。如果封装的是一个IPv4包,那么ESP头的“下一个头”字段分配到值4;如果封装的是一个IPv6包,则分配到值41。其他字段的填充方式和在传送模式中一样。随后,在ESP头的前面新增了一个IP头,并对相应的字段进行填充(赋值)—源地址对应于应用ESP的那个设备本身;目标地址取自于用来应用ESP的SA;协议设为50;其他字段的值则参照本地的IP处理加以填充。
三、封装安全载荷 加密认证 不管哪种模式下,接下去的步骤都是相同的。从恰当的SA中选择加密器(加密算法),对包进行加密(从载荷数据的开头,一直到“下一个头”字段)。随后,使用恰当的SA中的认证器,对包进行认证(自ESP头开始,中间经过加密的密文,一直到ESP尾)。随后,将认证器的结果插入ESP尾的“认证数据”字段中。 对外出数据包进行处理的最后一步是:重新计算位于ESP前面的IP头的校验和。
三、封装安全载荷 处理进入数据包 接收端在收到一个ESP包之后,若不对这个包进行处理,就无法得知它究竟处于隧道模式,还是传送模式。根据对这个包进行处理的SA,便可知道它到底处在什么模式下。但除非完成了对它的解密,实际上不可能知道ESP保护的是什么。 如果收到的IPSec包是一个分段,必须把它保留下来,直到这个包的其他部分收完为止。
三、封装安全载荷 处理进入数据包 收到ESP包后,首先要检查处理这个包的SA是否存在——这是基本的IPSec要求,而不是ESP专有的。如果没有SA,这个包就会被丢弃。 一旦认证通过了一个有效的SA,就可用它开始对包的处理。 首先检查序列号。 由于ESP身份认证密文而不是明文,接下来进行的便是对这个包进行身份认证。
三、封装安全载荷 处理进入数据包 然后是解密。通过取自SA的密钥和密码算法,就可对ESP包进行解密,这个ESP包从载荷数据开始到下一个头结束。 传送身份认证和解密检查成功之后,就可对结果数据包进行初步的有效性检验。如果用来处理这个数据包的SA表明在某一特定模式下——要么是隧道模式,要么是传送模式—只能处理ESP包,那么还必须检验这个包的适用性。如果这个包与要求的模式不符,就必须把它丢弃。
三、封装安全载荷 处理进入数据包 对于传送模式,上层协议头与IP头是同步的,ESP头的下一个头字段被复制到IP头的协议字段中,并计算出一个新的IP校验和; 对于隧道模式,就抛开外部IP头和ESP头——我们需要的是这个解开封装的包。 为进行下一步的处理,可将一个经过改造和认证的包转发出去。如果它是一个传送模式包,就会转发到一个高一级的协议层(比如TCP或UDP),由它们对这个包进行处理;如果它是一个隧道模式包,就会重新插入到IP处理流中,继续转发到它的最终目的地。
四、认证头 认证头概述 认证头(AuthenticationHeader,AH)是一种IPSec协议,用于为IP提供数据完整性、数据原始身份认证和一些可选的、有限的抗重播服务。它定义在RFC2402中。除了机密性之外,AH提供ESP能够提供的一切东西。不需要加密算法(加密器),而需要一个认证器(身份认证器)。AH定义保护方法、头的位置、身份认证的覆盖范围以及输出和输入处理规则,但没有对所用的身份认证算法进行定义。
认证头的保护 认证头概述
四、认证头 认证头概述 AH是另一个IPSec协议。在IPv4中数据报的协议字段值是51,表明IP头之后是一个AH头。在IPv6中,下一个头字段的值由扩展头的存在来决定。如果没有扩展头,下一个头字段将是51。如果AH头之前有扩展头,紧靠在AH头前面的扩展头中的下一个头字段就会被设成51。将AH头插入IPv6的规则与ESP插入规则类似。AH和ESP保护的数据相同时,AH头会一直插在ESP头之后。AH头比ESP头简单,因为它不提供机密性。由于不需要填充和一个填充长度指示器,因此也不存在尾。另外,也不需要一个初始化向量。
四、认证头 认证头格式 AH格式
四、认证头 认证头格式 下一头字段表示AH头之后是什么。在传送模式下,将是处于保护中的上层协议的值,如UDP或TCP协议的值。在隧道模式下,值为4,表示IP-in-IP(IPv4)封装或IPv6封装的41这个值。 载荷长度字段表示采用32位的字减2表示头本身的长度。AH头是一个IPv6扩展头,按照RFC2460,它的长度是从64位字表示的头长度中减去一个64位字而来的。但AH采用32位字来计算,因此,我们减去两个32位字(或一个64位字)。没有使用预留字段时,必须将它设成0。
四、认证头 认证头格式 SPI和外部IP头的目的地址一起,用于识别对这个包进行身份认证的SA。 序列号是一个单向递增的计算器,等同于ESP中使用的序列号。序列号提供抗重播功能。 认证数据字段长度不固定,其中包括完整性校检的结果。AH没有定义身份认证器,但有两个强制实施身份认证器:HMAC-SHA-96和HMAC-MD5-96。和ESP一样,输出结果被切短成96个位。同时,也没有针对AH的使用,定义公共密钥身份认证算法(比如RSA和DDS)。
四、认证头 模式 和ESP一样,AH可用于传送模式和隧道模式。不同之处在于它保护的数据要么是一个上层协议,要么就是一个完整的IP数据报。任何一种情况下,AH都要对外部IP头的固有部分进行身份认证。
四、认证头 传送模式 AH用于传送模式时,保护的是端到端通信。通信终点必须是IPSec终点。下一个头是TCP。 已认证
四、认证头 隧道模式 AH用于隧道模式时,它将自己保护的数据报封装起来,另外,在AH头之前,另添了一个IP头。“里面的”IP数据报中包含了通信的原始寻址,而“外面的”IP数据报则包含了IPSec端点的地址。隧道模式可用来替换端对端安全服务的传送模式,AH只用于保证收到的数据包在传输过程中不会被修改,保证由要求发送它的当事人将它发送出去,以及保证它是一个新的非重播的数据包。
四、认证头 隧道模式 已认证 下一个头是IP-in-IP
四、认证头 AH处理 外出数据包与一个SPD条目(表示采用AH保护)匹配时,要求SAD查看是否存在一个合适的SA。如果没有,可用IKE动态地建立一个。如果有,就将AH应用到这个与之相符的数据包,该数据包在SPD条目指定的那个模式中。如果它是一束SPD,应用顺序就由它所涉及的协议而定。AH始终保护的是ESP,别无它物。