DUKPT
相关概念
- 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 就行。
密钥注入过程
- Acquirer 给 POS 灌输 BDK
- BDK + KSN(EC=0) 派生出 IPEK
- 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
- 销毁 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
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Annie's Blog!