2015-07-15 4 views
2

Я разрабатываю приложение Mobile POS на Android с картами ISO 14443, и у меня возникает довольно важная проблема.EMV - Генерировать AC - Код аутентификации

На данный момент, я могу прочитать все общедоступные данные с карты, посылая все правильно APDU команды через IsoDep.transceive

я в настоящее время приходится иметь дело с CDOL1, в частности, с Data Authenticate Code Вот три CDOL я собрать от тестирования карт:

9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F3501 9F4502 9F4C08 9F3403 

9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F3501 9F4502 9F4C08 9F3403 9F2103 9F4005 

9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F3501 9F4502 9F4C08 9F3403 9F5301 

EMV Книга 2 говорит:

для того, чтобы получить восстановленные данные указаны в Таблице 7, примените функцию восстановления , указанную в Приложении A2.1 к Статическим данным приложения с использованием Открытого ключа Эмитента в сочетании с соответствующим алгоритмом. Если Восстановленный приемник данных не равен «BC», SDA потерпел неудачу.

Я знаю, что первый шаг перед дешифрованием Восстановленных данных, чтобы получить эмитент открытого ключа (с РИД, пяти первых байтами AID, и сертификатной Index Public Key), а затем использовать его с помощью функции восстановления для расшифровки данных подписанных приложений.

Так что мои вопросы:

  1. Как получить этот Эмитент открытый ключ с РИД и Public Key Index?

  2. Может ли кто-нибудь помочь мне понять эту функцию восстановления для разработки функции или существует ли какая-либо существующая функция в Java для ее выполнения?

PS: В случае существующей функции, я также как и объяснение, если это возможно ^^

+1

Да, я загрузил весь проект на прошлой неделе ^^ – Querdos

ответ

1
How do I get this Issuer Public Key with RID and Public Key Index ? 

В реальном сценарии Эмитент отправить Автопортрет знак сертификат СА, а в REVERT CA дает сертификат вместе с открытым ключом - CA PUBLIC KEY.

такой же открытый ключ хранится в терминале.

Когда терминал считывает данные AFL из EMV-карты, он прочитал Тэг 90 - я ssuer сертификата открытого ключа и Расшифровать его с помощью сохраненного открытого ключа CA,

Это дает открытый ключ эмитента на терминал, а затем терминал использовать соответствующий публичный ключ эмитента.

Надеюсь, что это поможет понять концепцию сертификата EMV.

1

Найдено решение, наконец, для тех, кто хочет ^^

  1. When он говорит, что вы нуждаетесь в РИД и индекс, это потому, что:

[..] каждый терминал должен иметь возможность хранить шесть ключей сертификационного центра для каждого зарегистрированного поставщика приложений (RID) [..]

И в обществе, с которым я работаю, были эти CAPK.

  1. Похоже, что используется шифрование RSA, и теперь, когда у меня есть открытый ключ, это!