当前位置: 首页 > 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.xdnf.cn/news/1313551.html

相关文章:

  • JetPack系列教程(八):PDF库——让Android应用也能优雅“翻页”
  • androidstudio内存大小配置
  • 《从混乱到有序:AI 如何一步步梳理数据质量难题》文章提纲
  • LIN-TestWait函数解析
  • 【Html网页模板】赛博朋克数据分析大屏网页
  • 【开发技巧】VS2022+QT5+OpenCV4.10开发环境搭建QT Creator
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘opencv-python’问题
  • 从希格斯玻色子到 QPU:C++ 的跨维度征服
  • 电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
  • 从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践01
  • Centos7.9安装Dante
  • 深度解析Java synchronized关键字及其底层实现原理
  • python---包
  • 《WINDOWS 环境下32位汇编语言程序设计》第2章 准备编程环境
  • 深入剖析 TOTP 算法:基于时间的一次性密码生成机制
  • IOMMU多级页表查找的验证
  • 【计算机网络架构】混合型架构简介
  • 39.离散化与哈希
  • 模型训练监控:TensorBoard与Weights Biases (WB) 使用详解
  • 《A Practical Guide to Building Agents》文档学习
  • 写一个linux脚本,要求实现查找9010端口,如果端口存在则kill,否则不处理,返回对应的提示
  • 24. async await 原理是什么,会编译成什么
  • Linux系统top命令详细指南
  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 基于Transformer的机器翻译——模型篇
  • 《后室Backrooms》中文版,购物误入异空间,怪物追逐,第一人称冒险逃生
  • 安卓11 12系统修改定制化_____修改系统 解锁system分区 去除data加密 自由删减系统应用
  • 服务器配置开机自启动服务
  • 线程池与异步编程——语法归纳
  • 存算分离与云原生:数据平台的新基石