pos机开发相关

打算做pos机的开发:

先了解相关的知识点:

DUKPT(devider unique key per Transation):一种安全的秘钥管理技术:保证每次交易使用唯一秘钥(不可逆转)

要求:收单行+ 终端必须同步支持该技术。

** = 基础** (BDK) + KSN 他俩一起装入加密模块KSN 组成:

1.**标识10位【基础派生**标识9位+子**标识1位】

2.设备标识5位【最后一个二进制位给3使用】

3.交易计数器5位【即二进制的20位,但是他占用了设备标识的一个二进制位,所以其实是21位】

8583协议:基于ISO8583报文国际标准的包格式的通讯协议

8583报文 = 位图 【8583的灵魂】+ 字段域位图:打包,解包,确定字段域的关键替代

字段域:最多由128个字段域组成,每个字段域都有统一规定,并且有定长变长之分=================================有关数据加密======================================

数据加密算法(DEA):是一种对称加密算法,可能是使用最广泛的**系统,特别是在保护金融的安全中。

最初开发的DEA是嵌入硬件的,如自动取款机(ATM),他来自IBM

数据加密标准(DES):传统的密码加密都是由古代的循环移位思想而来,恩尼格玛机在整个基础之上进行扩散模糊,但是本质原理是一样的。现代DES在二进制级别做这同样的事:替代模糊,增加分析的难度。

加密原理:DES使用一个56位的**+8位奇偶校验位=64位的分组大小,这是一个迭代的分组密码,使用Feistel的技术:

具体:1.对加密的文本块分成两半,

2.使用子**对其中一半应用循环功能

3.将2中的输出与另一半进行异或运算

4.接着交换新的这两半

5.循环上面的1--4的过程,切记最后一次不交换

DES使用16轮循环,使用异或,置换,代换,移位操作四种基本运算。

DES加密算法加密模式:使用块加密前需要指定它使用的模式。

这个模式定义了Clipher如何应用加密算法。

改变模式可以容许一个【块加密程序】--->【流加密程序】

块加密算法:每次加密一个数据分组,这个分组位数可以随意(一般选择64或者128位)

流加密算法:每次加密或解密一个字节的数据,这使它比流加密的应用程序更加有用。

1.ECB(电码本)最简单的模式,同样的明文分组加密成---->相同的密文分组

优点:这对于发送单一的块数据来说是非常好的,如**

缺点:

1.对执行一个加密的信息流来说不是很好,因为如果相同的明文多次发送以后,同样的密文也会被多次发送。

2。对每一个块用相同的方式进行加密。

如果我们的**或者数据不断发生变化,ECB是完全安全的

但是如果类似的块经过同样的**加密发出以后,攻击者可能获得一些我们并不想让别人知道的信息

2.CBC(密码分组链接)需要IV

CBC模式改变了加密方式【使用前一分组的信息加密当前分组】,同样的明文分组不一定加密或解密同样的密文块优点:解决了ECB存在的主要问题

缺点:相同的信息仍然加密成相同的密文,因为所有的分组是同时变成密文分组的

解决:引入一个Initialization Vector(初始化向量),

IV仅仅是一个初始化加密程序的随机数。它无需秘密保存,但对每一个信息来说它都是不同的

通过这个方式,即使有两条相同的信息,只要他们有不同的IV,那么他们加密后的密文也是不同的

CBC很适合文本传输,但它每一次都需要传送一个完整的数据块,一般选8个字符。

3.CFB(Cipher FeedBack:密码反馈)需要IV

工作方式与CBC类似,但它可以执行更小的数据块,典型的有8位适合加密像聊天对话这样的信息,因为每次可以发送单一的字节数据块。

和CBC一样,CFB也需要一个IV,且相同及钥发送的每条信息的IV都必须是唯一的。

4.OFB(Output FeedBack:输出反馈)需要IV

和CFB类似

优点:传输中能给数据提供更好的保护,防止数据丢失外

密文中一位出错,也只造成明文中的一位出错,其他的方式会造成整个块丢失

====================================有关加密机知识=============================================1.1 加密机型号(加密机提供加密服务)

江南计算机研究所(56所):SJL06E(江南卡友)

SJL06T(江南卡友)

SJL22(江南歌盟)

卫士通信息产业股份有限公司(30所)SJL05

1.2 通讯方式:

应用软件通过TCP方式调用加密机服务

1.3 在银行业具体应用:**管理,PIN保护,消息完整性控制,具体内容:

a,产生随机**供 终端通讯使用,并打印

b.产生随机工作**,并用本地主**

c.验证接受的工作**并转换为本地主**,加密保护

d.根据明文PIN生成指定格式的密文PINBLOCK;

e。转换PINBLOCK

f,校验MAC

g,生成MAC

h.解密明文PIN:

i.CV V & CVN的校验

三层**体系:

银行业使用标准ANSI x9.17,为三层**体系,对不同**(特别是工作**)的功能做了严格的使用限制,专钥专用

pos机开发相关第一层:本地主**【加密机】(LMK):采用双倍标准的3DES**(128位),存放在硬件加密机内,

作用:将所有本地存放的其他**加密数据加密,第二层:传输主**【[b]银行】[/b](BMK

TMK ZMK):**加***(**交换**)

作用:加密在通讯线路上需要传递的工作**。

在本地或共享网络中,不同的通讯网点使用不同**加***,实现**分工管理

它在本地存放时,处于本地MK加密之下或直接保存在硬件加密机中。

第三层:工作** (数据加***)= 完整性**(MAK)+

PIN保护**(PIK)+终端**(TMK=TPK+TAK)

作用:加密不同的数据。实现数据保密、信息认证,数字签名

这些数据**在本地存放时,处于BMK的加密之下或者直接保存在硬件加密机中

名词解释:

本地主**(local Master key --LMK)加密机 主**,存储在加密机中,保护存储在加密机外的各种**和关键数据的**加***

传输主**(Transfer Master Key ---TMK):两台加密设备间(加密机和加密机 、加密机和终端)用于加密保护工作**的更换

同属类型的有:ZMK,TMK,BMK

工作**(Working Key):处理对象为一般数据的**。

同属类型有:TAK TPK ZAK ZPK

pos机开发相关2.3算法体系

国内金融加密机 加密算法遵循以下两个加密体系:雷卡体系 、金卡体系

雷卡体系:使用ZMK的指令集模式对外发布使用方法,LMK加密之下,由应用本地存放。

具体:通过向加密机提交密文ZMK(进LMK加密后的)运算完成

金卡体系:使用加密索引的API模式对外发布使用方法,它的BMK存放于加密机中,通过索引访问

具体:1.密码机产生一个128bits,192bits的随机数作为指定的银行主**,

2.把1中主**保存在密码机内,并用主**加密后返回给主机

pos机开发相关