基于转加密的握手式国密通信

基于转加密的握手式国密通信

     1、客户端上送 SM4 密钥密文:

  • 客户端根据算法生成两把 SM4 密钥:sm4_key、h_mac_key;

  • 客户端使用内置 SM2 公钥对 sm4_key、h_mac_key 加密得到密文 sm4_cipher_key、h_mac_cipher_key;

  • 调用服务端握手接口将 sm4_cipher_key、h_mac_cipher_key 发送到服务端;

     2、服务端转加密取 SM4 密钥报文

  • 服务端根据算法生成 SM4 密钥 sm4_transfer_key 用于转加密;

  • 服务端使用内置的 SM2 公钥对 sm4_transfer_key 加密得到密文 sm4_transfer_cipher_key;

  • 调用机密机接口上送 sm4_cipher_key、h_mac_cipher_key 密文和 sm4_transfer_cipher_key ;

     3、加密机做转加密

  • 加密机用 SM2 私钥对 sm4 密文解密得到 sm4_key;

  • 机密机用 SM2 私钥对 sm4_transfer_cipher_key 解密得到 sm4_transfer_key;

  • 加密机用 sm4_transfer 对 sm4_key 加密 sm4_key_cipher_transfer 并返回;

  • 加密机用 用同样的方式得到 h_mac_key_cipher_transfer 并返回;

     4、服务端获取 SM4 密钥明文与 h_mac_key 明文并缓存作为后续报文交互

     5、报文通讯加解密

  • 客户端使用 sm4_key 对交易明文加密得到交易密文;

  • 客户端使用 h_mac_key 对交易明文计算 hmac ;

  • 客户端上送通讯加密报文(交易密文+hmac);

  • 服务端接收到通讯加密报文后使用 sm4_key 进行解密得到交易明文,使用 h_mac_key 对交易明文计算 hmac 并与上送的 hmac 进行对比校验报文的完整性。

基于密码机转加密的握手式国密通信第二版

     由于密码机接口的设计问题,上述 3 步骤中,需要调用密码机两次,分别发送 sm4_key 和 h_mac_key 给服务端。修改为第二版之后,h_mac_key 用 sm4_key 进行 SM4 加密,这样经过服务端转加密流程解出 sm4_key 之后,直接解密 h_mac_cipher_key 得到 h_mac_key。

打赏
  • Copyrights © 2017 - 2025 杨海波
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信