Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту alfa_api@alfabank.ru. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
Для шифрования и подписания сообщения необходимо предварительно загрузить сертификат, используя следующий метод. Если Вы уже загружали сертификат, используя данный метод - повторно выполнять эту операцию не нужно.
Подпись и шифрование JSON
Тело запроса сформировать алгоритмом ГОСТ Р 34.10-2012 256 бит в виде компактной сериализации в соответствии с JSON Web Signature и подписать тело запроса закрытым ключом сертификата.
Формат JWS
BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)
Структура тела запроса
-
•Заголовок (Header)
-
•
"alg": "GOST3410_2012_256" -
•
"typ": "JWT" -
•
"cty": "JWS" -
•
"kid": "серийный номер сертификата" -
•
"b64": true
-
-
•JSON-документ (Payload)
-
•Подпись запроса (Signature)
Пример JWS
ewogICJhbGciIDogIkdPU1QzNDEwXzIwMTJfMjU2IiwKICAidHlwIiA6ICJKV1QiLAogICJjdHkiIDogIkpXUyIsCiAgImtpZCIgOiAiNmQzOGI4ZTAwNjFiMGY5YTk0ZjEwNGJlNTdlNzdhYTE4IiwKICAiYjY0IiA6IHRydWUKfQ.eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.ByCkNenTTtZQrnZplNOo9WyqPTxb6vFq0iExNHpuPCV6LUeXDFTe8tNBZCy1WvpdUCQBrKK447s3NJCC5hNLhA
Для тестовой проверки можно использовать https://token.dev/.
Зашифруйте полученный на шаге два JWS-контейнер алгоритмом ГОСТ 34.12.2015 (блочный шифр с длиной блока n = 64 бит «Магма») открытым ключом сертификата Альфа-Банка, чтобы получился PKCS7-контейнер, и передайте его в теле запроса. Для получения сертификата напишите на почту alfa_api@alfabank.ru.
Информация об используемых стандартах ТК 26
Алгоритм экспорта ключей KExp15 на основе симметричного блочного шифра "Магма". OID: 1.2.643.7.1.1.7.1.1
Алгоритм шифрования послания "Магма" в режиме гаммирования CTR с механизмом преобразования ключа ACPKM с вычислением имитовставки. OID: 1.2.643.7.1.1.5.1.2
Пример PKCS7
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
Если добавить заголовки Content-Type: application/json + X-Request-ChannelSecurity: NO и отправить запрос, то запрос не будет расшифрован и подпись запроса не будет проверяться.
Если добавить заголовки Content-Type: application/jose + X-Request-ChannelSecurity: ENCRYPTION и отправить запрос, то запрос будет расшифрован и подпись будет проверяться.
Банк дешифрует запрос и проверяет подпись. Если подпись валидна - запрос обрабатывается, если невалидна - Банк определяет запрос как неподлинный и возвращает ошибку. В случае ошибки с дешифровкой запроса будет возращена ошибка. Возвращаемая ошибка будет подписана и зашифрована.
Любые другие комбинации заголовков Content-Type + X-Request-ChannelSecurity приведут к ошибке.
Дешифрование и проверка подписи JSON
Полученный ответ (в том числе ошибки) будет представлен в виде компактной сериализации JWS.
Декодирование компактной сериализации JWS
JWS формируется из трёх составляющих и представляет структуру вида:
-
•Base64URL(Header);
-
•Base64URL(Payload);
-
•Base64URL(Signature).
Пример JWS
| Закодированный | Раскодированный |
|---|---|
| ewogICJhbGciIDogIkdPU1QzNDEwXzIwMTJfMjU2IiwKICAidHlwIiA6ICJKV1QiLAogICJjdHkiIDogIkpXUyIsCiAgImtpZCIgOiAiNmQzOGI4ZTAwNjFiMGY5YTk0ZjEwNGJlNTdlNzdhYTE4IiwKICAiYjY0IiA6IHRydWUKfQ.eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.ByCkNenTTtZQrnZplNOo9WyqPTxb6vFq0iExNHpuPCV6LUeXDFTe8tNBZCy1WvpdUCQBrKK447s3NJCC5hNLhA |
header
payload
verify signature
|
Используйте открытый ключ сертификата Банка для проверки подписи. Для получения сертификата напишите на почту alfa_api@alfabank.ru.
Проверьте подпись в соответствии с данными, указанными в Заголовке (Header). В поле kid заголовка JWS будет записан серийный номер сертификата Банка.
{
"debitTurnover": {
"amount": 0,
"currencyName": "RUR"
}
}