XFS-сервис класса PIN. Cryptera¶
Поддерживаемые модели:
Модель |
PCI PTS |
Версия прошивки |
---|---|---|
INT1217/1218 |
1.0 |
414-329 |
INT1217/1218 |
2.0 |
414-596 |
Файлы¶
shqPS.EPP.Cryptera.exe;
shqSPEPP.dll.
Привязка EPP к ПК¶
Для хранения информации о привязке логических имен ключей к EPP используется дисковый файл в каталоге установки ПроАТМ/XFS. Данная информация хранится в зашифрованном виде и привязана к конкретному экземпляру EPP. В случае переноса/замены EPP, данная информация автоматически перестает быть актуальной и потребуется повторная инициализация и ввод мастер-ключей.
Примечание
Процедура переустановки ПроАТМ/XFS не затрагивает данные записи реестра, и, следовательно, не приводит к потере ключей PIN-клавиатуры.
Особенности ПроАТМ/XFS, определяемые стандартом PCI PTS¶
В соответствии с требованиями PCI PTS, ручной ввод мастер-ключей производится авторизованными сотрудниками безопасности. Реализация данного требования состоит из двух процедур:
первоначальная загрузка либо замена паролей сотрудников безопасности;
проверка пароля сотрудника безопасности перед вводом соответствующей части мастер-ключа.
Обе процедуры включают в себя РУЧНОЙ ввод паролей сотрудниками безопасности. С точки зрения ролевой модели предполагается наличие двух сотрудников безопасности, каждый из которых, перед тем как ввести свою половину мастер-ключа, должен авторизоваться собственным паролем безопасности. Загрузка или смена паролей сотрудников безопасности осуществляется строго на проинициализированной PIN-клавиатуре.
Допускается режим эксплуатации PIN-клавиатуры без защиты паролями безопасности (настройка сервиса PASSWORD_PROTECTION_ENABLED = 0
). В этом случае нет необходимости в загрузке и проверке паролей, однако возникает существенное ограничение на инфраструктуру ключей: в EPP можно загрузить только один мастер-ключ, за исключением случая предварительной загрузки транспортного ключа. Описание ключей, которые можно загрузить в клавиатуру в различных режимах, представлено в таблицах «Режимы загрузки ключей (4210)» и «Иерархия ключей».
Тип ключа |
Без ввода паролей |
С вводом паролей |
||||||
без предварительной загрузки ТК |
с предварительной загрузкой ТК |
без предварительной загрузки ТК |
с предварительной загрузкой ТК |
|||||
длина (байт) |
количество |
длина (байт) |
количество |
длина (байт) |
количество |
длина (байт) |
количество |
|
MasterKey |
16 |
1 |
16 |
2 |
16 |
4 |
16 |
4 |
CryptKey |
8, 16 |
4 |
16 |
8 |
8, 16 |
8 |
16 |
8 |
PinKey |
8, 16 |
4 |
16 |
8 |
8, 16 |
14 |
16 |
14 |
MacKey |
8, 16 |
2 |
16 |
4 |
8, 16 |
6 |
16 |
6 |
Итого: |
11 |
22+1TK |
32 |
32+1TK |
Тип ключа |
Без ввода паролей |
С вводом паролей |
||||||
без предварительной загрузки ТК |
с предварительной загрузкой ТК |
без предварительной загрузки ТК |
с предварительной загрузкой ТК |
|||||
длина (байт) |
количество |
длина (байт) |
количество |
длина (байт) |
количество |
длина (байт) |
количество |
|
MasterKey |
16 |
1 |
16 |
2 |
16 |
2 |
16 |
2 |
CryptKey |
16 |
2 |
16 |
4 |
16 |
4 |
16 |
4 |
PinKey |
16 |
1 |
16 |
2 |
16 |
2 |
16 |
2 |
MacKey |
16 |
1 |
16 |
2 |
16 |
2 |
16 |
2 |
Итого: |
5 |
10+1TK |
10 |
10+1TK |
Ниже на рисунке («Иерархия ключей») представлена иерархия ключей устройства, учитывающая наличие/отсутствие режима ввода паролей безопасности и предварительную загрузку транспортного ключа (TK). В скобках указано возможное количество ключей, импортируемых на текущем мастер-ключе. Для модели 4210 полная схема (4 мастер-ключа + 1 транспортный ключ) доступна только в режиме ввода паролей безопасности.
Поскольку текущие версии стандарта XFS не предусматривают возможность авторизации сотрудников безопасности, доступ к данным функциям обеспечивается командами WFS_CMD_PIN_GET_PIN, WFS_CMD_PIN_GET_PINBLOCK и WFS_CMD_PIN_IMPORT_KEY с указанием специфических значений входных аргументов, что явным образом отличает их применение от штатного, предусмотренного стандартом. Узнать, загружены ли в EPP пароли безопасности, можно через параметр «CUSTODIANS_PWn_LOADED» (где n – 1 или 2), в ответе на WFS_INF_PIN_STATUS или WFS_INF_PIN_CAPABILITIES.
Пароль должен содержать 8 или 16 символов. Логика отработки ввода пароля безопасности аналогична логике процедуры ввода PIN-кода (см. Клавиатурный ввод для Cryptera, ZT596E и ZT596x). Ввод пароля осуществляется с помощью команды WFS_CMD_PIN_GET_PIN. Для того чтобы обозначить режим ввода пароля, следует указать значения usMinLen и usMaxLen:
usMinLen |
usMaxLen |
Длина пароля |
---|---|---|
65288(0xFF08) |
65288(0xFF08) |
8 |
65288(0xFF08) |
65296(0xFF10) |
8 - 16 |
65296(0xFF10) |
65296(0xFF10) |
16 |
Внимание
После проведения процедуры проверки пароля взводится 300-секундный таймер, дающий возможность единовременно воспользоваться целевой функцией EPP, требующей авторизации (загрузка пароля либо загрузка ключа). По истечении таймаута, потребуется заново ввести пароль безопасности.
В процессе ввода пароля допускается пауза между нажатиями до 60 секунд. Если данный интервал будет превышен, функция ввода пароля прервется (имитация нажатия кнопки CANCEL).
В соответствии с требованиями PCI PTS, допускается загрузка одного и того же ключа только с одним функциональным атрибутом. Это означает, что:
не допускается импорт одного и того же ключа с разными атрибутами под одним и тем же именем (дублирование);
при импорте ключа недопустимо указывать более одного функционального атрибута (поле fwUse).
В соответствии с требованиями PCI PTS, запрещается загрузка 3DES-ключей на DES мастер-ключах. В частности, если значение мастер-ключа состоит из двух одинаковых 8-байтных половинок, такой ключ расценивается PIN-клавиатурой как DES ключ одинарной длины.
Производительность криптоблока¶
EPP позволяет выполнять функции шифрования и подписывания и обладает характеристиками производительности, приведенными в таблице ниже:
Функция |
Производительность |
---|---|
Шифрование DES CBC |
1.13 kb/sec |
Шифрование 3DES CBC |
1.13 kb/sec |
MAC DES |
2.05 kb/sec |
MAC 3DES |
2.05 kb/sec |
Настройки XFS-провайдера¶
Раздел реестра: [HKLM\ Software\XFS\PHYSICAL_SERVICES\EPP-Cryptera]
Параметры драйвера:
PORT – номер порта (COM1, COM2, и т.п.), к которому подключено устройство.
PASSWORD_PROTECTION_ENABLED – включить|отключить режим проверки паролей безопасности при импорте мастер-ключей. Возможные значения:
1
– включен, требуется ввод пароля (предоставляется возможность загрузки нескольких ключей);0
– выключен, ввод пароля не требуется (в EPP нельзя загрузить свыше одного мастер-ключа).
Внимание
После изменения данного параметры и перезапуска XFS провайдера все ключи из клавиатуры будут удалены.
KEY_STROKE_BEEPER – разрешить/запретить звуковое сопровождение при вводе данных/PIN. Возможные значения:
YES
(разрешено),NO
(запрещено).CustomerDataInterpretation – интерпретация поля CustomerData (информация о клиенте) в процессе сборки PIN-блоков ISO-0. Возможные значения:
IAI
– передается строго IAI-часть PAN’а;WHOLE_PAN
– передается PAN целиком, включая проверочный разряд (соотв. CEN/XFS 3.03);PAN_WITHOUT_CD
– передается PAN без проверочного разряда (соотв. CEN/XFS 3.10, 3.20).
LAYOUT – раскладка клавиатуры. Значения клавиш пишутся слева направо сверху вниз, через запятую.
Возможные значения:
DEFAULT
;0–9
,00
,000
,DECPOINT
,ENTER
,CLEAR
,HELP
,CANCEL
,RES–RES8
,OEM1–OEM6
,UNUSED
(если кнопка не используется).
Значение по умолчанию:
1,2,3,CANCEL,4,5,6,CLEAR,7,8,9,HELP,RES1,0,DECPOINT,ENTER
.Внимание
Параметр LAYOUT не влияет на режим ввода ключа.
FDK_REMAPPING – в случае если УС оборудовано FDK-кнопками, подключенными через спец.электронику, данный параметр позволяет задать коды FDK-кнопок. По умолчанию принимается следующая раскладка:
L1: FDK8 R1: FDK1 L2: FDK7 R2: FDK2 L3: FDK6 R3: FDK3 L4: FDK5 R4: FDK4
Значение параметра кодируется в соответствии с правилом:
[L|R][1-4]:FDK[1-8](;[L|R][1-4]:FDK[1-8]){7}
. Пример:L1:FDK1;L2:FDK2;L3:FDK3;L4:FDK4;R1:FDK5;R2:FDK6;R3:FDK7;R4:FDK8
.SecureKeyEntry_ClearFDK – перечень номеров FDK-кнопок, реализующих логику кнопки CLEAR в режиме ввода ключа.
SecureKeyEntry_CancelFDK – перечень номеров FDK-кнопок, реализующих логику кнопки CANCEL в режиме ввода ключа.
SecureKeyEntry_EnterFDK – перечень номеров FDK-кнопок, реализующих логику кнопки ENTER в режиме ввода ключа.
Для всех SecureKeyEntry через запятую указываются номера FDK-кнопок, которые реализуют логику очистки, отмены или завершения в режиме ввода ключа.
PROHIBIT_DEVICE_RECONFIGURING – запретить переконфигурирование устройства (низкоуровневая команда CONFIGURE). Возможные значения:
YES
,NO
.PROHIBIT_DEVICE_CLEANUP – запретить инициализацию устройства (для поддержки устройств с ранее введенными сторонними ключами). Возможные значения:
YES
,NO
.IGNORE_EPP_ID_CHANGED – не отслеживать замену EPP по серийному номеру. Возможные значения:
YES
,NO
.MASTER_KEYS_ORIGIN – способ загрузки ключей. Возможные значения:
MANUAL
– вручную;PRESET
– изначально загружены поставщиком.
Внимание
Несмотря на то, что физически все DES/3DES ключи содержатся непосредственно в PIN-клавиатуре, информация об их привязке к XFS-именам, атрибутах использования и пр. заносится в системный реестр Windows (раздел [HKLM\SOFTWARE\XFS\PHYSICAL_SERVICES\EPP-ZT599]
). ПроATM/XFS гарантирует сохранность ранее загруженных DES/3DES ключей при переустановке ПО только, если указанный ключ реестра не подвергается частичному или полному уничтожению.
Информационные запросы¶
WFS_INF_PIN_STATUS¶
Команда предназначена для получения информации о состоянии клавиатуры. Статус клавиатуры записывается в структуру WFSPINSTATUS.
Поля структуры WFSPINSTATUS:
fwDevice – состояние клавиатуры;
fwEncStat – состояние криптомодуля;
lpszExtra – дополнительная информация о клавиатуре и драйвере;
dwGuidLights – подсветка не поддерживается;
fwAutoBeepMode – принимает значение
0
илиWFS_PIN_BEEP_ON_ACTIVE
(см. описание настройки KEY_STROKE_BEEPER и команды WFS_CMD_PIN_KEYPRESS_BEEP);dwCertificateState – не поддерживается;
wDevicePosition – не поддерживается;
usPowerSaveRecoveryTime – не поддерживается.
Значения поля fwDevice структуры WFSPINSTATUS:
WFS_PIN_DEVONLINE
– устройство исправно и готово к работе;WFS_PIN_DEVOFFLINE
– устройство не активировано (541х);WFS_PIN_DEVPOWEROFF
– не удалось связаться с устройством через COM-порт (СОМ-порт указывается в настройках сервис-провайдера)WFS_PIN_DEVNODEVICE
– в настройках сервис провайдера отсутствует параметр «PORT» (СОМ-порт, через который происходит взаимодействие с клавиатурой);WFS_PIN_DEVHWERROR
– аппаратная ошибка устройства;WFS_PIN_DEVUSERERROR
– не поддерживается;WFS_PIN_DEVBUSY
– устройство выполняет команду.
Значения поля fwEncStat структуры WFSPINSTATUS:
WFS_PIN_ENCREADY
– криптомодуль исправен и готов к работе;WFS_PIN_ENCNOTREADY
– не поддерживается;WFS_PIN_ENCNOTINITIALIZED
– Криптомодуль не инициализирован;WFS_PIN_ENCBUSY
– криптомодуль выполняет команду;WFS_PIN_ENCUNDEFINED
– состояние криптомодуля не определено;WFS_PIN_ENCINITIALIZED
– криптомодуль инициализирован, но ни одного мастер-ключа еще не загружено.
Поле lpszExtra является массивом строк, где каждая строка содержит описание одного параметра сервис-провайдера в виде <название_параметра> = <значение_параметра>
.
Параметры поля lpszExtra структуры WFSPINSTATUS:
PRODUCT – название продукта ПроАТМ/XFS;
VERSION – версия сборки ПроАТМ/XFS (например, 5.7.1.22950);
CUSTODIANS_PW1_LOADED, CUSTODIANS_PW2_LOADED –
1
(в PIN-клавиатуру загружены пароли безопасности) или0
(в PIN-клавиатуру не загружены пароли безопасности);PASSWORD_PROTECTION_ENABLED –
1
(включен режим проверки паролей безопасности);MODEL –
1217
(модель PIN-клавиатуры);FW – версия прошивки EPP (например, 414-0329 Rxx);
CONFIGURATION_ERROR (Опц.) – детальное описание выявленной ошибки конфигурации сервиса;
DEVICE_ERROR (Опц.) – детальное описание аппаратной ошибки устройства;
EPP_BATTERY –
OK
(нормальный уровень заряда автономной батареи EPP) илиLOW
(низкий уровень заряда автономной батареи EPP);ROM_CHECKSUM_VALID –
YES
(контрольная сумма внутренней памяти EPP верная) илиNO
(ошибка проверки контрольной суммы внутренней памяти EPP);ACTIVATION_STATE – актуален для устройств, удовлетворяющих стандартам PCI PTC 2.0 и выше,
NOT_ACTIVATED
(клавиатура не активирована, nребуется активация у производителя, недоступны функции криптопроцессора),PREACTIVATED
(клавиатура преактивирована, недоступны функции криптопроцессора, есть возможность выполнить активацию на месте, например, средствами ПО ATMCheck),ACTIVATED
(клавиатура активирована, криптофункции доступны в полном объеме).INSTALLATION_STATE –
1
(клавиатура установлена в УС) или0
(клавиатура не установлена в УС).
WFS_INF_PIN_CAPABILITIES¶
По данному запросу можно узнать о возможностях устройства, поддерживаемых алгоритмах шифрования и форматах сборки PIN-блока.
Состояния полей структуры WFSPINCAPS:
fwType – WFS_PIN_TYPEHSM (PIN-клавиатура + модуль шифрования);
bCompound – FALSE (несоставное устройство);
usKeyNum – аппаратное значение (емкость хранилища ключей);
fwAlgorithms – WFS_PIN_CRYPTTRIDESMAC, WFS_PIN_CRYPTDESMAC, WFS_PIN_CRYPTTRIDESCBC, WFS_PIN_CRYPTDESCBC (поддерживаемые алгоритмы шифрования, на моделях PCI PTS 2.0 и выше поддерживаются только TRIDES-алгоритмы);
fwPinFormats – WFS_PIN_FORMANSI, WFS_PIN_FORMISO0, WFS_PIN_FORMISO1, WFS_PIN_FORMDIEBOLD, WFS_PIN_FORMDIEBOLDCO, WFS_PIN_FORMVISA, WFS_PIN_FORMVISA3 (поддерживаемые форматы сборки PIN- блока);
fwDerivationAlgorithms – NONE;
fwPresentationAlgorithms – NONE;
fwDisplay – WFS_PIN_DISPNONE (дисплей отсутствует);
bIDConnect – FALSE;
fwIDKey – NONE;
fwValidationAlgorithms – NONE (в настоящей версии ПО валидация PIN не поддерживается);
fwKeyCheckModes – WFS_PIN_KCVZERO (поддерживаемый режим проверки ключа);
lpszExtra – дополнительная информация о клавиатуре и драйвере;
dwGuidLights – не поддерживается;
bPINCanPersistAfterUse – FALSE;
fwAutoBeep – WFS_PIN_BEEP_ACTIVE_SELECTABLE;
lpsHSMVendor – не поддерживается;
bHSMJournaling – FALSE;
dwRSAAuthenticationScheme – WFS_PIN_RSA_AUTH_2PARTY_SIG (только на модели 541x, если загружены ключи RKL);
dwRSASignatureAlgorithm – WFS_PIN_SIGN_RSASSA_PKCS1_V1_5 (только на модели 541x, если загружены ключи RKL);
dwRSACryptAlgorithm – WFS_PIN_CRYPT_RSAES_PKCS1_V1_5 (только на модели 541x, если загружены ключи RKL);
dwRSAKeyCheckMode – WFS_PIN_RSA_KCV_SHA1 (только на модели 541x, если загружены ключи RKL);
dwSignatureScheme – WFS_PIN_SIG_RANDOM_NUMBER, WFS_PIN_SIG_EXPORT_EPP_ID (только на модели 541x, если загружены ключи RKL);
lpwEMVImportSchemes – не поддерживается;
fwEMVHashAlgorithm – не поддерживается;
bKeyImportThroughParts – TRUE;
fwENCIOProtocols – не поддерживается;
bTypeCombined – FALSE;
bSetPinblockDataRequired – FALSE;
fwKeyBlockImportFormats – не поддерживается;
bPowerSaveControl – не поддерживается;
Поле lpszExtra является массивом строк, где каждая строка содержит описание одного параметра сервис-провайдера в виде <название_параметра> = <значение_параметра>
.
Параметры поля lpszExtra структуры WFSPINCAPS:
PRODUCT – название продукта ПроАТМ/XFS;
VERSION – версия сборки ПроАТМ/XFS (например, 5.7.1.22950);
CUSTODIANS_PW1_LOADED, CUSTODIANS_PW2_LOADED –
1
(в PIN-клавиатуру загружены пароли безопасности) или0
(в PIN-клавиатуру не загружены пароли безопасности);PASSWORD_PROTECTION_ENABLED –
1
(включен режим проверки паролей безопасности);MODEL –
1217
(модель PIN-клавиатуры);FW – версия прошивки EPP (например, 414-0329 Rxx);
CONFIGURATION_ERROR (Опц.) – детальное описание выявленной ошибки конфигурации сервиса;
DEVICE_ERROR (Опц.) – детальное описание аппаратной ошибки устройства;
EPP_BATTERY –
OK
(нормальный уровень заряда автономной батареи EPP) илиLOW
(низкий уровень заряда автономной батареи EPP);ROM_CHECKSUM_VALID –
YES
(контрольная сумма внутренней памяти EPP верная) илиNO
(ошибка проверки контрольной суммы внутренней памяти EPP);ACTIVATION_STATE – актуален для устройств, удовлетворяющих стандартам PCI PTC 2.0 и выше,
NOT_ACTIVATED
(клавиатура не активирована, nребуется активация у производителя, недоступны функции криптопроцессора),PREACTIVATED
(клавиатура преактивирована, недоступны функции криптопроцессора, есть возможность выполнить активацию на месте, например, средствами ПО ATMCheck),ACTIVATED
(клавиатура активирована, криптофункции доступны в полном объеме).INSTALLATION_STATE –
1
(клавиатура установлена в УС) или0
(клавиатура не установлена в УС);PIN_IMPORT_KEY_PARTS –
1
(схема импорта ключа по частям доступна, разрешается импорт ключа, состоящего из двух половин);параметры, описывающие объем поддержки RKL (см. CWA 15748-65:2008,4.2 WFS_INF_PIN_CAPABILITIES):
REMOTE_KEY_SCHEME=0x00000001;
RSA_SIGN_ALGORITHM=0x00000001;
RSA_CRYPT_ALGORITHM=0x00000001;
RSA_KEY_CHECK_MODE=0x00000001;
SIGNATURE_CAPABILITIES=0x00000006.
WFS_INF_PIN_KEY_DETAIL¶
Команда предназначена для получения информации о ключах, загруженных в клавиатуру. Информация о каждом ключе записывается в структуру WFSPINKEYDETAIL, представленную ниже.
Поля структуры WFSPINKEYDETAIL:
lpsKeyName – имя ключа;
fwUse – тип ключа;
bLoaded – загружен ли ключ полностью или находится в стадии импортирования по частям;
lpxKeyBlockHeader – не поддерживается (пустое значение).
Значения поля fwUse структуры WFSPINKEYDETAIL:
WFS_PIN_USECRYPT
– ключ для шифрования данных;WFS_PIN_USEFUNCTION
– ключ для ввода PIN;WFS_PIN_USEMACING
– ключ для макирования;WFS_PIN_USEKEYENCKEY
– ключ для шифрования других ключей (мастер-ключ).WFS_PIN_USENODUPLICATE
– не используется (хотя одноименный параметр можно установить в команде импорта ключа);WFS_PIN_USESVENCKEY
– не используется;WFS_PIN_USECONSTRUCT
– не используется;WFS_PIN_USESECURECONSTRUCT
– не используется (хотя одноименный параметр можно установить в команде импорта ключа).
Каждый ключ может иметь строго один тип из всех используемых.
WFS_INF_PIN_FUNCKEY_DETAIL¶
По данному запросу можно узнать о поддерживаемых функциональных клавишах устройства при отработке команд ввода PIN (WFS_CMD_PIN_GET_PIN) и ввода данных (WFS_CMD_PIN_GET_DATA). Также можно получить информацию об FDK, указав интересующие значения (lpulFDKMask) во входных параметрах команды. Полученный результат коррелирует с настройками LAYOUT и FDK_REMAPPING XFS-сервиса.
WFS_INF_PIN_KEY_DETAIL_EX¶
Команда предназначена для получения расширенной информации о ключах, загруженных в клавиатуру. Информация о каждом ключе записывается в структуру WFSPINKEYDETAILEX, которая содержит дополнительные поля по сравнению со структурой WFSPINKEYDETAIL. Эта дополнительная информация не сохраняется ни сервис провайдером, ни клавиатурой. В процессе формирования ответа на команду эти поля заполняются значением 0xFF.
WFS_INF_PIN_SECUREKEY_DETAIL¶
По данному запросу можно узнать о поддерживаемых функциональных клавишах устройства и FDK при отработке команды безопасного ввода ключа (WFS_CMD_PIN_SECUREKEY_ENTRY). Раскладка клавиатуры строго фиксирована и не зависит от настройки LAYOUT (данные в шестнадцатеричном формате):
1 |
2 |
3 |
A |
4 |
5 |
6 |
B |
7 |
8 |
9 |
C |
E |
0 |
F |
D |
Команды¶
WFS_CMD_PIN_CRYPT¶
Команда может использоваться для шифрования данных на заданном ключе, генерации случайного набора байт и макирования.
Результат выполнения команды WFS_CMD_PIN_CRYPT:
WFS_SUCCESS – команда завершилась успешно;
WFS_ERR_PIN_ACCESSDENIED – криптомодуль не инициализирован;
WFS_ERR_INVALID_DATA – не заданы данные для шифрования, не задан ключ для шифрования;
WFS_ERR_PIN_ALGORITHMNOTSUPP – заданный алгоритм шифрования не поддерживается, неверная длина заданного ключа;
WFS_ERR_PIN_MODENOTSUPPORTED – заданная операция не поддерживается (расшифровка);
WFS_ERR_PIN_KEYNOTFOUND – заданный ключ отсутствует в клавиатуре;
WFS_ERR_PIN_USEVIOLATION – заданный ключ не подходит для заданной операции;
WFS_ERR_SOFTWARE_ERROR – произошла программная ошибка при выполнении команды на устройстве.
Проверяемые входные данные команды WFS_CMD_PIN_CRYPT:
Поле |
Проверка |
Комментарий |
---|---|---|
sKey |
Да |
Ключ с таким именем должен быть загружен в клавиатуру |
xKeyEncKey |
Игнорируется |
Значение игнорируется |
sStartValueKey |
Игнорируется |
Значение игнорируется |
xStartValue |
Игнорируется |
Значение игнорируется |
bPadding |
Игнорируется |
Значение игнорируется |
bCompression |
Да |
= 0. Строгое равенство |
xCryptData |
Любое |
Значение используется и может быть любым |
wMode |
Да |
Поддерживаются только операции WFS_PIN_MODEENCRYPT и WFS_PIN_MODERANDOM |
wAlgorithm |
Да |
Поддерживаются только алгоритмы WFS_PIN_CRYPTTRIDESCBC, WFS_PIN_CRYPTDESCBC, WFS_PIN_CRYPTDESMAC, WFS_PIN_CRYPTTRIDESMAC |
Операция генерации случайного набора байт не требует параметров, все входные данные игнорируются. Алгоритмы WFS_PIN_CRYPTTRIDESCBC, WFS_PIN_CRYPTDESCBC требуют для своей работы CryptKey (криптоключ). Алгоритмы WFS_PIN_CRYPTDESMAC, WFS_PIN_CRYPTTRIDESMAC требуют для своей работы Mac-ключ.
WFS_CMD_PIN_IMPORT_KEY¶
Команда выполняет три функции: импорт ключей, удаление ключей и запись паролей в клавиатуру.
Для указания, какую из функций выполнять, служат зарезервированные имена импортируемых ключей PWD_1 и PWD_2 (с учетом регистра). Такие значения поля sKey означают, что нужно записать пароли в клавиатуру, а не импортировать или удалять ключ.
Команда позволяет импортировать в устройство транспортный ключ (TK). Данный ключ является частным случаем мастер-ключа и позволяет шифровать на себе другой мастер-ключ, тем самым поддерживается функциональность импорта в открытом виде мастер-ключа, где в качестве ключа шифрования указан загруженный ранее транспортный ключ. Транспортный ключ загружается в устройство, как и любой другой мастер-ключ в соответствии с Диаграммой 5-1, в поле имя ключа (sKey) необходимо указать: TK. Использование транспортного ключа позволяет импортировать два мастер-ключа в режиме безопасности без ввода паролей, что значительно расширяет данный режим.
Примечание
Невозможно импортировать сессионные ключи, зашифрованные на транспортном ключе. Возможен импорт только двух мастер-ключей в открытом виде, зашифрованных на транспортном ключе. При удалении транспортного ключа удалятся все его дочерние ключи и дальше по дереву ключей (в соответствии с иерархией ключей устройства). Невозможно загрузить транспортный ключ, если его дочерний мастер-ключ уже загружен.
Возможные результаты выполнения команды при импорте и удалении ключа:
WFS_SUCCESS – команда завершилась успешно;
WFS_ERR_HARDWARE_ERROR – устройство неработоспособно
WFS_ERR_INVALID_DATA – наличие флага WFS_PIN_USECONSTRUCT; наличие атрибута strEncKey в режиме WFS_PIN_USESECURECONSTRUCT; при удалении не задано имя ключа; при импортировании сессионного ключа не задано его тело;
WFS_ERR_PIN_ACCESSDENIED – клавиатура не инициализирована;
WFS_ERR_PIN_DUPLICATEKEY – ключ с таким именем уже импортирован в клавиатуру и не может быть заменен или удален;
WFS_ERR_PIN_NOKEYRAM – нет места для импорта ключа с заданными параметрами (типом и длиной) в текущем режиме работы клавиатуры;
WFS_ERR_PIN_USEVIOLATION – попытка импортировать ключ для нескольких целей (кодирования, PIN, макирования, мастер-ключа); ключ, заданный в параметре strEncKey, не является мастер-ключом; попытка импорта мастер-ключа, введенного безопасным вводом (SecureKeyEntry), при уже загруженном транспортном ключе в режиме без паролей;
WFS_ERR_SOFTWARE_ERROR – произошла программная ошибка при выполнении команды на устройстве;
WFS_ERR_PIN_KEYNOTFOUND – заданный ключ отсутствует в клавиатуре;
WFS_ERR_PIN_INVALIDKEYLENGTH – длина блока данных тела ключа отлична от 16 байт, либо попытка импорта 3DES-ключа на DES-ключе.
Возможные результаты выполнения команды при записи паролей в клавиатуру:
WFS_SUCCESS – команда завершилась успешно;
WFS_ERR_HARDWARE_ERROR – устройство неработоспособно;
WFS_ERR_SOFTWARE_ERROR – произошла программная ошибка при выполнении команды на устройстве.
Проверяемые входные данные команды WFS_CMD_PIN_IMPORT_KEY при импорте ключей:
Поле |
Проверка |
Комментарий |
---|---|---|
sKey |
Да |
Значение используется и может быть любым. TK – при импорте транспортного ключа |
sEncKey |
Да |
Ключ с таким именем должен быть загружен в клавиатуру |
xIdent |
Игнорируется |
Значение игнорируется |
xValue |
Да |
Длина тела ключа должно быть 8 или 16 байт, может отсутствовать, если ключ импортируется частями путем нажатия кнопок на клавиатуре |
fwUse |
Да |
Нельзя одновременно выбрать атрибуты поля fwUse WFS_PIN_USECRYPT, WFS_PIN_USEFUNCTION, WFS_PIN_USEMACING, WFS_PIN_USEKEYENCKEY и WFS_PIN_USESVENCKEY |
Если поле fwUse не задано, то ключ с именем из поля sKey будет удален. Если поле sKey пустое, то будет возвращена ошибка WFS_ERR_INVALID_DATA.
Атрибут WFS_PIN_USECONSTRUCT игнорируется.
Ключ с атрибутом WFS_PIN_USENODUPLICATE не подлежит удалению или перезаписи, однако если удален его родительский мастер-ключ, то ключ будет удален.
Клавиатура не поддерживает возможность импорта мастер-ключа на самом себе. Так как импорт мастер-ключей возможен только путем нажатия клавиш оператором на клавиатуре.
Ручной ввод мастер-ключей описан в Особенности ПроАТМ/XFS, определяемые стандартом PCI PTS.
Внимание
Загрузка ключей путем передачи незашифрованного тела ключа в параметре xValue недоступна.
Проверяемые входные данные команды WFS_CMD_PIN_IMPORT_KEY при записи паролей:
Поле
Проверка
Комментарий
sKey
Да
Строгое равенство PWD_1 или PWD_2
sEncKey
Игноруется
Значение игнорируется
xIdent
Игноруется
Значение игнорируется
xValue
Игноруется
Значение игнорируется
fwUse
Игноруется
Значение игнорируется
WFS_CMD_PIN_GET_PIN¶
Внимание
Помимо прямого назначения, с помощью данной команды осуществляется ввод паролей безопасности (см. Особенности ПроАТМ/XFS, определяемые стандартом PCI PTS).
Согласно требованиям PCI PTS ввод PIN-кода прерывается по истечении таймаута активности 60 секунд. Для ПО верхнего уровня такая ситуация выглядит так, будто пользователь нажал кнопку ОТМЕНА.
Логика ввода PIN-кода описана в стандарте XFS.
Особенность данной клавиатуры заключается в том, что она не поддерживает очистку последнего символа PIN-а, по этой причине в маске ulActiveKeys можно указать WFS_PIN_FK_CLEAR и нельзя – WFS_PIN_FK_BACKSPACE.
WFS_CMD_PIN_GET_PINBLOCK¶
Внимание
Помимо прямого назначения, с помощью данной команды осуществляется проверка пароля безопасности (см. Особенности ПроАТМ/XFS, определяемые стандартом PCI PTS).
Команда реализует сборку PIN-блока в форматах, указанных в capabilities. Исчерпывающее описание форматов PIN-блоков изложено в соответствующих стандартах (ISO 9564-1, Visa, Diebold).
Для формата ANSI / ISO0 интерпретация поля lpsCustomerData осуществляется в зависимости от выбранной при инсталляции настройки (см. описание параметра CustomerDataInterpretation).
Если введенный PIN содержит меньше 4-х цифр, то запрос на сборку PIN-блока будет возвращать WFS_ERR_PIN_NOPIN. Если введенный PIN содержит больше 12 символов (ANSI, ISO format 0, 1, VISA 3, Diebold), то запрос на сборку PIN-блока будет возвращать WFS_ERR_PIN_NOPIN.
Не поддерживается двойное шифрование (параметр lpsKeyEncKey).
В соответствии с требованием PCI PTS, PIN-клавиатура сбрасывает содержимое PIN-буфера через одну минуту после ввода PIN. Таким образом, по прошествии данного времени, будет невозможно собрать PIN-блок (код возврата – WFS_ERR_PIN_NOPIN).
WFS_CMD_PIN_GET_DATA¶
Логика ввода открытых данных описана в стандарте XFS.
Кнопка КОРРЕКТИРОВКА может работать как CLEAR и как BACKSPACE. В funсKeyDetails указываются оба кода кнопки, однако поведение кнопки уточняется в момент запуска ввода. Если входной аргумент содержит в поле ulActiveKeys код WFS_PIN_FK_CLEAR, то данная кнопка будет работать как CLEAR. Если указан только WFS_PIN_FK_CLEAR, то – как Backspace. Если указаны одновременно оба кода, то – как CLEAR.
WFS_CMD_PIN_INITIALIZATION¶
Команда инициализации клавиатуры. При выполнении этой команды сбрасывается состояние клавиатуры, криптомодуля, а все загруженные в клавиатуру ключи удаляются. Пароли остаются, их сбросить может только производитель, поэтому важно пароли не терять.
Результат выполнения команды инициализации клавиатуры (все входные параметры команды игнорируются):
WFS_SUCCESS – команда завершилась успешно;
WFS_ERR_HARDWARE_ERROR – устройство неработоспособно;
WFS_ERR_SOFTWARE_ERROR – произошла программная ошибка при выполнении команды на устройстве.
WFS_CMD_PIN_RESET¶
Команда сброса состояния клавиатуры без удаления ключей.
Результат выполнения команды сброса состояния клавиатуры:
WFS_SUCCESS – команда завершилась успешно;
WFS_ERR_SOFTWARE_ERROR – произошла программная ошибка при выполнении команды на устройстве.
WFS_CMD_PIN_SECUREKEY_ENTRY¶
Внимание
Согласно требованиям PCI PTS, ввод ключа прерывается по истечении таймаута активности 60 секунд. Для ПО верхнего уровня такая ситуация выглядит так, как будто пользователь нажал кнопку ОТМЕНА.
Логика ввода ключа описана в стандарте XFS.
Особенность данной клавиатуры заключается в том, что она не поддерживает очистку последнего символа, по этой причине в маске ulActiveKeys можно указать WFS_PIN_FK_CLEAR и нельзя – WFS_PIN_FK_BACKSPACE. Кроме того, не существует возможности определить FDK-кнопку с логикой Backspace.
Допускается ввод только 32-значных (16 байт) 3DES-ключей.
Примечание
В режиме PASSWORD_PROTECTION_ENABLED = 1 команде должен предшествовать ввод паролей для каждой части мастер-ключа. В общем случае мастер-ключ должен состоять из двух частей (см. Загрузка мастер-ключа).
При вводе 32-знакового (16-байтного, 3DES) мастер-ключа с одинаковыми половинами, устройство расценивает ключ, как 16-знаковый (8-байтный, DES). По стандарту PCI PTS на более слабом ключе нельзя шифровать более сильный ключ. Это означает, что на DES мастер-ключе нельзя будет зашифровать 3DES-сессионные ключи. Программно реализовать проверку длины ключа нельзя, т.к. устройство не выдает этой информации.
Помимо стандартных исходов, hResult может принимать значение WFS_ERR_PIN_ACCESSDENIED (помимо стандартных ситуаций это может означать, что не была проведена обязательная процедура проверки пароля сотрудника безопасности)
Клавиатура не поддерживает вычисление KCV части ключа.
WFS_CMD_PIN_GENERATE_KCV¶
Команда возвращает проверочное значение указанного ключа.
Результат hResult вычисляется следующим образом:
WFS_SUCCESS, если все шаги пройдены успешно;
WFS_ERR_PIN_ACCESSDENIED, если клавиатура не проинициализирована;
WFS_ERR_PIN_KEYNOTFOUND, если указанный ключ не найден;
WFS_ERR_PIN_MODENOTSUPPORTED, если не поддерживается режим формирования проверочного значения ключа;
WFS_ERR_HARDWARE_ERROR, если произошла ошибка устройства.
Проверяемые входные данные команды WFSPINGENERATEKCV:
Поле
Проверка
Комментарий
lpsKey
Да
Ключ должен быть загружен в устройство
wKeyCheckMode
Да
= WFS_PIN_KCVZERO. Строгое равенство
Выходные параметры при WFS_SUCCESS: в ответ возвращается 3-байта данных проверочного значения ключа.
WFS_CMD_PIN_KEYPRESS_BEEP¶
Допустимые значения входного аргумента:
0
– отключить звуковое сопровождение нажатий клавиш;WFS_PIN_BEEP_ON_ACTIVE
– включить звуковое сопровождение нажатий активных клавиш.
Примечание
Звуковое сопровождение обеспечивается средствами динамиков, подключенных к ПК устройства самообслуживания.
RKL на подписях (S-RKL)¶
Используются термины и сокращения, принятые в разделе 8 стр. 139 спецификаций CWA 15748-65: 2008, в частности:
PK SI – открытый ключ доверенной стороны;
SK SI – закрытый ключ доверенной стороны;
PK ATM – открытый ключ PIN-клавиатуры;*
PK HOST – открытый ключ хоста (HSM);
SK HOST – закрытый ключ хоста (HSM);
UI ATM – серийный номер PIN-клавиатуры;
K M – целевой DES мастер-ключ, импортируемый хостом в рамках процедуры RKL;
R ATM – случайное число, генерируемое EPP в рамках процедуры RKL.
Поддержка RKL для клавиатур SZZT ZT599E H13 строится на механизме подписей («Remote Key Loading Using Signatures»), описанном в разделе 8.1 стр. 139 спецификаций CWA 15748-65: 2008. Длина RSA ключей, применяемых в схеме – 2048 бит.
Краткий перечень шагов:
Экспорт PK ATM, подписанного на SK SI;
Экспорт UI ATM, подписанного на SK SI;
Импорт и верификация ключа PK HOST, подписанного на SK SI;
Генерация и отправка на хост R ATM;
Импорт KM, зашифрованного на PK ATM и подписанного SK HOST, с подмешиванием случайного числа R EPP.
Детальное описание шагов см. в п.8.1.2 «RSA Secure Key Exchange using Digital Signatures» документа «CWA 15748-65: 2008». Поддерживаемые шаги: 1, 2, 3 и 4-альтернативный, включающий R ATM.
Внимание
Шаг 4-основной, не предусматривающий подмешивание случайного числа в подпись, не поддерживается.
Применяемые команды:
WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY;
WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM;
WFS_CMD_PIN_START_KEY_EXCHANGE;
WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY.
Вышеперечисленные команды могут исполняться параллельно активному запросу WFS_CMD_PIN_GET_DATA.
Ниже представлены особенности реализации команд. В случае если EPP не проинициализирована ключами RSA, работа RKL невозможна, а команды возвращают код ошибки WFS_ERR_UNSUPP_COMMAND.
WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY¶
Команда применяется для экспорта PKATM и UIATM.
Входные аргументы:
wExportItemType – WFS_PIN_EXPORT_EPP_ID либо WFS_PIN_EXPORT_PUBLIC_KEY;
lpsName – в случае WFS_PIN_EXPORT_EPP_ID параметр игнорируется, в случае WFS_PIN_EXPORT_PUBLIC_KEY
NULL
или_EPPCryptKey
.
На выходе – структура, содержащая экспортируемые данные, в полном соответствии со спецификациями CEN/XFS. При экспорте серийного номера EPP возвращается 10-байтовая последовательность, состоящая из:
02h 08h – DER-тэг;
серийный номер 8 байт, закодированный в ASCII HEX.
WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM¶
Команда применяется для импорта PK HOST.
Внимание
В настоящей версии ПО поддерживается однократная загрузка ключа PK HOST.
Входные аргументы:
lpsKey – произвольное символическое имя, под которым ключ будет импортирован в систему. Длина – не более 64 знаков.
lpxValue – публичный ключ PKCS #1, представленный в DER ASN.1. В случае удаления ключа – NULL.
dwUse:
WFS_PIN_USERSAPUBLICVERIFY
– импорт ключа хоста с верификацией подписи;WFS_PIN_USERSAPUBLIC
– не поддерживается;0
– режим удаления ключа.
lpsSigKey – имя ключа, на котором подписан импортируемый ключ. Поддерживается только подпись на ключе SKSI, поэтому параметр может принимать ниже следующие значения:
NULL
,_SigIssuerVendor
.dwRSASignatureAlgorithm – алгоритм подписи. Поддерживается строго WFS_PIN_SIGN_RSASSA_PKCS1_V1_5.
lpxSignature – подпись, 256 байт.
В режиме удаления необходимо, чтобы имя ключа совпало с ранее загруженным. Если не так, то возвращается непредусмотренный для данной ситуации код ошибки WFS_ERR_PIN_KEYNOTFOUND.
Если ключ PKHOST ранее был импортирован, в дальнейшем допускается импорт ключа строго с тем же самым телом.
EPP не поддерживает предоставление проверочного значения импортированного ключа, поэтому выходной параметр содержит пустое значение.
WFS_CMD_PIN_START_KEY_EXCHANGE¶
Команда предназначена для запуска процедуры передачи целевого мастер-ключа K M. В качестве результата возвращается случайное число R ATM, сгенерированное EPP, которое должно быть добавлено с зашифрованным ключом K M при формировании подписи на стороне хоста.
WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY¶
Команда предназначена для загрузки или удаления мастер-ключа K M.
Входные аргументы:
lpsKey – имя импортируемого или удаляемого DЕS-ключа. Данная команда не позволяет удалять RSA-ключи (в частности, публичный ключ хоста);
dwUse – функциональный атрибут ключа, режим удаления ключа – 0 (в этом случае остальные параметры игнорируются);
lpsDecryptKey – имя подразумеваемого ключа SK ATM
NULL
или_EPPCryptKey
в явном виде;dwRSAEncipherAlgorithm – поддерживется строго WFS_PIN_CRYPT_RSAES_PKCS1_V1_5;
lpxValue – конкатенация R ATM и зашифрованного на PK ATM целевого DES-ключа K M, 264 байта;
lpsSigKey – имя ранее импортированного ключа PK HOST;
dwRSASignatureAlgorithm – строго WFS_PIN_SIGN_RSASSA_PKCS1_V1_5;
lpxSignature – подпись, 256 байт.
Подпись рассчитывается по следующим полям: R ATM; Encrypted K M.
События¶
WFS_EXEE_PIN_KEY – генерируется в случае нажатия клавиши в процессе исполнения команд по вводу данных. При исполнении команд WFS_CMD_PIN_SECUREKEY_ENTRY и WFS_CMD_PIN_GET_PIN значение нажатой клавиши (ulDigit) – 0. При открытом вводе данных поле ulDigit будет содержать реальный код клавиши.
WFS_SRVE_PIN_INITIALIZED – генерируется в случае успешной инициализации устройства.
WFS_SRVE_PIN_ILLEGAL_KEY_ACCESS – cобытие генерируется в случае невозможности выполнения текущей команды с указанным ключом (lpsKeyName).
Состояния полей структуры WFSPINACCESS. lErrorCode:
WFS_ERR_PIN_KEYNOTFOUND – указанный ключ не загружен в устройство;
WFS_ERR_PIN_USEVIOLATION – неверное назначение указанного ключа.
WFS_EXEE_PIN_ENTERDATA – генерируется в момент готовности устройства к вводу данных.
Требования к подключению FDK¶
Существует возможность подключения FDK-кнопок через специальную электронику (SIU). В свою очередь XFS-драйвер PIN-клавиатуры принимает внешние сообщения о нажатии соответствующей FDK от сервиса SIU. Интерпретируются данные сообщения следующим образом:
Код FDK от SIU |
Код XFS |
---|---|
0x48 |
WFS_PIN_FK_FDK01 |
0x46 |
WFS_PIN_FK_FDK02 |
0x44 |
WFS_PIN_FK_FDK03 |
0x42 |
WFS_PIN_FK_FDK04 |
0x41 |
WFS_PIN_FK_FDK05 |
0x43 |
WFS_PIN_FK_FDK06 |
0x45 |
WFS_PIN_FK_FDK07 |
0x47 |
WFS_PIN_FK_FDK08 |
Возможность подключения FDK напрямую к устройству не проверялась.
Активация устройства (541x)¶
В моделях, удовлетворяющих требованиям PCI PTS 2.0 и выше, реализован механизм защиты от нелегального снятия EPP с УС. Для этих целей служат два механических датчика установки, а также внутреннее состояние активации.
Изначально устройства поставляются производителем в состоянии PREACTIVATED. В данном состоянии крипто-функции устройства заблокированы, однако имеется возможность активировать устройство без обращения к производителю (можно воспользоваться соответствующей функцией в ПО ATMCheck).
Если клавиатура пребывает в состоянии, отличном от ACTIVATED, статус устройства fwDevice устанавливается в значение WFS_PIN_DEVOFFLINE. Для более детального представления о состоянии установки и активации служат extra-поля ACTIVATION_STATE и INSTALLATION_STATE (см. WFS_INF_PIN_STATUS).
В случае снятия активированной клавиатуры с УС, происходит переход в состояние NOT_ACTIVATED (REMOVED).
Для активации (или предварительной активации) клавиатуры, пребывающей в состоянии NOT_ACTIVATED (REMOVED) необходим код активации, который можно получить в центре активации Cryptera на основе предоставленных данных: серийный номер клавиатуры, случайное число клавиатуры и идентификатор оператора. Функция активации также доступна в ПО ATMCheck.
Примечание
Предварительная активация устройства удобна тогда, когда нет возможности выполнить активацию в полевых условиях (нет связи с центром активации).