IPSec
协议不是一个单独的协议,它给出了应用于
IP
层上网络数据安全的一整套体系结构,包括网络认证协议
Authentication Header
(
AH
)、封装安全载荷协议
Encapsulating Security Payload
(
ESP
)、密钥管理协议
Internet Key Exchange
(
IKE
)和用于网络认证及加密的一些算法等。
IPSec
规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源认证、数据加密等网络安全服务。
一、安全特性
IPSec
的安全特性主要有:
・
不可否认性
"
不可否认性
"
可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过消息。
"
不可否认性
"
是采用公钥技术的一个特征,当使用公钥技术时,发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名,所以只要数字签名通过验证,发送者就不能否认曾发送过该消息。但
"
不可否认性
"
不是基于认证的共享密钥技术的特征,因为在基于认证的共享密钥技术中,发送方和接收方掌握相同的密钥。
・
反重播性
"
反重播
"
确保每个
IP
包的唯一性,保证信息万一被截取复制后,不能再被重新利用、重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包冒取非法访问权(即使这种冒取行为发生在数月之后)。
・
数据完整性
防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。
IPSec
利用
Hash
函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。
・
数据可靠性(加密)
在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在
IPSec
中为可选项,与
IPSec
策略的具体设置相关。
・
认证
数据源发送信任状,由接收方验证信任状的合法性,只有通过认证的系统才可以建立通信连接。
二、基于电子证书的公钥认证
一个架构良好的公钥体系,在信任状的传递中不造成任何信息外泄,能解决很多安全问题。
IPSec
与特定的公钥体系相结合,可以提供基于电子证书的认证。公钥证书认证在
Windows 2000
中,适用于对非
Windows 2000
主机、独立主机,非信任域成员的客户机、或者不运行
Kerberos v5
认证协议的主机进行身份认证。
三、预置共享密钥认证
IPSec
也可以使用预置共享密钥进行认证。预共享意味着通信双方必须在
IPSec
策略设置中就共享的密钥达成一致。之后在安全协商过程中,信息在传输前使用共享密钥加密,接收端使用同样的密钥解密,如果接收方能够解密,即被认为可以通过认证。但在
Windows 2000 IPSec
策略中,这种认证方式被认为不够安全而一般不推荐使用。
四、公钥加密
IPSec
的公钥加密用于身份认证和密钥交换。公钥加密,也被称为
"
不对称加密法
"
,即加解密过程需要两把不同的密钥,一把用来产生数字签名和加密数据,另一把用来验证数字签名和对数据进行解密。
使用公钥加密法,每个用户拥有一个密钥对,其中私钥仅为其个人所知,公钥则可分发给任意需要与之进行加密通信的人。例如:
A
想要发送加密信息给
B
,则
A
需要用
B
的公钥加密信息,之后只有
B
才能用他的私钥对该加密信息进行解密。虽然密钥对中两把钥匙彼此相关,但要想从其中一把来推导出另一把,以目前计算机的运算能力来看,这种做法几乎完全不现实。因此,在这种加密法中,公钥可以广为分发,而私钥则需要仔细地妥善保管。
五、
Hash
函数和数据完整性
Hash
信息验证码
HMAC
(
Hash message authentication codes
)验证接收消息和发送消息的完全一致性(完整性)。这在数据交换中非常关键,尤其当传输媒介如公共网络中不提供安全保证时更显其重要性。
HMAC
结合
hash
算法和共享密钥提供完整性。
Hash
散列通常也被当成是数字签名,但这种说法不够准确,两者的区别在于:
Hash
散列使用共享密钥,而数字签名基于公钥技术。
hash
算法也称为消息摘要或单向转换。称它为单向转换是因为:
1
)双方必须在通信的两个端头处各自执行
Hash
函数计算;
2
)使用
Hash
函数很容易从消息计算出消息摘要,但其逆向反演过程以目前计算机的运算能力几乎不可实现。
Hash
散列本身就是所谓加密检查和或消息完整性编码
MIC
(
Message Integrity Code
),通信双方必须各自执行函数计算来验证消息。举例来说,发送方首先使用
HMAC
算法和共享密钥计算消息检查和,然后将计算结果
A
封装进数据包中一起发送;接收方再对所接收的消息执行
HMAC
计算得出结果
B
,并将
B
与
A
进行比较。如果消息在传输中遭篡改致使
B
与
A
不一致,接收方丢弃该数据包。
有两种最常用的
hash
函数:
・HMAC-MD5 MD5
(消息摘要
5
)基于
RFC1321
。
MD5
对
MD4
做了改进,计算速度比
MD4
稍慢,但安全性能得到了进一步改善。
MD5
在计算中使用了
64
个
32
位常数,最终生成一个
128
位的完整性检查和。
・HMAC-SHA
安全
Hash
算法定义在
NIST FIPS 180-1
,其算法以
MD5
为原型。
SHA
在计算中使用了
79
个
32
位常数,最终产生一个
160
位完整性检查和。
SHA
检查和长度比
MD5
更长,因此安全性也更高。
六、加密和数据可靠性
IPSec
使用的数据加密算法是
DES--Data Encryption Standard
(数据加密标准)。
DES
密钥长度为
56
位,在形式上是一个
64
位数。
DES
以
64
位(
8
字节)为分组对数据加密,每
64
位明文,经过
16
轮置换生成
64
位密文,其中每字节有
1
位用于奇偶校验,所以实际有效密钥长度是
56
位。
IPSec
还支持
3DES
算法,
3DES
可提供更高的安全性,但相应地,计算速度更慢。
七、密钥管理
・
动态密钥更新
IPSec
策略使用
"
动态密钥更新
"
法来决定在一次通信中,新密钥产生的频率。动态密钥指在通信过程中,数据流被划分成一个个
"
数据块
"
,每一个
"
数据块
"
都使用不同的密钥加密,这可以保证万一攻击者中途截取了部分通信数据流和相应的密钥后,也不会危及到所有其余的通信信息的安全。动态密钥更新服务由
Internet
密钥交换
IKE
(
Internet Key Exchange
)提供,详见
IKE
介绍部分。
IPSec
策略允许专家级用户自定义密钥生命周期。如果该值没有设置,则按缺省时间间隔自动生成新密钥。
・
密钥长度
密钥长度每增加一位,可能的密钥数就会增加一倍,相应地,破解密钥的难度也会随之成指数级加大。
IPSec
策略提供多种加密算法,可生成多种长度不等的密钥,用户可根据不同的安全需求加以选择。
・Diffie-Hellman
算法
要启动安全通讯,通信两端必须首先得到相同的共享密钥(主密钥),但共享密钥不能通过网络相互发送,因为这种做法极易泄密。
Diffie-Hellman
算法是用于密钥交换的最早最安全的算法之一。
DH
算法的基本工作原理是:通信双方公开或半公开交换一些准备用来生成密钥的
"
材料数据
"
,在彼此交换过密钥生成
"
材料
"
后,两端可以各自生成出完全一样的共享密钥。在任何时候,双方都绝不交换真正的密钥。
通信双方交换的密钥生成
"
材料
"
,长度不等,
"
材料
"
长度越长,所生成的密钥强度也就越高,密钥破译就越困难。
除进行密钥交换外,
IPSec
还使用
DH
算法生成所有其他加密密钥。