概念
IMIX协议(Interbank Market Information eXchange Protocal)是银行间交易所需的会话层通讯协议,包括报文语法与结构、会话可靠性传输规范、会话管理规范、会话类报文与组件等。用于交易指令、行情数据、清算信息等的传输。
语法、结构与会话层
术语和定义
e.g. 报文序号:是报文传输过程中用于检测报文传输连续性的数值。
报文语法与结构
数据类型、域(域号-域值)、IMIX报文组成(报文头/体/尾)、重复组
安全与加密
- 背景:由于报文可能在公共网络或不安全的网络上传输交换,因此对相关的敏感数据宜进行加密处理。具体加密的方法由连接双方达成的协议而定,同时加密方法应符合国家密码管理机构的规定。
- 要求:报文内除某些需要公开识别的域以明文传输外,其他任何域都可加密放置在密文数据域(
SecureData
)内。这些被加密的域也可同时保留明文的表示方式。如果报文的重复组内有部分数据需要加密,则应对整个重复组加密。本部分还提供一些域用以支持数字签名、密钥交换和正文加密等安全技术。 - 方式:加密方案有三种:
a) 将安全敏感的域加密后移至 SecureData 域;
b) 将所有可加密的域加密后移至 SecureData 域;
c) 将所有可加密的域加密后移至 SecureData 域,同时这些域以明文在报文中重复出现。
IMIX API
- 证书:SM2商密算法的机构商密证书
- 加签:对机构"登录名+密码"进行加签后的内容填入报文头91SecureData域,同时将签名长度填入90SecureDataLen域。
- 验签:使用P7分离式报文校验,不需要保存对方的公钥证书。
- IMIXClientAPI开发包子冻完成报文的加签、加密和解密。
参考:关于IMIX API接口加签加密改造的说明
数据完整性
IMIX报文结构
标准报文头
- 部分报文头域不应加密,部分报文头域可加密。
- 报文体加密时报文头必需有91SecureData域,紧跟在90SecureDataLen域(标识报文加密时的长度,不应加密)之后。
标准报文头在报文传输的应用
点对点传输
- 两个主机构之间:SenderComID -> TargetComID
- 两个子机构之间:SenderSubID- > TargetSubID
报文转发
通过第三方进行转发,形成多点链接
会话传输
会话机制
IMIX会话由一个或多个IMIX连接(IMIX Connection)组成。IMIX连接由三部分组成:登录(logon)、
报文传输(message exchange)和登出(logout)。一个IMIX会话可多次登录。
会话管理
报文分类管理
报文分成会话层报文和应用层报文(根据35MsgType消息类型域判断):
- 会话层报文:连接管理(登录、心跳、登出)、会话控制(重连)、状态通知(证书过期、心跳超时)
- 应用层报文:交易、行情、清算(交易后清算确认)、管理(参数查询、权限变更)
登录
登录包含三个步骤:
a)建立TCP连接,会话发起方(Client)与会话接收方(Server)建立TCP连接;
b)连接双方的确认/认证,会话发起方发送35=A的登录报文请求认证,会话接收方认证通过,回复
一个35=A的登录响应报文,会话接收方认证不通过,回复一个包含失败说明35=5的登出报文;
c)报文序号同步。
应用层报文
组件、重复组、应用类报文(交易前/后等全类型)
适流表示层
IMIX适流(IMIX Adapted for Streaming, 简称IMSAT)是一种压缩IMIX报文数据的二进制流。规定银行间市场参与方给予会话层和应用层的银行间市场成员交互数据进行适流压缩的协议。
- 编码encode:将IMIX报文转换成的过程
- 解码decode:将IMAST流转换成IMIX报文的过程
参考
《银行间市场基础数据元》
《银行间市场业务数据交换协议》