Установка и использование платформы
REST API: реализация методов шифрования¶
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
, содержащее расшифрованную строку.
Пример ответа: