490 likes | 881 Views
IPSec-IKE. 薛开平( Xue Kaiping ) 信息网络实验室 Lab. of Information and Networks kpxue@ustc.edu.cn. 本章内容. 4.1 什么是 IKE? 4.2 ISAKMP 协议 4.3 IKE 第一阶段:建立 ISAKMP SA 4.4 IKE 第二阶段:建立 IPSec SAs. 4.1 什么是 IKE?. IKE ( Internet Key Exchange , RFC 4306 ):因特网密钥交换协议,是一个以受保护的方式 动态协商 IPsec SA 的协议。
E N D
IPSec-IKE 薛开平(Xue Kaiping) 信息网络实验室 Lab. of Information and Networks kpxue@ustc.edu.cn
本章内容 • 4.1 什么是IKE? • 4.2 ISAKMP协议 • 4.3 IKE第一阶段:建立ISAKMP SA • 4.4 IKE第二阶段:建立IPSec SAs
4.1 什么是IKE? • IKE( Internet Key Exchange ,RFC4306):因特网密钥交换协议,是一个以受保护的方式动态协商IPsec SA的协议。 • IKE的功能:使用某种长期密钥进行双向认证并建立会话密钥 • 协商:通信参数,安全特性(可选) • 认证通信对端 • 保护实体的标识等(可选) • 用安全的方法产生、交换、建立密钥 • 管理,删除安全关联(SA) • 长期密钥包括:共享秘密密钥、只用于签名的密钥、用于加密的密钥
IKE的组成和实现 • IKE是一个混合的协议,它的组成: • Internet密钥交换协议(IKEv2,RFC4306) • Internet安全关联和密钥管理协议(ISAKMP,RFC2408) • Oakley密钥确定协议(RFC2412) • IPSec Domain of Interpretation ,(IPSec DOI,RFC2407) • IKE分两个阶段实现: • 第一阶段为建立IKE本身使用的安全信道而相互交换SA(采用ISAKMP)——ISAKMP SA(双向) • 第二阶段利用第一阶段建立的安全信道交换IPSec通信中使用的SA——IPSec SA(单向)
Application Process DOI Definition Application Protocol IKE Security Protocol (IPsec) Socket Layer Protocol Transport Protocols (TCP/UDP) Internet Protocol (IP) Link Layer Protocol IKE Network Placement
4.2 ISAKMP协议 • Internet Security Association and Key Management Protocol (RFC 2408) • 提供密钥管理架构 • 定义SA的建立、协商、修改、删除规程和分组格式 • 独立于密钥交换协议、加密算法和认证方法 • 下层由UDP协议承载,端口号为500。
ISAKMP payload format • ISAKMP head ISAKMP头(HDR) • Generic Payload Header 通用载荷头 • Transform Payload 转换载荷 • Proposal Payload 提议载荷 • Security Association Payload 安全关联载荷(SA) • Key Exchange Payload 密钥交换载荷 • Identification Payload 标识载荷 • Certificate Payload 证书载荷(CERT) • Certificate Request Payload 证书请求载荷 • Hash Payload 散列载荷 • Signature Payload 签名载荷 • Nonce Payload Nonce载荷 • Notification Payload、Delete Payload
抗阻塞,通常采用HASH算法对地址、端口号及本地秘密信息计算得到。抗阻塞,通常采用HASH算法对地址、端口号及本地秘密信息计算得到。 ISAKMP head 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 指示后续的载荷是否是加密或认证? 主版本、次版本 由发起者生成的一个随机值,用于阶段2协商中标识协议状态 以字节为单位,表示整个报文的长度(头+载荷)
ISAKMPGeneric Payload Header • 每一个ISAKMP载荷由通用头开始,它定义了载荷的边界,所以可以连接不同的载荷。
Security Association Payload • 用于协商SA所基于的解释域,DOI定义载荷格式、交换类型和用于命名的相关信息(密码算法,模式等)的约定。
Proposal Payload • 包括SA协商中需要的信息,协商的协议 建议号,若有相同的建议号,则表示这两个建议是and关系,如果不同,则表示or关系 0-IKE 1-ISAKMP协议 2-AH协议 3-ESP协议 4-IPcomp
Transform Payload • 定义安全服务中的算法 AH变换标识符: 2-AH_MD5 3-AH_SHA ESP变换标识符: 1-带64比特IV的CBC-DES 2-CBC-DES 3-三重DES
Key Exchange Payload 密钥交换载荷 以字节为单位 变长域,用来生成密钥的数据
Identification Payload标识载荷 • 用于通信双方交换身份信息 6——TCP 17——UDP 描述标识数据域中发现的身份信息 1——表示数据域中是4字节的IPv4地址
Certificate Payload证书载荷 指示证书的种类和相关信息: 类型 值 PGP证书 2 X.509签名证书 4 X.509密钥交换证书 5 变长域,包含证书编码域中指定类型的真正的证书数据。
IKE的结构 • 安全关联(SA) • 安全关联数据库(SAD) • 安全参数索引(SPI)
4.3 IKE第一阶段 • 目的: • 建立ISAKMP SA(安全通道) • 步骤(交换3,6个报文) • 协商安全参数 • Diffie - Hellman 交换 • 认证实体 • 交换模式: • 主模式(Main Mode):在IKE中必须配置主模式 • 野蛮模式( Aggressive Mode):用来简化规程和提高处理效率
g mod p x A B g mod p y x y K = ( g ) mod p = ( g ) mod p y x x y Diffie Hellman Algorithm • Setup • p : prime. • g : generator of Z*p • protocol • share a secret value K
第一阶段属性 • 认证方法 • 预先共享密钥 • 数字签名(DSS或RSA) • 公钥加密(RSA或EI-Gamal) • 群(group)描述(预先定义) • 群类型(协商) • 模指数群 MODP(modular exponentiation group) • 在有限域GF[2^N]上定义的椭圆曲线群 EC2N (elliptic curve group over GF[2^N])
IKE预定义群 • MODP • 素数Prime:768-bit,1024-bit,1536-bit • 生成元Generator:2 • EC2N • GF[2^155],GF[2^185] • GF[2^163](2groups),GF[2^283](2groups)
第一阶段属性(续) • 加密算法 • 密钥长度 • 分组大小 • 哈希算法 • 生存时间(秒和/或千字节)
主模式 Crypto suites I support Message 1 Alice Bob 参数协商 Crypto suite I choose Message 2 ga mod p Message 3 交换密钥 gb mod p Message 4 gab mod p{“Alice”,Proof I’m Alice} 发送ID 认证 加密 Message 5 gab mod p{“Bob”,Proof I’m Bob} Message 6
野蛮模式 Alice Bob ga mod p, “Alice”, crypto proposal Message 1 gb mod p, crypto choice, proof I’m Bob Message 2 Proof I’m Alice Message 3
符号说明 • HDR:一个ISAKMP头,HDR*表明ISAKMP后面的载荷是加密的 • SA:带有一个或多个建议的安全关联载荷 • KE:密钥交换载荷 • IDX:标识载荷,X=i表示发起者,X=r表示响应者 • HASH:杂凑载荷 • SIG:签名载荷 • CERT:证书载荷 • NX:X的nonce载荷,X为i(发起者)或r(响应者) • 〈P〉_b:载荷P的主体,就是没有通用头的载荷 • CKY-I(CKY-R):ISAKMP头中的发起者(响应者)cookie • gXi或gXr:发起者或响应者的D-H公开值 • Prf(key,msg):使用密钥key和输入信息msg的伪随机数函数,如HMAC。 • SKEYID:一个衍生自仅有通信双方知道的秘密密钥信息的密钥串。 • SKEYIDe:ISAKMP用来保护它的消息保密性的密钥信息 • SKEYIDa:ISAKMP用来认证它的消息的密钥信息 • SKEYIDd:用来在第二阶段协商中为非ISAKMP SA生成密钥的密钥信息
HDR contains CKY-I | CKY-R,是ISAKMP头标 SA带有一个或多个建议的安全关联载荷。Ni/Nr是nonce值 KE = g^i (Initiator) or g^r (Responder),是密钥交换载荷 IDii/IDir是发起者/响应者的标识载荷 HASH是杂凑载荷 协商了CKY-I,CKY-R;SA带有一个或多个建议载荷、变换载荷,确定了加密、认证算法等 HDR SA KE 交换了g^i, g^r和Ni,Nr,生成密钥: SKEYID=PRF(preshared key, Ni|Nr) SKEYID_d =PRF(SKEYID, g^ir|CKY-i|CKY-r|0) SKEYID_a =PRF(SKEYID, SKEYID_d|g^ir|CKY-I|CKY-R|1) SKEYID_e = PRF(SKEYID, SKEYID_a|g^ir|CKY-I|CKY-R|2) 主模式:用预共享密钥认证 发起者 响应者
哈希值计算 • HASH_I: • HMAC_H(SKEYID, g^i | g^r | CKY-I | CKY-R | SA | IDii) • HASH_R: • HMAC_H(SKEYID, g^r | g^i | CKY-R | CKY-I | SA | IDir)
主模式:用数字签名认证 交换了g^i, g^r和Ni,Nr,生成密钥: SKEYID=PRF(g^ir, Ni|Nr) SKEYID_d =PRF(SKEYID, g^ir|CKY-i|CKY-r|0) SKEYID_a =PRF(SKEYID, SKEYID_d|g^ir|CKY-I|CKY-R|1) SKEYID_e = PRF(SKEYID, SKEYID_a|g^ir|CKY-I|CKY-R|2) • HDR contains CKY-I | CKY-R • KE = g^i (Initiator) or g^r (Responder) • SIG_I/SIG_R = digital sig of HASH_I/HASH_R • CERT是证书载荷
主模式:用公钥加密认证 • HDR contains CKY-I | CKY-R,HASH(l)是响应方证书的HASH值 • KE = g^i (Initiator) or g^r (Responder) • 这里nonce是通过加密传输的,因此可作为共享密钥,HASH值就可以直接用来认证对方的身份。
用公钥加密认证中存在的问题 • 问题 • 采用了四次公钥加/解密操作,耗费计算资源,与签名认证算法相比,多了两次加/解密 • 修改方法 • 采用修正的公钥加密认证
Main Mode: Authentication with Revised Public Key Encryption HDR contains CKY-I | CKY-R KE = g^i (Initiator) or g^r (Responder) Ki = prf(Ni, CKY-I), Kr = prf(Nr, CKY-R)
密钥推导 • SKEYID • Pre-shared keys • SKEYID=PRF(preshared key, Ni|Nr) • SKEYID是从预共享密钥推导得到,并且总是与Ni/Nr有关,这样即使采用相同的预共享密钥,不同的Ni/Nr产生的SKEYID是不同的。 • Digital signatures: • SKEYID=PRF(Ni|Nr, gir) • Public key encryption • SKEYID=PRF(hash(Ni|Nr), CKY-i|CKY-r)
密钥推导(续) • SKEYID_d (used to derive keying material for IPsec SA): • SKEYID_d=PRF(SKEYID, gir|CKY-i|CKY-r|0) • SKEYID_a (auth key for ISAKMP SA): • SKEYID_a=PRF(SKEYID,SKEYID_d|gir|CKY-i|CKY-r|1) • SKEYID_e (enc key for ISAKMP SA): • SKEYID_e=PRF(SKEYID,SKEYID_a|gir|CKY-i|CKY-r|2)
IKE第一阶段小节 • 认证 • 根据预共享密钥和公钥密码机制 • 抗中间人、伪装攻击 • DH密钥协商 • 提供密钥的生成源gir,Ni/r,生成SKEYID,SKEYID_d,SKEYID_a,SKEYID_e
Why all these secrets? • SKEYID_d is used for deriving keying data for IPSec • SKEYID_a is used for integrity and data source authentication • SKEYID_e is used to encrypt IKE messages. • Different keys must be used for security purposes. Because of thehash function PRF, the original secret SKEYID cannot becalculated from the derived secrets.
4.4 IKE第二阶段 • 目的: • 建立IPsec SA,一个第1阶段的SA可以用于建立多个第2阶段的SA。 • 步骤(3报文交换) • 协商安全参数 • 可选的Diffie-Hellman交换 • 可选的一致性(Identity)交换 • 快速模式(Quick Mode)
阶段2属性 • 群描述(for PFS,perfect forward secrecy) • 加密算法 • 密钥长度 • Key rounds • 认证算法 • 生存时间(秒和/或千字节) • 加密模式(传输或隧道)
1 HDR* | HASH(1) | SA | Ni [ | KE] [ | IDi2 | IDr2] 2 HDR* | HASH(2) | SA | Nr [ | KE] [ | IDi2 | IDr2] 3 RESPONDER HDR* | HASH(3) INITIATOR 快速模式 • HDR contains CKY-I | CKY-R • KE (for PFS) = g^I (Initiator) or g^r (Responder) • HASH(1) =PRF (SKEYID_a | Message_ID | SA|Ni[|KE][| IDi2 | IDr2]) • HASH(2)=PRF (SKEYID_a | Message_ID | Ni | SA|Nr[|KE][| IDi2 | IDr2]) • HASH(3) =PRF (SKEYID_a | 0 | Message_ID | Ni | Nr)
密钥推导 • KEYMAT (no PFS)=PRF(SKEYID_d, protocol | SPI | Ni | Nr) • KEYMAT (with PFS)=PRF(SKEYID_d, g^ir (QM) | protocol | SPI | Ni | Nr)
阶段一:第一步 协商算法、参数 阶段一:第二步 D-H密钥交换 SKEYID_a 阶段一:第三步 认证 SKEYID SKEYID_e SKEYID SKEYID_d SKEYID_e SKEYID_d SKEYID_a 阶段二:协商算法、参数 阶段二:协商算法、参数 安全数据传输 安全数据传输 Overview
思考 • 作为认证交换的基础,采用预共享密钥、签名公钥、加密公钥等不同类型分别有哪些好处? • 理清楚IKE SA、IPSec SA中的密钥派生过程。 • 推荐大作业:OpensWan和StrongsWan安装和使用
Cookie Exchange Responder Initiator Cookie-I Cookie-I,Cookie-R Cookie-I,Cookie-R,… Cookie 交换是用来抗阻塞攻击,在ISAKMP中,攻击者会假冒多个不同的发起者与响应者建立IKE的协商,接收者可以根据Cookie对判断是否是该SA流。
Next Payload Next Payload Type Value NONE 0 Security Association (SA) 1 Proposal (P) 2 Transform (T) 3 Key Exchange (KE) 4 Identification (ID) 5 Certificate (CERT) 6 Certificate Request (CR) 7 Hash (HASH) 8 Signature (SIG) 9 Nonce (NONCE) 10 Notification (N) 11 Delete (D) 12 Vendor ID (VID) 13 RESERVED 14 - 127 Private USE 128 - 255
Exchange type Exchange Type Value NONE 0 Base 1 基础类型 Identity Protection 2 主模式 Authentication Only 3 Aggressive 4 野蛮模式 Informational 5 ISAKMP Future Use 6 – 31 DOI Specific Use 32 – 239 Private Use 240 – 255