Экспонент открытого ключа эмитента EMV отсутствует, но необходим

Я пытаюсь реализовать извлечение открытого ключа эмитента EMV в соответствии со спецификацией EMV4.3 Book2. Мне удалось расшифровать сертификат открытого ключа эмитента.

Мне нужно объединить формат сертификата через открытый ключ эмитента + остаток открытого ключа эмитента (если он есть) и, наконец, экспонент открытого ключа эмитента.

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

Когда я проверяю этот сайт

https://www.eftlab.co.uk/index.php/site-map/knowledge-base/243-ca-public-keys

Я вижу, например. VISA с RID эмитента, индексом RID, показателем степени, модулем, длиной ключа и т. д.

Означает ли это, что каждый терминал должен иметь модуль, RID, индекс, а также экспоненту? Если да, то где это в спецификации?

Может ли кто-нибудь сказать мне, где мне нужно получить показатель степени. Я чувствую, что мне чего-то не хватает в Спецификации.

Спасибо, Дерик.


emv
person Derick Beng    schedule 07.07.2018    source источник
comment
Можете ли вы обновить свой вопрос с SELECT до окончательного READ RECORD с замаскированными конфиденциальными данными? Также шаги, которые вы пытаетесь выполнить в рамках ODA. Можно ли увидеть заголовок 6A и трейлер BC после открытия сертификата PK эмитента?   -  person Adarsh Nanu    schedule 07.07.2018
comment
Показатель pk эмитента AFAIK должен быть в теге 0x9F32. Вы можете найти очень полезными источники javaemvreader.   -  person vlp    schedule 09.07.2018
comment
Привет, ребята, я на самом деле выполнял все команды, чтобы сделать журнал, чтобы показать вам, ребята, и я действительно нашел свою ошибку. У меня был цикл do-while для чтения всех записей, как указано в AFL, но, к сожалению, я написал код, и мое условие прерывания не позволяло мне всегда читать конечную запись каждой записи, указанной в AFL. Благодаря вашему вопросу @adarsh ​​мне пришлось снова просмотреть свой код. Спасибо. Таким образом, проблема была на самом деле в остатке открытого ключа и экспоненте, которые были фактически найдены в записях, которые я не читал. Так что теперь они у меня есть, и мой хэш-код теперь соответствует.   -  person Derick Beng    schedule 22.07.2018


Ответы (3)


Простым ответом на это будет загрузка Книги спецификаций контактов 2 (Безопасность и управление ключами) и внимательное прочтение разделов 5 и 6. Вам нужно показать, что вы уже сделали, чтобы мы поняли, чего вам не хватает.

Да, терминал должен хранить CA PK с индексом для всех RID, которые он поддерживает. Большинство из них вы можете найти по ссылке, которую вы указали, но лучше получить ее в самом центре сертификации.

person Adarsh Nanu    schedule 07.07.2018

Я нашел свою ошибку. Я пропустил некоторые важные записи из-за ошибки в моем коде. Поэтому я не читал записи, содержащие остаток открытого ключа эмитента и экспоненту. Таким образом, объединение, как в книге EMV, глава 5.3, пункт 5, не было завершено, поскольку у меня не было остатка открытого ключа и показателя степени. Поэтому вычисление дайджеста SHA1 всегда давало мне неправильный результат.

person Derick Beng    schedule 21.07.2018

Я выпустил платежную систему EMV (https://github.com/vicente-da-silva/dcemv), то, что вам нужно, реализовано в файле VerifySAD.cs проекта DCEMV_EMVProtocol.

person aquamoon    schedule 12.07.2018