一、IPsec VPN身份鉴别(参考国密标准《GMT 0022-2014 IPsec VPN技术规范》)
IKE第一阶段(主模式)
- “消息2”由响应方发出,消息中具体包含一个SA载荷(确认所接受的SA提议)、响应方的签名证书和加密证书。此消息用明文传输,所以通过wireshark等协议分析工具可以详细看到消息内容,签名证书和加密证书都可导出。
- “消息3”由发起方发出,此时发起方已经具备响应方加密证书,开始使用数字信封加密传递密钥交换参数(用响应方加密证书中的公钥加密临时对称密钥Ski,再用Ski加密Ni和IDi),同时用明文发送本方签名证书和加密证书,并附上签名以供身份鉴别使用。
- “消息4”由响应方发出,这里要注意的是响应方在接收到“消息3”后必须使用加密证书对应的私钥才能解开其中的数字信封从而获得密钥参数,这个过程也可以认为是发起方对响应方的身份鉴别。另外,在“消息3”中还包含有发起方的签名,响应方使用消息中一起发送过来的签名证书对该签名进行验签,这个过程是响应方对发起方的身份鉴别。“消息4”与”消息3”结构相似,也是用数字信封传递密钥交换参数(用发起方加密证书中的公钥加密临时对称密钥Skr,再用Skr加密Nr和IDr),之后也附上本方签名。至此双方的身份鉴别基本完成,在“消息5”和“消息6”中双方会对密钥交换信息分别做一致性确认。
综上,IPsec VPN通道建立过程中身份鉴别主要使用签名证书,也有加密证书的参与。
二、SSL VPN身份鉴别(参考国密标准《GMT 0024-2014 SSL VPN技术规范》)
SSL 握手协议(身份鉴别,安全参数协商)(注意以下*标识消息只在双向身份鉴别时出现)
- 服务端发送“Certificate消息”,其中包含服务端签名证书和加密证书。
- 服务端随即发送“Server Key Exchange消息”,在这里会使用服务端签名私钥对双方随机数和服务端加密证书进行签名。(客户端也就是通过服务端签名证书对这个签名来验证从而完成对服务端的身份鉴别)
- 服务端发送“*Certificate Request消息”,消息中包含要求客户端提供的证书类型列表。
- 服务端发送“Server Hello Done”,表示握手过程的Hello阶段结束。
- 客户端接收到以上消息后,需要验证服务端证书是否有效并验签完成服务端身份鉴别。
- 客户端按“*Certificate Request消息”的要求,发送“*Certificate消息”(包含明文的签名证书和加密证书)。
- 客户端发送“Client Key Exchange消息”,这个消息主要包含预主密钥,该密钥由客户端产生,采用服务端的加密证书进行加密后发送给服务端。
- 客户端发送“*Certificate Verify消息”,这个消息用于服务端鉴别客户端是否为签名证书的合法持有者。具体做法是:客户端使用sm3_hash计算自客户端hello消息开始直到本消息为止(不包括本消息)的所有握手相关消息的内容,然后使用客户端的签名私钥签名,服务端收到本消息后使用客户端签名证书验签。
综上,SSL VPN通道建立过程中身份鉴别主要使用签名证书,也有加密证书的参与