• 【EMV L2】CDA复合动态数据认证/应用密文生成


    复合动态数据认证/应用密文生成处理流程:
    对于复合动态数据认证/应用密文生成,终端执行标准动态数据认证的步骤1到3:
    1、认证中心公钥的获取
    终端使用认证中心公钥索引(PKI)以及卡片中的注册的应用提供商标识来获取存储在终端的认证中心公钥以及相关信息;

    2、发卡行公钥的获取
    终端用认证中心公钥验证发卡行公钥证书,验证正确则从发卡行公钥证书中取出发卡行公钥;

    3、IC卡公钥的获取
    终端用发卡行公钥验证IC卡公钥证书,验证正确则从IC卡公钥证书中取出IC卡公钥。如果IC卡公钥证书验证不正确,则动态数据认证失败;

    终端要求使用第一个GENERATE AC命令生成的动态密文。不使用INTERNAL AUTHENTICATE命令。对此密文的要求和认证包括以下步骤:
    1、动态签名生成(仅复合动态数据认证/应用密文生成)
    终端行为分析中,如果终端要求一个联机密文(授权请求密文)或脱机批准密文(交易证书),第一个GENERATE AC命令表明复合数据认证/应用密文生成即将被执行。
    如果卡片决定的应用密文是一个交易证书或授权请求密文,卡片就用IC卡私钥签名应用密文及相关数据,并在GENERATE AC命令响应中把动态签名返回给终端。

    2、动态签名校验(仅复合动态数据认证/应用密文生成)
    卡片行为分析中,如果最初的GENERATE AC响应包含一个交易证书或授权请求密文,终端就用IC卡公钥验证动态签名。
    如果签名验证正确,交易就根据所收到的数据继续下去。
    如果签名验证失败,则交易就脱机拒绝。


    【Dynamic Signature Verification】(EMV Book2 6.6.2)

    如果GAC响应返回TC or ARQC,则进行动态签名数据验证,具体步骤:

    1、取出IC卡公钥ICCPK;

    2、检查SDAD(Signed Dynamic Application Data)是否存在;

    3、检查SDAD的数据长度是否与ICCPK长度是否相等,不相等则CDA失败;

    4、通过ICCPK RSA公钥解密SDAD;

    5、检查解密后的SDAD数据格式是否正确,解密后的数据格式如下:

    6、提取出ICC Dynamic Data的数据,ICC Dynamic Data的数据格式:

    7、取出ICC Dynamic Data中的“TC or ARQC”到Tag9F26(Application Cryptogram)中;

    8、取出ICC Dynamic Data中的“Cryptogram Information Data”与Tag9F27(Cryptogram Information Data)的值进行比较,如果不相等则CAD失败;

    (注:Tag9F27在GAC响应中得到并设置);

    9、计算第一个Hash值,根据以下数据格式计算Hash值:

    10、把步骤9中计算所得Hash值,与SDAD解密后的数据Hash Result进行比较,如果不相等则CAD失败;

    11、计算第二个Hash值:计算交易数据(Transaction Data)相关的Hash值;计算的数据包括组装好的PDOL、CDOL1、CDOL2等等;

    12、将第11步计算所得的Hash值与ICC Dynamic Data数据中提取出的Transaction Data Hash Code进行比较,如果不相等,则CAD失败;

    如果以上所有步骤都执行成功,则CDA成功;

    重要点:CDA中有两次计算Hash值的过程,需要明确每次计算Hash值需要包含哪些数据!!!

  • 相关阅读:
    js 能实现监听F5页面刷新子iframe 而父页面不刷新
    Thinkpad X201 Gobi2000 上电信3G网络
    【M30】代理类
    C++数组
    【M27】要求或者禁止对象产生于heap之中
    C++ delete operator做了什么事
    【M33】将非尾端类设计为抽象类
    【M32】在未来时态下发展程序
    【M34】如何在同一个程序中结合C++和C
    【M25】将构造方法和非成员方法虚化
  • 原文地址:https://www.cnblogs.com/utank/p/8537449.html
Copyright © 2020-2023  润新知