MAC вариант MSR DUKPT?
В настоящее время я работаю над расшифровкой устройства ChipCard EMV. Ниже приведены связанные данные, которые у меня есть после использования транзакции (формат TLV в качестве значения длины тега):
<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
Я знаю BDK для этого устройства 0123456789ABCDEFFEDCBA9876543210
, В инструкции по расшифровке упоминалось, что DFDF59 содержит следующие теги:
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*/
В каждой инструкции упоминается " вариант MAC MSR DUKPT ", где MAC обозначает код аутентификации сообщения, и " анализирует данные в формате TLV. Для зашифрованного тега данных используйте TDES_Decrypt_CBC для его расшифровки ".
Я пытался использовать 3DES DUKPT, используя KSN, BDK и зашифрованные данные DFDF59. Это не сработает. Может кто-нибудь в области расшифровки дать мне несколько советов? Наш продавец очень неохотно делится своими знаниями...
Я понятия не имею, как MAC действительно играет роль здесь в расшифровке... Я думал, что MAC - просто проверка целостности.... Я использую сеансовый ключ для 3DES DUKPT, который был сгенерирован из KSN и BDK. это работает для других расшифровок в этом устройстве, но не решает DFDF59 (расшифровка EMV чип-карты).... Вот почему я начинаю задумываться, использую ли я правильный ключ сеанса или нет.... Не стесняйтесь просто выбросить идеи там. Спасибо!
1 ответ
Если вы внимательно посмотрите на внутренние компоненты DUKPT, он генерирует ключ транзакции из текущих будущих ключей и счетчика шифрования. Этот "ключ транзакции" для определенного KSN имеет несколько вариантов (которые фактически представляют собой просто маски xor, которые вы надеваете на ключ транзакции, чтобы дифференцировать его для использования PIN, MAC req, MAC rsp, req шифрования данных и rsp). Эти варианты означают, что вы используете другой ключ для генерации PIN-кода и другой ключ для шифрования данных (так что вы не можете, например, дешифровать / атаковать PIN-блок, когда можете произвольно выбрать буфер данных). Использование варианта MAC означает только то, что для операции шифрования вы будете использовать определенную маску для ключа транзакции DUKPT.