from:http://lulu1101.blog.51cto.com/4455468/816875
ipsec协议

2012-03-25 23:40:28

IPSec 协议简介

IPSec (IP Security)协议族是IETF 制定的一系列协议,它为 IP 数据报提供了高质量的、可互操作的、基于密码学的安全性。特定的通信方之间在 IP 层通过加密与数据源验证等方式,来保证数据报在网络上传输时的私有性、完整性、真实性和防重放。 
说明:
私有性(Confidentiality )指对用户数据进行加密保护,用密文的形式传送。
完整性(Data integrity )指对接收的数据进行验证,以判定报文是否被篡改。
真实性(Data authentication )指验证数据源,以保证数据来自真实的发送者。
防重放(Anti-replay )指防止恶意用户通过重复发送捕获到的数据包所进行的攻击,即接收方会拒绝旧的或重复的数据包。
 

IPsec具有以下优点:

支持IKEInternet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA的服务,简化了IPsec的使用和管理。

所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。

对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。

IPsec的协议实现

IPSec 通过AH  (Authentication Header,认证头)和ESP (Encapsulating Security Payload,封装安全载荷)两个安全协议实现了上述目标。为简化 IPSec  的使用和管理,IPSec 还可以通过 IKEInternet  Key  Exchange,因特网密钥交换协议)进行自动协商交换密钥、建立和维护安全联盟的服务。

IPsec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。

IPsec协议中的AH协议定义了认证的应用方法,提供数据源认证和完整性保证;ESP协议定义了加密和可选认证的应用方法,提供数据可靠性保证。

(1)     AH 协议(IP协议号为51

AH 是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能;然而,AH 并不加密所保护的数据报。

(2)     ESP 协议(IP协议号为50

ESP 是封装安全载荷协议。它除提供AH 协议的所有功能外(但其数据完整性校验不包括 IP头),还可提供对 IP 报文的加密功能。

说明:

AH 和ESP 可以单独使用,也可以同时使用。对于AH 和ESP,都有两种操作模式:传输模式和隧道模式。

(3)  IKE 协议

IKE 协议用于自动协商AH 和 ESP 所使用的密码算法,并将算法所需的必备密钥放到恰当位置。

说明: IKE 协商并不是必须的,IPSec 所使用的策略和算法等也可以手工协商。

IPSec 基本概念

1. 安全联盟

IPSec 在两个端点之间提供安全通信,端点被称为 IPSec 对等体。

IPSec  能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。通过 SA  (Security   Association,安全联盟),IPSec 能够对不同的数据流提供不同级别的安全保护。

安全联盟是 IPSec 的基础,也是 IPSec 的本质。SA 是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP 还是两者结合使用)、协议的操作模式(传输模式和隧道模式)、加密算法(DES 和 3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。 
安全联盟由一个三元组来唯一标识,这个三元组包括 SPI(Security   Parameter  Index,安全参数索引)、目的IP 地址、安全协议号(AH 或 ESP)。SPI 是为唯一标识 SA 而生成的一个 32 比特的数值,它在AH 和 ESP 头中传输。  

安全联盟具有生存周期。生存周期的计算包括两种方式:

以时间为限制,每隔指定长度的时间就进行更新;

以流量为限制,每传输指定的数据量(字节)就进行更新。

2. 安全联盟的协商方式

安全联盟的协商方式有两种,一种是手工方式(manual),一种是 IKE自动协商(isakmp)方式。

手工方式(manual)配置比较复杂,创建SA所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖IKE而单独实现IPsec功能。

IKE自动协商(isakmp)方式相对比较简单,只需要配置好IKE协商安全策略的信息,由IKE自动协商来创建和维护SA。

当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA

 

3. IPSec协议的操作模式

IPSec协议有两种操作模式:传输模式和隧道模式。SA中指定了协议的操作模式。在传输模式下,AH或 ESP被插入到IP头之后但在所有传输层协议之前,或所有其他 IPSec协议之前。在隧道模式下,AH或 ESP插在原始 IP头之前,另外生成一个新头放到 AH或 ESP之前。不同安全协议在传输模式和隧道模式下的数据封装形式(传输协议以 TCP为例)如下图所示:

从安全性来讲,隧道模式优于传输模式。它可以完全地对原始 IP数据报进行验证和加密;此外,可以使用 IPSec对等体的 IP地址来隐藏客户机的 IP地址。从性能来讲,隧道模式比传输模式占用更多带宽,因为它有一个额外的 IP头。因此,到底使用哪种模式需要在安全性和性能间进行权衡。
 

4. 验证算法与加密算法

 
 
(1)  验证算法
AH和 ESP都能够对 IP报文的完整性进行验证,以判别报文在传输过程中是否被篡改。验证算法的实现主要是通过杂凑函数,杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPSec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。一般来说 IPSec使用两种验证算法:
MD5:MD5通过输入任意长度的消息,产生 128bit的消息摘要。
SHA-1:SHA-1通过输入长度小于 2的 64次方比特的消息,产生 160bit的消息摘要。SHA-1的摘要长于 MD5,因而是更安全的。
 
(2)  加密算法
ESP能够对 IP报文内容进行加密保护,防止报文内容在传输过程中被窥探。加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。一般来说 IPSec使用两种加密算法:
DES:使用 56bit的密钥对一个 64bit的明文块进行加密。
3DES:使用三个 56bit的 DES密钥(共 168bit密钥)对明文进行加密。
无疑,3DES具有更高的安全性,但其加密数据的速度要比 DES慢得多。
 

IPSec配置

 
 
1. 手工协商配置
IPSec配置主要包括手工协商配置和自动协商配置。其中,手工协商配置包括:
1> 配置访问控制列表
访问控制列表的作用:根据是否与访问控制列表匹配,可以确定哪些 IP包需经 IPSec处理后再发送,哪些IP包直接转发。需要保护的安全数据流使用扩展 IP访问控制列表进行定义。

acl acl-number

rule normal special }{ permit deny pro-number[source source-addr source-wildcard any ][source-port operator port1 port2 ] ] [ destination dest-addr dest- wildcard any ][destination-port operator port1 port2 ] ] [icmp-type icmp-type icmp-code][logging]

