寂井浮廊
打赏我
欢迎您: 
游客
   
登录
  发现BUG请联系jintianhu2000@126.com
常用
加解密算法
常用工具
EMV相关
还珠楼论坛
答题闯关
用户信息
帖子列表
语法介绍
帖子详情
DUKPT是什么
jin.th 发布于2018-12-19 17:06
[评论区]
[我要回复]
[下载md文件]
[下载pdf文件]
仅自己可见
DUKPT(derived unique key per Transaction) 参考 [How DUKPT key management works in POS environments](https://securityboulevard.com/2021/03/how-dukpt-key-management-works-in-pos-environments/) [安全加密dukpt](https://blog.csdn.net/believe_chen/article/details/90693203) **1:是什么?** 是一种非常安全的密钥管理技术,主要应用于对称密钥加密MAC,PIN等安全数据方面 DUKPT(Derived Unique Key Per Transaction)是被ANSI定义的一套密钥管理体系和算法,用于解决金融支付领域的信息安全传输中的密钥管理问题,应用于对称密钥加密MAC,PIN等数据安全方面。保证每一次交易流程使用唯一的密钥,采用一种不可逆的密钥转换算法,使得无法从当前交易数据信息破解上一次交易密钥。要求收单行与终端必须同步支持该项密钥管理技术。由交易发起端点(S-TRSM,如pos,ATM)与交易接收端点(R-TRSM,如收单行)两部分组成。注:TRSM(Tamper-Resistant Security Module)是一个具备阻止攻击能力的安全模块。TRSM具有抵御攻击能力。 **2:主要思想** 保证每一次交易流程使用唯一的密钥,采用一种不可逆的密钥转换算法,使得无法从当前交易数据信息破解上一次交易密钥。 **3:应用** 1)要求收单行与终端必须同步支持该项密钥管理技术; 如:由交易发起端点(S-TRSM,如pos,ATM)与交易接收端点(R-TRSM,如收单行)两部分组成; 注:TRSM(Tamper-Resistant Security Module)是一个具备阻止攻击能力的安全模块。TRSM具有抵御攻击能力。 2)... ... 是每交易一次密钥。是由基础密钥BDK(Base Derivation Key)和KSN(Key Serial Number)(密钥标识+设备标识+密钥计数器)共同完成。其中BDK是基础主密钥,它派生出加密安全模块的初始密钥Initial PIN Encryption Key(IPEK)。初始密钥IPEK和KSN一起装入加密模块。 KSN的组成如下:以下位数是16进制的字符(1-F) (1) 密钥标识40bit(基础派生密钥标识9位+子密钥标识1位) (2) 设备标识19bit (3) 交易计数标识21bit,也叫EC(Encryption Counter) 密钥标识+设备标识统称为59bit的IKSN(Initial Key Serial Number) 保证每个终端的主密钥都不重复。 **4:BDK派生IPEK的过程** 本网站上[DUKPT计算](/CryptTools/OtherAlg.aspx)中,输入的初始密钥是指IPEK,公司的i80、P90、Vi218S导入的也是IPEK+KSN。 根据BDK派生IPEK的过程,参考了[Dukpt.NET](https://github.com/sgbj/Dukpt.NET)、BP-Tools V21.08,以BP-Tools工具的数据为例 ![image](/upload/BBS/d9e8e56c-965a-41a9-97bd-318af7a55b3d.jpg) BDK:0123456789ABCDEFFEDCBA9876543210 KSN:FFFF9876543210E00001 从Dukpt.NET的源码中分析得到: KsnMask:FFFFFFFFFFFFFFE00000 KeyMask:C0C0C0C000000000C0C0C0C000000000 伪代码: ```C# CreateIpek(ksn, bdk) { return TripleDesEncrypt(bdk, (ksn & KsnMask) >> 16) << 64 | TripleDesEncrypt(bdk ^ KeyMask, (ksn & KsnMask) >> 16) } ``` 第一步,用KSN逻辑与KsnMask,取前8字节,得到FFFF9876543210E0 第二步,用BDK对FFFF9876543210E0进行3DES加密得到6A C2 92 FA A1 31 5B 4D 第三步,用BDK异或KeyMask得到C1 E3 85 A7 89 AB CD EF 3E 1C 7A 58 76 54 32 10 第四步:用上一步得到的密钥对FFFF9876543210E0进行3DES加密得到85 8A B3 A3 D7 D5 93 3A 最后:两段数据拼接一起得到6A C2 92 FA A1 31 5B 4D 85 8A B3 A3 D7 D5 93 3A ,与BP-Tools工具计算出来的Derived IPEK一致。 **注意:**BP-Tools工具计算出来的PIN KEY、MAC KEY等密钥对应的是输入的KSN值,如果KSN最后的交易计数标识是0,那就无法与本网站上的数据进行对比,因为本网站的计算是交易计数标识从1开始的。
评论列表
回帖
浙ICP备17051204号