Настройки DSS SDK
В разделе приведено описание различных настроек метода аутентификации через Мобильное Приложение.
- Общие настройки
- Тип подтверждения операций с пакетом документов
- Выбор хранения ключа подписи
- Регистрация прикладных систем
- Защита от атак повтором
- Время хранения данных об операциях
- Настройки с ограниченным временем действия
Общие настройки
Общие настройки аутентификации при помощи мобильного приложения на базе DSS SDK выполяются с использованием следующих командлетов.
Настройки можно разделить на несколько групп:
Общие настройки
MyDssKeyProtectionType
Определяет режим использования мобильного приложения. Возможные значения: Strong, Weak.
- Strong - (сертифицированный режим работы) мобильное приложение должно использовать UI, предоставляемый DSS SDK.
- Weak - мобильное приложение может использовать только API DSS SDK, не используя UI, предоставляемый DSS SDK.
DeviceFingerprintRequired
Привязывает ключи аутентификации к отпечатку устройства. Является дополнительной мерой защиты при аутентификации пользователя при помощи мобильного приложения.
Примечание
Отпечаток устройства является уникальным идентификатором, создаваемым DSS SDK для устройства, на котором установлено мобильное приложение.
MyDssTimeStep
Временная дельта, используемая для вычисления кода аутентификации при обращении мобильного приложения к серверу. По умолчанию равна 180 секундам.
Внимание!
Значение параметра MyDssTimeStep
изменять нельзя.
MyDssTimeWindow
Количество временных дельт, используемых при проверке кода аутентификации на сервере. По умолчанию равен 1.
Примечание
Параметр позволяет настраивать допустимое расхождение времени между мобильным устройством и сервером.
По умолчанию допустимое расхождение времени 4-5 минут.
Параметр MyDssTimeWindow
устанавливает допустимое расхождение времени в 180*X секунд.
Инициализация мобильного устройства при помощи сверки уникального идентификатора
MyDssSelfRegEnabled
Включить/отключить сценарий инициализации мобильного приложения при помощи сверки уникального идентификатора (анонимная регистрация устройства). Указанный сценарий описан в разделе 5.1 Общего описания.
GeneratedAliasLength
Длина уникального идентификатора, который используется в сценарии инициализации мобильного приложения.
Идентификатор представляет собой строку, состоящую из прописных латинских букв (за исключением I, J, O, S) и цифр от 0 до 9, и необходим для поиска и привязки мобильного устройства к учетной записи пользователя. Длина уникального идентификатора может составлять от 6 до 12 символов.
Примечание
Для создания усиленной квалифицированной электронной подписи минимальная длина уникального идентификатора составляет 7 символов.
Подтверждение привязки мобильного устройства при помощи сертификата
CertifyWithUntrustedIssuers
Разрешить использование сертификатов, выпущенных недоверенными издателями, для подтверждения привязки устройства к учётной записи пользователя.
Описание сценария иницализации в п. 5.4 Общего описания
Доверенные издатели должны быть размещены в хранилище сертификатов, заданном в параметре
TrustedIssuersStoreName
.
TrustedIssuersStoreName
Имя хранилища сертификатов доверенных издателей.
По умолчанию имя хранилища имеет следующее значение: [sts app name] myDSS Trusted Issuers
Примечание
Если CertifyWithUntrustedIssuers = false и в хранилище сертификатов TrustedIssuersStoreName нет ни одного сертификата, то сценарий подтвреждия привязки мобильного устройства по сертификату отключен.
Инициализация мобильного приложения при помощи QR-кода
MyDssServiceUrl
Адрес Сервиса взаимодействия с DSS SDK. Данный адрес передаётся только в QR-коде и используется мобильным приложением для получения долговременных ключей аутентификации.
Примечание
Если зарегистрирована одна или несколько прикладных систем, то адрес взаимодействия будет получен из настроек выбранной для создания QR-кода системы.
KInitLifeTimeDays
Параметр определяет срок жизни QR-кода. Значение параметра задаётся в днях. По умолчанию срок жизни QR-кода составляет 7 дней.
KeyInfoDivideRequired
, KeyInfoDivideByUserRequired
Включить/отключить использование кодов активации. Код активации представляет собой пароль для доступа к данным, передаваемым в QR-коде. Использование кодов активации настраивается независимо для Пользователей и Операторов КриптоПро DSS. Например, QR-код создаваемый Оператором DSS для пользователя, может быть защищён кодом активации, а QR-код, создаваемый пользователем для себя, не защищен.
Примечание
- Код активации может быть отправлен в SMS или по электронной почте.
- Код активации может быть отправлен только средствами КриптоПро DSS.
- Для использования кодов активации в КриптоПро DSS должен быть настроен соответствующий модуль оповещения.
- Перед созданием QR-кода для привязки мобильного устройства у пользователя должны быть заданы соответствующие типу доставки контактные данные (номер телефона или адрес электронной почты).
KeySecondPartLength
Длина кода активации. Код активации не может быть короче 6 цифр.
MultiusableKInit
Тип использования QR-кода.
- true - один QR-код может быть использован для привязки нескольких мобильных устройств.
- false - (по умолчанию) QR-код может быть использован для привязки только одного мобильного устройства.
QrCodeDisplayFormat
Способ(-ы) отображения QR-кода в Веб-интерфейсе DSS. Возможные значения:
- Screen - Вывод QR-кода на экран.
- File - Сохранение QR-кода в файл.
- Frame - Отображение QR-кода на отдельном экране.
- PrintOnly - Отправка QR-кода на печать без отображения.
SendQrCodeByEmailPermitted
Включить/отключить отправку QR-кодов по электронной почте средствами КриптоПро DSS.
Для отправки QR-кодов должен быть настроен модуль оповещения типа Email. Перед созданием QR-кода для привязки мобильного устройства у пользователя в профиле должен быть задан адрес электронной почты.
Требования к защите ключей аутентификаци
PasswordPolicy
Требования к сложности пароля на ключ аутентификации.
DenyOSProtection
Разрешает/запрещает использование биометрии для защиты ключей аутентификации.
Требования к подтверждению привязки мобильного устройства к учётной записи
NonceVerificationRequired
Использовать QR-код для подтверждения привязки мобильного устройства к учётной записи пользователя.
Примечание
Данный тип QR-кодов может быть использован только в сценариях Online-регистрации мобильного устройства.
ProfileChangesVerificationRequired
Требовать повторного подтверждения привязки мобильного устройства к учётной записи пользователя в случае изменения данных в профиле пользователя.
IncludeLoginInProfile
Включать общие сведения учётной записи в данные, отображаемые пользователю при подтверждении привязки мобильного устройства к учётной записи. Подробнее см. описание параметра LoginType
LoginType
Виды общих сведений об учётной записи пользователя:
- None - не включать данные
- Login - логин пользователя
- DispalyName - отображаемое имя пользователя
- UserId - идентификатор пользователя DSS
- Phone - номер телефона
- Email - адрес электронной почты
Примечание
Параметры IncludeLoginInProfile
и LoginType
следует задавать, если профиль пользователя не заполняется.
Тип подтверждения операций с пакетом документов
DocumentSelectionMode
Настройками сервиса можно задать тип обработки операций с пакетом документов в мобильном приложении. Возможны следующие сценарии:
ForceEntirePacketOperation
- подтверждение/отклонение всех документов в пакетеForcePartialPackageOperation
- возможность частичного подтверждения/отклонения всех документов в пакетеNone
- определяется мобильным приложением
Примечание
В сценариях ForceEntirePacketOperation
, ForcePartialPackageOperation
настройки мобильного приложения игнорируются.
Пример:
Set-DssMyDssProperties -DocumentSelectionMode ForcePartialPackageOperation
Операции инициированные в мобильном приложении
Пользователь при помощи мобильного приложения может отправлять документы на подпись и создавать запросы на сертификат.
Для отключения данных возможностей необходимо настроить сервис DSS API Gateway при помощи командлета Get-MdagProperties :
DisableClientInitiatedSignature
- true/false - запретить подпись документовDisableClientInitiatedCertRequest
- true/false - запретить создание запросов на сертификаты
Если данные настройки включены (значения установлены в true
), то пользователю в мобильном приложении будут доступны только следующие действия:
- подтверждение операций, созданных на стороне сервера (прикладной системой),
- обработка запросов на сертификат, созданных на стороне сервера (прикладной системой).
Пример:
Set-MdagProperties -DisableClientInitiatedCertRequest true
Выбор способа хранения ключа подписи
При создании запроса на сертификат в мобильном приложении пользователю будет доступен выбор нескольких ключевых носителей:
- на сервере
- на устройстве пользователя, на Рутокен NFC
Настройками сервиса можно запретить один из типов ключевых носителей:
DisableClientKeys
- true/false - запретить хранение ключей на устройстве пользователя или на Рутокен NFC,DisableServerKeys
- true/false - запретить хранение ключей на сервере.
Пример:
Set-MdagProperties -DisableServerKeys true
Регистрация прикладных систем
Регистрация прикладных систем необходима в случаях, когда требуется:
- отправлять PUSH-уведомления в мобильное приложение на базе DSS SDK средствами КриптоПро DSS;
- реализовывать различные бизнес-процессы с помощью нескольких различных мобильных приложений на базе DSS SDK.
Необходимость регистрации прикладной системы нужно определить на этапе внедрения аутентификации при помощи мобильного приложения на базе DSS SDK. Если зарегистрировать прикладную систему после начала эксплуатации КриптоПро DSS c аутентификацией через мобильное приложение, это может привести к некорректной работе ранее зарегистрированных пользователей и потребует повторной регистрации мобильных приложений (либо ручного изменения сведений о ранее зарегистрированных мобильных устройствах пользователей в базе данных).
Управление прикладными системами производится с помощью следующих командлетов:
При регистрации прикладной системы регистрируется OAuth-клиент и модули оповещения для рассылки Push-уведомлений (опционально). В свойствах зарегистрированного OAuth-клиента и модуля оповещения сохраняется идентификатор прикладной системы. Идентификатор OAuth-клиента и его секрет должны быть прописаны в настройках соответствующего Сервиса взаимодействия с DSS SDK.
Посредством идентификатора прикладной системы КриптоПро DSS разделяет настройки, мобильные приложения и операции, принадлежащие различным прикладным системам.
Соответственно если один экземпляр Центра Идентификации должен работать с несколькими различными мобильными приложениями, то должны быть зарегистрированы и настроены следующие параметры:
- несколько прикладных систем (Add-MyDssSystem)
- несколько сервисов взаимодействия с мобильным приложением (New-MdagInstance)
Регистрация нескольких прикладных систем влияет на процесс инициализации мобильных приложений и подтверждение операций:
Для корректной реализации сценария инициализации при помощи сверки уникального идентификатора каждое мобильное приложение должно взаимодействовать с сервисами DSS через выделенный для неё Cервис взаимодействия с DSS SDK (MDAG).
Для корректной реализации сценария инициализации при помощи QR-кода необходимо указать идентификатор прикладной системы, для которой создаётся QR-код. В QR-коде передаётся URL-адрес Сервиса взаимодействия с DSS SDK (MDAG). Данный адрес берётся из настроек прикладной системы (командлет Get-MyDssSystem, параметр
-MyDssAddress
).Если к учётной записи пользователя привязано несколько различных мобильных приложений, то при создании операции для подтвреждения в мобильном приложении требуется указать идентификатор прикладной системы. Указанный идентификатор прикладной системы служит для выбора мобильного приложения, через которое требуется подтвердить операцию.
Примечание
Если отправка Push-уведомлений средствами КриптоПро DSS не требуется, но планируется использовать несколько различных мобильных приложений, то всё равно необходимо зарегистрировать прикладные системы для каждого из мобильных приложений для того, чтобы разделять операции, создаваемые для каждой из прикладных систем.
В противном случае, если не регистрировать прикладные системы, каждое из мобильных приложений будет видеть все операции, создаваемые для пользователя.
Регистрация нескольких прикладных систем может потребоваться в тестовых целях при разработке мобильного приложения на базе DSS SDK на платформе iOS. Необходимо зарегистрировать приладные системы для возможности отправки Push-уведомлений в режиме Sandbox и Production.
Защита от атак повтора
Для аутентификации через мобильное приложение на базе DSS SDK в DSS SDK реализована защита от атак повтором (Replay Attack). Код аутентификации, отправляемый DSS SDK, действует не более 180 сек. Если злоумышленник перехватит запрос пользователя и соответствующий ему код аутентификации, то он может повторно отправить данный запрос и код аутентификации.
Для защиты от атак повтора (Replay Attack) DSS SDK добавляет к каждому коду аутентификации одноразовый код,
представляющий собой большое случайное число (nonce
). КриптоПро DSS сохраняет полученные коды аутентификации и одноразовый код.
При проверке кода аутентификации КриптоПро DSS проверяет, что переданная пара (код аутентификации и nonce) ренее не встречались.
Если КриптоПро DSS обнаружит повторную отправку кода аутентификации и nonce, то соответсвующая учётная запись пользователя будет заблокирована.
Злоумышленник не может подменить nonce в перехваченном запросе, так как nonce участвует в вычислении кода аутентификации. Злоумышленник не знает закрытый ключ пользователя, используемый для вычисления кода аутентификации.
Примечание
Взаимодействие DSS SDK с сервером происходит только по протоколу ГОСТ-TLS.
В КриптоПро DSS реализовано несколько механизмов хранения и очистки кодов аутентификации и nonce. Настройка параметров хранения и очистки выполняется с помощью следующих командлетов.
По умолчанию коды аутентификации и nonce сохраняются в базе данных Центра Идентификации, устаревшие записи (старше 180 секунд) очищаются раз в минуту блоками по 100 записей.
При большом количестве запросов от пользователей механизм очистки может создавать избыточную нагрузку на базу данных, что может сказываться на времени выполнения других обращений к Центру Идентификации DSS. Для устранения негативных последствий очистки устаревших кодов аутентификации и nonce существует возможность включить очистку с указанием точного времени. В качестве точного времени стоит указать время наименьшей нагрузки на сервисы DSS. Ниже приведен пример очистки кодов аутентификации и nonce с точным временем запуска в 2 часа ночи:
Set-DssStsAuthnAssertinosEraser -EraseMode FixedTime -Times "02:00:00"
Примечание
В случае фиксированного времени запуска очистки устаревших записей пулл приложений Центра Идентификации должен быть активен в данное время. Активность пулла поддерживается либо наличием запросов от пользователей (или систем мониторинга Health Check) или настройками пулла на сервере приложений IIS - режим AlwaysRunning.
Код аутентификации и nonce сохраняются в таблице AuthnAssertions базы данных Центра Идентификации (по умолчанию IdentityServiceDb).
Также существует возможность переключить режим хранения кодов аутентификации и nonce на хранение в оперативной памяти:
Set-DssStsAuthnAssertinosEraser -StoreMode Memory
Если настроен режим хранения в оперативной памяти, то следует настроить периодическую очистку устаревших кодов аутентификации и nonce. Очистка с фиксированным временем запуска может привести к исчерпанию оперативной памяти при большом количестве запросов от пользователей.
Set-DssStsAuthnAssertinosEraser -StoreMode Memory -EraseMode Periodic -Times "00:01:00"
Ниже приведены параметры хранения и очистки кодов аутентификации и nonce
Параметр | Описание |
---|---|
IsEnabled | Включить/отключить очистку устаревших записей. |
Times | Время очистки. По умолчанию одна минута (00:01:00). Формат: hh:mm:ss. |
EraseMode | Способ очистки устаревших записей. По умолчанию: Periodic. Возможные значения: FixedTime, Periodic. |
StoreMode | Способ хранения записей. По умолчанию Database. Возможные значения: Database, Memory. |
BatchSize | Размер блока удаляемых за одну итерацию записей. По умолчанию 100. |
Время хранения данных об операциях
Очистка данных об операциях
Данные и состояние подтверждаемых пользователем операций сохраняются в базе данных
Сервиса Обработки Документов (по умолчанию имя БД OperationStoreDb
).
По умолчанию данные подтверждаемых операций хранятся бессрочно.
В КриптоПро DSS реализован механизм удаления устаревших данных о подтверждаемых операций. Настройка выполняется при помощи следующих командлетов:
- Get-DssStsOperationEraser
- Set-DssStsOperationEraser
Данные командлеты позволяют настроить время хранения данных об операциях и период очистки.
Параметр | Описание |
---|---|
IsEnabled | Включить/отключить очистку устаревших данных. |
Times | Точное время запуска очистки устаревших данных. Формат: hh:mm:ss. |
OperationLimitInMinutes | Время хранения данных об операциях в минутах. При очистке будут удалены все записи, созданные ранее указанного времени. |
BatchSize | Размер блока удаляемых за одну итерацию записей. По умолчанию 100. |
Время хранения записей OperationLimitInMinutes
необходимо указывать не менее времени подтверждения операции и времени выполнения операции.
Время подтверждения операции задается на Центре Идентификации - параметр OtpConfirmationTimeOut
командлетов Get-DssStsProperties
/Set-DssStsProperties
.
Время выполнения операции задаётся на Сервисе Подписи - параметр TokenTimeout
командлетов Get-DssProperties
/Set-DssProperties
.
Если прикладная система использует API DSS для получения сведений о выполненных операциях, то время хранения данных об операция нужно задавать, исходя из требований прикладной системы.
Например, прикладной системе необходимо собирать статистику о пользовательских операциях в течении месяца, тогда необходимо задать значение -OperationLimitInMinutes
равным 44640.
Если прикладной системе необходимо иметь возможность повторно выгрузить подписанные и/или исходные документы, можно использовать их идентификаторы в DSS.
Идентификаторы подписанных и исходных документов, хранимых в Сервисе Обработки Документов, хранятся
в данных операции. В данном случае в Сервисе Обработки Документов должно быть настроено соответствующее время хранения документов.
Примечание
Пул приложений Центра Идентификации должен быть активен в указанное время очистки от устаревших записей. Активность пула поддерживается наличием запросов от пользователей (или систем мониторинга Health Check) или настройками пула на сервере приложений IIS - режим AlwaysRunning.
Настройки с ограниченным временем действия
При настройке метода аутентификации через мобильное приложение создаются два объекта с ограниченным сроком действия:
- Профиль криптопровайдеров
- OAuth-клиент для сервиса взаимодействия с мобильным приложением
Администратору DSS необходимо следить за сроками действия данных объектов и периодически их обновлять.
Профиль криптопровайдеров регистрируется на Центре Идентификации и представляет собой набор мастер-ключей, хранимых в КриптоПро HSM. Данный набор мастер-ключей используется для выработки ключей аутентификации DSS SDK и проверки кодов аутентификации.
Мастер-ключ имеет ограниченный срок жизни - 3 года. Ключи аутентификации пользователя имеют ограниченный срок жизни - не более 15 месяцев. За 15 месяцев до окончания срока жизни мастер-ключ переходит в состояние "Только для чтения". В данном состоянии мастер-ключ может быть использован только для работы с ранее созданными ключами пользователей.
Незадолго до перехода мастер-ключей в состояние "Только для чтения" Администратор должен зарегистрировать новый Профиль криптопровайдеров.
Пример регистрации профиля криптопровайдера для КриптоПро CSP (для работы в тестовом режиме):
Add-DssCryptoProviderProfile -DisplayName <STSAppName> -Type MyDss -PrimaryProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -PrimaryProviderType 80 -Name "New CryptoProfile for DSS SDK"
См также:
Примечание
Контролировать сроки действия мастер-ключей можно с помощью соответствующих тестов КриптоПро Центр Мониторинга. В зависимости от настроек Центр Мониторинга может оповестить интегрированную прикладную систему или Администратора DSS по электронной почте.
OAuth-клиент для сервиса взаимодействия с мобильным приложением используется для авторизованного взаимодействия Сервиса Взаимодействия с DSS SDK с другими сервисами DSS. Секрет конфиденциального OAuth-клиента имеет ограниченный срок действия. По умолчанию равен 1 году.
Администратор должен следить за сроком действия секрета OAuth-клиента и своевременно его обновлять.
Обновление секрета OAuth-клиента выполняется с помощью команды Add-DssClientSecret
.
Пример обновления секрета OAuth-клиента:
# Получить идентификатор OAuth-клиента, назначенный MDAG
$settings = Get-MdagProperties
# Создать новый секрет для OAuth-клиента
Add-DssClientSecret -Type SharedSecret -ClientId $settings.ClientId
# Выбрать секрет с самой поздней датой истечения
$secret = Get-DssClientSecret -ClientId $settings.ClientId | sort { [datetimeoffset]$_.Expiration } -desc | Select -First 1
# Установить новое значение секрета
Set-MdagProperties -ClientSecret $secret.Value
# Перезапустить сервис для применения настроек
Restart-MdagInstance
Примечание
Контролировать сроки действия секрета OAuth-клиента можно с помощью соответствующих тестов КриптоПро Центр Мониторинга. В зависимости от настроек Центр Мониторинга может оповестить интегрированную прикладную систему или Администратора DSS по электронной почте.
Администратор может создать секрет OAuth-клиента с неограниченным сроком действия.
Для этого в команде Add-DssClientSecret
необходимо указать параметр -SecretLifetime со значением 0.
Пример:
Add-DssClientSecret -Type SharedSecret -ClientId $settings.ClientId -SecretLifetime 0
Внимание!
Создание секрета OAuth-клиента с неограниченным сроком действия не рекомендуется.