Введение
Представляем вашему вниманию следующую часть цикла о «EMV Transaction flow», в которой опишем первые два этапа взаимодействия между картой и устройством, а именно, построение списка кандидатов и выбор приложения с которым будет выполнятся дальнейший обмен. Будут рассмотрены два интерфейса, а именно - классический контактный чип и бесконтакт. В процессе опишем объекты приложений карты и конфигурации устройства, которые участвуют в обмене.
Контактный чип, ATR
Как уже говорилось в предыдущих материалах, транзакция по контактному чипу выполняется в рамках протокола ISO 7816 и начинается с ATR (Answer To Reset). Максимально упрощая, ATR — это шаг, на котором карта «объявляет» о том, что готова к обмену. При этом выполняется согласование версии субпротокола — T=0 или T=1. Детальное описание T=0 и T=1 все интересующиеся могут найти в первой части EMV Book.
Бесконтакт, RATS
В рамках обмена по протоколу ISO 1443, аналогичный функционал выполняется отправкой ридером RATS (Request for Answer To Select), на который карта отвечает ATS (Answer To Select). Подробное описание можно найти в Book D.
Построение списка кандидатов (Building the Candidate List)
«Список кандидатов» - это перечень поддерживаемых терминалом карточных приложений. Существует два метода построения списка кандидатов: с помощью PSE и с помощью PSA (то есть, AID, о чем скажем ниже). Как правило, все современные устройства поддерживают оба этих метода.
1. PSE (Payment System Environment) — «Среда Платежной Системы» директория на карте, имеющая универсальное наименование «1PAY.SYS.DDF01» в случае с контактным чипом; и «2PAY.SYS.DDF01», характерное для бесконтакта. Построение списка кандидатов с помощью PSE именуется «Непрямым», или «Неявным» выбором приложения (Implicit Application Selection). Терминал отправляет на карту APDU-запрос (точнее, команду SELECT), содержащий данное имя.
Например:
- Select (1PAY.SYS.DDF01)
- Cla: 00
- Ins: A4
- P1: 04
- P2: 00
- Lc: 0E
- Data: 315041592E5359532E4444463031
- Application: 1PAY.SYS.DDF01
- Le: 00
В случае, если директория на карте присутствует, карта вернет SW1/SW2 = 9000 (ОК), а также передаст параметры для дальнейшего обмена (об этом далее).
Если директории на карте нет, в APDU-R SW1/SW2 будет = 6A82 (File not found). Заметим, что «1PAY.SYS.DDF01» в большинстве случаев отсутствует на контактных чиповых картах. Но «2PAY.SYS.DDF01» всегда присутствует на бесконтактном чипе, поэтому выбор приложений по бесконтактному интерфейсу всегда выполняется через PSE.
2. PSA (Payment System Application) - «Приложение Платежной Системы». Также известно как AID (Application Identifier), т.е. Идентификатор приложения конкретной карты. Поскольку AID является одним из ключевых элементов обмена, расскажем о нем несколько подробнее.
AID состоит из двух частей: RID и PIX.
RID (Registered Application Provider Identifier) — Зарегистрированный Идентификатор Провайдера Приложения (Пусть читателя не смущает отсутствие корреляции между аббревиатурой и ее расшифровкой, такой казус встречается в рамках EMV довольно часто). RID однозначно идентифицирует конкретную ПС или другого эмитента, выпускающего данный-конкретный карточный продукт.
PIX (Proprietary Application Identifier Extension) — Проприетарный Идентификатор Приложения. Иными словами, бизнес-код карточного продукта.
Например, AID ПС Mastercard: A0000000041010, где RID = A000000004; PIX = 1010. То есть, идентификатор принадлежит продукту Mastercard, ПС Mastercard. Или, AID ПС Mastercard A0000000043060, где RID = A000000004; PIX = 3060. То есть, идентификатор принадлежит продукту Maestro, ПС Mastercard. По аналогичному принципу строятся AID`ы всех Платежных систем.
На карте AID может находится в tag 4F (собственно, AID) либо 84 (Dedicated File (DF) Name). Минимальная длина AID = 5 байт, максимальная = 16 байт. Из чего, в частности, следует что максимальное количество символов в AID, которые обязано уметь обработать программное обеспечение устройства (POS, АТМ или другого) равно 32-м символам.
В свою очередь, устройство хранит в своей конфигурации список всех поддерживаемых AID. Этим, в частности, и определяется возможность его работы с теми или иными картами. Список AID именуется List of AID`s, и выбор приложения через него заключается в том, что устройство отправляет на карту запрос (команду SELECT) с указанием в поле «Data» конкретного AID.
Пример APDU-C:
- Term: Select (Mastercard)
- Cla: 00
- P1: 04
- P2: 00
- Lc: 07
- Data: A0000000041010
- Application: Masterсard
- Le: 00
Если запрошенный устройством AID отсутствует, карта вернет APDU-R, где SW1/SW2 будет = 6A82 (File not found), после чего POS или ATM должен отправить следующий в списке AID и т.д. до тех пор, пока не будет выполнено согласование/список AID исчерпан. Соответственно, если в конфигурации устройства отсутствует AID данной-конкретной карты, обмен будет прекращен.
Final Selection (Финальный выбор): Partial Selection и Application.
Select Partial Selection или Partial Name Matching — возможность устройства поддерживать работу с т.н. Extended AID`s. То есть, «расширенными» AID. Функционал является обязательным для всех ПС и заключается в следующем. Предположим, стандартная длина AID Mastercard равна 7 байт: A0000000041010. Но в ряде случаев, например, при наличии на карте более одного приложения, AID может быть таким: A00000000410101. То есть, помимо стандартной длины добавляется суффикс «1». При этом POS или ATM должен быть способен обработать расширенный AID, проанализировав при этом количество приложений, возвращенных в APDU-R. Если карточных приложений (или «апплетов») более одного (а это вполне возможная ситуация), существует два варианта обмена.
1. Для контактного чипа устройство может инициировать процедуру Cardholder Selection, то есть ручной выбор приложения держателем карты. При этом на дисплее POS или ATM должен появится список всех поддерживаемых приложений, сформированный устройством с помощью трансляции текстового эквивалента tag 50 (Application Label (Имя Приложения)).
Следует упомянуть ряд ньюансов, связанных с данной процедурой. Первый заключается в том, что по требованиям НСПК, в случае наличия на карте двух и более AID карты Мир и AID карты другой ПС, процедура Application Select должна выполнятся только между AID Мир. Иными словами, при наличии на карте апплетов MIR Debit, MIR Credit и Visa, устройство должно вывести на дисплей только MIR Debit и MIR Credit. Разумеется, требование справедливо только на территории РФ.
Следующий ньюанс заключается в том, что вопреки тому что ряд ПС требуют обязательности выполнения данной процедуры, функционал Cardholder Selection поддерживается не всеми устройствами. Поэтому выбор приложения в этом случае выполняется по алгоритму 2, в целом также характерному выбору приложени по бесконтактному чипу.
2. Устройство проверяет значение tag 87 (Application Priority Indicator(Индикатор Приоритета Приложения)) для каждого апплета и выбирает то из них, которое обладает наименьшим значением tag 87 и, следовательно, наивысшим приоритетом. Допустим, в APDU-R карта вернула такую конструкцию (приведены только актуальные для процедуры элементы):
- Tag 84: Dedicated File (DF) Name: A00000000410101
- Tag 87: Application Priority Indicator: 02
- Tag 84: Dedicated File (DF) Name: A00000000410102
- Tag 87: Application Priority Indicator: 01
В этом случае будет автоматически выбрано приложение A00000000410102, поскольку значение tag 87 у него = 01.
Повторим, что данный способ является единственно возможным в случае обмена по бесконтактному интерфейсу.
В заключении перечислим все запросы APDU-C, которые устройство отправляет на карту в рамках процедур Построения списка кандидатов и Выбора приложения.
ICC Contact (Контактный чип):
- ATR
- Select (1PAY.SYS.DDF01), попытка выбора через PSE. Если отказ, то:
- Select (AID), выбор через PSA. Если один апплет, то процедура заканчивается, переход к следующему шагу. Если два апплета, то:
- Application select в ручном или автоматическом режиме.
ICC Contactless (Бесконтакт):
- RATS
- Select (2PAY.SYS.DDF01), выбор через PSE. Если два апплета, то:
- Application select в автоматическом режиме.
Таков первый этап EMV-транзакции. Разумеется, перечислены лишь ключевые особенности обмена, и нюансов гораздо больше. Однако мы постарались максимально избавить читателя от многочисленных технических подробностей, при этом сохранив базис.
До новых материалов!