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

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

Платформа Waves Enterprise предоставляет возможность выбора используемого криптографического алгоритма, в зависимости от особенностей проекта.

Хеширование

Операции хеширования выполняются функциями Blake2b256 и Keccak256 последовательно, либо функцией «Стрибог» в соответствии с ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хеширования». Размер блока выходных данных: 256 бит.

Электронная подпись

Алгоритмы генерации ключей, формирования и проверки электронной подписи реализованы на базе эллиптической кривой Curve25519 (ED25519 с ключами X25519), либо в соответствии с ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».

Подробнее о генерации и проверке электронной подписи с использованием gRPC и REST API-методов.

Шифрование данных

Блокчейн-платформа поддерживает шифрование данных при помощи сессионных ключей на базе протокола Диффи-Хелмана. Операция применяется для шифрования любого вида текстовой информации, например, данных смарт-контрактов, которые не должны быть доступны для других участников блокчейна. Шифрование может выполняться как индивидуально для каждого получателя, с формированием уникального экземпляра шифротекста, так и с формированием единого шифротекста для группы получателей.

Используемые алгоритмы для симметричного шифрования соответствуют стандарту AES, либо ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры».

Ниже приведено схематичное описание процедуры шифрования текстовых данных на базе протокола Диффи-Хелмана:

Процедура шифрования текстовых данных на базе алгоритма Диффи-Хелмана

Для операций шифрования/расшифрования данных применяются симметричные ключи CEK и KEK.

CEK (Content Encryption Key, ключ шифрования данных) используется для шифрования текстовых данных. KEK (Key Encryption Key, ключ шифрования ключа) используется для шифрования CEK.

Ключ CEK формируется блокчейн-узлом случайным образом с применением соответствующих алгоритмов хеширования. Ключ KEK формируется нодой на базе алгоритма Диффи-Хелмана с использованием публичных и приватных ключей отправителя и получателей и применяется для шифрования ключа CEK.

Симметричный ключ СЕК недоступен для прочтения и не отображается в процессе шифрования. От отправителя к получателю он передается в зашифрованном виде (wrappedKey) по открытым каналам связи вместе с зашифрованным сообщением. Примеры таких каналов в блокчейн-сети - транзакция 112 для записи данных в блокчейн или стейт смарт-контракта. Ключ КЕК от отправителя к получателю не передается: он восстанавливается получателем на основе своего закрытого ключа и известного публичного ключа отправителя (алгоритм Diffie-Hellman key exchange).

Подробнее о применении шифрования с использованием gRPC-методов.

Для шифрования сетевых каналов используется алгоритм TLS v. 1.2 (AES-256 CBC SHA). Также при выборе ГОСТ-шифрования протокол устанавливает шифрованное TLS-like соединение с применением алгоритма шифрования «Кузнечик».