Контекст:
Алиса имеет некоторый контент (C) и опубликовала его хэш (Cхэш) публично. Она хочет отправить C Бобу таким образом, чтобы он был виден только Бобу. Это можно сделать путем шифрования (Cenc) в использовании его открытого ключа (PubKeyБоб). И Боб может расшифровать его, используя свой закрытый ключ, и вычислить хэш, чтобы увидеть, что он соответствует C.хэш.
У нас есть Ева, которая играет роль условного депонента. Боб платит за C, который держит Ева. Теперь Алисе нужно доказать Еве, что Cenc расшифровывается Бобом и при расшифровке дает C. Ева ни в коем случае не должна знакомиться с C.
Текущая идея:
Мы предполагаем, что Алиса отправляет правильное Cenc , зашифровано с помощью PubKeyБоб (это одноразовая пара ключей, используемая только для этой транзакции). Боб рад видеть, что хэш расшифрованного содержимого такой же, как у C.хэш и, таким образом, это одно и то же содержание. Если Алиса отправила неправильный контент или не зашифровала C должным образом, Боб раскрывает свой закрытый ключ (PriKeyБоб) к Еве. Теперь Ева может проверить претензию о споре, расшифровав Cenc с помощью PriKeyБоб и проверьте, соответствует ли Cхэш. Если они не совпадают, Ева вернет деньги Бобу.
Проблема :
Это работает, если Боб честен, и вызывает споры только в том случае, если это действительно правда. Но если Боб поднимет ложный спор, Ева узнает С. Это приемлемо, поскольку Боб всегда может поделиться С с Евой, несмотря ни на что. Но есть ли лучшая стратегия для этой сделки? Может ли Алиса доказать Еве, что Cenc является действительным (с нулевым разглашением), не требуя от Боба поднять спор?