相关概念

  • DUKPT:Derived Unique Key Per Transaction
  • BDK:Base Derivation Key,DUKPT 密钥体系的根密钥
  • IKSN:Initial Key Serial Number
  • KSN:Key Serial Number,由 IKSN 和 EC 组成
  • EC:Encryption Counter
  • IPEK:Initial PIN Encryption Key
  • PEK:PIN Encryption Key,加密 PIN 的密钥
  • FK:Future Key

为什么使用 DUKPT

在 DUKPT 之前,MK/SK 广泛使用,但是会有个问题,不同的终端使用不同的 MK 的话,当要布放的终端数量比较庞大时,收单行就得维护大量的 MK。DUKPT 就解决了这个问题,因为所有的 key 可以从 BDK 衍生,所以只需维护一个 BDK 就行。

密钥注入过程

  1. Acquirer 给 POS 灌输 BDK
  2. BDK + KSN(EC=0) 派生出 IPEK
  3. IPEK + KSN 派生出 21 个 Future Key,分别存在 POS 的 21 个寄存器中:
    • IPEK + KSN(EC=1) -> FK1,存在寄存器 1
    • IPEK + KSN(EC=2) -> FK2,存在寄存器 2
    • IPEK + KSN(EC=21) -> FK21,存在寄存器 21
  4. 销毁 BDK 和 IPEK

交易过程

一笔交易从一个寄存器中取出一个 PEK 使用,假设取出寄存器 1 中的 FK1 使用, 交易处理完成后:

  • KSN 加 1 后变成 KSN(EC=22)
  • FK1 + KSN(EC=22) -> FK22,替换掉 FK1 存在寄存器 1 中
    以此类推依次重复使用这 21 个寄存器中的 FK。

上述流程只讲解到了 Future Key,但实际用于数据(如 PIN、MAC 等)加密的,其实不是直接拿 Future Key 来用的,而是 Future Key xor 分散向量得到的工作密钥,例如:

  • PIN 密钥的分散向量:00000000000000FF00000000000000FF

  • MAC 密钥的分散向量:000000000000FF00000000000000FF00

    1