Платежные симуляторы HSM с открытым исходным кодом

Tomcat

Professional
Messages
2,381
Reputation
4
Reaction score
407
Points
83
Большинство программных продуктов для карточных платежей представляют собой собственные решения, разработанные либо собственными силами, либо для коммерческой продажи. По этой причине в мире открытого исходного кода не так уж много возможностей , которые могли бы помочь вам разработать собственное решение. Однако есть несколько библиотек, о которых стоит упомянуть, особенно для моделирования и тестирования интеграции HSM.

Планируется, что эта статья будет обновляться со временем по мере того, как я буду узнавать о большем количестве этих пакетов.

Криптографические библиотеки​

Из-за различных отраслевых требований криптографическую обработку таких операций, как проверка PIN-кода, необходимо выполнять на специальных аппаратных устройствах, называемых HSM. Это аппаратные модули безопасности, которые представляют собой защищенные от несанкционированного доступа физические устройства, используемые для определенных типов обработки в мире платежей. Примеры операций, обычно выполняемых в HSM непосредственно с использованием платежных карт:
  • Генерация CVC/CVV (для персонализации карты) и верификация (во время авторизации)
  • Установка и проверка PIN-кода
  • Проверка EMV ARQC и генерация ARPC
Все эти операции являются особенными, поскольку для них требуется PAN в качестве одного из входных данных алгоритма. Таким образом, любой развернутый вами HSM будет полностью подпадать под аудит PCI DSS.

Эти операции выполняются на специальном оборудовании для обеспечения безопасности ПИН-кодов и криптографических ключей, используемых при обработке. Итак, если работа должна выполняться аппаратно, почему множество людей написали программные реализации этих алгоритмов с открытым исходным кодом?

Проще говоря, стоимость. HSM дорогие. Благодаря симулятору каждый разработчик фактически имеет собственный HSM на своем рабочем столе. Без симулятора dev HSM становится общим ресурсом, в некоторых случаях лицензируемым по количеству хостов, которым разрешено подключение.

Также полезно моделировать криптографическую обработку EMV, выполняемую на самой ICC («чип-карте»). Если вы пишете платформу обработки эмитента, вам необходимо иметь возможность рассчитывать тестовые значения для ARQC, как это делает чип на карте. Также существует код для фактического управления чипом на карте, форматирования соответствующих запросов, на которые он затем может ответить.

Некоторые сайты предоставляют веб-интерфейсы, через которые вы можете предоставить ключи и другие материалы, и они рассчитают для вас соответствующие ответы. Это будет темой другой статьи, но здесь мы сосредоточимся на библиотеках, реализующих эту функциональность. Даже если вы не найдете язык, поддерживающий нужный вам язык, они все равно могут быть полезными эталонными реализациями для понимания того, как работают алгоритмы и задействованные форматы данных.

Питон​

PyEMV — обеспечивает функциональность EMV, но не CVC/CVV или PIN-код.

Этот пакет предоставляет методы для генерации криптограмм приложения (TC, ARQC или AAC), созданных ICC, и криптограммы ответа на авторизацию (ARPC), созданной эмитентом и проверенной ICC. Кроме того, этот пакет поддерживает безопасную целостность и конфиденциальность сообщений.
Описание проекта PyEMV от PyPi

pythales – обеспечивает функции управления CVC/CVV, PIN-кодом и ключами. Не поддерживает функции EMV.

Примитивная реализация симулятора Thales HSM. Реализованы только основные (наиболее популярные) команды HSM:
– A0 – Генерация ключа
– BU – Генерация контрольного значения ключа
– CA – Преобразование PIN-кода из TPK в ZPK
– CY – Проверка CVV/CSC
– DC – Проверка PIN-кода
– EC – Проверка PIN-кода обмена с использованием метода ABA PVV
– FA – Перевод ЗПК от ЗМК к ЛМК
– HC – Генерация ТМК, ТПК или ПВК
– NC – Диагностическая информация
pythales Описание проекта из PyPi

EMVCAP – программная реализация устройства программы аутентификации чипа (CAP) .

Этот инструмент эмулирует устройство EMV-CAP, чтобы проиллюстрировать статью «Banque en ligne: a la decouverte d'EMV-CAP», опубликованную в MISC № 56.
О EMVCAP с github

EMV для Python — реализация программы аутентификации чипа (CAP) для генерации кодов аутентификации с использованием чиповых карт.

Pythonic-реализация протокола смарт-карт EMV, который используется во всем мире для платежей с использованием чипа и PIN-кода. Он предназначен для чтения, тестирования и перекрестных ссылок на соответствующие разделы спецификации EMV.
Сюда также входит реализация стандарта EMV CAP (он же Pinsentry), который, как известно, работает для карт Barclays.
EMV для описания проекта Python от PyPi

Джава​

elements – симулятор платежных HSM Utimaco Atalla, работающих в режиме AKB (Atalla Key Block). Этот симулятор поддерживает CVC/CVV, установку/проверку PIN-кода и проверку EMV ARQC/генерацию ARPC. У него также есть еще более ограниченный симулятор Thales HSM, но существуют и другие, более полные реализации.

Примечание: элементы — это фреймворк с широким набором функций; симуляторы HSM находятся в elements/security/src/main/java/net/e6tech/elements/security/hsm.

Поддерживаются следующие команды Atalla:
commands.put("00", Echo.class);
commands.put("5D", GenerateCVV.class);
commands.put("30", EncryptPIN.class);
commands.put("37", ChangePIN.class);
commands.put("32", VerifyPIN.class);
commands.put("31", TranslatePIN.class);
commands.put("7E", CheckDigits.class);
commands.put("11B", ImportWorkingKey.class);
commands.put("335", TranslatePINBlock.class);
commands.put("350", VerifyARQC.class);
Набор команд Elements Atalla Simulator с github

