Проект "Свободные голосования"
http://gplvote.andyhost.ru/forum/

Вывод результатов голосования при делегировании голосов
http://gplvote.andyhost.ru/forum/viewtopic.php?f=5&t=27
Страница 1 из 5

Автор:  Андрей [ 28 июн 2011, 15:22 ]
Заголовок сообщения:  Вывод результатов голосования при делегировании голосов

Одно время назад я отметил что в результатах голосования должны выдаваться результаты по каждому учтенному голосу. Независимо от делегирования. Т.е. все, кто отдал свои голоса определенному делегату, указываются в списке каждый отдельной строкой. Нигде не должно показываться что вот этот голос учтен через делегата, а вон тот - напрямую.

Кроме того, я предполагал что при открытом голосовании списки будут выглядеть примерно как:
ФИО, голос, персональная подпись ФИО

Однако, я только сейчас сообразил, что при голосовании через делегата у делегата нет возможности сформировать подпись пользователя для нужной строки. Если он там будет ставить свою подпись, тогда сразу откроется информация по количеству голосов у делегата. Что не есть хорошо. :(

Автор:  Андрей [ 28 июн 2011, 15:33 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

Так... А если использовать вот такой механизм...

Все голоса подписываются двумя подписями - системной + персональной подписью голосующего.

Если идет прямое голосование, то ставятся сразу обе подписи.

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

Вариант несколько корявый, но я пока других не вижу. Тут придется разбирать две особых ситуации:
- что делать, если пользователь в течении длительного времени не подписывает результаты своих голосований через делегата;
- что делать, если пользователь отзывает свой голос по результатам данного голосования через делегата;

Кроме того, отсутствие персональной подписи у большого количества голосов может поставить под сомнение общие результаты голосований.

Автор:  kuklagan [ 28 июн 2011, 15:44 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

а почему не достаточно всего одной подписи системы в обоих случаях? пользователь авторизован и система может ставить подпись за него

Автор:  Андрей [ 28 июн 2011, 15:57 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

kuklagan писал(а):
а почему не достаточно всего одной подписи системы в обоих случаях? пользователь авторизован и система может ставить подпись за него

Ее недостаточно, т.к. тогда любой злоумышленник проникший в систему и получивший в доступ ЭЦП системы, полностью скомпрометирует всю систему.

При наличии персональных ЭЦП, секретные ключи которых недоступны из системы, их использование очень сильно ограничивает возможность что-то подделать изнутри системы.

Автор:  Андрей [ 29 июн 2011, 12:43 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

Пока придумал только один способ как выводить "списке голосовавших" пользователей, за которых голосовал делегат.

При делегировании параллельно самой передаче голоса делегату передается некая "расписка" в том что данный пользователь делегирует свой голос по такому-то субъекту голосования с такого-то числа + координаты для связи с пользователем. Без указания делегата! И ссылка на эту записку с подписью выводится вместо подписи самого пользователя в его строке в "списке проголосовавших". Таким образом, у любого сохранится возможность связаться с данным пользователем что-бы он проверил так-ли голосовал его делегат как указано в "списке результатов" для данного пользователя.

Только теперь возникает следующая проблема...
Проверить как голосовал его делегат, пользователь сможет нормально. Но, т.к. он сам не генерировал одноразовый код для своей идентификации в списке результатов, возникает проблема манипуляции этими кодами которую я уже описывал. :(

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

Нужно продумать не скрывается-ли в таком варианте каких-то подводных камней.

Автор:  enepomnyaschih [ 29 окт 2011, 20:00 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

Первый вопрос: эта проблема уже решена? Давно не было комментариев.

Последний вариант мне не нравится тем, что делегат знает своих доверителей.

Я пытаюсь въехать в тему. Пожалуйста, скажите, верны ли мои рассуждения.

Является ли информация о делегированиях приватной? Да, во избежание возможности "покупки" голосов, это было бы полезно.

Хранит ли система информацию о том, что X делегирует свой голос Y? Нет, потому что в случае взлома все узнают эту информацию.

В итоге, я вижу единственный способ реализации делегирований: делегат, как Шан Тсунг, поглощает голоса своих доверителей и в момент голосования их освобождает, тем самым показывая системе, какой вес он имеет.

Пусть X хочет делегировать свой голос Y:
1. X подписывает сообщение "Я делегировал свой голос с даты D1 до даты D2" и публикует его
2. X посылает системе запрос "хочу делегировать голос пользователю Y - см. опубликованное сообщение"
3. Система проверяет, если X уже делегировал свой голос в период с D1 до D2, дает ошибку
4. Система проверяет, если дата D1 отличается от текущей более, чем на минуту, дает ошибку
5. Система создает билет (ID билета, ID пользователя Y, дата D1, дата D2)
6. Система подписывает билет публикует его

Далее, при голосовании блокируются запросы X, подсчитываются все билеты пользователя Y и добавляются к его голосу.

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

Недостатки:
1. Нельзя составить список (ФИО, голос, подпись). Но но мой взгляд, это не критично
2. Нельзя в любой момент вернуть свой голос обратно. Эту проблему частично решает D2
3. По датам D1 и D2 простыми сравнениями можно догадаться, кто кому делегировал свой голос. Для решения этой проблемы можно немного сдвинуть даты в билете на случайную величину до 5 минут в каждом направлении

Прошу прощения, если это полный бред - у меня нет большой практики в плане криптографии.

P.S. Вот еще что надо продумать: в случае ошибки в п.3 и п.4 нужно откатить п.1. Как обеспечить транзакционность? Доверить публикацию и сообщения, и билета серверу?

Автор:  Сергей [ 29 окт 2011, 20:47 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

Ответе в начале на вопрос: Зачем вообще нужно делегирование? Чем Вас не устраивает вариант при котором голосующий читает мнение эксперта и голосует согласно этому мнению.

Автор:  enepomnyaschih [ 29 окт 2011, 21:01 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

75% считают, что делегирование нужно viewtopic.php?f=3&t=54

Если есть еще вопросы идеологического плана, прошу вынести это за пределы данного технического топика.

Автор:  Сергей [ 29 окт 2011, 21:10 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

Отписался тут viewtopic.php?f=3&t=252

Автор:  Андрей [ 29 окт 2011, 21:13 ]
Заголовок сообщения:  Re: Вывод результатов голосования при делегировании голосов

Сергей писал(а):
Ответе в начале на вопрос: Зачем вообще нужно делегирование? Чем Вас не устраивает вариант при котором голосующий читает мнение эксперта и голосует согласно этому мнению.

Вообще, это самый лучший вариант. Я-бы выбрал его. Но тем не менее, многие считают что делегирование должно быть в возможностях системы. В том числе и неограниченное.

Цитата:
Первый вопрос: эта проблема уже решена? Давно не было комментариев.

Нет, пока не решена.

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

Цитата:
Последний вариант мне не нравится тем, что делегат знает своих доверителей.


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

Кроме того, минус этого метода в том, что делегирование можно сделать только когда голосование уже создано. Т.е. делегировать голос можно только для конкретного голосования и только в определенный промежуток времени.

Пока я не вижу сколь-нибудь полноценного решения проблемы делегирования.

Цитата:
3. Система проверяет...

Не забывайте что у нас нет абстрактной "системы". У нас есть клиенты у конкретных пользователей. Лучше рассуждать в терминах "Клиент пользователя Х то-то...". Если это учитывать, то описанный вами принцип делегирования не совсем понятен.

Страница 1 из 5 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/