加密套件ECDHE_SM2_WITH_SM4_SM3及握手分析

应证监局要求,国内金融产品程序化交易软件应采用国密算法实现SSL/TLS通讯,我司采用开源项目GmSSL2.0实现。

加密套件选用ECDHE_SM2_WITH_SM4_SM3,其中协议版本为TLS1.2,密钥交换(Key-Exchange)算法为ECDHE,认证(Authentication)算法为SM2,加密(Encryption)算法为SM4,消息认证码(Message-Authentication-Code)算法为SM3。

密钥交换算法ECDHE决定了C/S交换密钥的方法,与传统的RSA密钥交换算法不同,预备主密钥不再采用客户端计算-服务端公钥加密-网络传送-服务端私钥解密的方案,而是C/S两端各自生成临时私钥-互相交换临时公钥-两端分别根据本端的临时私钥和对端的临时公钥计算预备主密钥(两端计算的预备主密钥相同)的方式。

得到预备主密钥premaster_secret(32字节)后,便可以计算最终的会话密钥了,过程如下:

通过函数tls1_PRF()计算主密钥master_secret(48字节);

通过函数tls1_PRF()计算密钥块key_block(128字节),并按序分割成6块。

1)client_write_MAC_secret(32字节)

2)server_write_MAC_secret(32字节)

3)client_write_key(16字节)

4)server_write_key(16字节)

5)client_write_IV(16字节)

6)server_write_IV(16字节)

你可能感兴趣的:(SSL/TLS)