加密第四节_IPSec基本理论

加密第四节_IPSec基本理论

本节内容

  1. IPSec简介
  2. IPSec两种工作模式
  3. 判断隧道模式和传输模式
  4. IPSec两种模型
  5. IPSec两个数据库

IPSec基本理论

IPSec简介

  • 提供了网络层的安全;
  • 在明文的IP头部和网络层数据之间插入了一个IPSec的头部,保证了网络负载的安全。
  • IPSec头部有ESP头部和AH头部两种;
  • 是IPV6的强制部分

IPSec组成部分:

  • ESP(负载安全封装)协议;
  • 认证头(AH)协议;
  • Internet秘钥交换(IKE)协议

IPSec两种工作模式:

传输模式:在IP头部和网络层数据之间插入了一个头部

隧道模式: 将原始数据封装到里面,然后在外面插入IPSec头部,再在外面插入一个新的IP头部

判断隧道模式和传输模式:

第一种判断方法:加密点:两个配置了VPN的通讯设备;通讯点:两个需要通讯的网络设备
加密点不等于通讯点为隧道模式

第二种判断方法:两通讯设备中间的承载网络是全局可路由的是传输模式;若中间承载网络不是全局可以路由的是隧道模式。

IPSec两种模型

站点到站点模型和远程接入模型

IP层协议号:1->icmp;6->tcp;17->udp;47->gre;50->esp;51->ah

ESP介绍:协议号是50;不加密原始IP头部;提供私密性,数据完整性和数据源认证(HMAC);能够抵御重放攻击。
ESP包结构

SPI:一个32位的值,用来唯一标识一个安全关联(SA)用来处理这个包
SA(安全关联):双方所有协商的结果的集合
序列号:抵御重放攻击,收到相同序列号的包,将丢弃后面收到的包,只保留第一次收到该序列号的包
IV位:加密的时候会产生IV位,不加密时没有IV位
垫片(padding):标识垫片
padding length(垫片长度):用来补齐类似于DES的64bit加密数据
Report Handler(下一个头部)
ESP traller(esp尾部)
ESP认证块:96bit长度,整块从ESP头部到尾部的数据做哈希,得到的值放到ESP认证块中

AH介绍:协议号是51;完整性校验和和源认证;能防重放攻击;不能提供数据加密(严重问题);IP头部部分被认证,包括版本号,载荷长度,总长度,标示符,IP协议,源IP地址,目的IP地址,因为IP地址需要被认证,所以AH不能穿越NAT(严重问题)因为存在这两个问题,所以一般不会使用AH
AH包结构

IPSec两个数据库

SPD(安全策略数据库):SPD决定了什么流量将接受IPSec处理
SADB(安全关联数据库):SADB维护每一个SA(安全关联)包含的参数

SPD(安全策略数据库)
选择器选择感兴趣流加密,可以通过源IP,目的IP,名字,传输层协议,源目端口号来进行选择
选择流量后有三种处理方式:旁路,不管它;丢弃和IPSec加密。
SPD中每一个条目都与SA关联

SADB(安全关联数据库)
在SADB里面的每一个条目决定了一个特定SA的参数,当一个IPSec SA被创建,SADB更新所有关于这个SA的参数。当一个inbound IPSec数据包抵达,SADB基于外层IP头部的目的IP地址,SPI和IPSec封装协议(ESP/AH)检索数据库以获得相应的SA,然后用这个SA的相关参数处理这个inbound IPSec数据包。对于outbound IPSec数据包处理的相关参数,是由SPD相关联的SA来获取的。
示意图

SA包含的9大部分

  1. 序列号
  2. 序列号溢出位(序列号有32位,溢出之后重新开始)
  3. 防重放窗口,默认是64位
  4. SA的生存时间,分为软时间和硬时间,SA在到期前一段时间会申请新的KEY,在KEY生效到申请新KEY之间这段时间叫软时间
  5. 模式(传输模式和隧道模式)
  6. AH验证算法
  7. ESP验证算法
  8. ESP加密算法
  9. path MTU(在该方向最小的MTU,从A->B过程中最小的MTU)

什么是SA(安全关联)
SA是IPSec的一个基本组成部分,SA是SADB的一个条目,它包含双方关于IKE和IPSec已经协商完毕的安全信息

两种SA
IKE SA或者叫ISAKMP SA:1双向;2决定了IKE协议处理相关细节
IPSec SA:1单向的;2与封装协议相关;3决定了具体加密流量的处理
两种类型的SA都由IKE协议协商产生

posted @ 2017-02-10 15:49  随风飘雪012  阅读(940)  评论(0编辑  收藏  举报
返回顶部 $(function(){ $('#returnTop').click(function () { $('html,body').animate({ scrollTop: '0px' }, 800); returnfalse; }); });