IC卡收单参数下载与公钥下载的用法

  IC卡交易必需知道的二个概念:

        IC卡应用参数表:AID信息表

        认证中心公钥参数:CA信息表

以下资料参考:《中国金融集成电路(IC)卡借记贷记规范v2-终端部分.doc》

--------------------------------------------------------------------------------

 在做收单平台,终端则时,需要终终进行交互,受理IC卡交易最重要的二个交易:

        1)IC卡公钥下载(CA信息)

        2)IC卡参数下载(AID信息)

这二张表的数据由发卡行进行提供或是银联进行提供。


-----------------------------------------------------------------------------------

IC卡与终端进行交互的流程为:

1.1.1 流程简介

IC卡借记/贷记应用遵循如下的交易流程。其中强制性功能(标为‘M’)是必须执行的,可选性功能(标为‘O’)由卡片和终端的支持情况决定是否执行。

选择应用(M

当卡片插入终端时,终端决定哪些应用被卡和终端共同支持,并将这些应用显示出来,供用户选择。如果终端无法显示应用列表,则根据卡片中各应用的优先权指示符自动选择优先权最高的应用执行。

应用初始化/读应用数据(M

在终端选择应用之后,从卡片读取该应用的数据。由这些数据得知卡片具备的功能以及支持这些功能所需的应用数据。根据交易特征,例如国内或国际的,卡片有可能返回不同的数据或支持功能。终端根据这些数据以及终端能力来决定交易要执行的处理功能。

脱机数据认证(O

终端根据卡片和终端的支持情况,决定是否使用及使用哪种脱机数据认证方式来认证卡片。如果终端支持脱机数据认证功能,并且检测到卡片支持静态数据认证(SDA)、动态数据认证(DDA)或复合动态数据认证(CDA)中至少一种,则终端需进行脱机数据认证。

静态数据认证(SDA)主要是用于防止非法篡改卡片数据。即验证卡上重要的应用数据自卡片个人化以后未被欺诈性的修改。终端使用储存在卡上公钥证书里的发卡行公钥,对用发卡行私钥加密的数字签名进行恢复运算,恢复数据中包含了对卡片重要应用数据的哈希值,如果还原出的哈希值与终端对实际卡片内应用数据所产生的哈希值一致,则证实了卡片数据未被修改。

脱机动态数据认证(DDA)主要是用于防止卡片数据被非法修改以及验证卡片本身的真伪。动态数据认证有标准动态数据认证(DDA)和复合动态数据认证(CDA)两种。这两种方式在验证卡片静态数据方面都类似SDA

在标准DDA中,终端要求卡片使用来自卡片和终端的动态数据(交易唯一的)以及IC卡私钥生成加密的数字签名,终端用从卡片数据恢复出的IC卡公钥对该数字签名解密恢复,如果恢复出的数据与原始数据匹配,则证实了该卡不是用合法卡上数据复制生成的伪卡。

在复合动态数据认证(CDA)中,动态签名的产生是与卡片行为分析阶段的应用密文生成结合在一起的,以确保应用密文来自于合法卡片。

处理限制(M

终端通过处理限制来检查应用交易是否允许继续进行。检查内容包括应用生效期、应用失效期、应用版本号以及其他发卡行定义的限制条件,发卡行可以使用应用用途控制(AUC)来限定卡用于国内还是国外,或能否用于取现、商品、服务以及返现等交易。

持卡人验证(M

持卡人验证用来确认持卡人的合法性,以防止遗失或被盗卡片的使用。终端通过检查卡片上的持卡人验证方法(CVM)列表确定使用哪种验证方法。CVM列表建立了持卡人验证方法的优先处理顺序,根据终端能力和交易特点向持卡人提供某一特定的身份验证方法。例如脱机PIN验证、联机PIN验证或签名等。

终端风险管理(M

终端风险管理检查内容包括交易是否超过最低限额,卡片帐号是否出现在终端异常文件中,是否超过连续脱机交易限制,卡片是否为一张新卡,是否商户强制交易联机,以及交易是否随机选择进行联机等。这些风险管理过程提高了交易脱机进行的安全性。

终端行为分析(M

终端行为分析根据脱机数据认证、处理限制、持卡人验证、终端风险管理的结果以及终端和卡片中设置的风险管理参数决定如何继续交易(脱机批准、脱机拒绝或联机授权)。

卡片行为分析(M

卡片收到终端请求的应用密文类型后,执行卡片行为分析。通过卡片风险管理检查,决定是否返回终端所要求的应用密文,以反映卡片行为分析结果及卡片对交易结果的判断。卡片行为分析包括对上次联机交易未完成,上次发卡行认证失败,上次脱机数据认证失败,是否达到次数或金额频度上限等的检查。卡片可以返回与终端请求类型不一样的密文,如终端请求脱机批准,卡片可以返回联机处理或脱机拒绝;终端请求联机处理,卡片可以返回脱机拒绝;但如果终端请求脱机拒绝,卡片只能返回脱机拒绝。

完成检查后,卡片使用应用数据及卡上的加密DES密钥生成相应的应用密文。并将其返回给终端。对于脱机批准交易,卡片返回交易证书(TC);对于联机处理交易,卡片返回授权请求密文(ARQC);对于脱机拒绝交易,卡片返回应用认证密文(AAC)。TC可以作为脱机批准交易的凭据,以及确保交易数据未被商户或收单行改动。

联机处理(O

如果卡片或终端决定交易需要进行联机授权,且终端具备联机能力,终端将向发卡行发送联机授权报文。此报文中包含ARQC密文、用来生成ARQC的数据以及表示脱机处理结果的指示符。发卡行在联机卡片认证(CAM)过程中通过验证ARQC来认证卡片。发卡行在它的授权决定中会考虑CAM结果和脱机处理结果。

传送回终端的授权响应报文可以包括发卡行生成的授权响应密文(ARPC)(用卡片的保密DES密钥对ARQC、授权响应码加密生成)。响应报文中也可以包括发卡行脚本,用于发卡行在卡片发行后对卡片中的数据或状态进行更新。

如果授权响应包含ARPC而且卡片支持发卡行认证,则卡片通过验证ARPC进行发卡行认证,确保联机响应来自真正的发卡行(或其代理)。可以要求卡片只有成功地完成发卡行认证,才能重新设置卡片里某些与安全相关的参数。这样可以防止通过模拟联机处理过程来非法获取卡的安全特性,以及通过伪造批准交易来复位卡片的计数器和指示符。如果发卡行认证失败,随后的卡片交易将被要求联机发送请求授权,直到发卡行认证成功。发卡行可以在卡片中设置如果发卡行认证失败则拒绝交易。

发卡行脚本处理(O

如果发卡行在授权响应报文中包含了脚本,终端则将脚本解析成脚本命令,并发送给IC卡。在执行脚本更新前,卡片要进行安全检查,以确认脚本来自真正的发卡行且在传输过程中未被更改。脚本命令包括应用锁定、应用解锁、卡片锁定、PIN解锁和更改PIN等。这些命令对当前交易并不产生影响,主要会影响卡片的以后的交易功能。

交易结束(M

除非交易在前几个步骤因处理异常被终止,否则终端必须通过执行此功能来结束交易。

卡和终端执行最后处理来完成交易。发卡行已批准的交易可以根据发卡行认证结果和卡片中发卡行设置的参数而被卡片拒绝。卡片根据交易结果、发卡行认证结果以及发卡行设置的规则来决定是否复位基于卡片的计数器和指示符。卡片生成TC批准交易,生成AAC拒绝交易。

如果终端在授权请求报文后发送一个清算报文,在TC包含在清算报文中上送。如果发卡行联机批准交易,而随后卡片脱机拒绝该交易,则在单信息系统或收单行主机对批准交易数据收集的系统中,终端应发送一个冲正报文。

--------------------------

结合流程,我们暂只对选择应用、脱机数据认证二个操作来进行说明,在说明之前需要知道IC卡在制卡时,卡中已固化了哪些信息:

    1)应用标识(AID)用于应用选择,卡与终端一、一对应。

      2)注册的应用提供商标识(RID)用与终端上的RID进行一、一对应。


1.1 应用选择

1.1.1 卡片数据

卡片上与应用选择过程相关的数据见下表:

表格 8 2:应用选择-卡片数据

数据元

描述

应用定义文件(ADF

ADF是一个文件,它是包含应用数据元的应用基本文件(AEF)入口。ADF包含有关应用的信息例如应用名称、应用优选语言,以及应用优先权。也可以包含要求终端向卡片传送数据元的处理选项数据对象列表(PDOL)。 

应用基本文件(AEF

AEF包含应用在处理过程中所用到的数据元。

应用标识(AID

AID由注册的应用提供商标识(RID)以及专用应用标识符扩展(PIX)组成。

应用标签

根据ISO/IEC 7816-5标准里与AID相关联的名字,用于应用选择。应用标签在ADFFCI中可选(推荐要求),在ADF目录入口中必须存在。

应用首选名称

AID相关联的应用名字。如果应用首选名称存在且终端支持发卡行代码表索引指示的语言,则应用选择过程中显示给持卡人的应用名字应采用应用首选名称,而不是应用标签。

应用优先权指示符

指示卡片目录里的一个或一组应用的优先权,其格式为一字节长的二进制数,各位含义如下:

bit 8

1需要持卡人确认方可选择应用

0-不需持卡人确认可选择应用

bit7-5:保留(000)

bit4-1

0000-未指定优先级

xxxx-应用显示和选择的顺序,取值从1-15,最高优先级为1

目录定义文件(DDF

DDF是指示其下面文件结构的文件。

目录文件(DF

目录文件是列出目录里所包含文件的文件。终端使用READ RECORD命令来访问它。

文件控制信息(FCI

FCISELECT命令的响应中返回,包含来自卡片的有关应用的信息。

发卡行代码表索引

指示卡片所支持的代码表(字符集)(根据ISO 8859定义),用于终端显示应用首选名称。

支付系统环境(PSE

PSE是名为“1PAY. SYS. DDF01”的DDF。指示在PSE下面的文件结构的目录文件叫做支付系统目录。

处理选项数据对象列表(PDOL

PDOL是卡片所需终端数据的标签和长度列表。PDOL包含在SELECT命令响应中。终端在GET PROCESSING OPTIONS命令中提供PDOL列表所要求的数据给卡片。

短文件标识(SFI

SFI是基本文件(EF)的指示符。

1.1.2 终端数据

终端上与应用选择过程相关的数据如下表:

表格 8 3:应用选择-终端数据

数据元

描述

应用标识(AID

标签为 9F06AID由已注册的应用提供商标识(RID)和专有应用扩展(PIX)组成。它用于唯一识别EMV借记/贷记应用。

应用选择指示符(ASI

指示应用选择时终端上的AID与卡片中的AID是完全匹配(长度和内容都必须一样),还是部分匹配(卡片AID的前面部分与终端AID相同,长度可以更长)。终端支持的应用列表中的每个AID仅有一个应用选择指示符,它的格式如表4.2-3所示。

终端支持的应用列表

终端通过一组AID来维护所支持的应用列表。

PSE文件名

PSE的名称“1PAY.SYS.DDF01”,如果终端支持目录选择,PSE用于应用选择的入口。

终端为每个支持的应用设立一个应用选择指示符(ASI)变量,用来表示该应用是全部名称匹配还是部分名称匹配。其定义如下表:

表格 8 4:应用选择指示符(ASI)定义

名称

长度

格式

含义

应用选择指示符(ASI

1字节

二进制

0

部分名称匹配

1

全部名称匹配




1.1.3 命令

应用选择过程所用到的IC卡金融交易命令:选择(SELECT)命令,读记录(READ RECORD)命令。

SELECT命令

终端发送SELECT命令给卡片,获取卡片支持的应用信息。这些信息由发卡行设定,包括应用优先权、应用名称和首选语言等。命令数据中可以包含PSE名(使用目录选择方法)、DDF名或请求的AIDAID列表选择方法)。

SELECT命令中的P1参数指示应用是否由名称来选择,P2参数指示是否读取具有相同AID前缀的其它应用。

命令返回状态含义如下:

9000 - SELECT命令成功返回;

6A81 - 卡片被锁或命令不支持;

6A82 - 所选的文件未找到;

- 情形1:PSE未找到,即卡片不支持目录选择方法;

- 情形2:P2设为读取具有相同AID前缀的其它应用时卡片中已没有其它应用。

6A83 - 应用被锁。

READ RECORD命令

在目录选择方法中,终端发READ RECORD命令读取支付系统目录,即与PSE相关联的一个基本文件,该文件列出所有卡片支持的EMV支付应用。命令中包括所要读取文件的SFI和文件记录的记录号。卡片返回所要读的记录数据。


-------------------------------------------

1.1.1 静态数据认证(SDA)

1.1.1.1  卡片数据

卡片上与SDA相关的数据如下表所示:

表格 8 10:SDA-卡片数据

数据元

描述

认证中心公钥索引(PKI)

静态数据认证中用于脱机数据认证的每个公钥都由认证中心公钥索引(PKI)与注册的应用提供商标识一起唯一标识。

发卡行公钥证书

发卡行公钥证书包含用认证中心私钥签名的发卡行公钥。

发卡行公钥指数

用于-(签名恢复算法。

发卡行公钥余项

包含发卡行公钥中未列入发卡行公钥证书的部分。

注册的应用提供商标识(RID)

AID的一部分(前五个字节),用于标识支付机构。RID与公钥索引一起用来确定交易所要用的公钥。

签名静态应用数据(SAD)

用发卡行私钥加密的签名,包含卡内重要数据的哈希值。

静态数据认证标签列表

包含用于脱机数据认证的数据的标签列表,该数据元可选,但如果出现,只允许包含AIP(标签‘82’),如果包含了其它数据,则SDA失败。

需认证的静态数据

用于验证签名静态应用数据(SAD)的卡片数据,包括在AFL指定的用于脱机数据认证的记录数据,以及SDA标签列表中的指定的数据。如果SDA标签列表存在,应当只包含AIP的标签(‘82’),终端检查SDA标签列表中是否只有AIP的标签。

1.1.1.2  终端数据

终端上与SDA相关的数据如下表所示:

表格 8 11:SDA-终端数据

数据

描述

公钥索引(PKI)

用于脱机数据认证中的每个CA公钥由PKI和应用标识符(AID)中的注册应用标识符(RID)一起唯一标识。

CA公钥

存储在终端中用于恢复发卡行公钥证书的公钥。 

终端验证结果(TVR)

包含一个用于指示SDA失败的标志。

注册的应用提供商标识(RID)

指示终端中特定支付机构的公钥列表。和PKI一起标识认证中心公钥。

1.1.1.3  处理流程

SDA的执行步骤如下,详细描述请参考EMV规范第二册或《中国金融集成电路(IC)卡借记/贷记安全规范》。

1. 取得CA公钥

终端使用卡片中的公钥索引和RID来唯一确定并取得存储在终端中的公钥和相关信息。

2. 发卡行公钥的恢复

1)终端检查发卡行公钥证书与认证中心公钥模长度是否相同。

2)终端利用认证中心公钥对发卡行公钥证书恢复,取出证书里的数据。

3)检查恢复数据中的各项是否正确:恢复的数据尾,恢复的数据头,证书格式,发卡行标识,证书有效期和发卡行算法标识。

4)计算静态认证数据的哈希结果,并与从证书里恢复的哈希结果比较是否一致。

5)将恢复数据中的发卡行公钥模部分与余项部分(如果有)组合成发卡行公钥。

3. 签名静态应用数据(SAD)的认证

终端利用发卡行公钥对签名的静态应用数据恢复,并进行哈希值比较,验证签名是否正确。

1)终端检查签名静态应用数据与发卡行公钥模长度是否相同。

2)终端利用发卡行公钥对签名的静态应用数据进行恢复。

3)检查恢复数据中的各项是否正确:恢复的数据尾,恢复的数据头,数据格式。

4)终端依次连接从签名静态应用数据恢复出的数据、由AFL指定的用于脱机数据认证的记录数据、以及由静态数据认证标签列表表示的数据,并计算其哈希结果。

5)将计算出的哈希结果与从签名静态应用数据恢复出的哈希结果比较,如果不一致,则SDA失败。

4. SDA结果

如果以上所有步骤执行成功,则SDA成功。

如果SDA失败,TVR中的“脱机静态数据认证失败”位须设为“1”。

如果执行了SDA,则交易状态信息(TSI)中的“脱机数据认证被执行”位设为“1”。

===============================================

下面附上一些相关的表的

prompt PL/SQL Developer import file
prompt Created on 2014年3月14日 by mengfh
set feedback off
set define off
prompt Creating T_APP_PARA...
create table T_APP_PARA
(
  AID           VARCHAR2(16) not null,
  ANAME         VARCHAR2(64),
  ASI           VARCHAR2(2),
  APPVER        VARCHAR2(4),
  TACDEF        VARCHAR2(10),
  TACONLINE     VARCHAR2(10),
  TACREFUSE     VARCHAR2(10),
  AMTLIMIT      VARCHAR2(8),
  RANDOMVAL     VARCHAR2(8),
  MAXPERCENT    VARCHAR2(2),
  RANDOMPERCENT VARCHAR2(2),
  DDOL          VARCHAR2(8),
  PINABILITY    VARCHAR2(2),
  ECASHLIMIT    VARCHAR2(12),
  OFFLINELIMIT  VARCHAR2(12),
  CVMLIMIT      VARCHAR2(12),
  TRANSLIMIT    VARCHAR2(12)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
comment on table T_APP_PARA
  is 'IC卡应用参数';
comment on column T_APP_PARA.AID
  is '应用标识';
comment on column T_APP_PARA.ANAME
  is '应用名称';
comment on column T_APP_PARA.ASI
  is '应用选择指示符';
comment on column T_APP_PARA.APPVER
  is '应用版本号';
comment on column T_APP_PARA.TACDEF
  is 'TAC缺省';
comment on column T_APP_PARA.TACONLINE
  is 'TAC联机';
comment on column T_APP_PARA.TACREFUSE
  is 'TAC拒绝';
comment on column T_APP_PARA.AMTLIMIT
  is '终端最低限额';
comment on column T_APP_PARA.RANDOMVAL
  is '偏置随机选择的阀值';
comment on column T_APP_PARA.MAXPERCENT
  is '偏置随机选择的最大目标百分数';
comment on column T_APP_PARA.RANDOMPERCENT
  is '随机选择的目标百分数';
comment on column T_APP_PARA.DDOL
  is 'ddol';
comment on column T_APP_PARA.PINABILITY
  is '终端联机PIN支持能力';
comment on column T_APP_PARA.ECASHLIMIT
  is '终端电子现金交易限额';
comment on column T_APP_PARA.OFFLINELIMIT
  is '非接触读写器脱机最低限额';
comment on column T_APP_PARA.CVMLIMIT
  is 'CVM限制';
comment on column T_APP_PARA.TRANSLIMIT
  is '非接触读写器交易限额';
alter table T_APP_PARA
  add constraint PK_T_APP_PARA primary key (AID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

prompt Disabling triggers for T_APP_PARA...
alter table T_APP_PARA disable all triggers;
prompt Loading T_APP_PARA...

prompt 4 records loaded
prompt Enabling triggers for T_APP_PARA...
alter table T_APP_PARA enable all triggers;
set feedback on
set define on
prompt Done.

prompt PL/SQL Developer import file
prompt Created on 2014年3月14日 by mengfh
set feedback off
set define off
prompt Creating T_CA_PUBLIC_KEY...
create table T_CA_PUBLIC_KEY
(
  RID    VARCHAR2(10) not null,
  IDX    VARCHAR2(2) not null,
  VDATE  VARCHAR2(8),
  HSAID  VARCHAR2(2),
  PCAID  VARCHAR2(2),
  PCA    VARCHAR2(512),
  NCA    NUMBER(3),
  ECA    VARCHAR2(2),
  HSAVAL VARCHAR2(40),
  NOTES  VARCHAR2(128)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
comment on table T_CA_PUBLIC_KEY
  is '认证中心公钥参数';
comment on column T_CA_PUBLIC_KEY.RID
  is '应用提供商标识';
comment on column T_CA_PUBLIC_KEY.IDX
  is '公钥索引';
comment on column T_CA_PUBLIC_KEY.VDATE
  is '公钥有效期';
comment on column T_CA_PUBLIC_KEY.HSAID
  is '哈希算法标识';
comment on column T_CA_PUBLIC_KEY.PCAID
  is '公钥算法标识';
comment on column T_CA_PUBLIC_KEY.PCA
  is '公钥模';
comment on column T_CA_PUBLIC_KEY.NCA
  is '公钥模长';
comment on column T_CA_PUBLIC_KEY.ECA
  is '公钥指数';
comment on column T_CA_PUBLIC_KEY.HSAVAL
  is '公钥校验值';
comment on column T_CA_PUBLIC_KEY.NOTES
  is '备注';
alter table T_CA_PUBLIC_KEY
  add constraint PK_T_CA_PUBLIC_KEY primary key (RID, IDX)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

prompt Disabling triggers for T_CA_PUBLIC_KEY...
alter table T_CA_PUBLIC_KEY disable all triggers;
prompt Loading T_CA_PUBLIC_KEY...

prompt 4 records loaded
prompt Enabling triggers for T_CA_PUBLIC_KEY...
alter table T_CA_PUBLIC_KEY enable all triggers;
set feedback on
set define on
prompt Done.




    

转载于:https://my.oschina.net/3pgp/blog/208361

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值