Хранение приватных данных в блокчейне эфириума

Я планирую сделать приложение, использующее Ethereum, которое будет хранить личные данные о пользователе. В конце концов, я хочу, чтобы эти данные были доступны выбранным пользователям.

Я видел противоречивые ответы и обсуждения в различных темах на SE, Reddit и других статьях о том, как лучше всего подойти к этому. Хотя вот некоторые варианты, которые я рассматривал:

  1. Я мог бы зашифровать с помощью ключа и добавить в блокчейн, но разве это не эквивалентно взлому базы данных? Данные, конечно, зашифрованы, но они общедоступны ( Виталик предполагает, что это нетехнологично . Может кто-нибудь подсказать, почему это нехороший метод?). Кроме того, это может стать дорогостоящим из-за большого количества транзакций.

  2. Используйте Quorum, не уверен на 100%, подходит ли он для моего варианта использования.

  3. Zcash может предложить решение для конфиденциальных данных (еще не изучал его полностью), хотя я бы предпочел, если это возможно, использовать Ethereum, у которого может быть более долгая жизнь.

  4. Я мог бы пойти по тому же маршруту, что и лимонная электронная почта : данные транзакций сообщений в эфириуме, зашифрованные данные в IPFS, внешний интерфейс в IPFS.

Я чувствую, что 4 (лимонная электронная почта) — лучший вариант, хотя это похоже на мошенничество, потому что данные не находятся в блокчейне.

Есть ли другие варианты, которые я должен рассмотреть? Есть ли лучший способ реализовать это?

Ответы (2)

Я не думаю, что решение номер 4 является обманом. Блокчейн — это скорее механизм консенсуса, а не совсем база данных, если вы будете хранить все свои данные в общедоступном блокчейне, это тоже будет довольно дорого. Хранение основной части данных в ipfs или swarm, а затем просто хэш в блокчейне становится стандартным решением для Dapps, позволяющим избежать высоких затрат.

В тот момент, когда я написал свой вопрос, я не осознавал, что мне действительно нужна неизменность, которую, конечно же, может предложить только блокчейн. Итак, что касается личных данных, я буду шифровать их в блокчейне с помощью sha3, который вряд ли будет расшифрован.
IPFS предлагает неизменность. Хотя регистр блокчейна неизменен, многие вещи предлагают поддающуюся проверке неизменность. Термин «блокчейн» не является техническим термином. Когда люди ссылаются на «блокчейн», они на самом деле имеют в виду набор распределенных компонентов, которые собираются вместе для укрепления доверия. Существует множество компромиссов, когда кто-то создает что-то в этом роде, и, в конце концов, это программное обеспечение, использующее различные распределенные системы и криптографические академические теоремы.

Во время написания моего вопроса одной вещью, которую я не учел, была ключевая особенность использования Ethereum в первую очередь... неизменность. Частные данные, которые я хочу хранить, также должны быть неизменяемыми. Это то, что может предложить только блокчейн, поэтому в данном случае я выберу вариант 1 — хранение личных данных в сети.

Меня беспокоило то, что каким-то образом данные могут быть расшифрованы, но, похоже, мне не о чем беспокоиться.

Я буду шифровать с помощью sha3 (ну, версия keccak для Эфириума), которая даже предлагает защиту от квантовых атак, поэтому этого должно быть более чем достаточно, чтобы сделать любые личные данные в цепочке безопасными. Я не могу найти много несмешных технических предложений относительно того, сколько времени может занять расшифровка, кроме этой статьи.

Если квантовую коррекцию обрабатывают ASIC, работающие со скоростью несколько миллионов хэшей в секунду (и если электронная таблица Vulture South верна), алгоритму Гровера потребуется около 10 32 лет, чтобы взломать SHA-256 или SHA3-256.

Я не нашел лучшей альтернативы, поэтому, если у кого-то есть предложения, пожалуйста, высказывайтесь.

Кроме того, я не нашел ответа, почему Виталик считает его нетехнологичным и какая есть подходящая альтернатива.

Вариант 2. Кворум кажется подходящим только для организаций, которые хотят обмениваться данными друг с другом.

Вариант 3 - я не рассматривал zcash, так как хотел придерживаться Ethereum

Вариант 4 - Мне не подходит, нужно, чтобы данные были неизменяемыми.

Изменить: поэтому я не знал, что sha3 предлагает одностороннее шифрование (да, я нуб). Поскольку я новичок в этой области, я не уверен, какой алгоритм будет лучше, поэтому мои поиски продолжаются...

Редактировать 2 (2018-04-30): Попытавшись реализовать это позже, я обнаружил, что когда вы добавляете плату за газ, цены могут быть довольно сумасшедшими. Поскольку цены непредсказуемы и очень высоки для больших объемов данных, для моих целей я счел блокчейн недоступным для моего варианта использования. Это не значит, что вы, конечно, не должны... это зависит от вашей пользовательской базы и того, сколько они готовы платить. Когда я в последний раз смотрел на цены пару месяцев назад, это примерно сработало так: что-то вроде 64 символов будет стоить ~ 1,70 фунта стерлингов для хранения хэша из 64 символов. Чем я сейчас и занимаюсь.

Почему вариант 4 не работает для вас? Вы можете использовать хэши, чтобы проверить, были ли изменены данные или нет, поэтому вы можете гарантировать, что данные не были изменены.
Я полагаю, что во время написания я думал, что буду использовать IFPS для хранения хэшей личных данных в качестве альтернативы их хранению в блокчейне ETH. Вы правы, я, конечно, могу сделать это таким образом.
FWIW не существует такого понятия, как «одностороннее шифрование». Вы можете использовать алгоритм хеширования, который нельзя преобразовать в исходные данные, или вы можете использовать метод шифрования, который, конечно же, можно расшифровать при наличии правильных ключей. Алгоритмы хеширования теряют содержимое исходных данных во время обработки. Шифрование не теряет данные во время обработки.
Пожалуйста, обновите часть ответа «шифрование с помощью sha3». Хеширование — это не шифрование.
Если вы заметили в Edit1 pre 2018-04-30, я уже пришел к этому выводу...