Установка и использование платформы

REST API: реализация методов шифрования

https://img.shields.io/badge/auth-required-orange.svg

REST API-интерфейс ноды предусматривает возможность зашифровать произвольные данные при помощи алгоритмов шифрования, применяемых в блокчейн-платформе Waves Enterprise, а также дешифровать их. Для этого предусмотрены методы REST API группы crypto:

  • EncryptSeparate – шифрование данных уникальными ключами CEK отдельно для каждого получателя, каждый CEK шифруется (оборачивается) отдельным ключом KEK;

  • EncryptCommon – шифрование данных единым ключом CEK для всех получателей, каждый ключ CEK шифруется (оборачивается) отдельным ключом KEK для каждого получателя;

  • Decrypt – дешифровка данных.

Важно

Методы crypto/encryptCommon, crypto/encryptSeparate, crypto/decrypt недоступны при использовании PKI, то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON. В тестовом режиме PKI (node.crypto.pki.mode = TEST) или при отключенном PKI (node.crypto.pki.mode = OFF) методы можно использовать.

POST /crypto/encryptSeparate

Шифрование данных, переданных в запросе, уникальными ключами CEK отдельно для каждого получателя, каждый CEK шифруется (оборачивается) отдельным ключом KEK.

В запросе подаются следующие данные:

  • sender – адрес отправителя данных;

  • password – пароль к зашифрованным данным;

  • encryptionText – шифруемые данные (в виде строки);

  • recipientsPublicKeys – публичные ключи получателей-участников сети;

  • crypto_algo – используемый алгоритм шифрования. Доступные значения:

    • aes – AES

  • gost-3412-2015-k – ГОСТ 34.12-2015

Примечание

Начиная с версии 1.8 алгоритм шифрования ГОСТ 28147-89 (значение gost-28147) не поддерживается.

Если в вашей сети используется шифрование по ГОСТ, вам будет доступен только алгоритм gost-3412-2015-k. При отключенном шифровании по ГОСТ доступен только алгоритм шифрования aes.

Пример запроса:

В ответе метода поступают следующие данные для каждого получателя:

  • encrypted_data – зашифрованные данные;

  • public_key – публичный ключ получателя;

  • wrapped_key – результат шифрования ключа для получателя.

Пример ответа:

POST /crypto/encryptCommon

Шифрование данных, переданных в запросе, единым ключом CEK для всех получателей, каждый ключ CEK шифруется (оборачивается) отдельным ключом KEK для каждого получателя.

В запросе POST /crypto/encryptCommon подаются данные, аналогичные запросу POST /crypto/encryptSeparate.

В ответе метода поступают следующие данные:

  • encrypted_data – зашифрованные данные;

  • recipient_to_wrapped_structure – структура в формате «ключ : значение», содержащая публичные ключи получателей с соответствующими результатами шифрования ключей для каждого из них.

Пример ответа:

POST /crypto/decrypt

Дешифровка данных, зашифрованных при помощи криптографического алгоритма, используемого сетью. Дешифровка возможна, если ключ получателя сообщения находится в keystore ноды.

В запросе подаются следующие данные:

  • recipient – публичный ключ получателя из keystore ноды;

  • password – пароль к зашифрованным данным;

  • encryptedText – зашифрованная строка;

  • wrappedKey – результат шифрования ключа для указанного получателя;

  • senderPublicKey – публичный ключ отправителя данных;

  • cryptAlgo – используемый алгоритм шифрования. Доступные значения:

    • aes – AES

  • gost-3412-2015-k – ГОСТ 34.12-2015

Примечание

Начиная с версии 1.8 алгоритм шифрования ГОСТ 28147-89 (значение gost-28147) не поддерживается.

Если в вашей сети используется шифрование по ГОСТ, для дешифровки будет доступен только алгоритм gost-3412-2015-k. При отключенном шифровании по ГОСТ доступен только алгоритм шифрования aes.

Пример запроса:

В ответ на запрос поступает поле decryptedText, содержащее расшифрованную строку.

Пример ответа: