Как устроена платформа

Криптография

Платформа 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 для ГОСТ криптографии с криптонаборами:

  • TLS_CIPHER_2012;

  • TLS_CIPHER_2001;

  • TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC;

  • TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC;

  • TLS_CIPHER_2012_IANA.

Поддержка PKI

На платформе Waves Enterprise реализована инфраструктура открытых ключей (Public Key Infrastructure, PKI). Инфраструктура PKI используется только с ГОСТ криптографией.

Примечание

Инфраструктура PKI поддерживается только в корпоративной версии платформы, и не может быть использована в opensource версии платформы.

PKI имеет три режима функционирования:

  • отключен – инфраструктура PKI отключена,

  • включен – инфраструктура PKI включена. В этом случае

    • проверяется, что TLS включён на сетевом уровне, то есть параметр node.network.tls в файле node.conf имеет значение true;

    • ряд API методов, которые подразумевают работу с закрытым ключом на ноде, недоступны:

      • методы подписания транзакций через API ноды,

      • методы шифрования,

      • методы отправки конфиденциальных данных.

  • тестовый режим – инфраструктура PKI функционирует в тестовом режиме. Доступны следующие API методы, которые подразумевают работу с закрытым ключом на ноде:

Режим 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 в этих случаях описаны в разделе Общая настройка платформы: настройка исполнения смарт-контрактов.

Смотрите также