国密SSL协议开发总结(附报文详细分析)

国密SSL规范主要是基于tlsv1.1版本而来,部分内容比如prf是基于tlsv1.2版本。如果国密SSL规范具体数据格式不明确的地方需要参考tlsv1.1和tlsv1.2协议。

国密SSL协议规范的编号:GM/T 0024-2014

1. 记录层协议

记录层协议是低层协议,所有的报文,包括握手协议、报警协议、密码规格变更协议等都要封装在记录层协议中进行传输。

国密SSL协议开发总结(附报文详细分析)

国密SSL协议开发总结(附报文详细分析)

国密SSL协议开发总结(附报文详细分析)

2. 密码规格变更协议

这个协议比较简单,就一个字节

国密SSL协议开发总结(附报文详细分析)

3. 报警协议

比tlsv1.1加了一些报警内容

国密SSL协议开发总结(附报文详细分析)

4. 握手协议

协议最主要的部分就是握手协议,也是内容最多的。

4.1 握手协议总览

国密SSL协议开发总结(附报文详细分析)

4.2 交互的大致流程

国密SSL协议开发总结(附报文详细分析)

4.3 clienthello消息

国密SSL协议开发总结(附报文详细分析)

4.4 serverhello消息

国密SSL协议开发总结(附报文详细分析)

4.5 certificate消息

国密SSL协议开发总结(附报文详细分析)

4.6 ServerKeyExchange握手协议 ECDHE

国密SSL协议开发总结(附报文详细分析)

4.7 ServerKeyExchange握手协议 ECC / RSA

国密SSL协议开发总结(附报文详细分析)

4.8 certificaterequest消息

国密SSL协议开发总结(附报文详细分析)

4.9 serverhellodone消息

国密SSL协议开发总结(附报文详细分析)

4.10 ClientKeyExchange握手协议 ECDHE

国密SSL协议开发总结(附报文详细分析)

4.11 ClientKeyExchange握手协议 ECC / RSA

国密SSL协议开发总结(附报文详细分析)

4.12 CertificateVerify握手协议 RSA - SHA1

国密SSL协议开发总结(附报文详细分析)

4.13 CertificateVerify握手协议 RSA / SM2 - SM3

国密SSL协议开发总结(附报文详细分析)

4.14 finish消息

国密SSL协议开发总结(附报文详细分析)

5. 最终效果

使用国密算法浏览器单向SSL通道,0xe013 ECC_SM4_SM3密码套件,访问tomcat服务器的效果。

这里特别感谢大宝CA(http://www.doubleca.com)的无偿帮助,SM2数字证书和JCE包,大大缩短了开发周期,非常感谢!

国密SSL协议开发总结(附报文详细分析)


国密SSL协议开发总结(附报文详细分析)


国密SSL协议开发总结(附报文详细分析)

6. 一次完整交互的报文协议分析

6.1 客户端--->服务器 ClientHello握手消息

国密SSL协议开发总结(附报文详细分析)

6.2 服务器--->客户端 ServerHello握手消息

国密SSL协议开发总结(附报文详细分析)

6.3 客户端--->服务器 ClientKeyExchange握手消息

国密SSL协议开发总结(附报文详细分析)

6.4 客户端--->服务器 密码规格变更协议消息

国密SSL协议开发总结(附报文详细分析)

6.5 客户端--->服务器 密文握手协议

国密SSL协议开发总结(附报文详细分析)

6.6 服务器--->客户端 密码规格变更协议消息

国密SSL协议开发总结(附报文详细分析)

6.7 服务器--->客户端 密文握手协议

国密SSL协议开发总结(附报文详细分析)

6.8 客户端--->服务器 密文应用数据协议消息

国密SSL协议开发总结(附报文详细分析)

以上步骤是国密ECC_SM4_SM3密码套件一次传输数据的完整交互过程,单向认证。数据较杂,有不对的地方请高手指正。