Протокол для работы с кредитными картами CyberCash

         

Команды


Команды всегда инициируются прикладным уровнем терминала TAL (Terminal Application Layer), который посылает инструкции ICC через транспортный уровень TTL (Terminal Transport Layer). Команда содержит последовательность из 5 байт: CLA, INS, P1, P2 и P3.

Имя байтаНазначение
CLAКласс команды (1 байт).
INSКод инструкции (1 байт).
P1 и P2Cодержат дополнительные специфические параметры (по 1 байту).
Р3

Указывает либо длину посылаемых в команде данных, либо максимальную длину данных, которые должны быть присланы в отклике от ICC (зависит от кода INS).

Эти 5 байт вместе с байтами данных образуют командный блок протокольной информации C-TPDU для Т=0.

Получив команду, ICC откликается отправкой процедурного или статусных байтов. Процедурный байт указывает TTL, какая операция является следующей. Отклик терминала на процедурный байт представлен в таблице 4.6.4.10.

Таблица 4.6.4.10. Отклик терминала на процедурный байт

Значение процедурного байтаДействие терминала
Байт равен INSВсе остальные байты данных будут переданы TTL, или TTL будет готов принять все остальные байты от ICC
Байт равен дополнению INSСледующий байт данных будет передан TTL или TTL будет готов принять следующий байт от ICC
60TTL введет дополнительное время выдержки (Work Waiting Time)
61TTL будет ждать следующий процедурный байт, затем пошлет ICC команду GET RESPONSE с максимальной длиной "xx", где хх равно значению второго процедурного байта
6CTTL будет ждать следующий процедурный байт, после чего немедленно повторно пошлет ICC предыдущий командный заголовок, используя длину "xx", где хх равно значению второго процедурного байта

Во всех случаях после реализации операции TTL ждет прихода процедурного байта или статусного сообщения.

Командное сообщение, посылаемое от прикладного уровня, и сообщение-отклик ICC называются APDU (Application Protocol Data Unit). Формат APDU показан на рисунке 4.6.4.8.

Рис. 4.6.4.8. Структура командного APDU.

Все поля заголовка имеют по одному байту.
Поле данных содержит Lc байт.

LcЧисло байт в поле данные (0 или 1 байт)
LeМаксимальное число байт в поле данных отклика (0 или 1 байт)
Если параметры Р1 и Р2 не используются, коды полей должны равняться 00. Формат отклика APDU аналогичен показанному на 4.6.4.8. Поле данных имеет переменную длину и, вообще говоря, может отсутствовать. Однобайтовые поля SW1 и SW2 должны присутствовать обязательно. SW1 характеризует состояние обработки команды, а SW2 - является квалификатором обработки команды. Кодировка команд для полей CLA и INS представлена в таблице 4.6.4.11. Таблица 4.6.4.11. Кодирование командного байта
CLAINSНазначение
APPLICATION BLOCK (Заблокировать приложение)
18APPLICATION UNBLOCK (Разблокировать приложение)
16CARD BLOCK (Заблокировать карту)
82EXTERNAL AUTHENTICATE (Внешняя аутентификация)
АЕGENERATE APPLICATION CRYPTOGRAM (Сформировать прикладную криптограмму)
84GET CHALLENGE (Получить вызов)
САGET DATA (Получить данные)
А8GET PROCESSING OPTIONS (Получить опции обработки)
88INTERNAL AUTHENTICATE (Внутренняя аутентификация)
24PERSONAL IDENTIFICATION NUMBER (PIN) CHANGE/UNBLOCK - изменение/разблокировка персонального идентификатора
В2READ RECORD (Прочесть запись)
А4SELECT (Выбор)
20VERIFY (Проверка)
DxRFU для платежных систем
ExRFU для платежных систем
XxRFU производителя для кодирования INS собственника
ЕхxxRFU эмитента для кодирования INS собственника
Статусные байты SW1 и SW2 указывают TTL, что обработка команды завершена. Значения этих байт интерпретируются в зависимости от обрабатываемой команды. Коды и значения полей SW1 и SW2 представлены в таблице 4.6.4.12. Таблица 4.6.4.12. Кодирование статусных байтов SW1, SW2
SW1SW2Значение
9000Нормальная обработка
Процесс завершился успешно

62
63
63

83 00 Сх
Обработка с предупреждением
Состояние постоянной памяти не изменилось; выбранный файл некорректен
Состояние постоянной памяти изменилось; аутентификация не прошла
Состояние постоянной памяти изменилось; счетчик задан "x" (0-15)

69
69
69



83
84
85
81
82
83
Контроль ошибок
Команда не разрешена; метод аутентификации блокирован
Команда не разрешена; запрошенные данные некорректны
Команда не разрешена; условия использования не выполнены
Неверные параметры Р1 Р2; функция не поддерживается
Неверные параметры Р1 Р2; файл не найден
Неверные параметры Р1 Р2; запись не найдена



