SCI论文(www.lunwensci.com)
摘 要:ISO8583 报文是一个国际标准的包格式,该格式定义了多种字段域,每个字段域有各自的约定格式, 并对应特定 的功能,字段域分定长和变长两种类型,报文最多可由 128 个字段域组成,可提供复杂的、扩展性强的、安全性能高的数据协 议包。ISO8583 协议是金融支付中常用的协议, 如 POS 终端机通过银联与银行金融业务进行业务交互。在实际应用中通常采 用位图方式去描述与具体业务相绑定的字段域,由于协议字段域较多且内置的逻辑复杂,增加了应用的难度,而本文则实现了 一个能够正向、逆向解析位图的通用功能库,对 ISO8583 协议相关域进行可视化展现,同时提供了一系列工具函数,对字段域 中不同编码格式进行快速转换,实现各种加解密算法及数字签名,为基于 ISO8583 协议二次开发提供了技术支持。
关键词:ISO8583,位图,POS,金融支付
Implementation of ISO8583 Domain Parsing Automation
TAI Fei, ZHANG Kaixiao, WANG Guodong
(Department of Science, Hohai University, Nanjing Jiangsu 210098)
【Abstract】: ISO8583 message is an international standard packet format that defines mutiple field fields. Each field has its own format and corresponds to specific functions. There are two types of field : Fixed length and variable length. The message can be composed of 128 fields at most, which can provide complex, scalable and high security data protocol packets. ISO8583 protocol is a commonly used in financial payment. For example, POS terminal machines interact with bank financial business through UnionPay. In practical applications, bitmap is usually used to describe the fields bound to specific services. Due to the large number of fields and complex built-in logic, it increases the difficulty of application. This paper implements a general function library that can parse bitmap forward and backward, visually displays the relevant fields of ISO8583 protocol, and opens a series of tool functions, which can quickly convert different coding formats in the field, realize various encryption and decryption algorithms and digital signatures. It provides technical support for the secondary development based on ISO8583 protocol.
【Key words】: ISO8583;bitmap;POS;financial payment
引言:随着软件技术、通信技术的快速发展及带宽不断突破,各行各业将原有传统业务流程移植到互联网已成趋势,尤其是金融交易系统中的支付领域,除传统载体如 : 自助柜员机、网络 POS 机具不断升级更新外,新的载体 也层出不穷,如网银、支付宝、微信及云闪付等。可以说金融支付已融入到日常生活的方方面面了。对于大部分支付形态而言, 其业务数据都会经过银联清算中心 [1.2], 这 些业务数据具体包括 :交易类型、账号、账号类型、密码、交易金额、交易序列号、日期、商户代码、2 磁道 数据、3 磁道数据等,数据总量并不多,因此金融领域大都采用 ISO8583 协议来进行传递。该协议一般用于卡 清算,如国内的银联、国外的 VISA、Mastercard, 对 于银联支持的业务而言,数据只有在遵守这个协议前提下才能被银联及银行服务系统所识别和解析,在通过合法性校验之后,完成约定的业务动作。ISO8583 协议内 容丰富,提供了多达 128 个字段域去描述相关的业务 内容,具有较强的可扩展性和安全性,但也增加了应用 的复杂度,一般来说开发者在 ISO8583 协议包前部会增加称为位图的逻辑块,用来描述包中字段域的组成情况,为了方便开发者能快速定位与业务相关的字段域, 有必要实现一个工具,它能够正向、逆向对位图进行解 析,并对 ISO8583 协议相关域进行可视化展现,提供 一系列接口函数对域内容不同编码进行快速转换,并进 行加解密处理,这是本文所述主要内容。
1 技术路线背景
1.1 ISO8583 协议简介与应用
ISO8583 协议是一种对金融交易卡原始电文 - 交换 电文规范的描述 , 由国际标准化组织制定,其有 3 部分 组成 :(1)报文信息、数据元素和代码值。(2)机构识 别码的应用和注册信息。(3)电文、数据元素和代码值 的维护信息。
在实际应用中,比如针对 POS 机具等支付系统 [3.4], 会涉及很多业务内容,具体有 :签到、工作密钥、主密 钥、MAC 密钥、消费、消费撤销、退货、结算、冲正、 补登、预授权等。另外签购单中会出现 :批次号、序 号、授权号、查询号、凭证号等各种信息。这些信息的 填充、反馈、操作、确认都是在基于 ISO8583 协议包 中封装完成的,各项业务均以位图方式描述出来。
本文我们主要关注于对位图内容的正向与逆向解析, 并实现转码工具,以方便程序员在支付领域进行二次开 发。关于上述业务的具体含义与流程不在论述范围内。
1.2 ISO8583 协议位图与字段域
根据中国银联 POS 终端规范 [3], POS 机具终端上 送 POS 中心的消息报文结构如表 1 所示。
TPDU长度为10个字节,用BCD码压缩为5个字 节。报文头长度为 12 字节,用 BCD 码压缩为 6 个字节。 应用数据中表示报文长度的为 4 个字节,用 BCD 码压缩 为 2 个字节。有 5+6+2=13 字节,位图则位于协议包第 14 字节处,格式为定长,最大由 16 个字节组成,共 128 位,一般以二进制位为填充单元而以十六进制呈现。在填 充时,如果第一位为 0.则表示使用 64 位(即 64 个字段 域)基础位图,位图字节长度为 8 个字节,如果第一位为 1.表示使用 128 位(即 128 个字段域)扩展位图,启用 某个字段域,则将其所对应的位置 1.比如“商户类型” 信息使用 18 字段域,则位图第 18 位置 1. 依次类推。
为了更清楚地描述,我们举一个基础位图的示例 : 协议包头从第 14 个字节开始的 8 个字节依次为 :20 00 38 00 00 00 00 34. 则可将 20 分拆为 0010 0000.00 分拆 为 0000 0000.38 分拆 为 0011 1000.34 分拆 为 0011 0100. 最后组装成 :0010 0000 0000 0000 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 0011 0100 共 64 位,从左向右数,第 1 位为 0 表示使用 64 位基础位图, 为 1 的位数位置序列是 3 19 20 21 59 60 62. 说明这个协议包中包含第 3、19、20、59、60、62 字段域内容。第 3 字段域通常定义为交易类型,其长度 为 6 个字节,代表处理代码和信息码,两者结合可唯一 确定交易类型,处理代码和信息码由以下三部分组成 : 第 1 字节和第 2 字节表示交易动作码,第 3 字节和第 4 字节表示付出账户类型,用于借记类,如查询、代收 费、转场交易,第 5 字节和第 6 字节表示收入帐户类型, 用于代收费、转帐等。该字段域用 BCD 码压缩为定长 3 个字节,所以报文的第 22、23、24 字节为第 3 字段域 的数据, 后续依次 19、20、59、60、62 字段域, 由于 篇幅原因本文中不在给出相应字段域的含义与长度。
2 系统组织框架
如图 1 所示给出了系统组织框架, “编码转换模块” 和“加解密处理模块”[5.6] 为底层模块, “编码转换模块” 涉及到编解 BCD 码,该码是一种二进制数字编码,用 4 位二进制来表示 1 位十进制数中的 0 ~ 9.以方便二 进制和十进制之间的转换,同时减少报文的字节数,达 到节省空间的目的。BCD 编码在 ISO8583 协议包字段 域中广泛使用, 银联标准中第 2、3、4、11、12、13、 14 等字段域均使用这种编码方式。
还有一些字段域如第 41、44 字段域等,其内容可能包 含中文字符,这要清楚这些中文字符的编解码格式,以便 能正确地编码和解码,否则会出现乱码现象。在 ISO8583 协议包中这些字段域会采用 ASCII 编码方式去处理。
“加解密处理模块”[5.6] 主要负责提供加密、解密功 能,以 POS 终端机具为例,在金融业务流程签到时, 会从后台获取工作密钥的密文和 MAC 密钥的密文。工 作密钥是专门用来在交易过程中对刷卡人的卡密码进行 加密的,可以用主密钥对工作密钥的密文进行解密,得 到密钥明文。主密钥可手工输入或烧制于出产 POS 机 中。用主密钥对 MAC 密钥密文解密, 得到 MAC 密钥明文, 用于数据包的校验, 发送方对数据包进行 MAC 加密,将得到的数据附加到报文,收取方同样进行 MAC 计算,得到一个 MAC 数据,两者相对比就可以 知道数据包是否被篡改。
“协议逆向解析模块”和“协议正向解析模块”将根 据“协议定义模块”去解析报文和组织报文,为在“功 能界面模块”上显示提供基础数据。“协议定义模块”提 供了灵活的可配置的模式,可迅速响应动态调整的报文 协议内容,对加、解密算法可以进行选择。
3 实现算法描述
如图 2 所示给出了 MAC 校验算法的流程图。现说 明如下 :(1) POS 机具终端发起签到,返回报文中的 62 域为 MAC 密文 skey ;(2)用主密钥(手工输入或已烧 制于 POS 机具)对 MAC 密文进行解密,得到 MAC 明 文 mkey,也即(Terminal Administrative Key) TAK ; (3) 对待发送消息内容, 从消息类型直到 63 域(包括 63 域) 的数据进行 8 字节分块, 构成(MAC Element Block)MAB。不足 8 个字节, 可用 0x00 补充, 如下 示例中第 n 个 Block 只有 7 个字节,补字节 0x00.
最后得到 Tn, 将其换成 16 个 (Hex_Block)Hex, 例如 52 B5 67 4F 52 39 37 C0 转成 35 32 42 35 36 37 34 46 35 32 33 39 33 37 45 30. 即每位数字用 ASCII 码表 示。将 Hex_Block 前 8 位(35 32 42 35 36 37 34 46) 用TAK-3DES 加密得到Enc Block1=En11 En12 En13 En14 En15 En16 En17 En18将 BLOCK1 与上述 Hex Block 中后 8 位做 xor 异 或运算得到 Temp Block,再对它进行一次单倍长密钥 算法运算,运算结果转换成 16 个 Hex,其中前 8 位就 是 MAC 校验值。接收方用同样的方法得到 MAC 校验 值,这两者进行比对,如果相同则表示数据没有被篡 改,业务的合法性得到验证,可以执行。
4 结语
本文主要是对 ISO8583 协议包格式进行分析,根据 实际开发中的需求,给出了诸如位图正逆向解析、字段 域功能定义、MAC 校验等关键要素的综合应用,帮助 开发人员快速开发基于该协议的应用程序。随着计算机 程序语言的不断发展以及各种新型金融手持设备的出现, 很有必要提供可跨平台的辅助工具,另外基于 ISO8583 协议包有其个性化发展空间,不同地域和国家对它的使 用也有差异,如何统一提供这些差异的无缝集成也是非 常有挑战性的,这些都是我们今后研究发展的方向。
参考文献
[1] Q/CUP 018.中国银联金融IC卡借记/贷记应用根CA公钥认 证规范[S].中国银联股份有限公司,2016.
[2] Q/CUP 006.中国银联银行卡联网联合技术规范[S].中国银 联股份有限公司,2009.
[3] 中国人民银行.中国金融集成电路(IC)卡规范[M].北京:中国 人民银行出版社,2013.
[4] 李东荣.中国金融集成电路(IC)卡规范(3.0版)解读[M].北京: 中国金融出版社,2014.
[5] 朱晨冰.Windows C/C++加密解密实战[M].北京:清华大学 出版社,2021.
[6] 胡艳.浅谈ISO8583协议数据加密和网络安全传输技术[J]. 信息通信,2012(1):143-144.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/63639.html