针对公共事业缴费平台实际应用需求,我们提出了一种报文接口加密设计机制。其目的是按照用户的要求将敏感数据进行加密存储,防止非法用户采用其它手段获取数据,同时保证合法用户通过报文接口加密系统仍能正常访问数据。
一、公共事业缴费平台报文接口加密算法的选择
鉴于数据在网络上传播的速度考虑,公共事业缴费平台报文接口的加密设计选择了对称加密算法DES。
DES加密算法为密码体制中的对称密码体制,又被成为美国数据加密标准。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法,DES加密算法的特点是:分组比较短、密钥太短、密码生命周期短、运算速度较慢。
DES工作的基本原理是,其入口参数有三个;key、data、mode key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密,实际运用中,密钥只用到了64位中的56位。
DES加密算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见这是难以实现的。当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。
二、报文接口加密算法研究与实现
当报文接口采用DES算法时,据发送方需先对报文头中的帐号和密码域使用PIN加密工作密钥(PIK)进行加密,再使用MAC加密工作密钥(MAK)对报文头和报文体进行加押,密押经BCD扩展后以1 6个字节方式传送;数据接收方用同样的方法核押,如果核押出错,应停止对该报文的处理,并及时与对方联系。
PIN加密工作密钥(PIK)与MAC加密工作密钥(MAK)在机构每天的签到交易中,由公共事业缴费平台产生并分发,机构做到及时更新。
1、网络协议与报文格式
为了适应不同计算机网络应用传输数据的需求,各种各样的协议也层出不穷,以Internet协议为例,典型的网络层协议有IPv4、ICMPv4;典型的传输层协议有TCP、UDP;而应用层协议则多得数不过来,常见的有FTP、SMTP、Telnet、SNMP、DNS、NFS等。
目前得到广泛使用的路由协议有RIP、()SPF和BGP。另外,各种协议本身还处在不断地变化和发展之中,许多协议都有各种各样的扩展和修改,几乎所有重要的协议都有差别较大的新版本在设计之中。
不同的协议不仅在功能上有很大的差异,它们的报文格式也大不相同。比如RIP协议只有一种报文,BGP协议有四种报文;()SPF协议共有五种报文,除了Hello报文的格式比较简单以外,其它四种OSPF报文的格式都很复杂。
报文格式设计原则,其在设计时应该具备简单性原则、通用性原则、实用性原则和可扩充性原则,才能够满足实际应用的需要。联机报文结构由报文长度、报文头、报文体和密押组成。报文头是每个报文都固定的部分,使用固定长度的字节直接表示,主要包括报文信息类型、交易码等,其中的信息类型用于区分报文是请求还是响应,交易码用于区分交易类型。
报文头结构如表1所示:
作为交易请求方,请求方交易日期十请求方交易流水号十请求机构代码应可唯一确定一笔交易。
2、PIN加密算法
(1)密钥种类
系统对传输数据的加密涉及到的密钥包括主密钥( MK)、工作密钥(WorkingKey,简写作WK)。
加密机主密钥(MK)用于对工作密钥(WK)进行加密保护,每台终端设备(或接人机构前置系统)只设置一个MK。MK必须有安全保护措施,只能写入并参与运算,不能被读取并存储在终端硬件中;MK由三段合成,应由不同人员掌握。
工作密钥(WK)分为PIN加密工作密钥(PIK)和MAC加密工作密钥(MAK)两类,由机构或终端签到时从平台获得。各密钥关系如表2所示:
(2)密钥分发
工作密钥的分发在签到交易时完成,具体过程如下:首先机构(或终端)向系统签到时,系统即可判别来自哪个机构(或终端),在系统的应答报文中,系统使用相应的主密钥对生成的工作密钥进行加密。机构收到应答后,即可以用存储的主密钥对收到的工作密钥的密文进行解密,从而获得PIK和MAK。
(3)PIN加密算法
在支付类报文中,协议规定要使用PIK对个人身份识别符(PIN)也就是密码进行加密,加密算法采用DES算法。目前银行卡规范中,PIN的长度为6位,故本文将协议中PIN的长度设为6位,但允许扩充到12位。
PIN用数字字符表示,格式应符合ISO公布的ANSI X9.8 Format两种格式之一。
(1)不带主帐号信息-PAN格式1如表3所示:
(2)带主帐号信息。需要说明的是,此处要加密的块是PIN和PAN的异或。而PAN指的主帐号信息,将从帐号信息中取。PAN格式2如表4所示:
具体12位如何取,说明如下:
手输卡号:
如为手输卡号,从所输卡号右边数第二位开始,向左取1 2位,作为参与PIN加、解密的PAN。
刷卡方式:
如为刷卡方式,从磁道2(35域)分隔符‘一’左边第二位开始,向左取12个字符,作为参与PIN加窿的PAN;如只有磁道3(36域),则从磁道3分隔符‘=’左边第二位开始,向左取12个字符,作为参与PIN加、解密的PAN。
3、MAC加密算法
在形成报文后,即PIN加密完成后,使用MAK对报文头和报文体进行加押,密押生成后,以16个字节方式附在报文体后,进行传送;数据接收方用同样的方法核押,如果核押出错,应停止对该报文的处理,并及时与对方联系。具体步骤如下:
(1)在欲发送给系统的报文中,取报文头和报文体构成MAC ELEMEMENT BLOCK (MAB)。
(2)对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字节,则添加"OXOO"。
(3)将异或运算后的最后8个字节(RESUI.TBLOCK)转换成16个HEXDECIMAL;
(4)取前8个字节用MAK加密;
(5)将加密后的结果与后8个字节异或;
(6)用异或的结果TEMP Bl,()CK再进行一次DES运算。
(7)将运算后的结果(ENC BL()CK2)转换成 16个HEXDECIMAI。
(8)取前此16字节作为MAC值。即密押为:8456BICD5A3F8484。
小知识之密押
密押(test key)一般在办理银行票据业务时常见使用。