Скрытие конфиденциальных данных в публичном контракте

У меня есть конфиденциальные данные, которые я хотел бы оставить в своем контракте в уединении. Я хотел бы сделать простую версию Zero-Knowledge Proofs и иметь представление об этом. Предположим, у меня есть клиент, который заполнил 6 полей в моем dapp:

  • Имя как attr1
  • Фамилия как attr2
  • Дата рождения как attr3
  • Номер телефона как attr4
  • Номер паспорта как attr5

Я делаю hash1=SHA2(attr1+attr2+attr3+attr4) hash2=SHA2(attr1+attr2+attr3+attr5)

и сохраните его на карте, где hashes=[hash1,hash2] Третья сторона могла хешировать свой вход dapp, используя мою схему, запросить мой контракт и проверить, был ли у моего dapp этот клиент. Если true, он может получить метаданные о найденном клиенте, например. кредитный рейтинг.

Мои вопросы:

  • Что вы думаете об этой простой схеме ZKP? есть ли у вас какие-либо другие идеи, как это реализовать?
  • насколько легко будет для злоумышленника составить таблицу поиска со всеми вариантами hash1 или hash2 (самый важный вопрос)
  • Я должен хранить секретную схему hash1 /hash2?
10 голосов | спросил Igor Barinov 11 +03002016-10-11T06:18:05+03:00312016bEurope/MoscowTue, 11 Oct 2016 06:18:05 +0300 2016, 06:18:05

1 ответ


4

Отвечая один за другим на ваши вопросы:

  
  • Что вы думаете об этой простой схеме ZKP? есть ли у вас какие-либо другие идеи, как это реализовать?
  •   

Кажется, это хорошая схема, хороший уровень безопасности и так просто. Если вы хотите больше безопасности, я бы предложил вам:

Способ улучшения этого может заключаться в добавлении соли к хешам. Вы можете сделать эту соль случайной, псевдослучайной или использовать своего рода diggest из некоторой фразы.

  
  • Насколько легко для злоумышленника создать таблицу поиска со всеми вариантами hash1 или hash2 (самый важный вопрос).
  •   

Вероятно, наиболее вероятный злоумышленник может быть своего рода «грубой силой», пытаясь использовать все возможные комбинации атрибутов. Это было бы легче для злоумышленника, который знает чье-то имя, фамилию, дату рождения и т. Д., Чтобы проверить, является ли он вашим клиентом или нет. Таким образом, существует два способа:

  • Зная чью-то информацию и просто используя свой собственный контракт, чтобы узнать, является ли он вашим клиентом или нет.
  • Попытка случайных данных (и моление, чтобы иметь некоторую удачу).
  
  • Я должен хранить секретную схему hash1 /hash2?
  •   

Очевидно, что наибольшую информацию вы можете хранить в секрете, более высокий уровень безопасности, так как вы хотите ZKP.

ответил KanekiDev 11 +03002016-10-11T10:20:30+03:00312016bEurope/MoscowTue, 11 Oct 2016 10:20:30 +0300 2016, 10:20:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132