2>     配置安全提议
安全提议保存 IPSec需要使用的特定安全性协议以及加密/验证算法, 为 IPSec协商安全联盟提供各种安全参数。为了能够成功的协商 IPSec的安全联盟,两端必须使用相同的安全提议。
包括以下几点:
定义安全提议   ipsec proposal proposal-name
设置安全协议对 IP报文的封装模式 (安全隧道的两端所选择的 IP报文封装模式必须一致。) encapsulation-mode transport tunnel }
选择安全协议  transform ah-new ah-esp-new esp-new }
选择加密算法与认证算法(不同的安全协议可以采用不同的验证算法和加密算法。目前, AH支持MD5和SHA-1验证算法;ESP协议支持MD5、SHA-1验证算法和DES、3DES、AES加密算法。) 
transform ah-new ah-esp-new esp-new }
 
3>     配置安全策略
包括以下几点:
创建安全策略  ipsec policy policy-name sequence-number manual
在安全策略中引用安全提议(通过手工方式建立安全联盟,一条安全策略只能引用一个安全提议,并且若已设置了安全提议,必须先删除原先的安全提议后才能设置新的安全提议。)  proposal proposal-name
在安全策略中引用访问控制列  security acl access-list-number
配置隧道的起点和终点  tunnel local ip-address
                                            tunnel remote ip-address
配置安全联盟的 SPI      sa inbound ah esp spi spi-number
                                                           sa outbound ah esp spi spi-number
配置安全联盟使用的密钥(在安全隧道的两端, 本端的输入安全联盟SPI及密钥必须和对端的输出安全联盟SPI及密钥保持一致;本端的输出安全联盟 SPI 及密钥必须和对端的输入安全联盟 SPI及密钥保持一致。)

AH16进制密钥   sa inbound outbound ah hex-key-string hex-key

AH 字符密钥     sa inbound outbound ah string-key string-key

ESP16进制密钥  sa inbound outbound esp encryption-hex hex-key 

 ESP字符密钥    sa inbound outbound esp string-key string-key

 
 
4> 在接口上应用安全策略  ipsec policy policy-name
  

2. 自动协商配置

 
 
对于采用自动协商方式,除完成上述配置后,还需要进行相关的 IKE配置。
IKE创建安全策略联盟的配置包括:
用 IKE创建安全策略联盟   ipsec policy policy-name sequence-number isakmp
配置安全策略引用的访问控制列表   security acl access-list-number
指定安全隧道的终点(对于用 IKE 协商方式创建的安全策略联盟,不需设置本端地址,IKE 能自动地从应用该安全策略的接口上获取本端的地址。)  tunnel remote ip-address
配置安全策略中引用的安全提议   proposal proposal-name1 proposal-name2...proposal-name6 ]


 3.IPSec显示与调试

IPSec 提供以下命令显示安全联盟、安全联盟生存周期、安全提议、安全策略的信息以及 IPSec处理的报文的统计信息。

display命令可在所有视图下进行操作,debugging命令只能在用户视图下操作。

显示安全联盟的相关信息 display ipsec sa [ brief | remote ip-address policy policy-nameseq-number ] | duration ] [ secp slot/card/port  ] ]

显示IPSec处理报文的统计信息 display ipsec statistics [ secp [ slot/card/port  ] ]

显示安全提议的信息 display ipsec proposal [ name proposal-name ] [ secp [slot/card/port  ] ]

显示安全策略的信息 display ipsec policy [ brief | name policy-name [ seq-number ] ] [secp [ slot/card/port  ] ]

显示安全策略模板的信息 display ipsec policy-template [ brief | name policy-name [ seq-number ] ] [ secp slot/card/port  ] ]

