银行间交易IMIX协议加密相关
加密流程
- 字段筛选与序列化
提取业务报文中标记为敏感的字段,生成待加密的数据块
<!-- 示例:原始交易指令 -->
<Order><Symbol>ABC123</Symbol> <!-- 非敏感 --><Price>100.50</Price> <!-- 敏感 --><Volume>1000000</Volume> <!-- 敏感 --><Direction>Buy</Direction> <!-- 非敏感 -->
</Order>
- 加密算法选择
国密算法优先,如SM4(密钥长度为128位)对称加密 - 密钥管理
如会话密钥(Session Key):登录阶段动态生成,每个会话独立 - 加密与封装
- 对序列化后的数据块进行加密
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>
- 解密流程
- 提取会话密钥:根据会话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 #用户证书密码/解密证书私钥的密码(
调用逻辑:
- 系统读取encryCert.SM2证书获取公钥和身份信息
- 当需要签名或解密时,用UserCertPwd解密对应的私钥文件
- 使用私钥完成SM2签名或密钥协商
证书
证书相关概念
CA
(Certificate Authority,证书颁发机构) 是网络安全中负责 签发、管理和验证数字证书 的权威第三方机构,其核心作用是确保网络通信中实体的身份真实性和数据安全性。
数字证书
包含用户/机构的公钥、身份信息(如机构代码)、颁发者(CA)信息,由CA数字签名。包含实体USBkey(如金融U盾)、电子证书。
USBKEY证书
USBKEY证书代码是USBKEY唯一的编码。USBKEY是一种USB接口的硬件设备,内置单片机或智能卡芯片,有一定的存储空间,可存储用户的私钥以及数字证书,利用USBKEY内置的公钥算法实现对用户身份的认证。
私钥
与证书中的公钥配对的密钥,必须严格保密,用于签名或解密数据。
证书密码
用于保护私钥文件的密码(防止私钥被直接读取),在调用私钥时需输入。
签名(89Signature)
通过密码学算法生成一段唯一数据,用于验证消息来源、确保数据完整,防止抵赖(发送方无法否认自己签署过的消息)。
证书生成过程
- 生成密钥对:使用密码机(HSM)或软件工具生成SM2非对称密钥对,私钥private_key保密储存,需要密码加密;公钥public_key嵌入证书中。
- 申请证书:将公钥和机构信息提交给CA(如CFETS或央行CA),CA验证身份后签发数字证书
- 密钥绑定:私钥文件通常通过密码加密存储(如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密码算法使用规范)