Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту alfa_api@alfabank.ru. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
Для шифрования сообщения необходимо предварительно выпустить сертификат в УЦ Альфа-Банка, используя сервис "Электронная подпись". Если Вы уже выпускали сертификат - повторно выпускать не нужно.
Подписание и шифрование TXT
Выполните операцию подписания так, чтобы в результате получился отсоединённый от подписываемого контента PKCS7-контейнер, содержащий значение подписи.
Стандарт: RFC 2315
Алгоритм: RS256
Сформированный PKCS7-контейнер со значением подписи необходимо передать в заголовке X-Signature.
1MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIIGMzCCBBugAwIBAgIIQ+Ua6h49X/kwDQYJKoZIhvcNAQELBQAwgb0xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1vc2NvdzEWMBQGA1UEChMNSlNDIEFsZmEtQmFuazElMCMGA1UECxMcRGlnaXRhbCBTZXJ2aWNlcyBEZXZlbG9wbWVudDEeMBwGA1UEAxMVQWxmYVRydXN0Q29yZSBDQSBSb290MS0wKwYJKoZIhvcNAQkBFh50cnVzdGNvcmVfc3VwcG9ydEBhbGZhLmJhbmsucnUwHhcNMjQwNTI3MTMzNTAwWhcNMjkwNTI3MTMzNTAwWjCByTELMAkGA1UEBhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9zY293MRYwFAYDVQQKEw1KU0MgQWxmYS1CYW5rMSUwIwYDVQQLExxEaWdpdGFsIFNlcnZpY2VzIERldmVsb3BtZW50MSswKQYDVQQDEyJURVNUIFRydXN0Q29yZVJTQSBTaWduZXIyIDIwNDggYml0MSwwKgYJKoZIhvcNAQkBFh10cnVzdGNvcmVfc3VwcG9ydEBhbGZhYmFuay5ydTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALbaUlic4XF47DJtoFQKNnd46jvaoE9pyxByuEKQkZY8Na5XWNuyr5ZALF6RTYXRS+i2wqig+zsGhEKG5rM2VZFJB4p6VvwbULzDeH08tEw01hvnIiUFxrlVlpMIM649rLaMUTZnh8RKq23WkvDxPaEEeLV0f0sgeHpBf2nV7ZeM4w6LdC2T/hnYAy7VxIS+BN2nDGOIePqh+lGgUZIHY9cO3IbN7yWSQQSC7hQ696RC9L5vWedOXb6CmyWlFsuOnAgp+O3z2U1wbovCQ48CU8VprzjLorw/UTz/qJr7uGGICuY7M1Go7qLvICsHclkKqvRcCMLBGxdg6RBkA+6t96cCAwEAAaOCAScwggEjMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFFp1la5QGzpdMD7SCyadt9CVfElrMAsGA1UdDwQEAwID+DAdBgNVHSUEFjAUBggrBgEFBQcDAwYIKwYBBQUHAwQwgccGA1UdHwSBvzCBvDA8oDqgOIY2aHR0cDovL2FydGFwcC9hcnRpZmFjdG9yeS9UcnVzdENvcmUvQ1JMcy90cnVzdGNvcmUuY3JsMDqgOKA2hjRodHRwOi8vaGF2ZW4ubW9zY293LmFsZmFpbnRyYS5uZXQ6ODA4MC90cnVzdGNvcmUuY3JsMECgPqA8hjpodHRwOi8vczAxZHBydXByYnMubW9zY293LmFsZmFpbnRyYS5uZXQ6ODA4MC90cnVzdGNvcmUuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQARCvm8JwBOGonGKMlnwyxnFX2aV1qIkzMgo7ILaCXT/MybvPH/3GQByBOUsASFU7cod57qEOOyQSN/JTQ/ZdKz3B8goGoO1XC/toybaTib92Dru7XyiJAeOLHksDjMQ7U6Xgk/51xoPa6AvZyOUWNW0KUdQFWlfyJeH+Gt4Xr1OH+LYuUMhiVubUPn+edW/PW8WTzlpjvd55/e69YViSJBuNenV0cmxKe/xWD7ZnfGfBsf+Sy/xhfjP0nFd7qANeQJXmb07gl7zJUyV0oK7fXyHO7Rg2wVcWEr8p9uS/sTS0ZnXJZKN3/OO+zp9UPM23uzZNuySsBbc7QNlJ3c8GLL/R93xvE3BNV+DtZVbu7xaqcWZmFEnfp0iTVCfMC3d9Cig+KZ5NKBQp+vB0A4+vj8jO/ZCCjtho3nqeJ+exO2AHgLYj6XaeCTed4fW0ENt0XWNrFaVW/wRyHOXvEN8Ocj8LV5Xtwh6xPuwSbas2VL4v7V50O7V5RA4ZucdpdmRj5z/qkqkirGRcWnf+UWwjniI+BzCGlsPjGJmGgl8OjGUnb/vZ4fN1g2QVBcS1riln0mQDPbaBJNtFOSc3GCh+HttX075tinnux348YgqsHeKfsVZ6+5gmrumdaS8uN/L/cgFtPJFfwpbz5YGq98owU8BVlodP1eM8C5eEPU1X0BGQAAMYICkTCCAo0CAQEwgcowgb0xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZNb3Njb3cxDzANBgNVBAcTBk1vc2NvdzEWMBQGA1UEChMNSlNDIEFsZmEtQmFuazElMCMGA1UECxMcRGlnaXRhbCBTZXJ2aWNlcyBEZXZlbG9wbWVudDEeMBwGA1UEAxMVQWxmYVRydXN0Q29yZSBDQSBSb290MS0wKwYJKoZIhvcNAQkBFh50cnVzdGNvcmVfc3VwcG9ydEBhbGZhLmJhbmsucnUCCEPlGuoePV/5MA0GCWCGSAFlAwQCAQUAoIGYMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI0MTIxNjE1MTkxMFowLQYJKoZIhvcNAQk0MSAwHjANBglghkgBZQMEAgEFAKENBgkqhkiG9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQgUOcFVeiRPJ9+OC5kLVX26jInsntrV+ld4xJFm0oOX4kwDQYJKoZIhvcNAQELBQAEggEAEAyS+PCHj3VbcDc+Nuz/yp95T/XRkXeoKPchyfz3fzrJZZhUoN4U5PxBozZje1yd3oFfzp/bvvXNixcoXkmOzPETNbxurXQ3gU6iV5r5i5CuTewYiKX1FX7jGbc/YUjdiBWmmWWnWhLx4LmmRKZ6ViAWzkDolo407zYNvj/Z7zSeda34AZqu6E7+dNZWdEfLg+aUREX0i9bz21dx7X1KePstMH93o16n7FFHTb0GdUvhLFV2jjLnIehZdfKtojhqGBwBeg2GWovmpXb26Zp7du7gV3YC9UppYmBPpI4cbNkrTY+HhJUaGP4DnO8q+CmXgWZaQp/dsavemJtYnxEsqAAAAAAAAA==
1. Выполните шифрование исходного тела запроса, сформированного на шаге 1, симметричным алгоритмом:
Параметры шифрования:
-
•алгоритм блочного шифрования: AES;
-
•режим сцепления блоков:
CBC; -
•схема дополнения контента (padding):
PKCS5.
Шаги:
-
1.
Сгенерируйте секретный ключ
AES (Symmetric Key). Размер ключа - 128 бит. -
2.
Сгенерируйте вектор инициализации режима
CBC (Initialization Vector). Размер - 128 бит.Если размер данных не кратен размеру блока
AES- 128 бит, используйтеPKCS5для дополнения данных до нужного размера. -
3.
Зашифруйте сообщение, используя
Symmetric KeyиInitialization Vectorв режимеCBC. -
4.
Передайте полученное зашифрованное сообщение в теле запроса.
1lpAFdCdfut04uCkJWZ9Vcwt10sufYh3EEd1fMVWAEfbA6d++7i4syHytmBCaAMvCAkL1hc6rKLdIpQ5WDoEML4ePC3XY7ubFPXtRogqeS9g=
2. Выполните шифрование симметричного секретного ключа и вектора инициализации асимметричным алгоритмом:
Параметры шифрования:
-
•алгоритм шифрования: RSA;
-
•режим сцепления блоков:
NONE (не использовать); -
•схема дополнения контента (padding):
OAEP.
Шаги:
-
1.Зашифруйте с помощью открытого ключа сертификата Банка секретный ключ
Symmetric Key, используя алгоритм RSA c механизмомOAEP. -
2.Аналогичным образом зашифруйте вектор инициализации
Initialization Vector. -
3.Передайте полученный зашифрованный секретный ключ
Symmetric Keyв заголовке запросаX-SymmetricKey. -
4.Передайте полученный зашифрованный вектор инициализации
Initialization Vectorв заголовке запросаX-InitializationVector.
1X-SymmetricKey: igGgA4ztpFJzvmZLZK0sI2qKF3csjcA3KiBrfAr5xXTY+vz+7r3Cpp1ijpfVWpva+C2TXcJDvU4Te8aReHKpKlXPP4wHX9MLRvc/wjeVGo+bWEEdEO9A1frCcb/rGIqgxNGE4kqfHMFlG08Hw6sFoP8thX7+x4FUkHs1Shps1Cl5aGI4o6nBBuIQFuOpNAVtENEKMaL9vr2vPzae6B/x5zURrBkji8lhryuEUOSGBVB2lyYPp/Y13YgQpZbaVwgt3y+rXQTWhsMOL2Aa6bIziGSNcQaC2G1K0P5tfffMIEQ7cWZpc7EdRSwsfGSuJx79RORLoa+U1s0hIftX3POtwQ==
2X-InitializationVector: btds4TgsUMdY23nav7ZulbNdfEvREyahN3Z+xccXijfdyus1TAPeqi8SR+X8b8QniJhZsRZFzI+hZg3WbiRliT6XyIaur0EXFSxxojTNDY+qrsq5+E79y07R0+NQLGGvGal81ssBSYe0tUeAy8Z4BbJ6dWLx6N8T9ABacKvVI+6ZE1iE1jazRqDOpqXtppY2Jl5SY0ibmSc03ydvId2Io5MC8MncxX29xcsR+ZMSh95qRo/xIFxUc/Lpbc2/gL2m/1ZyIfVsuc8/87sfUMhTY6V5r3g9otX76QWGp66uaXBMjSmUtIXZv1BPN85BL2shsYJ1GIfCwOpqQg8jXqwXTA==
Если добавить заголовки Content-Type: text/plain + X-Request-ChannelSecurity: NO и отправить запрос, то запрос не будет расшифрован и подпись запроса не будет проверяться.
Если добавить заголовки Content-Type: text/plain + X-Request-ChannelSecurity: ENCRYPTION и отправить запрос, то запрос будет расшифрован и подпись будет проверяться.
Банк дешифрует запрос и проверяет подпись. Если подпись валидна - запрос обрабатывается, если невалидна - Банк определяет запрос как неподлинный и возвращает ошибку. В случае ошибки с дешифровкой запроса будет возращена ошибка. Возвращаемая ошибка будет подписана и зашифрована.
Дешифрование и проверка подписи TXT
Ответ будет представлен в виде исходного тела ответа. Необходимо проверить подпись с помощью открытого ключа сертификата Банка.
Стандарт - RFC 2315
Алгоритм - RS256
В заголовке ответа X-Signature будет передано значение подписи PKCS7.
1sub=1234567890
2name=John Doe
3admin=true
4iat=1657882689
5exp=1657886289