当前位置: 首页 > news >正文

银行间交易IMIX协议加密相关

加密流程

  1. 字段筛选与序列化
    提取业务报文中标记为敏感的字段,生成待加密的数据块
<!-- 示例:原始交易指令 -->
<Order><Symbol>ABC123</Symbol>          <!-- 非敏感 --><Price>100.50</Price>            <!-- 敏感 --><Volume>1000000</Volume>         <!-- 敏感 --><Direction>Buy</Direction>       <!-- 非敏感 -->
</Order>
  1. 加密算法选择
    国密算法优先,如SM4(密钥长度为128位)对称加密
  2. 密钥管理
    如会话密钥(Session Key):登录阶段动态生成,每个会话独立
  3. 加密与封装
  • 对序列化后的数据块进行加密
SecureData = SM4_Encrypt(SessionKey, PlainTextData, IV)
  • 将加密结果、初始向量(IV)、算法标识等封装到如SecureData 结构中
<!-- 示例:加密后的SecureData -->
<SecureData><Algorithm>SM4-CBC</Algorithm>  <!-- 加密算法标识 --><IV>Base64Encoded(InitialVector)</IV>  <!-- 初始向量 --><CipherText>Base64Encoded(SecureData)</CipherText>  <!-- 密文 -->
</SecureData>
  • 原始报文中的敏感字段被替换为 SecureData 节点
<Order><Symbol>ABC123</Symbol><SecureData>...</SecureData>  <!-- 替代Price/Volume --><Direction>Buy</Direction>
</Order>
  1. 解密流程
  • 提取会话密钥:根据会话ID从本地缓存获取SM4会话密钥。
  • 解密数据:
PlainText = SM4_Decrypt(SessionKey, CipherText, IV)
  • 反序列化:PlainText = SM4_Decrypt(SessionKey, CipherText, IV)

配置文件调整

# client.cfg文件
[default] #全局默认配置模块中,添加配置项:
IsSignNeed=Y #是否需要数字签名,如SM2算法。要求所有报文福袋SM2签名,确保报文的完整性和不可抵赖性,防止篡改
CAEnable=Y #是否启用证书颁发机构CA验证,强制校验对方证书是否由可信CA签发
SocketUseSSL=Y #通信链路是否使用SSL/TLS加密,启用国密SSL或国际标准TLS(N明文传输),保护传输层数据安全# 配置商用密码证书的路径和密码:
UserCert=cert/encryCert.SM2 #声明本机构身份证书文件路径(通常为SM2格式的商用证书)
UserCertPwd=password #用户证书密码/解密证书私钥的密码(

调用逻辑:

  1. 系统读取encryCert.SM2证书获取公钥和身份信息
  2. 当需要签名或解密时,用UserCertPwd解密对应的私钥文件
  3. 使用私钥完成SM2签名或密钥协商
解密
生成签名/解密
验证签名/加密
证书密码
私钥文件
证书公钥

证书

证书相关概念

CA

(Certificate Authority,证书颁发机构) 是网络安全中负责 签发、管理和验证数字证书 的权威第三方机构,其核心作用是确保网络通信中实体的身份真实性和数据安全性。

数字证书

包含用户/机构的公钥、身份信息(如机构代码)、颁发者(CA)信息,由CA数字签名。包含实体USBkey(如金融U盾)、电子证书。

USBKEY证书

USBKEY证书代码是USBKEY唯一的编码。USBKEY是一种USB接口的硬件设备,内置单片机或智能卡芯片,有一定的存储空间,可存储用户的私钥以及数字证书,利用USBKEY内置的公钥算法实现对用户身份的认证。

私钥

与证书中的公钥配对的密钥,必须严格保密,用于签名或解密数据。

证书密码

用于保护私钥文件的密码(防止私钥被直接读取),在调用私钥时需输入。

签名(89Signature)

通过密码学算法生成一段唯一数据,用于验证消息来源、确保数据完整,防止抵赖(发送方无法否认自己签署过的消息)。

证书生成过程

  1. 生成密钥对:使用密码机(HSM)或软件工具生成SM2非对称密钥对,私钥private_key保密储存,需要密码加密;公钥public_key嵌入证书中。
  2. 申请证书:将公钥和机构信息提交给CA(如CFETS或央行CA),CA验证身份后签发数字证书
  3. 密钥绑定:私钥文件通常通过密码加密存储(如PKCS#8格式),使用时需输入证书密码解密。

加密算法

国密/商密算法

SM2:身份认证和数字签名。
SM3:生成报文哈希(防篡改)。
SM4:加密敏感字段(如)。

SM2国密算法

  • 概念:SM2 是中国国家密码管理局(GM/T)发布的 椭圆曲线公钥密码算法,属于商用密码体系的核心组成部分,广泛应用于金融(如IMIX协议)、政务、物联网等领域。
  • 类型:非对称加密算法(基于椭圆曲线密码学,ECC)。
    • 加密和解密使用不同密钥,私钥无法从公钥推导;公钥加密的数据只能由私钥解密,私钥签名的数据只能由公钥验证(银行间机构使用私钥对登录请求签名,CFETS通过银行证书中的公钥验证签名,确认身份)
    • 解决密钥分发问题,无需提前共享密钥
  • 标准号:GM/T 0003-2012。
  • 算法原理:椭圆曲线基础;密钥对生成,私钥随机选取一个256位证书,公钥通过私钥计算而成;根据原消息SM3算法得哈希值和随机数生成签名

加密 & 加签

  • 加密Encryption:公钥加密,私钥解密,保护数据及密性,防泄露。
  • 加签Signature:私钥签名,公钥验签,验证数据完整性和来源真实性,防篡改。
  • 关系:先根据原始明文数据,用私钥生成签名;将敏感字段加密,生成密文;签名值通常不加密,随报文一起传输先签名->再加密->传输->接收方先验签->再解密

Reference

  • 《金融数据安全分级指南》(JR/T 0197-2020)对敏感数据的保护要求。
  • GM/T 0009-2012(SM4密码算法使用规范)
http://www.dtcms.com/a/334555.html

相关文章:

  • 后台管理系统-4-vue3之pinia实现导航栏按钮控制左侧菜单栏的伸缩
  • 机器学习——线性回归
  • 平滑方法(smoothing)
  • Python-深度学习——pytorch的安装
  • 开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
  • VSCode匹配删除多行注释
  • JavaScript 核心语法与实战笔记:从基础到面试高频题
  • 从“Hello World”到“高并发中间件”:Go 语言 2025 系统学习路线图
  • 深入解析C++ STL链表(List)模拟实现
  • 微服务之注册中心与ShardingSphere关于分库分表的那些事
  • 类与类加载器
  • 基于GIS的无人机模拟飞行控制系统设计与实现
  • 某智慧教育平台登录流程分析
  • 元宇宙娱乐:重构数字时代的沉浸式体验
  • 嵌入式 Linux LED 驱动开发实验
  • RK3568 NPU RKNN(五):RKNN-ToolKit-lite2板端推理
  • 要导入StandardScaler类进行数据标准化,请使用以下语句:
  • JavaScript学习第十章-第三部分(dom)
  • B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • C#计算阶乘程序改进
  • C# 元组的用法
  • Nona生命之树作品TRO突袭,冻结名单曝光
  • Vue2.x核心技术与实战(一)
  • 摩搭api 实现
  • 025 理解文件系统
  • 多机编队——(6)解决机器人跟踪过程中mpc控制转圈问题
  • 第四章 Linux实用操作
  • OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制
  • 【LeetCode题解】LeetCode 35. 搜索插入位置
  • [Linux] Linux逻辑卷管理