Рейтинг:0

Докажите, что данные, зашифрованные разными ключами, совпадают

флаг in

Предположим, что пользователь А шифрует некоторые данные, используя свой открытый ключ, и сохраняет данные публично. Позже пользователь А захочет публично передать те же данные пользователю Б, зашифровав их с помощью открытого ключа пользователя Б.

Как лучше всего проверить, что одни и те же данные были переданы пользователю Б, не зная данных, закрытых ключей пользователя А и пользователя Б?

Ievgeni avatar
флаг cn
Это домашнее задание?
флаг in
нет, пытаюсь понять, возможно ли это вообще и о чем мне следует больше читать. Хотелось бы создать что-то подобное на Ethereum, чтобы секретные данные можно было безопасно передавать между людьми публично.
Ievgeni avatar
флаг cn
Вопрос: Это детерминированная схема шифрования?
флаг in
Я не знаю, возможно ли это на данный момент, поэтому слишком рано устанавливать какие-либо границы. Хотя было бы предпочтительнее, если бы он был детерминированным.
Ievgeni avatar
флаг cn
Другой вопрос: уполномочен ли $A$ добавлять новые данные (например, ZK-доказательства), чтобы помочь B выполнить проверку? Если да, то каковы ограничения безопасности?
флаг in
@levgeni Да, дополнительные данные могут быть добавлены, однако перед передачей должна быть выполнена проверка (до того, как пользователь B получит данные). Я ищу что-то вроде этого: 1. Пользователь А -> хранить данные, зашифрованные с помощью открытого ключа пользователя А, в публичном контракте. 2. Пользователь A -> пытается передать те же данные, на этот раз зашифрованные с использованием открытого ключа пользователя B, через тот же публичный контракт. 3. Контракт проверяет, не врал ли Пользователь А (передавал разные данные).Если проверка прошла успешно, данные сохраняются, в противном случае запрос отклоняется. Контракт должен проверять это, а не пользователь Б.
флаг in
^ В приведенном выше примере контракт не знает данных и не знает закрытых ключей пользователя A и пользователя B. Ему известны открытые ключи A и B, данные, зашифрованные с использованием открытого ключа A, и данные, зашифрованные с использованием Открытый ключ Б. Любые дополнительные метаданные могут быть добавлены, чтобы облегчить эту проверку без раскрытия данных.
ming alex avatar
флаг in
Несколько примеров решения вашего вопроса приведены в разделе 20.2 [книги](http://toc.cryptobook.us/book.pdf)
Рейтинг:1
флаг cn

Доказательство с нулевым разглашением кажется подходящим для вашей цели. $А$ должен доказать, что он существует $ млн $ такой, что $C=Enc(M, pk_A)$, и $C^\prime=Enc(M, pk_B)$. Это ЗКП можно сделать без раскрытия какой-либо информации о данных $ млн $ (вот почему мы называем это нулевым разглашением). Для конкретного экземпляра вы можете использовать шифрование Эль-Гамаля и Методы ZK-доказательства Groth-Sahai:

https://en.wikipedia.org/wiki/ЭльГамал_шифрование

https://eprint.iacr.org/2007/155

Обратите внимание, что вам не нужно использовать закрытый ключ $В$ чтобы проверить равенство, но если это проверяет контакт, это, вероятно, лучше.

Ответить или комментировать

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