@alex_devPY

Как передать пароль через блокчейн Ethereum?

Здравствуйте.

Исходные данные:
0. есть несколько зашифрованных файлов, которые лежат в открытом доступе (любой может скачать);
1. юзер скачал файл и теперь у юзера есть зашифрованный файл с данными PRODUCT_ID.gpg;
2. на удаленном сервере хранится пароль от PRODUCT_ID.gpg;
3. никто, кроме админа, не должен знать сервер, который отправил пароль от файла;
4. возможность шифровать один и тот же файл два или более раз отсутствует. Файл шифруется один раз и отправляется в паблик.

Есть идея применить блокчейн Ethereum.

Механику передачи пароля до конца не осилил, но родилась предварительная схема.
Дыра, которая на поверхности: можно отслеживать события из двух контрактов. Из первого получать PRODUCT_ID из второго PASSWORD и составить лист для всех файлов PRODUCT_ID:PASSWORD

Термины:
WALLET - кошелек юзера;
PRODUCT_ID - уникальный идентификатор файла (по нему сервер поймет, от какого файла надо вернуть пароль);
PASSWORD - текст в открытом виде (пока не говорю о шифровании, т.к. не все ясно).
USER - десктопная программа на ПК юзера для взаймодействия с блокчейном.
SERVER - обычный дедик c базой данных паролей и собственным кошельком для транзакций.

5c3479e0a3c57154556398.png

Юзер делает транзакцию в смарт-контракт №1.
В транзакции передается PRODUCT_ID.
Создается событие о том, что прошла транзакция.
Сервер считывает это событие и получает: номер продукта и кошелек того, кто запросил пароль.
Сервер находит в локальной БД пароль от файла для данного PRODUCT_ID и делает транзакцию (0 ETH, data: password, wallet) в контракт №2.
В транзакции PRODUCT_ID не передается, т.к. юзер уже ожидает пароль от конкретного PRODUCT_ID.
Юзер получает пароль, отслеживая событие в контракте 2 и расшифровывает файл.

Либо, как вариант, сервер может делать транзакцию с паролем (0 ETH, data: password, wallet) напрямую на кошелек юзера. Тогда программа просто считает транзакцию с кошелька юзера.

Коллеги, буду рад критике, идеям, советам.
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
Все с чем работают контракты - публично, вы не можете спрятать в блокчейне что-либо.
Возможно как то использовать гомоморфное шифрование, я не знаю, это область еще слабо в криптоэкономике использована (zcash).

Не понимаю, зачем вам хранить публично (пусть бы и зашифровано) пароли, если у вас есть сервер (в терминологии контрактов это оракул), который эти пароли куда то отсылает. Хранить на сервере скрытно не получится?
Ответ написан
un1t
@un1t
Посмотри в сторону enigma это сайдчейн для эфира, возможно подойдет. А еще в эфире есть whisper - приватная передача сообщений.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Cerebellum Network Минск
от 2 500 до 4 000 usd.
Acme Crypto Corp Нижний Новгород
от 180 000 до 250 000 руб.
25 июн. 2019, в 00:24
15000 руб./за проект
24 июн. 2019, в 23:27
8000 руб./за проект