@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) напрямую на кошелек юзера. Тогда программа просто считает транзакцию с кошелька юзера.

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

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

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

Войти через центр авторизации
Похожие вопросы
Acme Crypto Corp Нижний Новгород
от 180 000 до 250 000 руб.
Everex Аликанте
от 4 000 до 6 000 eur.
Jibrel Network Санкт-Петербург
от 4 000 usd.
19 марта 2019, в 11:12
60000 руб./за проект
19 марта 2019, в 11:00
600 руб./в час
19 марта 2019, в 10:33
20000 руб./за проект