金融系列4《PUTKEY指令》
用一个新的密钥替换一个已经存在的密钥:新密钥可以有与被替换的密钥相同的或不同的密钥版本号,但是必须与被替换的密钥有相同的密钥标识符。
用新密钥替换多个已经存在的密钥:新密钥可以有与被替换的密钥相同的或不同的密钥版本(对于所有的新密钥是同样的),但是必须与被替换的密钥有相同的密钥标识符。
增加一个新的单密钥:新密钥有一个与其它已存在的密钥不同的密钥标识符/密钥版本号。
增加新的多密钥:新密钥有一个与其它已存在的密钥不同的密钥标识符/密钥版本号(对于所有的新密钥是同样的)。
1. KMC
金融支付系统环境主控密钥(KMC):预个人化时,使用这个KMC生成卡片级密钥(KENC、KMAC、KDEK),并将他们写到卡片的金融支付系统环境中。
KENC用来生成一个对话密钥SKUENC,利用该对话密钥可生成密文和以CBC模式加密机密数据。
KMAC用来生成一个对话密钥SKUMAC,利用该对话密钥可生成命令处理过程中所使用的C-MAC。
KDEK用来生成一个对话密钥SKUDEK,利用该对话密钥可在ECB模式下加密DES密钥或灵活的加密其它机密数据。
KMU常见的取值有两种:取自客户数据或取自加密机。
2. KEYDATA
密钥数据(KEYDATA)必须按下表格式设置,该数据由KMCID和芯片序号(CSN)组成。KMCID是个人化主密钥标识符,应由发卡行或个人化厂商提供。KMCID的长度为6个字节。CSN是IC卡片物理标识符最右边的4个字节。
|
字段 |
长度 |
格式 |
|
KMC(例如IIN/BIN,左对齐,用1111b/半字节填充)标识 |
6 |
BCD |
|
芯片序列号(CSN) |
4 |
二进制数 |
KEYDATA(密钥数据)是每个IC卡应用分区都可以访问的一个数据单元,KMC标识符是修改透支初始化(INITIALIZE UPDATE)命令响应数据的一部分,并给定位IC卡发行商的KMC提供了方便。在IC卡上必须存在‘个人化主密钥(KMC)’的版本号,这个主密钥用来为每个应用生成初始的个人化密钥(KENC、KMAC和KDEK)。
3. 离散
必须为每张IC卡生成一个加密分散密钥(KENC),并把它写入相应的应用中。这个密钥用来生成IC卡密文和验证主机密文。如果密文的安全等级要求存储数据(STORE DATA)命令的数据字段是加密的,这个分散密钥还用来在CBC模式下对该命令的数据字段进行解密。KENC是一个16 字节(112比特加奇偶校验位)的DES密钥。KENC密钥用以下方法推算:
KENC:= DES3(KMC)[ KEYDATA的6个最低有效字节||‘F0’||‘01’]|| DES3(KMC)[ KEYDATA的6个最低有效字节 ||‘0F’||‘01’]。
必须为每张IC卡生成一个校验码分散密钥(KMAC)并写入相应的IC卡。这个密钥用来校验外部认证(EXTERNAL AUTHENTICATE)命令使用的C-MAC。同时当存储数据(STORE DATA)命令的密文安全级要求命令中的数据采用MAC时,这个密钥也用来校验存储数据(STORE DATA)命令使用的C-MAC。KMAC是一个16字节(112比特加奇偶校验位)的DES密钥。KMAC应采用以下方法导出:
KMAC:= DES3(KMC)[ KEYDATA的6个最低有效字节||‘F0’||‘02’]|| DES3(KMC)[ KEYDATA的6个最低有效字节||‘0F’||‘02’]
必须为每张IC卡生成一个密钥加密分散密钥(KDEK)并将它写入相应的IC卡。这个密钥用来在ECB模式下对STORE DATA命令收到的机密数据进行解密。KDEK是一个16字节(112比特加奇偶校验位)的DES密钥。KDEK应采用以下方法导出:
KDEK:= DES3(KMC)[ KEYDATA 的6个最低有效字节 ||‘F0’||‘03’]|| DES3(KMC)[ KEYDATA 的6个最低有效字节||‘0F’||‘03’]
4. 指令
<span style="font-family:Microsoft YaHei;font-size:14px;">//主控分散产生分散密钥
KENC=KEYDATA+F001+KEYDATA+0F01
KMAC=KEYDATA+F002+KEYDATA+0F02
KDEK=KEYDATA+F003+KEYDATA+0F03 ECB_3DES_EN(KENC,KMC,Penc)
ECB_3DES_EN(KMAC,KMC,Pmac)
ECB_3DES_EN(KDEK,KMC,Pdek) ECB_3DES_EN(Penc,SPdek,EkeyEnc)
ECB_3DES_EN(Pmac,SPdek,EkeyMac)
ECB_3DES_EN(Pdek,SPdek,EkeyDek) //更新密钥
00A404000E315041592E5359532E4444463031
auth
80D8+KEYVERSION+814301+8010+EkeyEnc+03+DesVerify(KeyEnc)
+8010+EkeyMac+03+DesVerify(KeyMac)
+8010+EkeyDek+03+DesVerify(KeyDek)
</span>
文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/17579445
金融系列4《PUTKEY指令》的更多相关文章
- Java系列:JVM指令详解(下)(zz)
九.自增减指令 20:iconst_1 21:istore_1 22:return 指令码 助记符 ...
- Java系列:JVM指令详解(上)(zz)
一.未归类系列A 此系列暂未归类. 指令码 助记符 说明 59:iastore 60:lload 6 //因为str ...
- 三菱Q系列PLC基本指令讲解
1.数据传送指令MOV和MOVP,格式为 MOV SRC1 DES1 表示条件接通,将SRC1的值传送到DES1寄存器中,带P的表示只在条件接通的上升沿指令执行一个扫描周期,不带P ...
- 迈向angularjs2系列(2):angular2指令详解
一:angular2 helloworld! 为了简单快速的运行一个ng2的app,那么通过script引入预先编译好的angular2版本和页面的基本框架. index.html: <!DOC ...
- 汇编:jmp系列跳转指令总结
助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Gr ...
- Vue学习系列(三)——基本指令
前言 在上一篇中,我们已经对组件有了更加进一步的认识,从组件的创建构造器到组件的组成,进而到组件的使用,.从组件的基本使用.组件属性,以及自定义事件实现父子通讯和巧妙运用插槽slot分发内容,进一步的 ...
- C语言系列之预处理指令、循环左移函数的使用(四)
本章节将讲两个知识点 第一个知识点:常用的预处理指令 第二个知识点:循环左移右移函数 第一个知识点:预处理指令 一种预处理指令是#define,他把名字A定义为P0,当这个名字出现在源文件的任何地方时 ...
- 金融系列14《QPBOC交易流程》
中国银行金融IC卡qPBOC交易时间(不含终端处理时间)要求:IC卡私钥长度1024位,交易时间 <= 500ms, 1152 <=600 ATR=3B8D800100814D220886 ...
- ED/EP系列7《指令速查表》
命 令 CLA INS ...
随机推荐
- MySQL双主配置
MySQL双主配置 准备环境:服务器操作系统为RHEL6.4 x86_64,为最小化安装.主机A和主机B均关闭防火墙和SELINUX ,IP地址分别为192.168.131.129和192.168.1 ...
- Strom实现单词统计代码
import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.HashM ...
- loadrunner协议的选择
1. 任何高级协议的底层都是用Winsocket通信 2. 不管你系统中有多少个服务器,lr录制的始终是客户端与第一个服务器之间的通信内容, 客户端用IE访问的一般都选http协议(对于常见的,b ...
- php学习笔记5--php中的可变变量,可变函数及匿名函数
可变变量指的是:将一个变量的值再次当做一个变量名从而得到另外一个变量的值.如:$name = 'dqrcsc';$myname = 'name'; //$myname的值碰巧是另一个变量的变量名ech ...
- 十三、Android学习笔记_Andorid控件样式汇总
<!-- 设置activity为透明 --> <style name="translucent"> <item name="android: ...
- PB出现中文乱码
在design>option>font把字体都设定为宋体 tools>system option>font 把字体都设定为宋体 然后重启PB即可
- Server.UrlEncode、HttpUtility.UrlDecode的区别
Server.UrlEncode.HttpUtility.UrlDecode的区别 在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗? 测试: string file="文件上(传 ...
- OC5_@class关键字
// // ClassB.h // OC5_@class关键字 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zha ...
- Webservice发布出现 测试窗体只能用于来自本地计算机的请求
今天发布了一个接口,一开始以为是.netframework版本的问题,从3.5降到2.0到服务器发布,发布后还是会出现 测试窗体只能用于来自本地计算机的请求 上网查找资料发现原来是 webconfig ...
- (转)IIS设置优化(需根据服务器性能,调整具体参数值)
IIS7 优化-网站请求并发数>> /*调整IIS 7应用程序池队列长度*/队列长度 5000-20000(原来默认1000,最大65535,建议10000 ) /*调整IIS 7的app ...