IPSec VPN 基础介绍
介绍
- vpn基础概念
- ipsec vpn框架
- ESP封装方式和传输模式介绍
VPN基础概念
虚拟专用网(英语:Virtual Private Network,简称VPN),是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内联网的网络讯息。vpn分为远程接入vpn和站点到站点vpn。
· 远程接入:通常是终端连接到公司网关,访问公司内部网络。
· 站点到站点:通常是网关和网关之间建立vpn隧道,使其从一个站点到另外一个站点通信,好似在同一个内网中一样。
远程接入的vpn种类有:ipsec vpn、PPTP、SSL、L2TP+ipsec。
站点到站点的vpn种类有:ipsec vpn、GRE tunnel、帧中继、MPLS VPN。
由于需要使用公网进行数据传输,那么为了保证数据的安全。我们至少需要保障:
·私密性:传递的数据包经过加密。
·完整性:数据在传递的过程中没有被修改。
·源认证:数据是可信任的源传递给我。
IPSec VPN框架
ipsec框架包括,加密、认证(验证)、封装协议、传输模式、密钥有效期。
加密和认证
既然在公网上传输需要解决。私密性、完整性、源认证。那么我们来看看ipsec vpn如何解决这些问题呢?
私密性,私密性固然可见。就是希望传输的数据不是明文,而是经过加密之后的。然而这就涉及到一个加解密的概念。我们先谈加密,在加密算法中,分为两种一种是对称密钥。另外一种是非对称密钥。
对称密钥,加密和解密都是同样的密钥。例如传递数据“123”,使用密钥A’, 加密后的结果“abc”,对方收到“abc”加密文件之后自然要 使用密钥A’去解码“abc”才能得到想要的数据。那么问题来了,如何才能安全的分发密钥就成了关键。
非对称密钥,非对称密钥分为公钥和私钥。公钥用于加密数据,私钥用于解密数据,但是公钥无法对数据进行解密。由于共钥和私钥是一种不可逆的关系,所以公钥可以随意发放给任何人,而不必担心数据安全的问题,但是私钥必须自己保留。例如A和B要进行加密通信。A发送数据“123”,使用B’公钥加密得到结果“abc”,传递给B,B使用私钥B”进行解密即可得到数据。反之亦然。
既然非对称密钥这么好,我们直接使用非对称密钥不就好了么?从技术层面来说当然是这样,但是实际应用中涉及性能。非对称密钥算法加密性能不如对称密钥。所以有没有一种方法既可以安全的传输加密数据,又可以不耗损太多的性能呢?对称密钥和非对称密钥的结合。有关性能不部分可参见Performance Analysis of Data Encryption Algorithms
同样A要发送数据“123”,使用对称密钥B”,来进行加密,那么B”如何得到呢?通过非对称密钥来传递B”。大致过程如下。
完整性和源认证。完整性和源认证是在非对称密钥算法的前提上所添加的。为什么这么说呢?因为无法保证数据的私密性,那么完整性和源认证根本无从谈起。就像两个人说悄悄话,中间者已经完全可以监听到你们谈话的内容,自然可以完完整整的修改内容。
完整性,所谓的完整性就是文件或数据在传输的过程中没有被修改,哪怕是漫无目的的修改。在文件中通常都会有一个md5。不管文件多大或文件多小,都能生成一个固定长度的md5值,并且这个值具备 “雪崩效应”、“不可逆”、“冲突避免”、“固定长度”。这么好的东西自然可以用来做完整性校验。因为哪怕是文件只修改了一个字符,md5计算出来的值也会有天壤之别。
源认证,源认证就是要保证我从对方收到的数据,真的是一个合法的源发送给我的。源认证主要用于防止中间人攻击,就是假冒一个合法的源,向对端传送数据。
在实际传输过程中,例如站点A要传数据到站点B, 明文数据通过散列函数算出一个散列值,然后将 数字签名和计算明文的散列值,通过公钥进行加密,传递到对方。对方收到数据之后会首先检查数字签名,解密成功之后确认是合法的源发给我的数据,然后才会对加密信息进行解密。
这样通过文件的散列函数确认了文件的完整性,通过数字签名解决了源认证的问题,并且通过非对称密钥算法解决文件传输加密的问题。这样就保证了网络层的安全。
封装协议和传输模式
在ipsec vpn中封装方式分为两种,一种是ESP封装一种是AH封装。我们少废话先看报文。
关于传输模式和隧道模式在下面有介绍,这里暂时不涉及。观察上图可以发现,AH只做了校验,并没有加密。反观ESP提供了加密、验证、校验完整功能。所以AH和ESP对比结果如下。
AH:提供源认证和完整性校验,但是不提供加密服务。不能穿越NAT
ESP:提供加密,源认证,完整性校验。
另外要说明的是AH 校验,并不是校验IP头中所有的字段,而是部分字段。这部分详细信息请参阅RFC2402。下图中黑色部分就说不校验的部分。之所以不校验这些字段是因为,这些字段在传输的过程中可能会发生改变,导致接受方校验错误而导致数据包的丢弃。
传输模式和隧道模式
在传输模式中分为传输模式和隧道模式。这里涉及2个点,一个是加密点和通信点。例如在一个二层以太网环境中,两台主机互相进行通信,那么他们之间的通信就是加密点等于通信点。但是如果要访问的是公网上分支站点的内部ip,此时的情况加密点和通信点并不是在一起,所以就需要使用到隧道模式。
密钥有效期
长时间使用相同的密钥来加密数据显然是不安全的,所以cisco默认设置3600秒的时候就会重新生成一次密钥,新生成的密钥与之前的密钥不存在衍生关系。保证了长期使用相同的密钥也不用担心暴力破解加密流量的可能性。
ESP封装方式和传输模式介绍
ESP报文结构如下,由于Wireshark解码的问题,这一部分可能观察不到。如下部分来自RFC4303和IPSec Overhead Calculator Tool。由于不同的加密方式会产生不同ESP大小,如下部分仅以此配置为准。具体查询,可参见IPSec Overhead Calculator Tool,如下部分不再赘述。
配置:
crypto isakmp policy 10
encr aes
hash sha512
authentication pre-share
group 16
lifetime 60
crypto isakmp key cisco address 12.1.1.2
!
crypto ipsec transform-set 123 esp-aes esp-sha-hmac
“mode transport or mode tunnel”
!
crypto map vpn 10 ipsec-isakmp
set peer 12.1.1.2
set transform-set 123
match address vpn
!
ip access-list extended vpn
permit ip host 1.1.1.1 host 2.2.2.2
!
end
Field | Description |
---|---|
ESP Header SPI(4) | 安全参数索引(Security Parameter Index)与目标地址和安全协议类型组合的32位值,用于标识要用于此数据报的安全关联。 |
ESP Header Sequence Number(4) | 当在两个设备之间形成安全关联时,计数器字段初始化为零,每当使用此SA进行数据传输,此值将加一。 这用于防止重放攻击 |
Payload Data(Variable) | 加密的有效载荷数据,由高层消息或封装的IP数据报组成。 还可以包括支持信息,例如某些加密方法所需的初始化向量。 |
ESP Trailer Padding(Variable 0 to 255) | 根据需要包括用于加密或对齐的附加填充字节。 |
Pad Length(1) | 填充字段的字节数。 |
ESP Trailer Next Header(1) | 包含数据报中下一个报头的协议号。 |
ESP Authentication Data (Variable) | 此字段包含应用可选ESP认证算法后产生的完整性检查值(ICV) |
PACKET DETAILS(Transport Mode) | value |
---|---|
Field | Bytes |
Original IPv4 Header | 20 |
SPI (ESP Header) | 4 |
Sequence (ESP Header) | 4 |
ESP-AES (IV) | 16 |
Original Data Payload | 80 |
ESP Pad (ESP-AES) | 14 |
Pad length (ESP Trailer) | 1 |
Next Header (ESP Trailer) | 1 |
ESP-SHA-HMAC ICV (ESP Trailer) | 12 |
Total IPSec Packet Size | 152 |
PACKET DETAILS(Tunnel Mode) | value | |
---|---|---|
Field | Bytes | |
New IPv4 Header (Tunnel Mode) | 20 | |
SPI (ESP Header) | 4 | |
Sequence (ESP Header) | 4 | |
ESP-AES (IV) | 16 | |
Original Data Packet | 100 | |
ESP Pad (ESP-AES) | 10 | |
Pad length (ESP Trailer) | 1 | |
Next Header (ESP Trailer) | 1 | |
ESP-SHA-HMAC ICV (ESP Trailer) | 12 | |
Total IPSec Packet Size | 168 |
参考文献
- Cisco IPSec VPN 实战指南 秦柯 著
- Performance Analysis of Data Encryption Algorithms
- Encapsulating Security Payload (ESP)
- RFC 2402 3.3.3.1.1.1 Base Header Fields
- IPSec Encapsulating Security Payload (ESP)
- RFC4303
- IPSec Overhead Calculator Tool
2017年10月12日更新
没有评论:
发表评论