中国金融PSAM卡应用规范.docx
《中国金融PSAM卡应用规范.docx》由会员分享,可在线阅读,更多相关《中国金融PSAM卡应用规范.docx(35页珍藏版)》请在冰豆网上搜索。
中国金融PSAM卡应用规范
中国金融PSAM卡应用规范
(讨论修改稿)
中国金融IC卡试点工程实施小组
一九九九年七月
一.文件结构
PSAM卡用于商户POS、网点终端、直联终端等端末设备上,负责机具的安全控管。
PSAM卡具有必然的通用性。
通过个人化处置的PSAM卡能在不同的机具上利用。
PSAM卡支持多级发卡的机制,各级发卡方在卡片主控密钥和应用主控密钥的控制下创建文件和装载密钥。
1.文件结构
PSAM卡文件结构符合ISO/IEC7816-4。
本条款描述了符合本规范的应用文件结构,这些应用被概念为支付系统应用(PSA)。
符合ISO/IEC7816-4,但不符合本规范的其他应用也可出此刻PSA上,并能够利用本规范中概念的命令进行操作。
PSAM卡中PSA的路径能够通过明确选择支付系统环境(PSE)来激活。
PSAM卡文件结构如下图所示:
图1PSAM卡文件结构
2.CDF区域说明
在PSAM卡的CDF(CommonDataFile)区域中,文件创建和密钥装载是在卡片主控密钥的控制下进行。
1)DIR目录数据文件
DIR目录数据文件是一个名为“01”的线性文件。
那个DDF被映射到卡中的某个DF,那个DF能够是MF,也能够不是。
DIR目录数据文件的说明参考《中国金融集成电路(IC)卡规范》,但DIR目录数据文件的第一个入口地址必需是全国密钥管理总中心应用ADF。
2)卡片主控密钥
卡片主控密钥是卡片的控制密钥,由卡片生产商写入,在发卡方替换后生效。
卡片主控密钥的更新在自身的控制下进行。
发卡方必需在卡片主控密钥的控制下,
●创建卡片CDF区域的文件;
●装载CDF区域的密钥(卡片保护密钥、应用主控密钥);
●替换CDF区域的密钥(卡片主控密钥、卡片保护密钥)。
卡片主控密钥的控制可通过外部认证操作实现,也可通过安全报文的方式实现。
3)卡片保护密钥
卡片保护密钥用于卡片CDF区域的应用保护,在卡片主控密钥的控制下装载和更新。
卡片的管理者可在卡片保护密钥的控制下,
●安全更新记录文件;
●安全更新二进制文件。
卡片保护密钥的控制通过安全报文的形式实现。
4)卡片公共信息文件
卡片公共信息文件寄存卡片的公共信息,在卡片主控密钥的控制下创建,可自由读,可在卡片保护密钥的控制下改写。
5)终端信息文件
终端信息文件寄存终端的信息,在卡片主控密钥的控制下创建,可自由读,可在卡片保护密钥的控制下改写。
3.ADF区域说明
在PSAM卡的ADF(ApplicationDataFile)区域中,文件创建和密钥装载是在应用主控密钥的控制下进行。
ADF下的文件结构可由应用发行者自行肯定,但必需存在应用主控密钥、应用保护密钥。
全国密钥管理中心应用ADF的文件结构还必需包括应用主工作密钥数据元、应用公共数据文件和应用脱机交易计数器文件。
1)应用主控密钥
应用主控密钥是应用的控制密钥,在卡片主控密钥控制下写入。
发卡方必需在应用主控密钥的控制下,
●创建卡片ADF区域的文件;
●装载ADF区域的密钥(应用保护密钥、应用主工作密钥);
●替换ADF区域的密钥(应用主控密钥、应用保护密钥)。
应用主控密钥的控制可通过外部认证操作实现,也可通过安全报文的方式实现。
2)应用保护密钥
应用保护密钥用于卡片ADF区域的应用保护,在应用主控密钥的控制下装载和更新。
卡片的管理者可在应用保护密钥的控制下,
●安全更新记录文件;
●安全更新二进制文件;
●进行应用解锁。
卡片保护密钥的控制通过安全报文的形式实现。
3)应用主工作密钥
应用主工作密钥用于卡片的交易,在应用主控密钥的控制下装载,全国密钥管理中心下的主工作密钥不允许更新。
4)应用公共信息文件
应用公共信息文件寄存应用的公共信息,在应用主控密钥的控制下创建,可自由读,可在卡片保护密钥的控制下改写。
5)应用脱机交易计数器文件
应用脱机交易计数器文件寄存终端的脱机交易计数器,在应用主控密钥的控制下创建,可自由读,在消费交易MAC2验证通过的情形下由卡片操作系统改写。
应用脱机交易计数器只对本应用有效。
二.
大体命令
1.选择文件(Select)
1)概念和范围
SELECT命令通过文件名或AID来选择IC卡中的PSE、DDF或ADF。
命令执行成功后,PSE、DDF或ADF的路径被设定。
应用到AEF的后续命令将采用SFI方式联系到所选定的PSE、DDF或ADF。
从IC卡的响应报文应由回送的FCI组成。
2)命令报文
SELECTFILE命令报文见表2-1。
代码
值
CLA
00h
INS
A4h
P1
引用控制参数(见表2-2)
P2
00h:
第一个或仅有一个
02h:
下一个
Lc
05h~10h
Data
文件名
Le
00h
表2-1SELECT命令报文表
b8
b7
b6
b5
b4
b3
b2
b1
含义
0
0
0
0
0
1
通过文件名选择
0
0
表2-2SELECT命令引用控制参数
3)命令报文数据域
命令报文数据域应包括所选择的PSE名、DF名或AID。
4)响应报文数据域
响应报文中数据域应包括所选择的PSE、DDF或ADF的FCI。
表2-3到表2-5规定了此概念所用的标志。
本规范不规定FCI中回送的附加附加标志。
表2-3概念了成功选择PSE后回送的FCI:
标志
值
存在方式
'6F'
FCI模板
M
'84'
DF名
M
'A5'
FCI专用数据
M
'88'
目录基本文件的SFI
M
表2-3SELECTPSE的响应报文(FCI)
表2-4概念了成功选择DDF后回送的FCI:
标志
值
存在方式
'6F'
FCI模板
M
'84'
DF名
M
'A5'
FCI专用数据
M
'88'
目录基本文件的SFI
M
表2-4SELECTDDF的响应报文(FCI)
表2-5概念了成功选择ADF后回送的FCI:
标志
值
存在方式
'6F'
FCI模板
M
'84'
DF名
M
'A5'
FCI专用数据
M
'9F0C'
发卡方自定义数据的FCI
O
表2-5SELECTADF的响应报文(FCI)
2.
读记录文件(ReadRecord)
1)概念和范围
READRECORD命令用于读取记录文件中内容。
IC卡的响应由回送的记录数据组成。
2)命令报文
READRECORD命令报文见表2-6。
代码
值
CLA
00h
INS
B2h
P1
记录的个数
P2
引用控制参数(见表2-7)
Lc
不存在
Data
不存在
Le
00h
表2-6READRECORD命令报文
b8
b7
b6
b5
b4
b3
b2
b1
含义
X
X
X
X
X
SFI
1
0
0
P1为记录的个数
表2-7READRECORD命令引用控制参数
3)命令报文数据域
命令报文数据域不存在。
4)响应报文数据域
所有执行成功的READRECORD命令响应报文数据域由读取的记录组成。
3.
写记录文件(UpdateRecord)
1)概念和范围
UPDATERECORD命令用命令APDU中给定的数据更改指定的记录。
在利用当前记录地址时,该命令将在修改记录成功后从头设定记录指针。
2)命令报文
UPDATERECORD命令报文见表2-8。
代码
值
CLA
00h或04h
INS
DCh
P1
P1=00h:
表示当前记录
P1≠00h:
指定的记录号
P2
P1=00h:
表示第一个记录
P1=01h:
表示最后一个记录
P1=02h:
表示下一个记录
P1=03h:
表示前一个记录
P1=04h:
表示P1中指定的记录
Lc
后续数据域长度
Data
更新原有记录的新记录
Le
不存在
表2-8UPDATERECORD命令报文
3)命令报文数据域
命令报文数据域由更新原有记录的新记录组成。
利用安全报文时,命令报文的数据域中应包括MAC。
MAC是由卡片保护密钥或应用保护密钥对更新原有记录的新记录计算而取得的。
4)响应报文数据域
响应报文数据域不存在。
4.
读二进制文件(ReadBinary)
1)概念和范围
READBINARY命令用于读取二进制文件的内容(或部份内容)。
2)命令报文
READBINARY命令报文见表2-9。
代码
值
CLA
00h
INS
B0h
P1
见表2-10
P2
从文件中读取的第一个字节的偏移地址
Lc
不存在
Data
不存在
Le
00
表2-9READBINARY命令报文
b8
b7
b6
b5
b4
b3
b2
b1
含义
X
1
读取模式:
-用SFI方式
0
0
RFU(如果b8=1)
X
X
X
X
X
SFI(取值范围21-30)
表2-10READBINARY命令引用控制参数
3)命令报文数据域
命令报文数据域不存在。
4)响应报文数据域
当Le的值为0时,只要文件的最大长度在256(短长度)或65536(扩展长度)之内,则其全数字节将被读出。
5.
写二进制文件(UpdateBinary)
1)概念和范围
UPDATEBINARY命令用命令APDU中给定的数据修改EF文件中已有的数据。
2)命令报文
UPDATEBINARY命令报文见表2-11。
代码
值
CLA
00h或04h
INS
D6h
P1
见表2-12
P2
要修改的第一个字节的偏移地址
Lc
后续数据域的长度
Data
修改用的数据
Le
不存在
表2-11UPDATEBINARY命令报文
b8
b7
b6
b5
b4
b3
b2
b1
含义
X
1
读取模式:
-用SFI方式
0
0
RFU(如果b8=1)
X
X
X
X
X
SFI(取值范围21-30)
表2-12UPDATEBINARY命令引用控制参数
3)命令报文数据域
命令报文数据域包括更新原有数据的新数据。
利用安全报文时,命令报文的数据域中应包括MAC。
MAC是由卡片保护密钥或应用保护密钥对更新原有数据的新数据计算而取得的。
4)响应报文数据域
响应报文数据域不存在。
6.
外部认证(ExternalAuthentication)
1)概念和范围
EXTERNALAUTHENTICATION命令利用卡片内部的计算结果,有条件地修改安全状态。
计算的方式是利用卡片中的卡片主控密钥或应用主控密钥,对卡片产生的随机数(利用GETCHALLENGE命令)和接口设备传输进来的认证数据进行验证。
2)命令报文
EXTERNALAUTHENTICATION命令报文见表2-8。
代码
值
CLA
00h
INS
82h
P1
00h
P2
00h
Lc
08h
Data
发卡方认证数据
Le
不存在
表2-8EXTERNALAUTHENTICATION命令报文
3)命令报文数据域
命令报文数据域中包括8字节的加密数据,该数据是用P2指定的密钥对此命令前一条命令“GETCHALLENGE”命令取得的随机数后缀“00000000”以后做3DES加密运算产生的。
4)响应报文数据域
响应报文数据域不存在。
7.
取响应数据(GetResponse)
1)概念和范围
当APDU不能用现有协议传输时,GETRESPONSE命令提供了一种从IC卡向接口设备传送APDU(或APDU的一部份)的传输方式。
2)命令报文
GETRESPONSE命令报文见表2-10。
代码
值
CLA
00h
INS
C0h
P1
00h
P2
00h
Lc
不存在
Data
不存在
Le
期望数据的最大长度
表2-10GETRESPONSE命令报文
3)命令报文数据域
命令报文数据域不存在。
4)响应报文数据域
响应报文数据域的长度由Le的值决定。
若是Le的值为0,在后续数据有效时,IC卡必需回送状态码‘6Cxx’,不然‘6F00’。
8.
取随机数(GetChallenge)
1)概念和范围
GETCHALLENGE命令用于从IC卡中取得一个4个字节的随机数。
该随机数服务于安全进程(如安全报文),它仅对下条命令有效。
2)命令报文
GETCHALLENGE命令报文见表2-11。
代码
值
CLA
00h
INS
84h
P1
00h
P2
00h
Lc
不存在
Data
不存在
Le
04h
表2-11GETCHALLENGE命令报文
3)命令报文数据域
命令报文数据域不存在。
4)响应报文数据域
IC卡产生的随机数,长度为4字节。
三.
扩展命令
为符合《中国金融集成电路(IC)卡规范()》和《银行IC卡联合试点技术方案》的安全控管要求,PSAM卡必需支持以下专用命令。
1.写入密钥(WriteKey)
1)概念和范围
WRITEKEY命令可向卡中装载密钥或更新卡中已存在的密钥。
本命令可支持8字节或16字节的密钥,密钥写入必需采用加密的方式,在主控密钥的控制下进行。
在密钥装载时,向卡中送入密钥头和密钥,若是指定的密钥不存在,一个新密钥将产生;若是指定的密钥已存在,密钥将被更新。
在密钥装载前必需用GETCHANLLEGE命令从PSAM卡取一个4字节的随机数。
2)命令报文
WRITEKEY命令报文见表3-1。
代码
值
CLA
84h
INS
D4h
P1
00h
P2
00h
Lc
14h或1Ch
Data
加密后的密钥信息、MAC
Le
不存在
表3-1WRITEKEY命令报文
3)命令报文数据域
命令报文数据域包括要装载的密钥密文信息和MAC。
密钥密文信息是用主控密钥对以下数据加密(按所列顺序)产生的:
——密钥用途
——密钥版本
——密钥算法标识
——密钥值
MAC是用主控密钥对下数据进行MAC计算(按所列顺序)产生的:
——随机数(4字节)
——CLA
——INS
——P1
——P2
——Lc
——密钥密文信息
加密和MAC计算的方式遵循《中国金融集成电路(IC)卡规范》。
装载8字节的单长度密钥时,数据长度为14h;装载16字节的双长度密钥时,数据长度为1Ch。
4)响应报文数据域
响应报文数据域不存在。
2.
计算临时密钥(INIT_FOR_DESCRYPT)
1)概念和范围
INIT_FOR_DESCRYPT命令用来初始化通用密钥计算进程。
PSAM卡将利用卡中指定的密钥进行运算,产生一个临时密钥。
运算方式由指定的密钥类型、密钥分散级数和密钥算法标识肯定。
不支持计算临时密钥计算的密钥类型有:
——主控密钥
——保护密钥
——消费密钥
双长度密钥产生双长度临时密钥的密钥类型有:
——PIN解锁密钥
——用户卡应用保护密钥
双长度密钥左右异或产生单长度临时密钥的密钥类型有:
——重装PIN密钥
双长度密钥产生双长度临时密钥,单长度密钥产生单长度临时密钥的密钥类型有:
——MAC密钥
——加密密钥
——MAC、加密密钥
指定密钥通过几级处置由密钥分散级数和Lc肯定,若二者不一致,则返回错误信息。
临时密钥在PSAM卡下电后自动消失,不允许读。
2)命令报文
INIT_FOR_DESCRYPT命令报文见表3-2。
代码
值
CLA
80h
INS
1Ah
P1
密钥用途
P2
密钥版本
Lc
待处理数据的长度
Data
待处理的数据
Le
无
表3-3INIT_FOR_DESCRYPT命令报文
3)命令报文数据域
命令报文数据域包括待处置的输入数据。
数据长度为8的整数倍,长度也能够为0。
密钥类型取密钥用途的低5位,密钥分散级数取密钥用途的高3位。
4)响应报文数据域
响应报文数据域不存在。
3.
通用DES计算(DESCrypt)
1)概念和范围
DESCRYPT命令利用指定的密钥来进行运算。
待处置的数据块长度最少可支持32个字节。
若一条命令无法传输所有的待处置数据,可分几条命令输入。
加密计算采用ECB模式,数据的填充在卡片外面进行,卡片只支持长度为8的整数倍数据的加密。
MAC计算遵循《中国金融集成电路(IC)卡规范》,数据的填充在卡片外面进行,卡片卡片只支持长度为8的整数倍数据的MAC计算。
DESCRYPT命令必需在INIT_FOR_DESCRYPT命令成功执行后才能进行。
2)命令报文
DESCRYPT命令报文见表3-3。
代码
值
CLA
80h
INS
Fah
P1
P1=00h,加密
P1=01h,唯一一块MAC计算
P1=02h,第一块MAC计算
P1=04h,下一块MAC计算
P1=08h,最后一块MAC计算
P2
密钥标识(KeyID)
Lc
要加密的数据长度
Data
要加密的数据
Le
不存在
表3-3DESCRYPT命令报文
3)命令报文数据域
命令报文数据域包括要加密的数据。
加密数据的长度为8的整数倍。
在P1为01和02时,待处置数据的前8个字节为MAC计算的初始值。
4)响应报文数据域
在P1为00时,响应报文数据域包括8字节或16字节的加密结果。
在P1为01和08时,响应报文数据域包括4字节的MAC。
4.
应用解锁(ApplicationUnblock)
1)概念和范围
APPLICATIONUNBLOCK命令用于恢复当前应用。
当命令成功完成后,对应用访问的限制将被取消,利用消费密钥校验MAC2的错误计数器将被重置。
若是应用解锁持续失败三次,卡将永久锁定此应用。
在APPLICATIONUNBLOCK命令执行前必需执行GETCHANLLENGE命令取得4字节的随机数。
2)命令报文
APPLICATIONUNBLOCK命令报文见表3-4。
代码
值
CLA
84h
INS
18h
P1
00
P2
00
Lc
数据字节数
Data
报文鉴别代码数据元
Le
不存在
表3-4APPLICATIONUNBLOCK命令报文
3)命令报文数据域
命令报文数据域包括报文辨别代码,由应用保护密钥对以下数据(按所列顺序)进行MAC计算而取得的:
——随机数(4字节)
——CLA
——INS
——P1
——P2
——Lc
4)响应报文数据域
响应报文数据域不存在。
5.
MAC1计算(INIT_SAM_FOR_PURCHASE)
1)概念和范围
INIT_SAM_FOR_PURCHASE命令可支持多级消费密钥分散机制,产生《中国金融集成电路(IC)卡规范》中概念的MAC1。
按照银行IC卡试点技术方案,能够利用试点城市标识、成员行标识、卡片应用序列号、随机数和交易信息取得进程密钥,进而加密取得MAC。
PSAM卡产生脱机交易流程中MAC1的进程如下所示:
●PSAM在其内部用GMPK(三级消费密钥)对试点城市标识分散,取得二级消费主密钥BMPK;
●PSAM在其内部用BMPK对成员行标识分散,取得三级消费主密钥MPK;
●PSAM在其内部用MPK对卡片应用序列号分散,取得卡片消费子密钥DPK;
●PSAM在其内部用DPK对卡片传来的伪随机数、脱机交易序号、终端交易序号加密,取得进程密钥SESPK,作为临时密钥寄存在卡中;
●PSAM在其内部用SESPK对交易金额、交易类型标识、终端机编号、交易日期(终端)和交易时刻(终端)加密取得MAC1,将MAC1传送出去。
在此进程中,所有的中间结果只保留在卡片内部,外界无法取得。
只有进行本命令后,才允许进行MAC校验的命令。
参与处置的终端机编号和终端交易序号由卡片操作系统从卡片中取得。
INIT_SAM_FOR_PURCHASE命令可支持多级消费密钥分散机制,消费密钥的分散进程由Lc和消费密钥一路肯定,若是二者不一致,则返回错误信息。
2)命令报文
INIT_SAM_FOR_PURCHASE命令报文见表3-5。
代码
值
CLA
80h
INS
70h
P1
00h
P2
00h
Lc
14h+8×N(N=1,2,3)
Data
要处理的数据
Le
08
表3-5INIT_SAM_FOR_PURCHASE命令报文
3)命令报文数据域
命令报文数据域包括的数据以下列顺序排列:
●用户卡随机数,4字节
●用户卡交易序号,2字节
●交易金额,4字节
●交易类型标识,1字节
●交易日期(终端),4字节
●交易时刻(终端),3字节
●消费密钥版本号,1字节
●消费密钥算法标识,1字节
●用户卡应用序列号,8字节
●成员银行标识,8字节
●试点城市标识,8字节
4)响应报文数据域
响应报文数据域包括4字节的终端脱机交易序号和4字节的MAC1。
6.
校验MAC2(CREDIT_SAM_FOR_PURCHASE)
1)概念和范围
CREDIT_SAM_FOR_PURCHASE命令利用INIT_SAM_FOR_PURCHASE命令产生的进程密钥SESPKP校验MAC2,进程如下所示:
●检查MAC2尝试计数器。
若是MAC2尝试计数器为零,现在不执行该命令,PSAM卡回送错误状态码结束命令;
●如MAC2未被锁定,PSAM在其内部用SESPK对交易金额加密取得MAC2,与命令报文中的数据进行比较;
●若命令执行成功,PSAM卡将应用中的终端脱机消费交易序号加1;
●如命令执行不成功,PSAM卡将MAC2尝试计数器减1,并回送状态码’63Cx’,这里’x’是MAC2尝试计数器的新值;
●若是’x’为零,PSAM卡将锁定GMPK所在的应用ADF1。
在此进程中,所有的中间结果只保留在卡片内部,外界无法取得。
CREDIT_SAM_FOR_PURCHASE命令必需在INIT_SAM_FOR_PURCHASE命令成功执行后才能进行。
若MAC2尝试计数器为0的话,消费密钥所在的应用将被锁定,只能在应用保护密钥的控制下应用解锁后利用。
应用下的MAC2错误计数器在应用下所有消费密钥MAC2校验错误的情形下都要被减1。
2)命