揭秘IC卡离线交易安全密钥体系
IC离线交易过程中是如何保证安全的下面我们把离线交易EMV/IC 卡为主里常用的密钥按清单化、位置化和流程化说明便于快速理解谁持有什么、哪些是预置的、各自用途以及在一次典型离线交易里这些密钥怎么被用到。一、关键密钥列表简洁一览下面每一行说明密钥名 ·类型→ 放在哪端预置/产生 · 主要用途。1.CA 根密钥对Root CA Key ·非对称RSA/椭圆公钥预置在终端POS/ATM里多个卡组织/CA 的公钥私钥由卡组织/CA 离线安全保管不在终端用途用于验证Issuer 公钥证书建立证书链的根信任。2.Issuer发卡行密钥对 ·非对称RSA/椭圆私钥发卡行安全 HSM / 后端离线保管公钥以Issuer 公钥证书的形式写入卡或卡片相关数据卡里也会含Issuer证书终端从卡中读出并用 CA 公钥验证后得到 Issuer 公钥。用途签发并验证ICC 公钥证书、用于产出某些静态签名SDA等。3.ICC卡片密钥对 ·非对称私钥永久保存在卡内部Secure Element / 晶片不可导出用于 DDA/CDA 的签名公钥以ICC 公钥证书的形式存放在卡上证书由 Issuer 私钥签名用途动态数据认证DDA、组合数据认证CDA——卡用私钥对挑战/交易数据签名终端用 ICC 公钥/证书验证卡是“真卡”。4.Issuer 对卡的对称主密钥Issuer Master Key / Issuer-ICC symmetric key ·对称DES/3DES/AES存放发卡行后端/HSM 保存主密钥每张卡在发卡时派生/注入对应的卡专用密钥在卡内保存。用途卡端用该对称密钥或从其派生的会话密钥生成Application CryptogramACTC/ARQC/AAC也用于在线/离线交易的消息完整性与认证。终端通常不持有这类对称密钥。5.PIN 相关密钥 / PIN 区块加密用公钥如果使用离线加密 PIN终端用卡的公钥ICC 公钥对 PIN block 做 RSA 加密卡用其私钥解密并比对。如果使用在线 PIN终端通常将 PIN 用与收单/鉴权方共享的密钥或加密通道加密后传输不属于离线范畴。存放公钥在卡/终端可见证书形式私钥在卡内。6.终端/收单方密钥针对终端保密通信或密钥注入终端本身可能有签名/认证密钥用于软件完整性、PIN PAD 机密性等预置或由收单注入但它不参与卡-发卡行的 AC 生成的对称验证逻辑终端一般不持有发卡行的对称 AC 密钥。二、哪些是“预置”的放哪儿预置在终端商用设备CA 公钥根公钥、终端自身的合规证书/密钥用于设备身份或PIN PAD安全。预置/注入在卡上发行时ICC 私钥在卡内部生成或注入、ICC 公钥证书由 Issuer 签名写入卡、Issuer 公钥证书卡上常含 issuer 的证书或与卡数据一起下发、卡专用对称密钥或从 Issuer 主密钥派生的密钥片段用于生成 AC。预置在发卡行后端HSMIssuer 私钥、Issuer 对称主密钥以及用于验证 AC 的密钥材料。收单/处理端在线通常会保存 CA 公钥或从终端上传来的证书链并在在线授权时使用发卡行/收单间的协议来核验 ARQC由发卡行做最终验证。三、典型离线交易流程按步骤标注关键密钥何时被用到下面以EMV 离线批准卡端直接发放 TC的情形示例分阶段说明谁用哪个密钥。A发卡 / 初始化阶段发行期发卡行/CA 生成密钥CA key 对、Issuer key 对、Issuer 对称主密钥等在 HSM。发卡行生成ICC 公钥证书用 Issuer 私钥签名 ICC 公钥并把证书与 ICC 公钥一起注入/写入卡卡内还注入用于 AC 的对称密钥/密钥索引。终端出厂或被收单机构配置时CA 公钥预置于终端用于后续证书链验证。结果卡里有 ICC 私钥或 issuer 签名的 ICC 公钥证书、有用于 AC 的对称密钥终端有 CA 公钥。B消费/离线交易发生时现场流程终端读取卡数据包括 ICC 公钥证书、Issuer 公钥证书、CVM List、应用数据等。终端用CA 公钥验证Issuer 公钥证书得到 Issuer 公钥。终端用Issuer 公钥验证ICC 公钥证书得到 ICC 公钥。 这是证书链验证保证 ICC 公钥 的可信性。终端根据卡的CVM List决定验证方式例如要求离线 PIN若为离线明文 PIN终端将 PIN通过合规 PIN PAD以 PIN block 形式发送给卡卡在本地用卡内数据比对卡内可能有 PIN 或 PIN offset。若为离线加密 PIN终端用从卡获得的ICC 公钥对 PIN block 做加密RSA把加密数据发给卡卡用其私钥解密并比对。 此处用到ICC 公钥/私钥对 PIN 的保密与验证。卡在本地做 PIN 比对并更新PIN Try Counter返回 VERIFY 结果。终端记录 CVM Results。卡基于交易数据金额、ATC、终端不可拒绝标志等和卡内的对称密钥生成Application CryptogramAC若卡决定离线批准 → 生成TCTransaction Certificate用卡内对称密钥计算 MAC/cryptogram。若卡决定线上授权 → 生成ARQC同样是对称 cryptogram供发卡行在线验证。 此处用到卡内的对称密钥或从Issuer主密钥派生的密钥用于生成 AC终端并不持有该对称密钥。终端在卡签名/证书验证步骤1的基础上可验证卡的 DDA/CDA若适用如果卡是 DDA/CDA 类型会在交易时提供一个动态签名终端用 ICC 公钥验证该签名证明卡具备对应私钥并且响应是实时的防克隆。 此处用到ICC 私钥用于生成动态签名终端用 ICC 公钥验证。若一切满足终端可能完成离线授权批准并与持卡人交互打印小票等。终端/收单端会记录 ARQC/TC 等数据以便后续结算或在线上送发卡行核验。C结算 / 在线授权事后核验如果是离线批准TC在后续清算/批上送时收单行或支付网络会把交易数据发给发卡行发卡行使用其保有的对称密钥材料验证 TC/AC 的有效性即验证卡是否按共享密钥正确生成 cryptogram。发卡行持有能验证这些 cryptogram 的密钥Issuer 主密钥 / 导出密钥或密钥派生逻辑。如果是ARQC需在线授权发卡行在线验证 ARQC同上并下发响应在线授权/拒绝终端据此完成交易。四、把重点再浓缩便于记忆终端预置CA 公钥用于验证发卡行证书链 →信任根。卡内保有ICC 私钥用于 DDA/CDA、ICC 公钥证书由发卡行签名写入、卡专用对称密钥用于生成 AC以及 PIN 数据/try counter。发卡行后端HSM保有Issuer 私钥签 ICC 公钥证书、Issuer 对称主密钥用于与卡共享/派生用于生成/验证 AC。离线 PIN可以是明文终端送明文给卡比对或加密终端用ICC公钥加密 PIN卡解密比对。ACTC/ARQC/AAC由卡使用与发卡行共享的对称密钥生成终端无法自我验证这些 cryptogram最终验证由发卡行在后续线上流程完成。