Рейтинг:3

Доказательство того, что сообщение подписано членом группы

флаг ng

Я новичок в криптографии. Вот мой вопрос:

  1. Алиса составляет список людей: Боб, Кэрол и Дэн;
  2. Алиса дает уникальный секретный ключ каждому участнику в списке, чтобы они могли подписывать сообщения уникальным образом;
  3. Каждый участник не имеет права подписывать более 1 сообщения;
  4. Грейс, наблюдатель, должен иметь возможность проверить, подписано ли определенное сообщение членом списка Алисы, но она не должна знать, кто его подписал.

Вот пример:

  1. Элис владеет форумом по просмотру фильмов, где известные рецензенты (которые также являются соперниками) могут публиковать свои анализы фильмов;
  2. Прямо перед датой выхода полемического фильма, снятого настоящими членами якудза, Алиса решает скрыть личность пользователей на своем форуме.
  3. Однако Грейс, поклонница сайта Алисы, немного раздражена этим решением. На форуме были размещены десятки анонимных отзывов, авторы которых утверждали, что являются сертифицированными доверенными рецензентами Alice™. Грейс понимает, почему личность настоящих кураторов не может быть раскрыта, но как она может проверить, входит ли автор определенного поста в первоначальный список доверенных рецензентов?
fgrieu avatar
флаг ng
Я знаю только два способа эффективно помешать Дэну подписать более одного сообщения: (А) угроза физического/правового/экономического возмездия (которые не относятся к теме), если он поступит иначе, и (Б) Алиса дает Дэну физическое устройство. (например, смарт-карта), предназначенная для подписи только один раз. Возможно ли, что требование 3 действительно означает, что каждый участник не будет подписывать более одного сообщения? Самостоятельно, во 2: "Алиса дает приватный ключ" необычно. Более стандартная процедура заключается в том, что участники генерируют свои собственные закрытые ключи и публикуют соответствующий открытый ключ (возможно, через Алису) или/и сертифицируют его Алисой.
thzoid avatar
флаг ng
Я имею в виду, что Дэн мог бы опубликовать свой открытый ключ, и если бы он был связан с его именем в списке Алисы, это доказывало бы его связь с Алисой (что именно и предполагалось), но тогда Грейс знала бы, что он является автором этого сообщения. Я отредактировал вопрос с глупым примером для пояснения. О людях, которые могут подписать только один раз, представьте, что есть алгоритм, который обрабатывает их сообщения.Если отправлено подписанное сообщение, то эта подпись теряется: ее нельзя использовать для подписи каких-либо других сообщений.
fgrieu avatar
флаг ng
Возможно, вам нужна кольцевая подпись с дополнительной функцией, позволяющей наблюдателю с открытыми ключами распознать ее, если в наборе подписанных сообщений есть два сообщения, подписанные одним и тем же закрытым ключом? [дополнение: я не знаю такой криптосистемы и не вижу причин, по которым это было бы невозможно]
thzoid avatar
флаг ng
Что ж, я вижу, что это работает в моем сценарии, потому что это не позволит дублировать подписание, и если Алиса перечислит открытые ключи, используемые в кольце, это подтвердит связь подписывающих с ней. Как это работает? Есть ли бумага по этому поводу?
fgrieu avatar
флаг ng
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/128253/discussion-between-fgrieu-and-thzoid).
Рейтинг:3
флаг my
  1. Каждый участник не имеет права подписывать более 1 сообщения;

Как указано в комментариях, любой механизм, предотвращающий создание членом группы двух подписей, потребует либо доверенного оборудования, либо взаимодействия во время процесса подписания с групповым контроллером Алисой (чтобы предотвратить сброс подписывающим лицом своего состояния после создания первой подписи и затем приступаем ко второй подписи).

Итак, я переведу это как «обнаруживается, если участник пытается подписать два сообщения», то есть, учитывая две подписи, мы можем проверить, подписал ли их оба один и тот же член группы.

С таким переводом это возможно; вот один подход:

  • Алиса создает систему подписи на основе хэша с отслеживанием состояния (например, LMS или XMSS), при этом различные ключи одноразовой подписи являются независимыми (то есть вы не можете восстановить один из другого).

  • Для каждого члена группы Боба, Кэрол и Дэна Алиса выбирает случайный лист (одноразовую подпись) и дает этому члену группы индекс, закрытый ключ для одноразовой подписи и путь аутентификации.

  • Когда Боб хочет подписать свое сообщение, он подписывает его своим закрытым ключом и выводит эту подпись (вместе с индексом и путем аутентификации), создавая действительную подпись LMS или XMSS.

  • Верификатор выполняет стандартную проверку действительности LMS/XMSS по открытому ключу.

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

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

В этом подходе есть оговорка, что если Боб действительно подпишет два разных сообщения, то кто-то другой может подписать третье сообщение (на основе двух подписей Боба); поддельная подпись будет выглядеть так, как будто она также исходила от Боба.

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

thzoid avatar
флаг ng
Это будет работать в контексте, который я ищу. Предполагается, что эта логика работает на блокчейне, поэтому, если две транзакции подписаны одним и тем же лицом, должна обрабатываться только первая. Второй станет недействительным в контексте цепочки. Есть ли какой-то конкретный документ или учебник, который вы рекомендуете для понимания LMS/XMSS? Спасибо @poncho и всем остальным за то, что помогли мне понять это.
poncho avatar
флаг my
@thzoid: для LMS — https://datatracker.ietf.org/doc/rfc8554/, а для XMSS — https://datatracker.ietf.org/doc/rfc8391/.

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

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