[identity profile] kray-zemli.livejournal.com posting in [community profile] useful_faq
Модельная ситуация.

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

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

Нужно, чтобы каждый Подписчик мог проверить, что:

1. Каждый подписчик, действительно, написал не более 1 комментария.
2. Все анонимные комментарии принадлежат Подписчикам.
3. Никакие комментарии не были изъяты или подменены администрацией.

Условия 2, 3) можно и ослабить: каждый Подписчик, если что, может легко доказать, что именно его комментарий был изъят или подменён. Желательно, не деанонимизируясь.

Ещё очень желательное условие: чтобы Подписчику не требовалось при этом пользоваться личными ключами и/или генерировать одноразовые ключи.

Date: 2012-03-30 06:59 am (UTC)
From: [identity profile] a-bronx.livejournal.com
Всё, что можно узнать о Подписчике -- что он однажды комментировал статью.

Упс, тут небольшая дырка: если коммент единственный, то можно вычислить, кто его оставил, и анонимность нарушается. Нужно разделить логины "подписчика" и "комментатора", но так, чтобы сохранить единственность обоих, чтобы второй был безличным, и чтобы из второго нельзя было вычислить первый.

Схема создания логина комментатора из логина подписчика аналогична первой, только работает в обратную сторону:
1) Подписчик хочет участвовать в комментировании, поэтому он жмёт на сайте Издателя кнопку "Хочу иметь возможность комментировать",
2) Издатель выдаёт ему одноразовый "токен на оформление статуса комментатора",
3) Подписчик идёт с этим токеном к Авторизатору и тот создаёт "логин комментатора". Токен уничтожается. Созданный логин используется для написания комментов согласно процедуре в предыдущем комменте.

Авторизатор не будет знать, кто к нему пришёл и не сможет сохранить личные даные Подписчика, т.к. токен обезличен. Но так как токен подписан Издателем, то можно верить, что это Подписчик, а не кто-то левый.

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