Введение
Предлагаем вашему вниманию очередной материал, посвященный «EMV Transaction flow». В нем мы расскажем об особенностях работы бесконтактных карт на этапе SELECT RESPONCE, а также о существенных различиях, присутствующих в рамках спецификаций обмена по бесконтактному интерфейсу у разных Платежных систем.
В предыдущем материале мы рассмотрели следующие этапы EMV Transaction Flow:
- ATR
- Select (1PAY.SYS.DDF01), попытка выбора через PSE. Если отказ, то:
- Select (AID), выбор через PSA. Если один апплет, то процедура заканчивается, переход к следующему шагу. Если два апплета, то:
- Application select в ручном или автоматическом режиме.
- Get Processing Options с PDOL или без него.
Также мы отметили, что работа «бесконтакта» на данном этапе обмена имеет значительные различия. Об этих различиях и пойдет речь. В первую очередь это касается бесконтактных карт Visa и Union Pay (спецификации qVSDC (Quick Visa Smart Debit Credit) и qUICS (Quick UnionPay Integrated Circuit Card Specification) соответственно). Для наглядности сравним SELECT RESPONCE для карт Mastercard и Visa.
SELECT RESPONCE, Mastercard:
Tag 6F: File Control Information (FCI) Template
Tag 84: Dedicated File (DF) Name: A0000000041010 — AID
Tag A5: File Control Information (FCI) Proprietary Template
Tag 50: Application Label: 4D617374657243617264 — имя приложения, текстовое значение «MasterCard»
Tag 87: Application Priority Indicator: 01— индикатор приоритета приложения
Tag 5F2D: Language Preference: 7275656E — предпочтительный «язык общения». Текстовое значение «ruen», т.е. приоритетный язык русский (ru), если не поддерживается, то английский (en)
Tag BF0C: File Control Information (FCI) Issuer Discretionary Template
Tag 9F4D: Transaction Log Entry: 0B0A — сведения о журнале транзакций. В данном случае допускается хранить информацию о последних 10-ти операциях.
Tag 9F6E: Third Party Data [MasterCard]: 06430000303000 — специфичный тэг ПС Mastercard, в данном случае описывающий региональную принадлежность и «форм-фактор». По байтам это:
- Bytes 1-2 = 0643 Russian Federation
- Bytes 3-4 = 0000 Unique Identifier
- Bytes 5-6 = 3030 Device Type: Card — «форм-фактор», в данном случае это карта. У карты, привязанной к какому-либо *Pay-сервису (GPay, ApplePay etc.), эти байты будут другие.
Как видим, у бесконтактной карты Mastercard набор данных, передаваемых на этапе SELECT RESPONCE, практически ничем не отличается от ранее рассмотренной контактной чиповой карты данной ПС. Также еще раз заметим, что характерной особенностью карт Mastercard является отсутствие объекта PDOL.
Теперь посмотрим SELECT RESPONCE карты Visa.
SELECT RESPONCE, VISA:
Tag 6F: File Control Information (FCI) Template
Tag 84: Dedicated File (DF) Name: A0000000031010 — AID
Tag A5: File Control Information (FCI) Proprietary Template
Tag 50: Application Label: 56495341 — имя приложения, текстовое значение «VISA»
Tag 5F2D: Language Preference: 7275656E — предпочтительный «язык общения». Текстовое значение «ruen», т.е. приоритетный язык русский (ru), если не поддерживается, то английский (en)
9F66049F02069F37045F2A029F1A02 — основное отличие, состав объекта PDOL.
Рассмотрим его подробнее:
Tag 9F66, длина 04: Terminal Transaction Qualifiers (TTQ) — специфический объект, характерный для qVSDC. Далее данный объект будет подробно описан.
Tag 9F02, длина 06: Transaction Amount — сумма операции.
Tag 9F37, длина 04: Unpredictable Number (UN) — случайное число, генерируемое терминалом в целях обеспечения уникальности криптограммы операции.
Tag 5F2A, длина 02: Transaction Currency Code — код валюты операции.
Tag 9F1A, длина 02: Terminal Country Code — код страны терминала.
Таким образом, уже на этом этапе обмена карта «говорит» терминалу, какие параметры ей необходимы для выполнения операции, а именно: возможности устройства (TTQ), сумма операции, UN, а также код валюты и код страны. Фактически, передавая эти величины карте в следующей команде, выполняется некий аналог «классической» в рамках EMV процедуры оценки рисков (Risk Management), на основании результатов которой принимается решение о том, что произойдет с транзакцией - будет ли она отклонена или одобрена в оффлайне, либо отправится на авторизацию эмитенту.
Приведем пример следующей команды (GPO), в которой передаются параметры, перечисленные в объекте PDOL.
Term: 831236A0400000000000140036D3EC3906430643 (Get Processing Options)
Cla: 80 — класс команды
Ins: A8 — код инструкции
P1: 00
P2: 00
Lc: 14
Data: 831236A0400000000000140036D3EC3906430643 — поле данных с тэгом 83, содержащее конкатенацию («сложение») величин в том порядке, в каком они были перечислены в элементе PDOL команды SELECT RESPONCE. Рассмотрим их в том порядке, в котором они представлены в примере:
Tag 9F66: Terminal Transaction Qualifiers: 36A04000. В данном объекте терминал «рассказывает» карте о своих функциональных возможностях, а именно:
- Byte 1 bit 8 = 0 Contactless magnetic stripe not supported — не поддерживается бесконтактный интерфейс в режиме эмуляции магнитной полосы.
- Byte 1 bit 7 = 0 RFU — зарезервирован для будущего использования.
- Byte 1 bit 6 = 1 Contactless qVSDC supported — поддерживается бесконтактный интерфейс в режиме эмуляции чипа (qVSDC — Quick Visa Smart Debit Credit)
- Byte 1 bit 5 = 1 Contact VSDC supported — поддерживается интерфейс контактного чипа. Данный бит необходим для того, чтобы карта при наступлении определенных условий могла отправить команду Switch Interface, т.е. предложить использовать контактный чип (об этом см. ниже).
- Byte 1 bit 4 = 0 Reader is Online Capable — устройство имеет возможность онлайн-авторизации.
- Byte 1 bit 3 = 1 Online PIN supported — поддерживается CVM-метод «ПИН-онлайн».
- Byte 1 bit 2 = 1 Signature supported — поддерживается CVM-метод «Подпись».
- Byte 1 bit 1 = 0 Offline Data Authentication(ODA) for Online Authorizations not supported — не поддерживается ODA.
- Byte 2 bit 8 = 1 Online cryptogram required — необходима проверка эмитентом криптограммы транзакции в режиме реального времени.
- Byte 2 bit 7 = 0 CVM not required — не требуется проверка держателя карты. Данный бит является динамическим и возводится в зависимости от суммы операции и терминальных лимитов. В нашем случае сумма транзакции невелика (см.ниже), поэтому бит = 0.
- Byte 2 bit 6 = 1 (Contact Chip) Offline PIN supported — для контактного чипа поддерживается CVM-метод «ПИН-оффлайн».
- Byte 2 bit 5 - 1 = 0 RFU — байты с 5-го по 1-й зарезервированы для будущего использования.
- Byte 3 bit 8 = 0 Issuer Update Processing not supported — отсутствует поддержка возможности передачи карте эмитентских скриптов.
- Byte 3 bit 7 = 1 Mobile functionality supported (Consumer Device CVM) — поддерживается верификация кардхолдера на мобильном устройстве (пароль, графический ключ, отпечаток и т.д.)
Остальные биты 3-го байта и все биты 4-го байта в настоящее время являются зарезервированными для будущего использования.
Tag 9F02: Transaction Amount: 000000001400 — сумма операции. 14.00 руб.
Tag 9F37: Unpredictable Number: 36D3EC39 — случайное число.
Tag 5F2A: Transaction Currency Code: 0643 — код валюты операции, рубли.
Tag 9F1A: Terminal Country Code: 0643 — код страны терминала, Российская Федерация.
Из приведенного примера понятно, что объект 9F66 (Terminal Transaction Qualifiers (TTQ)) в общем и целом имеет такое же функциональное назначение, что и объект 9F33 (Terminal Capabilities).
Далее следует ответ карты на команду GPO. Пример:
Response: 774C8202200057134704340000172834D21122011676600000671F5F2002202F5F3401019F100706011103A000009F2608A4933D887F0065CE9F2701809F3602004E9F6C023E009F6E04207000009000
Tag 77: Response Message Template Format 2 — формат представления данных в ответе.
Tag 82: Application Interchange Profile: 2000 — профиль карточного приложения, в котором содержится описание его функциональных возможностей. В данном случае по байтам это:
- Byte 1 bit 8 = 0 RFU — зарезервирован для будущего использования.
- Byte 1bit 7 = 0 Offline static data authentication is NOT supported for online authorizations — не поддерживается SDA-оффлайн.
- Byte 1 bit 6 = 1 Offline dynamic data authentication is supported — поддерживается оффлайн-DDA.
- Byte 1 bit 5 - 3 = 0 — не используются.
- Byte 1 bit 2 = 0 RFU — зарезервирован для будущего использования.
- Byte 1bit 1 = 0 — не используется.
- Byte 2 bit 8 = 0 MSD is NOT supported — интерфейс магнитной полосы не поддерживается.
- Byte 2 bit 7 = 0 Mobile handset — признак того, что это «мобила». Т.е., карта, привязанная к какому либо *Pay-сервису (GPay, ApplePay etc.). В данном случае бит = 0, то есть мы имеем дело с обычной бесконтактной картой.
- Byte 2 bit 6 = 0 Contactless transaction — признак бесконтактной транзакции.
- Byte 2 bit 5 - 1 = 0 RFU — зарезервированы для будущего использования.
Tag 57: Track 2 Equivalent Data: 4704123456789000D21122011676600000671F — эквивалент второго трэка магнитной полосы. Структурно состоит из:
- PAN = 4704123456789000 — собственно, номер карты.
- Separator field = D — разделитель.
- Expiry Date = 21/12 — срок действия карты. До декабря 2021 г.
- Service Code = 201 — сервис-код.
- Discretionary Data = 1676600000671F — т.н. «дискретные данные» в которых может быть закодировано такое значение, как CVV/CVV2.
Tag 5F20: Cardholder Name: 202F — имя держателя карты. Следует сказать, что все бесконтактные карты никогда не содержат имени держателя. Сделано это в целях безопасности. Поэтому тэг 5F20 либо вообще отсутствует в карточном профиле, либо имеет некий произвольный набор данных. В нашем случае имя держателя буквально = «/».
Tag 5F34: Application PAN Sequence Number: 01 — последовательный номер карты. Изначально задумывался в целях использования в профилях, имеющих более одного приложения на одной физической карте. В настоящее время часто используется в криптографических процедурах, связанных с проверкой подлинности карты эмитентским хостом.
Tag 9F10: Issuer Application Data: 06011103A00000 — данные карточного приложения. Структурно это:
- Length Indicator = 06 — индикатор длины
- Derivation Key Index = 01 — индекс карточного ключа
- Cryptogram Version Number = 11 — версия криптограммы карты
- Card Verification Results (CVR) = 03A00000 — результат верификации карты, динамический объект полученный на основе предыдущих шагов обмена в рамках транзакции. В нашем случае имеет такие значения:
- Byte 1 bit 8-1 = 00000011 Length indicator — индикатор длины.
- Byte 2 bit 8-7 = 10 AC returned in 2nd GENERATE AC: Not requested — поскольку карта бесконтактная, запрос второй криптограммы отсутствует.
- Byte 2 bit 6-5 = 10 AC returned in 1st GENERATE AC: ARQC — криптограмма, полученная по итогу обмена - ARQC (Authorisation Request Cryptogram), т.е. онлайн-запрос эмитенту.
- Byte 2 bit 4 = 0 Issuer Authentication successfull or not performed — проверка эмитента либо не выполнялась, либо была успешна. Фактически, это означает отсутствие провала проверки эмитента.
- Byte 2 bit 3 = 0 Offline PIN verification not performed — проверка оффлайн-пин не выполнялась.
- Byte 2 bit 2 = 0 Offline PIN verification passed or not performed — фактически, это означает отсутствие провала проверки оффлайн-пин. В нашем случае, поскольку он не проверялся, то и провала проверки также нет.
- Byte 2 bit 1 = 0 Able to go online or offline transaction — фактически, это означает отсутствие отказной криптограммы.
- Byte 3 bit 8 = 0 Last online transaction completed — признак успешного завершения последней онлайн-операции.
- Byte 3 bit 7 = 0 PIN Try Limit not exceeded — признак отсутствия переполнения счетчика попыток ввода пин-кода.
- Byte 3 bit 6 = 0 Velocity checking counters not exceeded — признак отсутствия переполнения счетчика проверки скорости транзакций (Величина используется в рамках функционала одобрения операций в оффлайн-режиме).
- Byte 3 bit 5 = 0 No new card — признак того, что это не новая карта. Фактически, что это не первая операция по данной карте.
- Byte 3 bit 4 = 0 Issuer Authentication successful on last online transaction or not performed — проверка эмитента в рамках последней онлайн-операции успешна либо не выполнялась. Фактически, это означает отсутствие провала проверки эмитента в рамках последней онлайн-операции.
- Byte 3 bit 3 = 0 Issuer Authentication performed after online authorization or offline transaction — проверка эмитента была выполнена.
- Byte 3 bit 2 = 0 Application not blocked by card — признак того, что карточное приложение не заблокировано.
- Byte 3 bit 1 = 0 Offline static data authentication passed or was not performed on last transaction — фактически, это означает отсутствие провала оффлайн-SDA.
- Byte 4 bit 8-5 = 0000 Number of Issuer Script Commands : '0' — количество скриптов, отправленных эмитентом на карту. В нашем случае отсутствуют.
- Byte 4 bit 4 = 0 Issuer Script processing passed — фактически, это означает отсутствие провала процедуры отправки эмитентских скриптов.
- Byte 4 bit 3 = 0 Offline dynamic data authentication passed or was not performed on last transaction — фактически, это означает отсутствие провала оффлайн-DDA.
- Byte 4 bit 2 = 0 Offline dynamic data authentication not performed — признак того, что DDA-оффлайн не выполнялась.
- Byte 4 bit 1 = 0 PIN verification command received for a PIN-Expecting card or card does not expect PIN (i.e. Offline PIN verification not supported) — признак того, что пин-оффлайн не проверялся по причине отсутствия его поддержки (поскольку это бесконтактная карта).
Tag 9F26: Application Cryptogram (AC): A4933D887F0065CE — собственно, криптограмма.
Tag 9F27: Cryptogram Information Data (CID): 80 — информация о криптограмме. Структурно:
- Byte 1 bit 8-7 = 10 ARQC — т.е., онлайн-авторизация.
- bit 6-5 = 00 Payment System specific cryptogram
- bit 4 = 0 No advice required
- bit 3-1 = 000 No information given
Tag 9F36: Application Transaction Counter (ATC): 004E — счетчик транзакций карты. Цифровое значение - 78.
Tag 9F6C: Card Transaction Qualifiers: 3E00 — специфичный для qVSDC объект CTQ, описывающий возможности карты. По битам:
- Byte 1 bit 8 = 0 Online PIN not required — пин-онлайн не требуется. Данный бит является динамическим и возводится в зависимости от суммы операции и терминальных лимитов. В нашем случае сумма транзакции невелика (см.выше), поэтому бит = 0.
- Byte 1 bit 7 = 0 Signature not required — подпись не требуется. Данный бит является динамическим и возводится в зависимости от суммы операции и терминальных лимитов. В нашем случае сумма транзакции невелика (см.выше), поэтому бит = 0.
- Byte 1 bit 6 = 1 Go online if Offline Data Authentication fails and Reader is online capable — отправить операцию онлайн, если ODA провалена и если терминал поддерживает онлайн-обмен.
- Byte 1 bit 5 = 1 Switch interface if Offline Data Authentication fails and Reader supports contact chip — переключится на контактный чип, если ODA провалена и если терминал поддерживает контактный чип.
- Byte 1 bit 4 = 1 Go Online if Application Expired — отправить онлайн, если приложение с истекшим сроком действия.
- Byte 1 bit 3 = 1 Switch interface for Cash Transactions — переключить интерфейс на контактный чип для операций «Выдачи наличных».
- Byte 1 bit 2 = 1 Switch interface for Cashback Transactions — переключить интерфейс на контактный чип для операций «Покупка с выдачей наличных».
- Byte 1 bit 1 = 0 Valid for contactless ATM transactions — поддерживается работа с бесконтактными банкоматами.
- Byte 2 bit 8 = 0 Consumer Device CVM not performed — не поддерживается верификация кардхолдера на мобильном устройстве (пароль, графический ключ, отпечаток и т.д.)
- Byte 2 bit 7 = 0 Card does not support Issuer Update Processing at the POS — не поддерживается процедура обработки эмитентских скриптов.
- Byte 2 bit 6-3 = 0 RFU — биты с 6-го по 3-й зарезервированы для будущего использования.
- Byte 2 bit 2 = 0 valid at ATMs — поддерживается работа с банкоматами.
- Byte 2 bit 1 = 0 RFU — зарезервирован для будущего использования.
Tag 9F6E: Form Factor Indicator: 20700000 — Так называемый «форм-фактор индикатор». Объект описывает технологический тип данного-конкретного платежного средства.
- Byte 1 bit 8-6 = 001 Form Factor Indicator Version Number: 1 — версия FFI.
- Byte 1 bit 5-1 = 00000 Payment Device Form Factor: Standard Card — форм-фактор — карта.
- Byte 2 bit 8 = 0 Payment Device is not passcode capable
- Byte 2 bit 7 = 1 Payment Device has a signature panel
- Byte 2 bit 6 = 1 Payment Device has a hologram
- Byte 2 bit 5 = 1 Payment Device is capable of CVV2
- Byte 2 bit 4 = 0 Payment Device is incapable of two-way messaging
- Byte 2 bit 3 = 0 Payment Device is not using cloud-based payment credentials
- Byte 2 bit 2 = 0 Payment Device is using Biometric Cardholder Verification not Capable
- Byte 2 bit 1 = 0 RFU
- Byte 3: 00 RFU
- Byte 4 bit 8-5: RFU
- Byte 4 bit 4-1: 0000 Payment Transaction Technology: Proximity contactless interface using ISO 14443
Как уже говорилось, помимо бесконтактной Visa, сценарий обмена с использованием специфических объектов, присутствует в рамках спецификации qUICS (Quick UnionPay Integrated Circuit Card Specification) МПС Union Pay.
Еще одним характерным отличием реализации «бесконтакта» двух этих МПС является существенная «лаконизация» сценария обмена, в котором отказались от огромной части функционала, привычного в рамках классического EMV (В итоге сценарий получился настолько компактным, что мы практически полностью описали его в рамках данного материала). Фактически, весь цикл состоит из команд Select PSE, Select PSA и Get Processing Options (в ряде случаев присутствует READ RECORDS, если поддерживается fDDA(Fast Dynamic Data Authentication)). Помимо этого, не выполняется процедура принятия решения по TVR — Terminal Action Code/Issuer Action Code, вместо этого используется механизм с использованием TTQ/CTQ. Также следует заметить, что объект TVR всегда имеет нулевое значение (что является следствием из сказанного выше), однако его наличие в составе Field 55 при онлайн-обмене является обязательным, поскольку в ряде случаев он участвует в расчете криптограммы.
В заключение для полноты картины приведем примеры SELECT RESPONCE для бесконтактных карт American Express и НСПК Мир, традиционно снабдив их комментариями.
SELECT RESPONCE, American Express:
Tag 6F: File Control Information (FCI) Template
Tag 84: Dedicated File (DF) Name: A000000025010403 — AID
Tag A5: File Control Information (FCI) Proprietary Template
Tag 50: Application Label: 414D45524943414E2045585052455353 — имя приложения, текстовое значение «AMERICAN EXPRESS»
Tag 87: Application Priority Indicator: 01 — Индикатор приоритета приложения.
Tag 9F38: Processing Options Data Object List (PDOL): 9F3501 — объект PDOL, как видно, состоящий из единственного тэга 9F35, имеющего длину 01.
Tag 5F2D: Language Preference: 656E — язык общения. Без вариантов «en».
PDOL бесконтактной карты American Express имеет в своем составе объект 9F35 (Terminal Type), описывающий технологический тип терминала.
SELECT RESPONCE, НСПК Мир:
Tag 6F: File Control Information (FCI) Template
Tag 84: Dedicated File (DF) Name : A0000006581099 — AID
Tag A5: File Control Information (FCI) Proprietary Template
Tag 87: Application Priority Indicator: 01 — индикатор приоритета приложения.
Tag 9F38: Processing Options Data Object List (PDOL): 9F7A015F2A029F02069F35019F40059F1A029F3303 — PDOL, ниже расшифровка объектов:
Tag 9F7A, длина 01: LVP Support Indicator — признак поддержки терминалом функционала «LVP» (Low Value Payments, т.е., операции на небольшие суммы).
Tag 5F2A, длина 02: Transaction Currency Code — код валюты операции.
Tag 9F02, длина 06: Transaction Amount — сумма транзакции.
Tag 9F35, длина 01: Terminal Type — тип терминала.
Tag 9F40, длина 05: Additional Terminal Capabilities — дополнительные возможности терминала.
Tag 9F1A, длина 02: Terminal Country Code — код страны терминала.
Tag 9F33, длина 03: Terminal Capabilities — возможности терминала.
После PDOL в SELECT RESPONCE карты Мир присутствуют такие объекты:
Tag 5F2D: Language Preference : 7275656E — предпочтительный «язык общения». Текстовое значение «ruen», т.е. приоритетный язык русский (ru), если не поддерживается, то английский (en).
Tag BF0C: File Control Information (FCI) Issuer Discretionary Template
Tag 9F4D: Transaction Log Entry: 0B0A — сведения о журнале транзакций. В данном случае допускается хранить информацию о последних 10-ти операциях.
Tag 50: Application Label: 4D495220436C617373696320435244 — имя приложения, текстовое значение «MIR Classic CRD».
Из этого следует, что бесконтактная карта Мир желает знать о том, возможно ли выполнить LVP (9F7A), а также о валюте и сумме операции (5F2A и 9F02). Помимо этого ей требуется исчерпывающая информация о терминале, его возможностях (9F40 и 9F33) и его местонахождении (9F1A).
Тем не менее, из всех приведенных выше примеров становится ясно, что Mastercard, American Express и Мир оперируют объектами, так или иначе характерными для классического EMV/CPA. Чего нельзя сказать о Visa и Union Pay. Именно в этом, наряду с существенным сокращением сценария обмена, и состоит их основное отличие.
До новых материалов!