IPSec使用Internet密钥交换(IKE)协议来安全地协商密钥。
安全关联常被称为SA,它是IPSec的一个基本部件。SA是SA数据库(SADB)中的一个条目,SADB包含双方协商的IKE活IPSec安全信息。
SA分两种:
IKE(ISAKMP)SA;
IPSec SA。
对等体之间的IKE SA用于控制数据流,如协商对IKE数据流进行加密以及对等体进行验证的算法。在对等体之间只有一个IKE SA,它的寿命通常比IPSec SA长,因此增加的数据流量更少。
IPSec SA用于协商对对等体之间的IP数据流进行加密的算法,对哪些数据流进行加密由策略定义决定。IPSec SA是单向的,因此至少需要两个:一个用于入站数据流,另一个用于出站数据流。在对等体之间可以有多对IPSec SA,用于描述不同的IP主机组成或IP数据流。IPSec SA的寿命通常比IKE SA短,而增加的数据流量更多。
IKE分两个阶段运行:
phase 1:让IKE对等体彼此验证对方并确定会话密钥。这个阶段使用DH交换、cookie和ID交换创建一个ISAKMP SA(IKE的安全关联,有时候也被称为IKE SA)。确定ISAKMP SA后,发起方和应答方之间所有IKE通信都将通过加密和完整性检查进行保护。IKE Phase 1旨在帮助在对等体之间建立一条安全信道,以便phase 2协商能够安全地进行。
phase 2:使用ESP或AH来保护IP数据流,以协商并确定IPSec SA。
注意:虽然我们互换地使用ISAKMP和IKE,但它们之间是有区别的。ISAKMP规定了IPSec对等体之间如何通信,对等体之间交换的消息的结构以及对等体建立连接时经过的状态变换。ISAKMP提供了验证对等体和密钥交换的方法。然而,它没有规定如何交换验证密钥,但IKE对此做了规定。
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Initiator ! ! Cookie ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Responder ! ! Cookie ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! MjVer ! MnVer ! Exchange Type ! Flags ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Message ID ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ISAKMP报头。 Cookie是一个长8字节的随机值,用于标识IKE SA。Cookie是通过计算对等体身份(IP地址,端口和协议)、本地生成的秘密数字、日期和时间的散列值得到的,用作一种ISAKMP SPI.