Таблица 4.6.4.12А. Сводные данные по командам/откликам
КомандаCLAINSP1P2LcДанныеLe
APPLICATION BLOCK8C/841E0000Число байт данныхКод аутенти-фикации сообщения (MAC)-
APPLICATION UNBLOCK8C/84180000Число байт данныхКомпонент MAC-
CARD BLOCK8C/84160000Число байт данныхКомпонент MAC-
EXTERNAL AUTHENTICATE008200008-16Issue Authentication Data-
GENERATE APPLICATION CRYPTOGRAM80AEПарам.
ссылки
00Перемен.Данные транзакции00
GET DATA80CA9F369F139F179F369F139F17--00
GET PROCESSING OPTIONS80A80000Перемен. Processing Option Data Object List (PDOL)00
INTERNAL AUTHENTICATE00880000Длина аутент. данныхАутентиф. данные00
PIN CHANGE/UNBLOCK8C/84240000, 01 или 02Число байт данныхPIN данные-
READ RECORD00B2Номер записиПарам.ссылки--00
SELECT00A4Парам.
ссылки
Опции выбора05-10Имя файла00
VERIFY002000Квали-фикаторПеременPIN данные транзакции-
GET CHALLENGE00840000--00
Блочный протокол Т=1 предполагает передачу блоков данных между TAL (Terminal Application Layer) и ICC. Эти блоки несут в себе команды, R-APDU (Response Application Protocol Data Unit) и управляющую информацию. Структура блока показана на рисунке 4.6.4.10. Поля заголовка и эпилога (хвостовика) являются обязательными. Биты b1-b3 NAD указывают на адрес отправителя (SAD), а b5-b7 - адрес получателя (DAD). В настоящее время адресация узлов не поддерживается и по этой причине в поле NAD следует записывать код 00. Биты b4 и b8 равны нулю. Код PCB определяет тип блока. Существует три типа блоков: информационные (I-блок), готовности приема (R-блок, подтверждение) и управляющие (S-блок).
Заголовок (Prologue)ДанныеЭпилог
Адрес узла (NAD)Управляющий протокольный байт (PCB)Длина
(LEN)
 
APDU или управляющая информация (INF)EDC
(код детектирования ошибки)
1 байт1 байт1 байт0-254 байта1 байт
Рис. 4.6.4.9. Структура блока Кодирование PCB зависит от его типа, оно представлено в таблицах 4.6.4.13-15. Таблица 4.6.4.13. Кодирование PCB I-блоков
b80
b7Номер по порядку
b6Цепочка (есть еще данные)
b5-b1Зарезервировано на будущее
Таблица 4.6.4.14.


Кодирование PCB R-блоков
b81
b70
b60
b5Номер по порядку
b4-b10 - Отсутствие ошибки
1 - EDC и/или ошибка четности
2 - другие ошибки
остальные коды зарезервированы
Таблица 4.6.4.15. Кодирование PCB S-блоков
b81
b71
b60 - запрос
1 - отклик
b5-b10 - запрос повторной синхронизации
1 - запрос размера поля данных
2 - запрос абортирования
3 - расширение BWT-запроса
4 - VPP-ошибка
остальные коды зарезервированы
Поле LEN определяет размер информационного поля и может равняться 0-254. R-блоки не имеют поля данных. Блоки I- и S-типов нумеруются по модулю 2, их число может равняться 0 или 1 (первый блок имеет номер 0). Счетчик нумерации сбрасывается в 0 после ресинхронизации. Поле EDC представляет собой объединение всех байт блока, начиная с NAD и кончая последним байтом поля INF (если это поле присутствует), с помощью операции исключающее ИЛИ. Максимальный размер поля данных ICC (IFSC) блока определяется параметром ТА3, присылаемым ICC в отклике на сброс. IFSI может принимать значения 10-FE, что означает для IFSC диапазон 16-254 байта. Максимальный размер поля данных терминала (IFSD) составляет 254 байта. Время ожидания блока BWT (Block Waiting Time) в общем случае вычисляется согласно следующей формуле. Реально BWT может лежать в диапазоне (971-15371)t.
Когда отправитель намерен передать объем данных больше, чем это определено параметрами IFSC или IFSD, он должен разбить эту последовательность байтов на несколько I-блоков. Передача этих блоков осуществляется с привлечением механизма цепочек. Для объединения I-блоков в цепочку используется бит b6 в PCB (смотри табл. 4.6.4.13). Если b6=0, то это последний блок в цепочке. Если же b6=1, далее следует как минимум еще один блок. Получение любого I-блок с b6=1 должно быть подтверждено R-блоком. Последний блок цепочки, посланный терминалом, подтверждается I-блоком, если получен безошибочно, или R-блоком, при обнаружении ошибки. В случае ICC получение последнего блока цепочки подтверждается R-блоком при обнаружении ошибки.Если ошибки не было, терминал просто посылает очередной I-блок, если должна обрабатываться очередная команда. Передача цепочки возможна в одно и тоже время только в одном направлении. Когда терминал является получателем, он воспринимает цепочки I-блоков, передаваемых ICC, если длина блоков ? IFSD. Если получателем является ICC, карта воспринимает цепочку I-блоков, посланных терминалом и имеющих длину LEN=IFSC, за исключением последнего блока, длина которого может лежать в диапазоне (1-IFSC). Если длина блока > IFSC, ICC такой блок отвергает, послав R-блок с битами b4-b1 в PCB, равными 2.

Содержание раздела