磁条卡IC卡兼容加密机IC卡命令集

更新时间:2023-08-15 13:40:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

磁条卡IC卡兼容加密机IC卡命令集

(IC卡规范)

总参第五十六研究所

磁条卡IC卡兼容加密机IC卡命令集

目 录

第一章 密码机的功能 ...................................................................................... 1

第二章 密钥管理 .............................................................................................. 2

2.1 密钥结构 ............................................................................................................ 2

2.2 密钥类别 ............................................................................................................ 3 2.3 密钥检查 ............................................................................................................ 4 第三章

密码机消息格式 .................................................................................. 5

第四章 密码机命令 .......................................................................................... 7

4. 1 密钥命令 ................................................................................................................ 7

4.1. 1 产生一个索引的卡片密钥 ............................................................................... 7 4.1. 2 存储一个索引的卡片密钥 ............................................................................... 8 4.1. 3 清除一个索引的卡片密钥 ............................................................................... 9 4.1. 4 取回一个索引的卡片密钥 ............................................................................. 10 4.1. 5 产生一个索引的终端主密钥 ......................................................................... 11 4.1. 6 存储一个索引的终端主密钥 ......................................................................... 12 4.1. 7 清除一个索引的终端主密钥 ......................................................................... 13 4.1. 8 取回一个索引的终端主密钥 ......................................................................... 14 4.1. 9 计算离散子密钥 ............................................................................................. 15 4.1. 10 计算过程密钥 ............................................................................................... 16 4.1. 11 产生动态通讯密钥 ....................................................................................... 17 4.2 功能命令 ............................................................................................................... 18 4.2. 1 用当前离散子密钥计算3_DES_MAC .......................................................... 18 4.2. 2 用当前过程密钥计算1_DES_MAC .............................................................. 19 4.2. 3 用当前离散子密钥计算1_DES_TAC ........................................................... 20 4.2. 4 用通讯密钥或者终端主密钥计算MAC ....................................................... 21 4.2. 5 用指定的终端主密钥加密数据 ..................................................................... 22 4.2. 6 用当前离散子密钥加密数据 ......................................................................... 23 4.3 复合命令 .......................................................................................................... 24 4.3.1 用实时生成的密钥计算3_DES_MAC或1_DES_MAC ............................ 24 4.3.2 用实时生成的密钥校验3_DES_MAC或1_DES_MAC ............................... 25 4.3.3 用实时生成的密钥校验并产生MAC ............................................................. 26 4.3.4 用实时生成的离散子密钥计算1_DES_TAC ................................................. 27

磁条卡IC卡兼容加密机IC卡命令集

4.3.5 用实时生成的离散子密钥校验1_DES_TAC ................................................. 28 4.3.6 安全报文处理命令 ........................................................................................ 29 4.3.7 *用通信密钥加/脱密数据 ............................................................................... 30 错误代码 ..................................................................................................................... 31

算法描述 ..................................................................................................................... 32

磁条卡IC卡兼容加密机IC卡命令集

第一章 密码机的功能

1 概述

能够完全支持中国人民银行IC卡新规范的加密方式要求。

1. 用64bits密钥做1_DES加密运算; 2. 用128bits密钥做3_DES加密运算;

3. 支持新规范中产生离散子密钥算法GEN_LSKEY及过程密钥算法GEN_GCKEY; 4. 支持新规范对1_DES_MAC、TAC、3_DES_MAC的算法; 5. 支持数据通信加密,能保存多个终端的主密钥TER_MAST_KEY; 6. 可产生由TMK加密的动态通信密钥TXKEY;

7. 支持MAC_MODE_1、MAC_MODE_2、MAC_MODE_3三种算法。

能够完全支持ANSI X9.8数据加密标准(DES)算法

磁条卡IC卡兼容加密机IC卡命令集

第二章 密钥管理

2.1 密钥结构

支持中国金融集成电路(IC)卡应用规范中卡片密钥的组织方式

支持多个版本(VERSION),每个版本不是一次产生,可每年或数年产生一个新版本。

密码机内可保存最多3个版本。

VERSION = 0,指示新的(当前)版本。 VERSION = 1,2 指示旧的版本。

每一版本可含多个组,每组具有一个索引号(GROUP_INDEX),密码机内可保存最多

32个组。

GROUP_INDEX = 0,1,……,31

每组包含一套完整的卡片密钥(128bits),称M*KEY;顺序为:

M_number = 1:用于圈存交易的密钥(MLK) M_number = 2:用于圈提交易的密钥(MULK) M_number = 3:用于修改透支限额的密钥(MUK) M_number = 4:用于消费/取现交易的密钥(MPK)

M_number = 5:用于消费/取现交易中产生TAC的密钥(MTK) M_number = 6:用于应用维护功能的密钥(MAMK) M_number 7~10:保留。