HSM Simulator – симулятор платежных HSM Atalla в режиме Variant. Этот симулятор ориентирован только на операции управления PIN-кодом и рабочими ключами и, по-видимому, не содержит функций CVC/CVV или EMV. Однако, если вы ищете эталонную реализацию на Java для обработки Atalla в Variant-режиме, вам следует обратить внимание на эту реализацию.

Поддерживается только вариантное управление ключами. Других режимов управления ключами пока нет.
Это Java-процесс, имитирующий аппаратный модуль безопасности финансовых услуг (HSM). Класс ServerProcess запускает текстовую службу TCP для имитации транзакции запроса/ответа HSM. config.properties содержит настройки времени выполнения и главные ключи.
HSM Simulator README.md с github

.NET​

ThalesSim — симулятор устаревших модулей HSM, совместимых с Racal и Thales, для платформы .NET. Код в основном написан на Visual Basic, с добавлением некоторого количества C# для наглядности. В отличие от большинства этих симуляторов, ThalesSim включает опцию режима графического интерфейса для мониторинга моделируемых операций HSM, а также возможность запуска в качестве службы.

Первоначально ThalesSim размещался на CodePlex , но он будет закрыт в июле 2021 года. Ссылка на github выше представляет собой разветвленную копию исходного кода.

Набор поддерживаемых команд довольно обширен и включает в себя как хостовые, так и консольные команды.

A0 Создать ключ
A2 Создать и распечатать компонент
A4 Сформировать ключ из зашифрованных компонентов
A6 Импортировать ключ
A8 Экспортировать ключ
AE Преобразовать TMK, TPK или PVK из LMK в TMK, шифрование TPK или PVK
AG Преобразовать TAK из LMK в шифрование TMK
AS Создать Пара VISA CVK
AU Перевод пары CVK с шифрования ZMK на LMK
AW Перевод пары CVK с шифрования LMK на ZMK
B0 Перевод схемы ключей
B2 Эхо-тест
BA Шифрует открытый текст PIN-кода
BC Проверка PIN-кода терминала, используя метод сравнения
BE Проверка обменного PIN-кода с использованием метода сравнения
BI Генерация BDK
BQ Трансляция PIN-кода из VISA в шифрование Racal
BU Генерация контрольного значения
BY Трансляция ZMK из ZMK в шифрование LMK
BW Трансляция ключей из старого LMK в новый LMK
CA Трансляция PIN-блока из TPK в шифрование ZPK
CC Трансляция PIN-блока из одного ZPK в другой
CI Трансляция PIN-кода из DUKPT в ZPK
CK Проверка PIN-кода DUKPT с использованием метода IBM
CM Проверка PIN-кода DUKPT с использованием метода VISA
CU Проверка и создание VISA PVV
CW Создание VISA CVV
CY Проверка VISA CVV
DA Проверка PIN-кода терминала с использованием метода IBM
DE Генерация смещения IBM
DC Проверка PIN-кода терминала с использованием алгоритма VISA
DG Генерация VISA PVV
DW Перевод BDK с шифрования ZPK на шифрование LMK
DY Перевод BDK с шифрования LMK на шифрование ZPK
EA Проверка обменный PIN-код с использованием метода IBM
EE. Получение PIN-кода с использованием метода IBM
EC. Проверка обменного PIN-кода с использованием алгоритма VISA.
FA Перевод ZPK из ZMK в шифрование LMK.
FC Перевод TMK, TPK или PVK из ZMK в шифрование LMK.
FE Перевод TMK, TPK или PVK из LMK в шифрование ZMK
FG Создать пару случайных PVK
FI Создать ZEK или ZAK
FK Перевести ZEK или ZAK из ZMK в шифрование LMK
FM Перевести ZEK или ZAK из LMK в шифрование ZMK
G0 Перевести PIN из DUKPT в ZMK (3DES)
GC Преобразование ZPK из LMK в шифрование ZMK
GG Формирование ZMK из трех компонентов
GM Хеширование блока данных
GY Формирование ZMK из двух-девяти компонентов
HA Генерация TAK
HC Генерация TMK, TPK или PVK
IA Генерация ZPK
JA Генерация случайный PIN-код
JC Перевод PIN-кода с шифрования TPK на LMK
JE Перевод PIN-кода с шифрования ZPK на шифрование LMK
JG Перевод PIN-кода с шифрования LMK на шифрование ZPK
K2 Проверка усеченной криптограммы приложения (альфа)
KA Генерация контрольного значения
KQ Проверка ARQC и генерация ARPC
LG Set Задержка HSM
LI Загрузка текстовой строки PIN-кода
M6 Генерация MAC
M8 Проверка MAC
MA Генерация MAC
MC Проверка MAC
ME Проверка и трансляция MAC
MG Преобразование TAK из LMK в шифрование ZMK
MI Преобразование TAK из ZMK в шифрование LMK
MQ Генерация MAC/MAB для большого сообщения
MS Генерация MAC/MAB с использованием ANSI X9.19
NC Выполнение диагностики HSM
NE Генерация и печать разделенных компонентов
NG Расшифровка зашифрованного PIN-кода
NK Цепочка команд
NO Состояние HSM
OA Печать почтового сообщения с запросом
OC Генерация и печать компонента ZMK
OE Генерация и печать случайного сообщения TMK, TPK или PVK
PA Загрузка данных форматирования
PC Загрузка дополнительных данных форматирования
PE Проверка данных запроса PIN-кода
PG Проверка криптографии почтовой программы запроса PIN-кода
PM Проверка динамического CVV
RA Отмена состояния авторизации
RC Проверка криптографии почтовой программы запроса PIN-кода
Поддерживаемые команды ThalesSim с github
 
Top