PayControl (далее - PC) – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.
PC призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.
При помощи PC могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определенной информацией.
PC состоит из двух частей: Серверной и Клиентской.
PC Server
Интегрируется с серверной частью прикладной системы (ДБО или ЭДО) и выполняет следующие функции:
PC External
Выполняет функции по взаимодействию с мобильными приложениями, включая:
PC Pusher
Выполняет функции по отправке в мобильное приложение push-уведомлений о необходимости подтверждения транзакций. PC Pusher представляет собой приложение для развёртывания в рамках существующего сервера приложений. Доступ к функциям PC Pusher со стороны прикладной системы не осуществляется. С ним взаимодействует только PC Server.
PC Server Signer
Компонент back-end, имитирующий работу мобильного приложения Клиента в части генерации и хранения ключей, подтверждения транзакций и т.д., но управляемый прикладной системой. PC Server Signer предназначен для реализации сценариев подписания, протекающих на серверной стороне прикладной системы.
АРМ Разбора конфликтных ситуаций
Предоставляет из себя веб-интерфейс пользователя и предназначен для получения подробной информации о пользователях PC, транзакциях, подписаниях, устройствах и т.д. Также генерирует отчеты, которые могут предоставляться комиссиям по разрешению конфликтов в качестве доказательных материалов.
Представляет собой приложение для мобильных платформ iOS (13 и выше) и Android (5 и выше), выполняющее следующие функции:
Клиентская часть поставляется в виде встраиваемых библиотек для интеграции в мобильное приложение или отдельного приложения.
Использование PC подразумевает, что подписание транзакции выполняется на стороне Пользователя прикладной системы (системы дистанционного банковского обслуживания – ДБО/электронного документооборота – ЭДО) в его мобильном телефоне.
Для этого у Пользователя есть его ключи, вся информация для онлайн-взаимодействия (URL’ы, данные для идентификации и пр.), а также необходимые для работы настройки.
С целью упрощения логики работы прикладной системы для получения подписи ей необходимо просто передать на подпись набор данных на сервер PC и дождаться уведомления от сервера PC о подписании Пользователем. Результат (подпись и результат её проверки) передаётся прикладной системе в виде обратного вызова.
Данная схема приведена на Рисунок 2:
Пояснения по схеме на Рисунке 2:
В данной схеме не имеет значения источник документа, т.е. как он появился на стороне прикладной системы. Он может быть создан в веб-интерфейсе, в мобильном приложении, может быть создан автоматически.
Это отражено на Рисунке 3:
«Пользователь PC» - это сущность, однозначно сопоставляемая с обезличенным уникальным идентификатором, к которому в дальнейшем привязывается вся информация о действиях этого пользователя в PC:
В рамках PC информация никогда не удаляется, за исключением очистки данных транзакций после того, как транзакция подтверждена/отменена (при этом сохраняется хэш-сумма данных (SHA-256)).
Это позволяет в любой момент времени выяснить:
Ключевая информация пользователя в PC состоит из следующих данных:
I Описательная информация:
II Ключевая информация:
Ключи KHMAC и КAUTH генерируются серверной частью PC и возвращаются прикладной системе для дальнейшей их передачи пользователю одним из предусмотренных способов. Данные ключи представляют собой случайные данные длиной по 32 байта каждый и используются для выработки кодов аутентификации сообщений (HMAC).
Ключевая пара KPRIVATE и KPUBLIC генерируются пользователем (клиентской частью), после чего ключ KPUBLIC регистрируется на сервере и используется для проверки подписи. Регистрация ключа KPUBLIC выполняется с контролем целостности и авторства на основе ключей KHMAC и КAUTH. Данные ключи формируются по алгоритму ECDSA с параметрами prime256v1 либо на основе алгоритма ГОСТ 34.10-2012.
Срок действия ключей задаётся на серверной части и устанавливается в момент формирования записи о ключах Пользователя, включая KHMAC и КAUTH. Так как за проверку результата подписания, а также за аутентификацию запросов, отвечает сервер PC, то контроль срока действия осуществляется на серверной части.
Значение срока действия по умолчанию – 1 год с момента генерации. Данное значение является параметром конфигурации и может быть изменено без ограничений при настройке сервера PC.
Доступ к ключевой информации, хранящейся на мобильном устройстве (KНМАС, KPRIVATE), для последующего формирования электронных подписей и кодов подтверждения возможен только после разблокировки устройства и ввода пароля, TouchID/FaceID или Google Fingerprint в приложении. Минимальная длина пароля составляет 6 символов. Требования к сложности пароля могут быть определены конфигурацией сервера.
Ни пароль, ни какие-либо значения на основе пароля (например, значение хэш-суммы пароля) ни в какой форме не сохраняются в памяти мобильного телефона.
Ключевая информация (KНМАС, KAUTH), передаваемая сервером PC, хранится следующим образом:
Кража сохраненных ключей или данных мобильного приложения, а также любая возможная модификация кода мобильного приложения бесполезны без знания пароля доступа к ключевой информации и ключа, который хранится в аппаратном обеспечении смартфона.
Схема хранения ключей:
Схема хранения ключей в PayControl ГОСТ:
Процесс подписания может быть осуществлен только на разблокированном устройстве, когда открыто приложение (PayControl App/SDK).
Подписание состоит из двух этапов:
и предполагает следующий порядок действий:
Схема генерации электронной подписи и кода подтверждения:
Схема генерации электронной подписи и кода подтверждения в PayControl ГОСТ:
Для шифрования используется алгоритм AES-256 или ГОСТ 28147-89.
Для вычисления HMAC используется функция SHA-256 или ГОСТ 34.11-2012.
SHA-256 или ГОСТ 34.11-2012 используется для PBKDF2 с 2000 итераций.
RSA/ECDSA(prime256v1)/AES-256 используется в качестве аппаратного KEK в зависимости от платформы и версий операционной системы.
В разделе "Персонализация мобильного приложения" вы можете найти, что первоначальный набор ключей (KHMAC и КAUTH) должен быть сгенерирован сервером PC и предоставлен мобильному приложению с данными персонализации.
Эти ключи могут быть предоставлены в зашифрованном виде, и KEK для шифрования основан на key_export_password или activation_code.
Может возникнуть сценарий, когда злоумышленник перехватит зашифрованные ключи и попытается найти key_export_password или activation_code с помощью грубой силы. Особенно, если приложение действительно использует слабые коды активации или пароль для экспорта.
В то же время существует другой сценарий, когда злоумышленник имеет неограниченный доступ к разблокированному телефону пользователя и пытается угадать пароль пользователя для расшифровки ключей подтверждения.
Чтобы предотвратить это, на PC предусмотрена онлайн-схема проверки учетных данных.
Схема основана на следующих принципах:
В дополнение:
Для авторизации доступа к функциям PC External со стороны клиентской части каждый запрос сопровождается кодом аутентификации запроса. Он имеет такие же свойства, как и код подтверждения, а именно:
Запрос на предоставление информации со стороны PC External будет выполнен только в том случае, если проверка кода аутентификации будет пройдена успешно. В противном случае результатом запроса будет ошибка.
Код аутентификации представляет собой функцию:
AUTHCODEHTTP-Request = HMAC (KAUTH, RequestBody), где
HMAC – функция выработки кода аутентификации сообщения в соответствии с RFC2104, основанная на хеш-функции SHA-256;
KAUTH – ключ для генерации кодов аутентификации;
RequestBody – тело HTTP-запроса, отправляемого на сервер PC External.
Значение кода аутентификации помещается в HTTP-заголовок Authorization и проверяется на стороне сервера путем вычисления собственного кода, относящегося к пользователю, и его сравнения с представленным значением. Проверка состоит из следующих шагов:
В случае идентичности кодов запрос считается аутентифицированным и передаётся в дальнейшую обработку.
Персонализация мобильного приложения подразумевает несколько шагов, выполняемых последовательно:
Схемы вариантов персонализации приведены на схемах ниже:
Рисунок 7 - Автоматическая персонализация устройства
Рисунок 8 - Персонализация устройства с помощью QR
Рисунок 9 - Персонализация устройства двумя каналами
Подпись данных транзакции вырабатывается на основе 4-х составляющих:
PC предоставляет возможность подтверждения данных в онлайн- и офлайн-режимах.
Для подтверждения в офлайн-режиме подпись должна представлять собой последовательность, которая может быть предоставлена пользователем в ручном режиме для дальнейшей проверки. Другими словами, код подтверждения должен быть длиной не более 10 символов.
С целью получения подписи такой длины с соблюдением условия его зависимости от нескольких составляющих, необходимо использование симметричной криптографической операции с последующим «укорачиванием» результата по определенному алгоритму. Это необходимо для того, чтобы проверяющая сторона могла вычислить такое же значение, укоротить его по тому же алгоритму и сравнить результат.
При работе в онлайн-режиме ручных операций от пользователя не требуется. Поэтому есть возможность использования асимметричных алгоритмов, основанных на паре открытый-закрытый ключ. Значение электронной подписи может быть предоставлено в полном виде путем онлайн-обмена.
Поэтому в PC подпись вырабатывается в трех значениях:
Код подтверждения (полный и «укороченный») представляет собой функцию:
HMACMESSAGE = Truncate (HMAC (KHMAC, Data+UserID+Отпечаток+T), D), где
HMAC – функция выработки кода аутентификации сообщения в соответствии с RFC2104, основанная на хеш-функции SHA-256;
KHMAC – ключ для генерации HMAC сообщения;
Data – данные транзакции в формате TLV;
UserID – идентификатор пользователя в PC в формате TLV;
Отпечаток – отпечаток устройства в формате TLV;
T – дискретное значение времени, интервал дискретизации – по умолчанию 180 секунд (настраиваемое значение) в формате TLV;
Truncate – функция обрезания значения HMAC до D десятичных знаков; допустимые значения D – от 6 до 10; при D = 0 используется полное значение HMAC.
Операция «+» означает конкатенацию значений байтов.
При этом при работе в режиме онлайн PC Server принимает для проверки только «полные» коды подтверждения (D = 0), представляющие собой последовательность из 32 байт.
При работе в офлайн режиме возможно использование кодов, ограниченных длиной от 6 до 10 десятичных символов, так как пользователю необходимо предоставить их вручную.
Асимметричная подпись представляет собой функцию:
SIGNATUREMESSAGE = SIGN (KPRIVATE, Data+UserID+Отпечаток+T), где
SIGN – функция выработки электронной подписи по алгоритму ECDSA (prime256v1);
KPRIVATE – закрытый ключ из ключевой пары пользователя;
Data – данные транзакции в формате TLV;
UserID – идентификатор пользователя в PC в формате TLV;
Отпечаток – отпечаток устройства в формате TLV;
T – дискретное значение времени, интервал дискретизации – по умолчанию 180 секунд (настраиваемое значение) в формате TLV;
Операция «+» означает конкатенацию значений байтов.
Если клиентская часть имеет возможность вычислить и передать асимметричную подпись (сформирована ключевая пара и открытый ключ зарегистрирован на сервере), то сервер примет попытку подтверждения только если значения SIGNATUREMESSAGE и HMACMESSAGE проходят проверку одновременно.
Если клиентская часть не имеет возможность вычислить или передать значение подписи (открытый ключ не зарегистрирован на сервере, мобильный телефон офлайн, используется офлайн-подтверждение), то сервер примет подтверждение только по HMACMESSAGE.
Проверка подписи выполняется путем последовательной проверки корректности HMACMESSAGE и SIGNATUREMESSAGE.
Проверка HMACMESSAGE включает следующие шаги:
Проверка считается успешной в случае идентичности значений.
Если источник запроса – онлайн-подтверждение, то выполняется проверка значения SIGNATUREMESSAGE:
Verify - функция проверки электронной подписи по алгоритму ECDSA (prime256v1).
Проверка считается успешной в случае положительного результата функции Verify.
Для подписания данных с использованием PC выполняется следующая последовательность действий (см. пункт «Принцип работы»):
В описанном сценарии получение пользователем push-уведомления не является обязательным условием подтверждения транзакции. Мобильное приложение имеет возможность самостоятельно запустить клиентскую часть PC и получить список транзакций для подтверждения. Схема работы приведена на Рисунке 10:
Рисунок 10 - Схема подписания документа
В качестве дополнительной меры по соблюдению законодательства сервер PC может вычислять дополнительный серверный HMAC (также называемый имитовставкой (imit value)) с помощью специализированного криптопровайдера.
На данный момент поддерживается только один криптопровайдер - CryptoPro JCP, версия 2.0.41943.
В случае, если эта функция включена, то:
Заключительные шаги процесса подписания будут выглядеть следующим образом:
Рисунок 11 - Имитовставка
Проверка подписи, сформированной ранее, выполняется путем запроса от прикладной системы на сервер PC с передачей данных для проверки: содержания документа и всех компонентов подписи (время, подпись SIGNATUREMESSAGE, симметричный код HMACMESSAGE и пр.).
То есть при необходимости проверки подписи Прикладная система:
PC при этом самостоятельно выберет ключи, которые были использованы для формирования подписи в указанное время, и выполнит проверку с их использованием.
PC может использоваться не только для подтверждения операций (подписи), но и для аутентификации пользователей. Условием для проведения аутентификации, также, как и для подтверждения транзакций, является наличие у пользователя ключей PC.
Так как электронная подпись основана на времени, [опционально] отпечатке устройства, ключах и данных, то первые три составляющих могут использоваться для аутентификации. В этом случае в качестве данных может быть принят заранее известный серверу и клиенту набор данных, который клиент подтвердить путем выработки подписи.
Например, в качестве данных могут использоваться:
Если значение формируется на сервере, то оно может быть передано клиенту для подтверждения. Если же клиентское приложение также знает принцип формирования данных – оно может сразу вычислить электронную подпись и предоставить её серверу для подтверждения личности пользователя.
Ключи пользователя PC имеют ограниченный срок действия, который задаётся настройками сервера PC. Они могут быть обновлены двумя разными способами:
Обновление ключей подразумевает, что текущие ключи помечаются как «удаленные», а взамен них формируются новые, при помощи которых должна быть выполнена персонализация Клиентской части. На Клиентской части ключи, которые выводятся из обращения, должны быть удалены (заменены).
При обновлении инициируемым Клиентской частью, мобильное приложение имеет возможность запросить у сервера PC обновление ключей, подтвердив личность запрашивающего действующими ключами.
Схема обновления со стороны Клиентской части приведена на Рисунке 12.
Рисунок 12 - Обновление ключей
PC позволяет выполнить временную блокировку пользователя. Блокировка подразумевает, что запросы от имени заблокированного пользователя не будут выполняться серверной частью PC. А именно:
Остаются доступными следующие функции:
Блокировка/разблокировка осуществляется запросом со стороны прикладной системы к серверной части PC с указанием идентификатора пользователя.
Удаление пользователя подразумевает, что дальнейшее использование записи о пользователе возможно только для проверки подписей, сформированных ранее от его имени.
Все ключи пользователя помечаются как удаленные.
При компрометации ключей возможно выполнение одного из сценариев:
Выбор сценария зависит от бизнес-процессов прикладной системы.
PC использует различные криптографические алгоритмы для реализации требований к ПО / оборудованию / безопасности. Всего существует 2 набора:
Какие алгоритмы использовать, определяется приложением или конфигурацией сервера PC.
PC предусматривает два варианта реализации криптографических алгоритмов:
Вариант по умолчанию:
Сервер PC: Bouncy Castle;
PC Mobile SDK для iOS: интегрированные функции iOS + Apple Secure Enclave;
PC Mobile SDK для Android: интегрированные функции Android + Google KeyStore.
Вариант ГОСТ:
Сервер PC: CryptoPro JCP, версия 2.0.41943
PC Mobile SDK для iOS: CryptoPro CSP, версия 5.0
PC Mobile SDK для Android: CryptoPro CSP, версия CSP 5.0
При использования варианта ГОСТ электронные подписи генерируются на мобильном устройстве, используя сертифицированное средство CryptoPro CSP.