Как устроена платформа
Криптография¶
Платформа Waves Enterprise предоставляет возможность выбора используемого криптографического алгоритма в зависимости от особенностей проекта. Доступны два типа криптографии: Waves и ГОСТ.
Примечание
ГОСТ криптография доступна только в корпоративной версии платформы, и не может быть использована в opensource версии платформы.
В таблице ниже представлены криптографические функции, используемые при выборе того или иного типа криптографии.
Тип криптографии |
Waves |
ГОСТ |
---|---|---|
Функциональность |
||
Хэширование |
Функциями Blake2b256 и Keccak256 последовательно |
Функцией Стрибог в соответствии со стандартом ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хэширования» |
Электронная подпись |
На базе эллиптической кривой Curve25519 (ED25519 с ключами X25519) |
В соответствии со стандартом ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи» |
Шифрование данных |
Симметричное шифрование данных по стандарту AES |
В соответствии со стандартом ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры» – симметричный алгоритм блочного шифрования Kuznyechik |
Защита конфиденциальных данных |
TLS v1.2 с криптонабором TLS_RSA_WITH_AES_256_CBC_SHA |
TLS v1.2 для ГОСТ криптографии с криптонаборами:
|
Поддержка PKI¶
На платформе Waves Enterprise реализована инфраструктура открытых ключей (Public Key Infrastructure, PKI). Инфраструктура PKI используется только с ГОСТ криптографией.
Примечание
Инфраструктура PKI поддерживается только в корпоративной версии платформы, и не может быть использована в opensource версии платформы.
PKI имеет три режима функционирования:
отключен
– инфраструктура PKI отключена,
включен
– инфраструктура PKI включена. В этом случае
проверяется, что TLS включён на сетевом уровне, то есть параметр
node.network.tls
в файле node.conf имеет значениеtrue
;ряд API методов, которые подразумевают работу с закрытым ключом на ноде, недоступны:
методы подписания транзакций через API ноды,
методы шифрования,
методы отправки конфиденциальных данных.
тестовый режим
– инфраструктура PKI функционирует в тестовом режиме. Доступны следующие API методы, которые подразумевают работу с закрытым ключом на ноде:
REST API методы:
методы подписания транзакций: transactions/sign и transactions/signAndBroadcast;
методы шифрования: crypto/encryptCommon, crypto/encryptSeparate, crypto/decrypt;
методы обмена конфиденциальными данными: /privacy/sendData, /privacy/sendDataV2 и /privacy/sendLargeData;
методы подписания сообщений в блокчейне: addresses/sign и addresses/signText;
метод формирования электронной подписи данных /pki/sign;
gRPC API методы:
методы обмена конфиденциальными данными: PrivacyPublicService.SendData и PrivacyPublicService.SendLargeData.
Режим PKI настраивается в разделе crypto.pki.mode конфигурационного файла ноды.
Хэширование¶
Как указано в таблице выше, операции хэширования выполняются функциями Blake2b256 и Keccak256 последовательно (для Waves криптографии), либо функцией «Стрибог» в соответствии с ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хэширования» (для ГОСТ криптографии).
Размер блока выходных данных: 256 бит.
Электронная подпись¶
Как указано в таблице выше, алгоритмы генерации ключей, формирования и проверки электронной подписи реализованы на базе эллиптической кривой Curve25519 (ED25519 с ключами X25519) для Waves криптографии, либо в соответствии с ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи» для ГОСТ криптографии.
Подробнее генерация и проверка электронной подписи с использованием API методов описаны в разделах gRPC: проверка электронной подписи данных (PKI) и REST API: формирование и проверка электронной подписи данных (PKI).
Защита конфиденциальных данных¶
Платформа Waves Enterprise предоставляет возможность использовать протокол TLS для защиты передаваемых между нодами данных. Поддерживаемые протоколы при использовании Waves и ГОСТ криптографии указаны в таблице выше.
Чтобы активировать TLS, необходимо в конфигурационном файле ноды node.conf задать параметру node.network.tls
значение true
.
Если протокол TLS не используется для создания соединений между нодами (параметру node.network.tls
присвоено значение false
), то для защиты передаваемых конфиденциальных данных (privacy) используется TLS-подобная схема сквозного шифрования (end-to-end encryption) при помощи сессионных ключей на базе протокола Диффи-Хеллмана. Такая защита будет применена только к конфиденциальным данным при их передаче между нодами peer-to-peer, то есть между двумя участниками сети.
Ниже приведено схематичное описание процедуры шифрования текстовых данных на базе протокола Диффи-Хеллмана:
Примечание
Платформа также использует протокол TLS при работе со смарт-контрактами для следующих соединений:
соединение с Docker-хостом (Docker-TLS);
соединение от смарт-контракта к ноде по gRPC API.
Настройка и использование TLS в этих случаях описаны в разделе Общая настройка платформы: настройка исполнения смарт-контрактов.