打算做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,为三层密钥体系,对不同密钥(特别是工作密钥)的功能做了严格的使用限制,专钥专用
第一层:本地主密钥【加密机】(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
2.3算法体系
国内金融加密机 加密算法遵循以下两个加密体系:雷卡体系 、金卡体系
雷卡体系:使用ZMK的指令集模式对外发布使用方法,LMK加密之下,由应用本地存放。
具体:通过向加密机提交密文ZMK(进LMK加密后的)运算完成
金卡体系:使用加密索引的API模式对外发布使用方法,它的BMK存放于加密机中,通过索引访问
具体:1.密码机产生一个128bits,192bits的随机数作为指定的银行主密钥,
2.把1中主密钥保存在密码机内,并用主密钥加密后返回给主机