IPsec基础知识

IPsec是基于IP层提出的网络安全协议,它是一个协议族,不是一个单一的协议,其国际工程任务组草案协议定义号码是4301。草案链接:

https://tools.ietf.org/html/rfc4301

该协议经历了3个版本的变迁

rfc1825—————–>rfc2401——————–>rfc4301

 

其主要目的就是保证TCP/IP模型中定义的IP层的网络安全,分为:

  • 数据源原始性
  • 包的完整性
  • 保密性

 

其实现这个目的方法是对IP层的数据进行加密来保证保密性,使用hash算法保证数据的完整性,使用源认证保证数据的原始性。

名词解释:

AH: Authentication Header        –         头认证

ESP:  Encapsulating Security Payload           –         封装安全负载

SA:   Security Association            –           安全管理

AH: 主要是提供无连接的完整性和保证数据源的一致性,以及防止网络重放攻击

ESP: 主要提供数据的保密性,无连接的完整性和保证数据源的一致性,抗网络重放攻击

SA: 提供AH(或)和ESP中协议中的参数,这些参数一般指的是认证和加密时所使用的密钥。这里涉及到另外一个协议Internet Security Association and Key Management Protocol (ISAKMP) ,负责网络认证和密钥交换。

AH和ESP在使用的时候只能二选一,即要么使用AH,要么采用ESP来保护数据。但是在实现的时候,根据rfc4301,ESP是必须被实现的,AH则是可选的。

加密部分使用对称加密,对称加密就是加密和解密都使用同样的密码。这样就涉及到密码的传递,一端使用某个密钥加密,需要告诉另外一端这个密钥是什么,那么这个密钥又是怎么传递的,关于这部分IPsec定义了一个子协议,IKE就是密码交换协议。通常密码交换使用RSA或者DSA不对称加密或者预共享密码(pre-shared key),不对称加密策略是一端使用公钥加密,另外一端使用私钥加密,而私钥不会,也不需要在网络中传输,因此不存在被截获的问题。

密钥不会被传输的,传输的只是生成密钥的种子(IETF草案中,定义为material,直译为材料,其实它的作用就像是一个种子,有了种子和算法,我们就可以生成密钥)

也许有人会说,那直接使用不对称对IP层负载数据进行不就可以,这样省的再使用另外一套加密,并且也不要传递密钥了。问题就是不对称加密比起对称加密很慢,速度跟不上网络的传输速度。

 

通常IPsec中所使用的对称加密协议有:

  • DES-CRC
  • TDES-CRC(或者说3DES-CRC)
  • AES-CRC
  • Blowfish-CRC

除了上述的加密算法,IPsec还规定另外一种, NULL,NULL是什么都没有做,经过NULL加密的数据,前后是没有变化的。

在通信的时候,一个会话中并不是所有的包都是使用同一个密钥,而是不同密钥对不同时间段的数据包加密,这样就避免了,即使一部分数据包被截获,仍然无法正确的解析出一个完整有效信息。

IPsec有2中实现模式

  • 点对点的传输模式(Transport Mode)
  • 网络隧道模式(Network Tunnel Mode)

 

点对点传输模式

IP头完全不会被动到,就是说不会被修改,也不会被加密,只有IP的负载数据部分会被加密,即使用AH或ESP保护起来;

 

网络隧道模式

在这种模式下,整个IP包会被AH或ESP保护起来,这种模式一般用于VPN。

 

SA是IPsec中非常重要的一个子协议,因为IPsec服务最开始的阶段开始于SA,并且SA存活于整个会话过程中。SA主要做

  • 认证方法
  • diffie-Helman组的选择
  • 加密算法 ( 用于保密 )
  • DH交换 ( 密钥生成种子 )
  • hash算法 ( 用于数据完整性 )
  • 策略协商( 使用AH还是ESP )

 

 

参考:

http://en.wikipedia.org/wiki/IPsec

https://tools.ietf.org/html/rfc4301

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *