Encryption MSR DUKPT的MAC变体?

Encryption MSR DUKPT的MAC变体?,encryption,emv,msr,credit-card-track-data,dukpt,Encryption,Emv,Msr,Credit Card Track Data,Dukpt,目前我正在研究芯片卡EMV设备解密。下面是我在使用事务后获得的相关数据(TLV格式作为标记长度值): 根据指令,它提到了“MSR DUKPT的MAC变体””,其中MAC代表消息身份验证码,“通过TLV格式解析数据。对于加密的数据标签,使用TDES_Decrypt_CBC对其进行解密” 我尝试使用KSN、BDK和加密数据DF59使用3DES DUKPT。这是行不通的。解密领域的人能给我一些建议吗?我们的供应商非常不愿意分享他们的知识 我不知道MAC在解密中到底是如何发挥作用的。。。。我以为MAC只

目前我正在研究芯片卡EMV设备解密。下面是我在使用事务后获得的相关数据(TLV格式作为标记长度值):

根据指令,它提到了“MSR DUKPT的MAC变体””,其中MAC代表消息身份验证码,“通过TLV格式解析数据。对于加密的数据标签,使用TDES_Decrypt_CBC对其进行解密”

我尝试使用KSN、BDK和加密数据DF59使用3DES DUKPT。这是行不通的。解密领域的人能给我一些建议吗?我们的供应商非常不愿意分享他们的知识


我不知道MAC在解密中到底是如何发挥作用的。。。。我以为MAC只是一个完整性检查。。。。我正在使用从KSN和BDK生成的3DES DUKPT的会话密钥。这适用于此设备中的其他解密,但不能解决DFDF59(芯片卡EMV解密)。。。。这就是为什么我开始怀疑我是否使用了正确的会话密钥。。。。你可以随意地把想法扔出去。谢谢大家!

如果仔细查看DUKPT内部,它会从当前的未来密钥和加密计数器生成一个事务密钥。特定KSN的这个“事务密钥”有几个变体(实际上就是放在事务密钥上的xor掩码,用于区分PIN、MAC req、MAC rsp、数据加密req和rsp使用)。这些变体意味着您使用不同的密钥生成PIN,并使用不同的密钥加密数据(这样,当您能够任意选择数据缓冲区时,您就无法解密/攻击PINblock)。使用MAC variant仅意味着对于加密操作,您将使用DUKPT事务密钥的特定掩码

<DFDF54> --- It means KSN
0A
950003000005282005B4 


<DFDF59>---- per instruction, it is called Encrypted Data Primative
82      ---- length of value in hex, when more than 255 degits, use 82
00D815F35E7846BF4F34E56D7A42E9D24A59CDDF8C3D565CD3D42A341D4AD84B0B7DBFC02DE72A57770D4F795FAB2CE3A1F253F22E0A8BA8E36FA3EA38EE8C95FEBA3767CDE0D3FBB6741A47BE6734046B8CBFB6044C6EE5F98C9DABCD47BC3FD371F777E7E1DCFA16EE5718FKLIOE51A749C7ECC736CB7780AC39DE062DAACC318219E9AAA26E3C2CE28B82C8D22178DA9CCAE6BBA20AC79AB985FF13611FE80E26C34D27E674C63CAC1933E3F9B1BE319A5D12D16561C334F931A5E619243AF398D9636B0A8DC2ED5C6D1C7C795C00D083C08953BC8679C60
FC<len>/* container for encrypted generic data */
    F2<len>/*container for Batch Data*/
           ... /*Batch Data tags*/
    F3<len>/*container for Reversal Data, if any*/
           ... /*Reversal Data tags*/