Безопасная аутентификация

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

Антифрод-терминал позволяет запрашивать ввод PIN-кода для используемого средства ЭП (смарт-карты или USB-токена) на своей клавиатуре. Это защищает от “троянов-кейлоггеров”, желающих заполучить PIN-код путём перехвата данных, вводимых на клавиатуре ПК.

Сценарий безопасной аутентификации при использовании смарт-карты

Антифрод-терминал содержит внутренний файрвол, который блокирует попытки ввода из приложения PIN-кода для подключенной смарт-карты, поддерживающей спецификацию EMV (в частности, JaCarta-2 ГОСТ или JaCarta ГОСТ). Такой файрвол защищает от попыток вредоносного ПО ввести перехваченный или подсмотренный PIN-код в карту программно из приложения. PIN-код для смарт-карты JaCarta ГОСТ, подключенной к Антифрод-терминалу, разрешается вводить только на самом терминале. Для этого предусмотрена специальная команда, которую прикладное ПО должно отправить на терминал, который в ответ на эту команду запросит у пользователя ввести PIN-код на своей клавиатуре и попытается “залогиниться” на смарт-карте с использованием этого PIN-кода.

../../../_images/pinenter.png

Прикладное ПО на стороне клиента

  • Отправляет на Антифрод-терминал команду, в соответствии с которой терминал запрашивает у пользователя PIN-код (см. примеры запроса PIN-кода).

Пользователь

  • Вводит PIN-код на клавиатуре терминала.

Антифрод-терминал

  • Перенаправляет введённый пользователем PIN-код на подключенную смарт-карту.
  • Возвращает прикладному ПО результат “логина” на смарт-карте.

Прикладное ПО на стороне клиента

  • Получив от Антифрод-терминала результат выполнения команды, в случае корректно введённого PIN-кода авторизует пользователя в личном кабинете.

Сценарий безопасной аутентификации при использовании USB-токенов

Предусмотрена специальная команда для Антифрод-терминала, в соответствии с которой Антифрод-терминал запрашивает PIN-код на своей клавиатуре, а после его ввода пользователем возвращает этот PIN-код прикладному ПО в качестве результата выполнения этой команды. При этом PIN-код возвращается в операционную систему ПК не в открытом, а в зашифрованном виде. Симметричный ключ шифрования терминал вырабатывает в соответствии с пунктом 5.2. VKO GOST R 34.10-2001 стандарта rfc4357. Библиотека из состава комплекта разработчика вырабатывает такой же ключ и выполняет расшифрование PIN-кода прозрачно для программы, вызвавшей команду запроса PIN-кода, возвращая ей этот код уже в открытом виде.

После получения PIN-кода от Антифрод-терминала прикладное ПО отправляет PIN-код на USB-токен обычным способом, как если бы этот код вводился на клавиатуре ПК. Рекомендуется использовать USB-токены JaCarta-2 ГОСТ или JaCarta ГОСТ с неизвлекаемым ключом электронной подписи.

Такая реализация защищает от “троянов-кейлоггеров”, желающих заполучить PIN-код путём перехвата данных, вводимых на клавиатуре ПК. Однако не защищает от перехвата PIN-кода в оперативной памяти ОС в ходе его передачи от прикладной программы на USB-токен. Поэтому при использовании USB-токенов в качестве средства ЭП для надёжной аутентификации рекомендуется делать дополнительный запрос аутентификации в личном кабинете на Антифрод-терминале. В этом случае сценарий безопасной аутентификации реализуется следующим образом:

Прикладное ПО на стороне сервера

  • Формирует последовательность из 8 байт для использования в качестве идентификатора журнала операций.
  • Отправляет эту последовательность прикладному ПО на стороне клиента.

Прикладное ПО на стороне клиента

  • Отправляет на Антифрод-терминал команду старта SWYX-режима работы Антифрод-терминала, передавая в качестве параметра reference полученный от сервера идентификатор журнала операций (см. пример старта SWYX-режима).
  • Отправляет на Антифрод-терминал команду, в соответствии с которой терминал запрашивает у пользователя подтвердить намерение войти в личный кабинет данного сервиса (см. пример отображения текста на экране Антифрод-терминала). Текст запроса может быть сформирован прикладной программой произвольным образом. Например: “Подтвердите аутентификацию на портале demo.aladdin-rd.ru”.
../../../_images/terminal_auth_request.png

Пользователь

  • Подтверждает своё намерение войти в личный кабинет путём нажатия кнопки OK на терминале.

Прикладное ПО на стороне клиента

  • Отправляет на Антифрод-терминал команду остановки SWYX-режима работы Антифрод-терминала (см. пример завершения SWYX-режима). В ответ на эту команду Антифрод-терминал подписывает внутренний журнал операций своей ЭП по ГОСТ Р 34.10-2001 и возвращает журнал вместе с подписью в прикладное ПО в качестве результата выполнения этой команды.
  • Отправляет на сервер журнал вместе с подписью.

Прикладное ПО на стороне сервера

  • Осуществляет идентификацию ранее зарегистрированного в системе терминала (см. пример идентификации).
  • Осуществляет аутентификация терминала (см. пример аутентификации).
  • Проверяет соответствие текста, отображённого на терминале (который пользователь видел и подтвердил), тексту, который должен был быть отображён на терминале в соответствии с заложенной логикой работы прикладного ПО, например, “Подтвердите аутентификацию на портале demo.aladdin-rd.ru” (см. пример проверки соответствия реально отображённого на терминале текста и ожидаемого).
  • Если отображенный текст соответствует ожидаемому, сервер передаёт управление прикладному ПО на стороне клиента.

Прикладное ПО на стороне клиента

  • Отправляет на Антифрод-терминал команду, в соответствии с которой терминал запрашивает у пользователя PIN-код (см. примеры запроса PIN-кода).
../../../_images/pin_enter.png

Пользователь

  • Вводит PIN-код на клавиатуре терминала.

Антифрод-терминал

  • Возвращает введённый пользователем PIN-код прикладному ПО в качестве результата выполнения команды запроса PIN-кода.

Прикладное ПО на стороне клиента

  • Получив от Антифрод-терминала PIN-код, отправляет его на USB-токен обычным способом, как если бы этот код вводился на клавиатуре ПК.