支持 1000 个终端主密钥(64bits),用终端主密钥索引(TMK _INDEX)表示。

TMK _INDEX = 0,1,……,999

磁条卡IC卡兼容加密机IC卡命令集

2.2 密钥类别

2.2.1 基础主密钥〔MK〕

基础主密钥用于保护卡片密钥和终端主密钥。每台密码机只有一个基础主密钥。密码机在出厂时,配有缺省设置的基础主密钥;用户须根据本身的需要重新设置基础主密钥。

基础主密钥为128bits密钥,其三个成分(3×128bits)分别由三个人保管。

由人工通过密码机键盘背对背的输入各自成分,在密码机内部按一定的算法生成。 基础主密钥还可由专用的密钥管理软件输入,具体操作见《使用说明》。 基础主密钥只受密码机的保护,不能读出。

2.2.2 卡片主密钥〔M*KEY 〕

卡片主密钥也为128 bits密钥,其两个成分(2×128bits)分别由两个人保管。 由人工通过密码机键盘背对背的输入各自成分,在密码机内部按一定的算法生成。 卡片主密钥还可由专用的密钥管理软件输入,具体操作见《使用说明》。 卡片主密钥还可由密码机随机产生。

卡片主密钥受密码机的保护。卡片主密钥在基础主密钥的保护下,可输出密码机外,既可存放在主机数据库中,也可存在其他载体(如软盘)上。

卡片主密钥在使用时,要指定版本号、组索引号、卡片密钥种类。

2.2.3 终端主密钥〔TMK〕

终端主密钥是64bits密钥。它由一个成分组成,由一个人保管。

由人工通过密码机键盘以明文方式输入。终端主密钥还可由专用的密钥管理软件输入,具体操作见《使用说明》。

终端主密钥还可由密码机随机产生。

终端主密钥受密码机的保护。TMK密钥在基础主密钥的保护下,可输出密码机外,既可存放在主机数据库中,也可存在其他载体(如软盘)上。

终端主密钥需在使用前输入,要指定其索引号。

2.2.4 离散子密钥、过程密钥、动态通讯密钥

离散子密钥(LSKEY)为128bits密钥,由密码机根据命令生成,保存在密码机内至新值覆盖。

过程密钥(GCKEY)为64bits密钥,由密码机根据命令生成,保存在密码机内至新值覆盖。

动态通讯密钥(TXKEY)为64bits密钥,由密码机根据命令生成,加密输出,在密码机内不保存。

磁条卡IC卡兼容加密机IC卡命令集

2.3 密钥检查

2.3.1 密钥的奇(ODD)校验

假如密钥的字节形式为 b7b6b5b4b3b2b1b0,

则校验位b0=b7⊕b6⊕b5⊕b4⊕b3⊕b2⊕b1⊕1 ‘⊕’为异或算法。

2.3.2 密钥的校验值

密钥按1_DES或3_DES算法加密64bit 的0,取最左4个字符做为校验值。

2.3.3 弱密钥的检查

由密码机生成的密钥,密码机可自动检查其是否为弱密钥(Weak Key)或半弱密钥(simi-weak key)。如果属于这类密钥,密码机将自动重新产生。

弱密钥为:

01 01 01 01 01 01 01 01 1F 1F 1F 1F 1F 1F 1F 1F E0 E0 E0 E0 F1 F1 F1 F1 FE FE FE FE FE FE FE FE

半弱密钥为:

E0 FE E0 FE F1 FE F1 FE FE E0 FE E0 FE F1 FE F1 1F FE 1F FE 0E FE 0E FE 01 FE 01 FE 01 FE 01 FE 1F E0 1F E0 0E F1 0E F1 01 E0 01 E0 01 F1 01 F1 FE 1F FE 1F FE 0E FE 0E E0 1F E0 1F F1 0E F1 0E FE 01 FE 01 FE 01 FE 01 E0 01 E0 01 F1 01 F1 01 01 1F 01 1F 01 0E 01 0E 1F 01 1F 01 0E 01 0E 01

磁条卡IC卡兼容加密机IC卡命令集

第三章 密码机消息格式

1. 异步消息格式

异步通讯协议(ASYNC)采用8 bits数据位,1 bit停止位,无奇偶校验位,波特率19.2K。

消息格式如下:

STX:控制字符(0x02),表示消息开始。 ETX:控制字符(0x03),表示消息结束。

检查和:消息内容各字节的算术和,取最后4位。用来对消息内容进行验证。

检查和的计算如下例: 消息--“31001” 33 31 30 30 + 31 F5 检查和: 00F5

2. TCP/IP消息格式

主机端:消息内容

3. 消息的传送

所有消息均用ACSII字符方式传送。

