Есть ли способ зашифровать файл / строку, используя открытый / закрытый ключи, сгенерированные Hyperledger Fabri c? - PullRequest
1 голос
/ 25 февраля 2020

Я использую Hyperledger Fabri c V1.4 в моем проекте. Я зарегистрировал и зарегистрировал пользователей. И теперь я хочу передавать файлы между пользователями, оставаясь закрытыми, а это значит, что мне нужно зашифровать файл, чтобы его мог видеть только получатель. Например, пользователь A хочет отправить файл пользователю B. Основной рабочий процесс c, который я сейчас думаю, заключается в следующем:

  1. Пользователь A и B регистрируется в сети Hyperledger и становится публичным / закрытые ключи.
  2. Пользователь A загружает файл в IPFS и получает га sh из IPFS. (Поскольку каждый, у кого есть ha sh, может получить доступ к файлу, нам нужно зашифровать файл ha sh.)
  3. Зашифровать файл ha sh с помощью ключа пользователя publi c.
  4. Отправка зашифрованного ha sh пользователю B.
  5. Пользователь B получает зашифрованный ha sh и использует личный ключ B для расшифровки ha sh и получает файл IPFS. га sh. Затем B может просмотреть га sh с использованием IPFS.

У меня проблемы:

  1. Как на шаге 3 получить ключ пользователя publi c? Я только нашел способы получить сертификат и закрытый ключ. Или я могу получить ключ publi c из сертификата?
  2. Существует ли алгоритм для шифрования файлов / строк с использованием публикуемых Hyperledger publi c и закрытых ключей?

Спасибо!

1 Ответ

1 голос
/ 26 февраля 2020

Да, возможно что-то подобное, но с ECDSA это не работает. Вы не шифруете с помощью ключа пользователя publi c. Что вам нужно сделать, так это получить ключ симметрии c из ключа пользователя publi c и личного ключа пользователя A таким же образом, ключ симметричного ключа c получен из ключа пользователя publi c пользователя A и личного ключа пользователя B , Это известно как ECDH. У меня нет примера в Javascript (вы можете искать его так же, как я), но чтобы понять его, взгляните и попробуйте пример (с OpenSSL) в https://jameshfisher.com/2017/04/14/openssl-ecc/.

Вы можете получить ключ publi c из сертификата (он встроен в сертификат) или извлечь его из закрытого ключа. Выберите свой путь.

ПРИМЕЧАНИЕ. Я считаю более безопасным шифрование содержимого перед его сохранением в IPFS и совместное использование ха sh, чем шифрование ха sh.

РЕДАКТИРОВАТЬ: Для nodejs, вы можете попробовать это: https://www.npmjs.com/package/eccrypto. Кажется, он включает в себя и то, что вы искали изначально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...