参考教材:TCP-IP Guide
IPSec 介绍
IPSec是IP层的一种安全协议,主要作用就是为了解决网络通信中的安全问题。在一般的网络中,暴露这很多的安全问题,比如说数据包被监听窃取,被篡改,以及伪造身份,拒绝服务等。可能在我们使用网络的过程中体会不到网络安全的重要性,可以试想一个场景,你在网络上操作你的网上银行账号,如果你的路由器被窃听,你发送的数据包会被攻击者接收,如果没有一些安全措施,很容易就把你的账号密码信息窃取,这就是不安全的网络。但是如果使用了一些安全的措施,可能攻击者就无法或者很难拿到你的这种敏感信息。
对于IP层来讲,它是不可靠的,数据包可能会被丢失,篡改等。IPSec就是一种安全保障措施,能够保证数据的真实性和保密性。功能可以总结为:
1.隐私数据加密
2.数据完整性
3.抵御特定的攻击
4.协商加密算法
其中与IPSec息息相关的是:RFC2401规定了整个IPSec体系,IPSec的安全传输协议,IPSec的两种传输模式,动态秘钥交换!
如果要进行安全的通讯,先下看看如何做到?
1. 首先如何对数据加密, 这个就要了解IPSec的核心协议以及加密算法
2. 接收方接收到也的需要知道如何解密, 所以需要进行协商,知道是如何加密的,一遍进行解密
3. 传输的方式,在哪个层传输,比如说是在IP层加密,还是在特定的路由器进行设置
接下来慢慢击破!
IPSec核心协议
下图主要给给出了IPSec的协议和相关组件
IPSec的核心协议主要是
AH : 该协议主要是提供数据的认证服务和源验证服务,这个协议不提供加密功能,有效的抗重播能力
ESP:
认证的头部来保证数据的完整性,同时可以对payload进行加密
AH和ESP不能单独运作,需要下列组件支持
IPSec支持的组件主要有:
加密散列算法:
AH 和 ESP 并没有指定特定的加密算法,这使得他们可以灵活的工作在多重算法之下同时也可以根据需求的需要进行协商,两个常用的算法是MD5 和 安全散列算法 SHA-1
安全策略/SA:
SA,管理方法, 需要一些方法来跟踪设备之间的安全关系,构造SA,进行交换协商,注意这个地方每个SA都是单项的。
IKE:密钥交换协议,主要是用于两端协商使用的加解密算法和SA信息
IPSec实现架构
这里来回答IPSec是工作在哪一个层次的。其实在这里也没有一个确切的结论,不同的系统也有不同的实现方式,当然也有专门支持IPSec的路由器,目前基本都是有2中,
一个就是实现在主机,一个就是实现在路由器等特定的网络设备。 但是从实体数量来讲主机数目远比路由器多的多,所以要实现主机支持IPSec要比路由器支持更加久远。
1. 集成的设计,将IPSec实现集成到IP层,这个设计现在的Linux IPV6协议栈已经实现,IPv4因为实现比较早,所以实现起来比较复杂
2.
Bump In The Stack(BITS):将IP和IPSec分成2层, IPSec位于链路层和IP层之间
3.BITW:这种方式主要是实现在特定的网络设备,一般的主机不具有IPSec功能。比如说组件一个特定的VPN的网络,本身主机发出去的包并没有被加密,但是发出去的时候,默认的路由器局域IPSec功能,给数据包加密。如下图,IPSEC在R1和R2之间..
IPSec模式
这个部分回答IPSec中数据包按照什么格式如何进行传输的? 有两种模式:传输模式和隧道模式。
传输模式:这个数据包的格式就是在IP header和 payload之间,中间是AH或者ESP头,封装成这种数据格式,然后输送到网络中。
隧道模式:这种模式主要是加密整个数据包,然后再加密的封包上增加新的头部,可以看到IPSec的头部右边是整个的数据包,然后重新增加一个新的头部。
数据包按照如上方式进行封装,然后发送到网络中进行传输,所以其实说起来网络传输并没有什么变化,只是IPSec对数据包进行了改装,增加的其安全性,以一种伪装的形式传输在网络中,即使被接收,别人也无法获取里面什么信息。