Операции шифрования данных¶
Для операций шифрования/расшифрования данных применяются симметричные ключи CEK и KEK. CEK (Content Encryption Key) используется для шифрования текстовых данных, KEK (Key Encryption Key) используется для шифрования CEK. Ключ CEK формируется блокчейн-узлом случайным образом с применением соответствующих алгоритмов хеширования. Ключ KEK формируется нодой на базе алгоритма Диффи-Хелмана, используя публичные и приватные ключи отправителя и получателей, и применяется для шифрования ключа CEK.
Симметричный ключ СЕК недоступен для прочтения и не отображается в процессе шифрования. От отправителя к получателю он передается в зашифрованном виде (wrappedKey) по открытым каналам связи вместе с зашифрованным сообщением. Одним из таких каналов может являться запись в блокчейн - DataTransaction или стейт смарт-контракта. Ключ КЕК от отправителя к получателю не передается, он восстанавливается получателем на основе своего закрытого ключа и известного публичного ключа отправителя (алгоритм Diffie-Hellman key exchange).
Процедура шифрования текстовых данных на базе алгоритма Диффи-Хелмана¶
Процесс шифрования/расшифрования данных включает в себя следующие действия:
Для шифрования данных для каждого получателя отдельно используется метод POST /crypto/encryptSeparate. Параметры в объекте запроса:
sender
- адрес отправителя;password
- пароль от ключевой пары отправителя, создаваемый вместе с аккаунтом;encryptionText
- текст для шифрования;recipientsPublicKeys
- массив публичных ключей получателей.
Для шифрования данных для всех получателей единым ключом CEK используется метод POST /crypto/encryptCommon.
Для расшифровывания данных используется метод POST /crypto/decrypt. Параметры в объекте запроса:
recipient
- адрес получателя;password
- пароль от ключевой пары получателя, создаваемый вместе с аккаунтом;encryptedText
- зашифрованный текст;wrappedKey
- обёрнутый ключ, полученный при шифровании данных;senderPublicKey
- публичный ключ отправителя.