打开IPSec的调试功能 debugging ipsec { all | sa | packet [ policy policy-name [ seq-number ] | parameters ip-address protocol spi-number ] | misc  | secp-setting }  [ secp [slot/card/port  ] ]

禁止IPSec的调试功能 undo debugging ipsec { all | sa | packet [ policy policy-name [ seq-number ] | parameters ip-address protocol spi-number ] | misc | secp-setting }  [ secp [slot/card/port  ] ]

ipsec协议(转)的更多相关文章

  1. IPSec协议

    IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...

  2. IPSec协议框架

    文章目录 1. IPSec简介 1.1 起源 1.2 定义 1.3 受益 2. IPSec原理描述 2.1 IPSec协议框架 2.1.1 安全联盟 2.1.2 安全协议 报文头结构 2.1.3 封装 ...

  3. IPsec协议簇简析

    简介 IPsec协议簇是应用在网络层上的,来保护IP数据报的一组网络传输协议的集合.它是IETF(Internet Engineering Task Force)制定的一系列协议,它为IP数据报提供了 ...

  4. IPSec协议;IPv6为何增加对IPSec协议的支持

      IPSec由一系列的协议组成,除IP层的协议完全结构外,还包括了AH.ESP.ISAKMP.ISAKMP的因特网IP安全解释域.IKE.OAKLEY密钥协议确定等.ESP和AH定义协议.载荷头的格 ...

  5. 安全协议系列(五)---- IKE 与 IPSec(中)

    在上一篇中,搭建好了实验环境.完整运行一次 IKE/IPSec 协议,收集相关的输出及抓包,就可以进行协议分析.分析过程中,我们将使用 IKE 进程的屏幕输出和 Wireshark 抓包,结合相关 R ...

  6. [crypto][ipsec] 简述ESP协议的sequence number机制

    预备 首先提及一个概念叫重放攻击,对应的机制叫做:anti-replay https://en.wikipedia.org/wiki/Anti-replay IPsec协议的anti-replay特性 ...

  7. 网络安全协议之IPsec

    声明 本文仅发表在博客园,作者LightningStar. 简介[1] IPSec(Internet 协议安全)是一个工业标准网络安全协议,工作在OSI模型的第三层,即网络层,为IP网络通信提供透明的 ...

  8. IPsec 学习笔记

    工作中需要,参考网上的资料对IPSecVPN进行学习,并通过博客记录下一些知识点作为学习记录和后续复习的材料. Transport Layer (TLS) 其中主要参考了以下文档: http://ww ...

  9. RFC(请求注解)--各种协议-标准

    转自:http://blog.sina.com.cn/s/blog_65d6476a0101cj8n.html RFC(Request For Comments)-意即“请求注解”,包含了关于Inte ...

随机推荐

  1. hadoop集群默认配置和常用配置

    http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html 获取默认配置 配置hadoop,主要是配置core-site.xml, ...

  2. Java-JUC(十一):线程8锁

    题目: 判断以下8种情况,输出的内容 题目一:一个Number实例对象number,两个非静态同步方法getOne,getTwo,两个线程打印输出(一个线程调用number.getOne,另外一个线程 ...

  3. IDEA 不能显示项目里的文件结构

    方法一: 关闭IDEA, 然后删除项目文件夹下的.idea文件夹 重新用IDEA工具打开项目 方法二: 菜单:File -> Invalidate Caches / Restart

  4. windows 环境变量

    1.考虑下面的需求,进入cmd之后,我就想执行mysql客户端命令,而这需要转到mysql安装目录,找到mysql可执行文件,在这个目录下执行mysql命令.这样太麻烦,有没有好的解决办法? 2.使用 ...

  5. DELL平板如何安装WIN10系统 -PE启动问题

    开机按F2可以进入BIOS设置,如果你的系统已经被删了,则开机会自动进入检查程序   进入BIOS之后,可以看到如果改成Legancy,默认第一启动方式是Internal HDD   我如果重装系统, ...

  6. ES6...扩展运算符(数组或类数组对象)

    数组和类数组对象定义 数组:[] 类数组对象:只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象,我们就认为他是类数组对象. 数组使用 let foo_arr = [ ...

  7. 安装和测试Kafka(转)

    http://blog.javachen.com/2015/03/17/install-and-test-kafka/# 本文主要介绍如何在单节点上安装 Kafka 并测试 broker.produc ...

  8. JavaWeb应用项目中文乱码的解决

     转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6383542.html 在把web项目成功部署到云主机后,通过浏览器成功地访问到了你的网站,却发现页面里本该由 ...

  9. cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug

    其实总体自定义UI组件都比较简单,尤其是cocos2d-js是开源的,如果有什么不明白的直接看js代码或者C++代码即可.当然js代码基本就够了. 另外,js的ctor函数虽然说是构造函数,但毕竟不是 ...

  10. 使用urllib2实现图片文件下载

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #使用urllib2实现图片文件下载 #来源:my2010Sam import urllib2 import ...