如果发卡行在授权响应报文中包括了更新脚本,终端传递这些脚本命令给卡片。在处理更新之前,卡片执行安全验证确保脚本来自认证过的发卡行而且在传输过程中没有被修改。支持的脚本命令允许更新脱机处理参数、锁定和解锁应用、锁卡、重新设置脱机PⅠN尝试计数器以及修改脱机PIN值。
图2-17发卡行脚本处理流程图
发卡行脚本命令的处理是可选的。
发卡行可以不用重新发卡而是通过发卡行脚本IC卡复制处理来修改卡片中的个人化数据。发卡行将脚本命令放在授权响应报文中传送给终端,终端将命令转发给卡片。当满足安全要求以后,卡片执行命令。
支持的命令有:
应用锁定(APPLICATIONBLOCK);
应用解锁(APPLICATIONUNBLOCK);
卡片锁定(CARDBLOCK);
PIN修改/解锁(PINCHANGE/UNBLOCK);
设置数据(PUTDATA);
修改记录(UPDATERECORD);
脚本处理通过锁定恶意透支和失窃的卡片来限制信用和伪卡风险。卡片参数可以在不需要重新发卡的情况下根据持卡人IC卡复制情况的变化而修改。
1.卡片数据
表2-18描述了在发卡行脚本处理过程中卡片使用的计数器和指示位。
2-18发卡行脚本处理—卡片数据
2.终端数据。
表2-19列出了发卡行脚本处理过程中使用的终端数据。
2-19 发卡行脚本处理——一终端数据
3.发卡行脚木操作中的密钥管理。
发卡行脚木操作中的密钥包含:安全报文鉴別密钥和安全报文加密密钥
图2-18是安全报文鉴别(MAC)密钥的生成和使用图示。
图2-18MAC密钥的生成和使用
图2-19是安全报文加密密钥的生成和使用
图2-19加密密钥的生成和使用
4.认证响应数据。
表2-20列出的是授权响应中发卡行脚本数据。
表2-20 发卡行脚本处理——联机响应数据
5.命令。
下面列出的功能是发卡行脚本处理过程中可以执行的功能。推荐使用发卡行脚本命令处理这些功能。除了卡片锁定命令,所有命令处理的都是当前选择应用。应用锁定。如果发卡行决定当前使用的应用无效,执行应用锁定功能。此时锁定的应用可以在后面由发卡行解锁。
使用应用锁定(APPLICatiO0NBLOCK)命令锁应用。应用锁定后,和应用有关的文件状态指示器要指明应用已经锁定。即使应用锁定,卡片内部数据访问仍然有效。一个锁定的应用,卡片对生成应用密文命令总是返回AAC如果应用在交易过程中锁定,卡片和终端允许交易继续执行到结束处理步骤。但是在后续交易时,卡片不允许锁定的应用被选择进行金融交易[终端可能选择一个锁定的应用进行解锁,因此卡片应对生成应用密文(GENERATEAC)命令响应AAC]
表2-21APPLICATIONBLOCK命令报文
命令报文的数据域中包含MAC数据。响应报文没有数据域。
不论应用是否有效,“9000”编码总表示命令成功执行。应用解锁。
应用解锁解除了应用的锁定状态。应用解锁要在发卡行指定的特殊设备上执行。因为应用解锁要在特殊设备上执行。处理流程不需要釆用正常授权或金融交易的处理规则。在卡片对第1个生成应用密文(GENERATEAC)命令响应AAC后,设备要能将交易联机上送。即使卡片支持发卡行认证,也不需要执行。卡片风险管理和终端风险管理都不是应进行的。也不需要第2个生成应用密文GENERATEAC)命令[如果由于一些原因,卡片在第2个生成应用密文
(GENERATEAC)命令发送之前解锁了,设备要将响应的密文当AAC处理
表2-22应用解锁命令报文
命令报文的数据域中包含MAC数据。
响应报文没有数据域。
不论应用是否有效,“9000”编码总表示命令成功执行。
卡片锁定。
卡片锁定(CARDBLOCK)命令是一个二次发卡命令,使得卡片上的所有
应用永久失效
卡片锁定命令使卡片上所有应用无效而且实行卡片下电。除非卡片锁定支付系统环境(PSE)不会无效而且总是可以访问。如果卡片在交易处理过程中锁定,卡片和终端允许交易继续进行到交易结束步骤。一个锁定的卡片不能用发卡行脚本命令或其他命令解锁,因此卡片已经失效。此时PSE也无效。卡片对选择命令响应“功能不支持”(SW1SW2=“6A81”)。卡片也不允许任何其他形式的应用选择。当发卡行决定对卡片禁止使用任何功能,执行卡片锁定。例如丢失或被偷
窃的卡片。在卡片锁定后,卡片上的应用都不能被解锁发卡行脚本中的卡片锁定命令用来实现锁卡功能。
表2-23 卡片锁定命令报文
命令报文的数据域中包含MAC数据。
响应报文没有数据域。
不论应用是否有效,“9000”编码总表示命令成功执行。
PIN修改/解锁
PIN修改/解锁(PINCHANGE/UNBLOCK)命令用来对PIN解锁或解锁加同时修改PIN值,卡片通过重新设置PIN尝试计数器到最大值(PIN尝试限制数)实现PIN解锁。
PIN解锁
PIN修改/解锁命令执行成功,PIN尝试计数器复位成PIN尝试限制数。修改PIN值。如果要修改PIN值,PIN数据要用对称算法加密。当PIN值修改时,PIN的
尝试次数计数器自动复位成PIN尝试限制数修改PIN值应在一个发卡行控制的安全环境中执行
表2-24PIN修改/解锁命令报文
P2为“00”,PN尝试计数器复位。
当P2为“01”,PN尝试计数器复位同时PIN修改,PIN修改时使用当前的PIN
当P2为“02”,PIN尝试计数器复位同时PIN修改,PIN修改是不使用当前的PIN。
本命令报文的数据域包括PIN加密数据,后面可以加上4字节到8字节的安全报文MAC数据。
如果P2等于“00”,参考PIN解锁,PIN尝试计数器被复位到PIN尝试限
制数。命令数据域只包含MAC。因为PIN修改/解锁命令中不包含新的PIN值,所以PIN不会更新。
如果命令中的P2参数等于“01”,命令数据域包括PIN加密数据和MAC
PIN加密数据的产生过程按照下列步骤进行:
步骤1:发卡行确定用来给数据进行加密的安全报文加密主密钥,并分散生
成卡片的安全报文加密子密钥:ENCUDK-A和ENCUDK-B
步骤2:生成过程密钥Ks。
步骤3:生成8字节PIN数据块D3
a.生成一个8字节数据块Dl。
b.生成第2个8字节数据块D2。
N:新PIN的数字个数(16进制);
P:新PIN值,长度4~12个数字(2~6字节)
C.D1和D2执行异或得到D3
步骤4:使用当前PIN生成8字节数据块D4。
步骤5:将数据块D3和数据块D4执行异或得到D。
步骤6:用Ks对D进行加密,得到PIN加密数据。
如果命令中的P参数等于“02”,命令数据域包括PIN加密数据和MAC,
PIN加密数据的产生过程按照下列步骤进行:
步骤l:发卡行确定用来给数据进行加密的安全报文加密主密钥,并分散生
成卡片的安全报文加密子密钥:ENCUDK-A和ENCUDK-B。
步骤2:生成过程密钥Ks。
步骤3:生成8字节PIN数据块D3:
a.生成一个8字节数据块Dl
b.生成第2个8字节数据块D2。
N:新PIN的数字个数(16进制);
P:新PIN值,长度4~12个数字(2~6字节)。
C.Dl和D2执行异或得到D
步骤4:用Ks对D进行加密,得到PIN加密数据。
响应报文没有数据域。
不论应用是否有效,“9000”编码总表示命令成功执行。
设置数据
卡片中的专有基本数据对象允许使用设置数据(PUTDATA)命令修改。只有有标签的基本数据对象才允许使用此命令修改。
在本部分中,下列数据可以使用设置数据(PUTDATA)命令修改,这些数
据放在卡片内部专有文件中:
连续脱机交易上限(“9F59”)
连续脱机交易下限(“9F58”);
连续脱机交易限制数(国际一国家);
连续脱机交易限制数(国际一货币);
累计脱机交易金额限制数;
累计脱机交易金额限制数(双货币);
累计脱机交易金额上限;
货币转换因子。
JR/T0025定义的连续脱机交易上限(“9F14”)和连续脱机交易下限
“9F23”)存在短文件标识符SFI1~10之间,使用发卡行脚本命令中的修改记录(UPDATERECORD)命令修改
表2-25 PUTDATA命令报文
命令数据域中包括的是要修改的数据对象的值,后面加一个4字节到8字节的MAC。
响应报文没有数据域。
“9000”编码表示命令成功执行
表2-26列出了命令可能返回的警告信息。
表2-26
表2-27列出了命令可能返回的错误信息。
表2-27
修改记录
修改记录(UPDATERECORD)命令用来修改文件中的一条记录内容,修
改的内容在修改记录(UPDATERECORD)命令的数据域中。
命令报文见表2-28。
表2-28
表2-29定义了命令报文的引用控制参数。
表2-29
数据域中是要修改的新记录内容。MAC长度为4字节到8字节。
响应报文没有数据域
“9000”编码表示命令成功执行。
表2-30列出了命令可能返回的簦告信息。
表2-30
表2-31列出了命令可能返回的错误信息。
表2-31
6.处理流程。
图2-20是卡片在发卡行脚本处理过程中,卡片处理每个命令的流程。
授权响应报文中的标签“72”表明,在第2个生成应用密文(GENERATE
图2-20卡片发卡行脚本处理流程
AC)命令后,执行发卡行脚本处理。一个脚本中可以包含多个命令。
有用来修改、复位卡片内容的命令都应包括安全报文。因为卡片不能识别命令是发卡行脚本命令还是其他命令,因此,卡片不能拒绝在第2个生成应用密文(GENERATEAC)命令之前送来的命令。
在执行一个发卡行脚本命令之前,卡片使用安全报文认证发卡行。在脚本处理时不进行联机处理中描述的发卡行认证方法。安全规范中描述了安全报文的执行方法。使用安全报文的基本目的是保证数据的机密性、信息完整性和认证发卡行。信息完整和鉴别发卡行可以使用MAC,数据机密通过加密数据实现,例如PIN加密。
报文鉴别(MACing):
报文鉴别(MACing)用来认证发卡行是发卡行脚本命令的合法发出方,并且保证命令在发出后没有被修改;MAC用命令中的所有数据计算而成,包括命令头。先进行数据加密(如果需要)后生成MAC。
数据加密:
数据加密用来保证命令中的明文数据的机密性。在生成命令的MAC之前进行。发卡行和卡片中的应用都要知道数据加密方法。卡片使用发卡行脚本命令计数器记录第2个生成应用密文(GENERATEAC)命令后收到的有安全报文的命令个数。
在卡片处理第2个生成应用密文(GENERATEAC)命令后收到的命令时,如果下面列出的错误出现一种,卡片设置发卡行脚本失败指示位为“1,需要安全报文但是没有提供;
安全报文验证失败;安全报文通过但是命令执行失败。不需要安全报文的命令执行失败时,不设置指示位。
7.前期相关处理。
联机操作:
终端收到的联机响应中可以包括发卡行脚本。
交易结束:
如果终端收到的联机响应中包括发卡行脚本,在交易结束处理后,执行发卡行脚本处理。
8.后续相关处理。
卡片行为分析(后续应用)在下次交易的卡片行为分析阶段:
卡片设置CVR中第4字节第8-5位值为发卡行脚本命令计数器的值;
如果发卡行脚本失败指示位为“1”,卡片设置CVR中“上次交易发卡行脚本处理失败”位为“1”。
交易结東(后续应用)
个联机交易以后,如果下列条件满足一条,发卡行脚本失败指示位和发卡行脚本计数器复位成“0”:
发卡行认证成功;
发卡行认证可选并且没有执行;
发卡行认证不支持。
9.CVR脚本计数器如何统计
卡片设置CVR中第4字节第8-5位值为发卡行脚本命令计数器的值
卡片使用发卡行脚本命令计数器记录第2个生成应用密文(GENERATEAC)命令后收到的有安全报文的命令个数。
必须满足条件:第二次GAC之后的,带MAC的。
一个联机交易以后,如果下列条件满足一条,发卡行脚本失败指示位和发
卡行脚本计数器复位成“0”:
发卡行认证成功
发卡行认证可选并且没有执行;
发卡行认证不支持。
注意:即使交易拒绝也要统计,MAC错误也要统计,只要带MAC就要统计。
10.执行发卡行脚本命令无须外部认证成功。
推荐外部认证成功与否,不影响执行发卡行脚本命令,只要MAC正确,卡片就应允许执行发卡行脚本命令。
但是,出于安全角度,有些卡片设计成,如果AIP指明卡片支持发卡行认证,那么执行发卡行脚夲命令一定要外部认证成功,这样也是可以的。但是,卡片对所有命令应统一设计,即要么所有的发卡行脚本命令都需要外部认证成功才能执行,要么执行所有的发卡行脚本命令与外部认证成功与否无关。不能有些命令需要,但有些命令不需要。
11.允许执行发卡行脚本的特殊情况。
我们试想这样一种情况,在之前的交易中,因为某种原因,应用被锁定。
那么此时的卡片在收到GAC命令时会无条件响应AAC。那么,如果此时判断交易已经脱机完成,不允许执行发卡行脚本,那么应用要怎样才能被解锁呢?所以,COS/Applet设计人员应当考虑到这种情况。当借记/贷记应用被锁定,当第
次GAC卡返回AAC后,仍然应该允许执行应用解锁命令。出于安全角度,可以要求外部认证成功才允许执行应用解锁。这是规范所没有涉及的内容。