密钥和密文部分用十六进制数字表示。因此一个8字节的密钥应该转换成16个ASCII 码字符,一个16字节的密钥应转换成32个ASCII码字符输入。

4. 字母缩写说明 n: 可变长度域

N: 十进制字符‘0’-‘9’ A: 可打印字符

H: 十六进制字符(‘0’–‘F’)

磁条卡IC卡兼容加密机IC卡命令集

5. MAC数据说明

(1)所有用来计算MAC的数据,先要转换成ASCII码‘0’-‘9’或‘A’-‘F’,然后送入密码机。(2)MAC长度指示域为转换前的字节数。(3)如果密码机计算的MAC与您计算的不符:①可在MAC数据前加8字节的0,因为密码机的有些指令把前8字节当做初始向量,具体算法请参考附录中的算法说明;②如果您在MAC数据后面加了0x80,0x00…,请去掉,密码机会自动为您加上该分组。

磁条卡IC卡兼容加密机IC卡命令集

第四章 密码机命令

4. 1 密钥命令

4.1. 1

产生一个索引的卡片密钥E0

功能:密码机产生一个128bits的随机数,作为指定版本(Version)、指定组(Group Index)的某个卡片密钥(M_Number),并将它保存在密码机内,同时用主密钥加密,将加密后的这个卡片密钥(M*KEY)密值返回给主机。

错误代码 = 00 时,为正确返回,紧接的消息域有效。

错误代码 00 时,为错误返回,紧接的消息域不存在,以后同。

错误代码表见附录。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 2

存储一个索引的卡片密钥E2

功能:密码机接受这个指定版本(Version)、指定组(Group Index)的卡片密钥(M*KEY)密值,并将它用主密钥解密后存储在密码机的密钥库中。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 3

清除一个索引的卡片密钥E4

功能:清除密码机内指定的卡片密钥。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 4

取回一个索引的卡片密钥E6

功能:将指定的卡片密钥用主密钥加密后输出。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 5

产生一个索引的终端主密钥D0

功能:密码机产生一个64bits的随机数,作为指定索引(TMK Index)的终端主密钥,并将它保存在密码机内;同时用主密钥加密,将加密后的这个终端主密钥(TMK)密值返回给主机。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 6

存储一个索引的终端主密钥D2

功能:密码机接受指定索引(TMK INDEX)的终端主密钥(TMK)密值,并将它用主密钥解密后存储在密码机中。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 7

清除一个索引的终端主密钥D4

功能:清除密码机内指定索引的终端主密钥。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 8

取回一个索引的终端主密钥D6

功能:密码机将指定索引的终端主密钥,用主密钥加密后返回给主机。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 9 计算离散子密钥10

功能:密码机根据指定的卡片密钥,加密输入数据,得离散子密钥,存于密码机内。 算法选择:0:DES ;1-2:保留,以后同。

输 入 消 息 格 式

输 出 消 息 格 式

计算离散子密钥的方法:

1. 用选定的卡片密钥(128bits)对输入数据LS_Data进行3_DES加密运算,得离散

子密钥的左半部;

2. 用选定的卡片密钥(128bits)对输入数据LS_Data的反(NEG)进行3_DES加密

运算,得离散子密钥的右半部;

磁条卡IC卡兼容加密机IC卡命令集

4.1. 10 计算过程密钥12

功能:用当前密码机内的离散子密钥LSKEY(128bits),根据3_DES算法,加密输入数据GC_Data,产生一个64bits的过程密钥GCKEY,并将它存储在密码机内。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.1. 11 产生动态通讯密钥14

功能:密码机产生一个64bits的随机数据,用指定的终端主密钥加密后返回给主机。

输 入 消 息 格 式

输 出 消 息 格 式

磁条卡IC卡兼容加密机IC卡命令集

4.2 功能命令

3.1.1 用当前离散子密钥计算3_DES_MAC

功能:用密码机内的当前离散子密钥LSKEY,根据3_DES_MAC算法,计算输入数据的MAC值,并返回给主机。

输 入 消 息 格 式

输 出 消 息 格 式

用离散子密钥产计算3_DES_MAC的方法:

1. 提供一个不定长的数据块(前8字节为Initial Vector)。

2. 将该数据块分成8字节为单位的数据块,标号为D1、D2、D3…等。最后的数据块有

可能是1-8个字节。

3. 如果最后的数据块长度为8字节的话,则在其后加上16进制数字‘0x80 00 00 00 00 00

00 00’,转到第5步。

4. 如果最后的数据块长度不足8字节,则在其后加上16进制数字‘0x80’,如果达到8

字节长度,则转到第5步;否则在其后加入16进制数字‘0x 00’直到长度达到8字节。 5. 用离散子密钥(128bits)对数据块进行3_DES_MAC运算,得MAC。

本文来源:https://www.bwwdw.com/article/8fxj.html

Top