Проект "Свободные голосования"

Электронная системы голосований через интернет
Текущее время: 24 ноя 2024, 00:40

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
СообщениеДобавлено: 05 июл 2011, 22:05 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
Но голосование уже закончено. Решение по нему уже принято. Не должно быть одного голосующего, который может поставить под сомнение результат голосования.


Ок. Согласен. Просто это означает, что не "Голос отзываем из голосования. Результат голосование НЕ меняем.", а голос продолжает учитываться в результатах данного голосования. Или я опять не так понял?

Андрей писал(а):
Но голосование уже закончено. Решение по нему уже принято. Не должно быть одного голосующего, который может поставить под сомнение результат голосования.


Согласен.

ameten писал(а):
1. Результат голосования - это полный список голосов пользователей. Таблица результатов голосования в моей схеме.
2. Итог голосования - это уже подсчитанные голоса, агрегированная метрика по вариантам.


Здесь я ссылку на свою схему дал только для того, чтобы пояснить понятие "Результат голосования". Ни в коем случае не настаиваю на связи этих понятий именно с моей схемой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 июл 2011, 01:34 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
ameten писал(а):
Андрей, я же вроде уже в трех своих репликах написал: при введении Уникального Одноразового Идентификатора Пользователя в Голосовании все неудобства снимаются. У меня это еще в моем начальном посте с моей схемой описано.


Я опять чего-то не понимаю. Перечислите, пожалуйста, исключительно то, что будет выводиться в результатах голосования (списки и поля списков) с детализацией, откуда будет браться каждое поле. Без фраз типа "секрет пользователя" и "логин". Логин в системе всегда будет ФИО. В системе НЕ предусмотрено анонимности действий. Только тайна голосования. Кроме того, опишите, откуда будет браться одноразовый код и как он будет запоминаться пользователем (если будет).


ФИО не может быть Логином, так как есть люди, которые обладают одинаковыми ФИО. Как человек будет логиниться без уникального идентификатора?

Можно, конечно, использовать такую схему:
1. Есть ЭЦП у пользователя.
2. Система посылает сообщение пользователю.
3. Пользователь подписывает и отсылает обратно.
4. Система перебирает все открытые ключи, чтобы выяснить личность пользователя.
5. Находит тот открытый ключ, который преобразует подписанное сообщение в неподписанное.
6. Владелец открытого ключа залогинился.

Почему не использовать Логин, по которому можно узнать все данные пользователя?

1. Пользователь посылает логин.
2. Ему приходит сообщение.
3. Пользователь подписывает и отсылает обратно.
4. Система использует открытый ключ, соответсвующий логину,
5. Проверка, преобразует ли открытый ключ подписанное сообщение в неподписанное.
6. Если да, то владелец открытого ключа залогинился.

Так как разговор про удобство, что я опишу схему с Уникальным Одноразовым Идентификатором Пользователя в Голосовании.

Таблица результатов голосования:
1. Уникальный Серийный Номер Голосования.
2. Числовое Представление Варианта Ответа.
3. Секрет Пользователя в Голосовании, подписанный закрытым ключом пользвателя. Сам Секрет Пользователя в Голосовании в это поле не вносится.
4. Специальное Поле.
5. Уникальный Одноразовый Идентификатор Пользователя.

Пользователь выбирает произвольное число, какое захочет, назовем его Секрет Пользователя в Голосовании. Секрет Пользователя в Голосовании НЕ передается по каналам связи в первозданном виде. Пользователь должен его помнить. Если забыл, не страшно. Ничего не поменяется. Подписанный Секрет Пользователя в Голосовании лежит в Таблице результатов Голосования.

Теперь я вижу, что вы имеете в виду под удобством. Чтобы избавить пользователя от необходимости помнить Уникальный Одноразовый Идентификатор Пользователя для каждого голосования, нам надо сохранить его в отдельной таблице в зашифрованном виде, причем искать мы будем по Логину и Уникальному Серийному Номеру Голосования. Это связывает открытый ключ с зашифрованным данными. Все, убедили. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 июл 2011, 09:04 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
ameten писал(а):
Андрей писал(а):
ameten писал(а):
Андрей, я же вроде уже в трех своих репликах написал: при введении Уникального Одноразового Идентификатора Пользователя в Голосовании все неудобства снимаются. У меня это еще в моем начальном посте с моей схемой описано.


Я опять чего-то не понимаю. Перечислите, пожалуйста, исключительно то, что будет выводиться в результатах голосования (списки и поля списков) с детализацией, откуда будет браться каждое поле. Без фраз типа "секрет пользователя" и "логин". Логин в системе всегда будет ФИО. В системе НЕ предусмотрено анонимности действий. Только тайна голосования. Кроме того, опишите, откуда будет браться одноразовый код и как он будет запоминаться пользователем (если будет).


ФИО не может быть Логином, так как есть люди, которые обладают одинаковыми ФИО. Как человек будет логиниться без уникального идентификатора?

Можно, конечно, использовать такую схему:
1. Есть ЭЦП у пользователя.
2. Система посылает сообщение пользователю.
3. Пользователь подписывает и отсылает обратно.
4. Система перебирает все открытые ключи, чтобы выяснить личность пользователя.
5. Находит тот открытый ключ, который преобразует подписанное сообщение в неподписанное.
6. Владелец открытого ключа залогинился.

Почему не использовать Логин, по которому можно узнать все данные пользователя?

1. Пользователь посылает логин.
2. Ему приходит сообщение.
3. Пользователь подписывает и отсылает обратно.
4. Система использует открытый ключ, соответсвующий логину,
5. Проверка, преобразует ли открытый ключ подписанное сообщение в неподписанное.
6. Если да, то владелец открытого ключа залогинился.

Так как разговор про удобство, что я опишу схему с Уникальным Одноразовым Идентификатором Пользователя в Голосовании.


В нашей системе вообще не будет никаких логинов или паролей (кроме тех, которые будут нужны для ЭЦП).

Логин будет происходить через опознание воткнутого в USB порт токена с ЭЦП пользователя. Естественно, для идентификации будет использоваться не просто ФИО, а ФИО+ИНН+ПФР или что-то аналогичное.

Процедуру смены фамилии или других идентификационных данных нужно будет еще продумать.

ameten писал(а):
Таблица результатов голосования:
1. Уникальный Серийный Номер Голосования.
2. Числовое Представление Варианта Ответа.
3. Секрет Пользователя в Голосовании, подписанный закрытым ключом пользвателя. Сам Секрет Пользователя в Голосовании в это поле не вносится.
4. Специальное Поле.
5. Уникальный Одноразовый Идентификатор Пользователя.

Пользователь выбирает произвольное число, какое захочет, назовем его Секрет Пользователя в Голосовании. Секрет Пользователя в Голосовании НЕ передается по каналам связи в первозданном виде. Пользователь должен его помнить. Если забыл, не страшно. Ничего не поменяется. Подписанный Секрет Пользователя в Голосовании лежит в Таблице результатов Голосования.

Теперь я вижу, что вы имеете в виду под удобством. Чтобы избавить пользователя от необходимости помнить Уникальный Одноразовый Идентификатор Пользователя для каждого голосования, нам надо сохранить его в отдельной таблице в зашифрованном виде, причем искать мы будем по Логину и Уникальному Серийному Номеру Голосования. Это связывает открытый ключ с зашифрованным данными. Все, убедили. :)


Я рад. :)

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 11:58 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Я нашел слабое место моей схемы по сравнению со схемой Андрея.

Если кто-то случайно узнает владельза записи в Таблице результатов голосования, то голос может быть подделан без проблем, используя тот же Секрет Пользователя в Голосовании, который выборал пользователь.

Исправлю свою схему с использованием стандартной процедурой "подпись, шифровка", то есть подписываем все данные, потом все данные с подписью шифруем, как сделал Андрей.

Сам текст исправленной схемы:

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

Предположения: у человека есть Логин (уникален в системе), секретный пароль (никогда не передается по телекоммуникационным сетям, знает его только пользователь, нужен для доступа к паре открытый-закрытый ключ), пара открытый-закрытый ключ (закрытый ключ используется для подписи, открытый ключ - для шифрования). Закрытый ключ известен только пользователю, открытый ключ - кому угодно. Открытые ключи передаются по каналам связи, закрытые ключи никогда не передаются по каналам связи. Пара открытый-закртый ключ выдается по паспорту, что обеспечивает однооднозначное (одно - 2 раза) соответствие между пользователями и парами ключей.

Голосование: вопрос, варианты ответов (конечное число, варианты определяются предварительно). Каждое голосование имеет Уникальный Серийный Номер Голосования. Уникальный Серийный Номер Голосования передается по каналам связи. Варианты ответов и их числовые представления известны всем. Они передаются по каналам связи.

Процесс голосования:
1. Пользователь решает принять участие в голосовании.
2. Голосующий подписывает Уникальный Серийный Номер Голосования своим закрытым ключом.
3. Голосующий выбирает вариант, за который он отдет свой голос.
4. Пользователь выбирает произвольное число, какое захочет, назовем его Секрет Пользователя в Голосовании. Секрет Пользователя в Голосовании НЕ передается по каналам связи в первозданном виде.

Составляем таблицу участвоваших в голосовании:
1. Логин (по нему мы можем выяснить все данные пользователя: ФИО, контакты, фото).
2. Подписанный закрытым ключом пользователя Уникальный Серийный Номер Голосования.

Эта таблица защищиает результаты голосования от изъятий и вложений. Если в этой таблице есть запись, что пользователь принял участие в голосовании, то и в следующей таблице должна быть запись, соответствующая пользователю.

Составляем таблицу результатов голосования:
1. Уникальный Серийный Номер Голосования.
2. Числовое Представление Варианта Ответа.
3. Секрет Пользователя в Голосовании, подписанный закрытым ключом пользвателя. Сам Секрет Пользователя в Голосовании в это поле не вносится.
4. Специальное Поле.

Столбцы 1,2 используются для подведения итогов голосования.

Столбецы 3,4 - используются для проверки самим пользователем правильности стобцов 1,2.

Специальное Поле - это подписанные закрытым ключом пользователя данные (Уникальный Серийный Номер Голосования, Числовое Представление Варианта Ответа, Логин, Секрет Пользователя в Голосовании), которые потом зашифрованны открытым ключом польвателя. Расшифровать его может только сам пользователь. Зашифрованное Специальное Поле передается по каналам связи.

Никакаие другие данные по голосованию не сохраняются.

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

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

Обеспечение тайны голосования - есть.
Единственное поле, которые может выдать пользователя по его подписи - это 3. Но, если у вас есть доступ только к открытым ключам пользователей и вы не знаете Секрет Пользователя в Голосовании, то каким бы открытым ключем вы не расподписывали поле 3., вы будете получать ничего не значащее для вас число. Никто не может расшифровать поле 4., кроме самого пользователя, так как только пользователь, знающий закрытый ключ, может расшифровать это поле.

Невозможность подделки голосования - есть.
1. Просто поменять поле 2. Числовое Представление Варианта Ответа. Тогда пользователь находит свою запись, видит, что она поменялась. Заявляет, что запись подделана. Пользователь расшифровывает Специальное Поле - только он знает закрытый ключ, Секрет Пользователя в Голосовании расподписывается, пользователь раскрывает закрытый ключ. Проверка: Факт, что пользователь смог расшифровать 4. доказывает, что это его запись, Секрет Пользователя в Голосовании из 3. совпадает с Секрет Пользователя в Голосовании из 4., Числовое Представление Варианта Ответа из 2. НЕ совпадает с Числовым Представлением Варианта Ответа из 4, закрытый ключ соответсвует открытому ключу. Так как пара ключей раскрыта, она переиздается для пользователя.
2. Попытка изменить поле 2. и поле 4. - меняем выбор пользователя и меняем соответственно поле 4. Это возможно сделать, так как поле 4. шифруется открытым ключем пользователя, который всем известен. НО: Из-за невозможности выяснить, кому принадлежит конкретная запись, становится невозможно выбрать логин, который записывается в поле 4.. Даже если с логином угадали, то туда надо вписать Секрет Пользователя в Голосовании такой же, как и в поле 3. Но подписать произвольный Секрет Пользователя в Голосовании может только сам пользователь.

Ниже описана модификация для быстрого поиска записи пользователя голосования:

Выдаем пользоватлю Уникальный Одноразовый Идентификатор Пользователя в Голосовании. Добавляем Уникальный Одноразовый Идентификатор Пользователя в Голосовании в таблицу результатов голосования и в Специальное Поле. Теперь пользователь может искать свою запись по Уникальный Одноразовый Идентификатор Пользователя в Голосовании.

Невозможно выдать один и тот же Уникальный Одноразовый Идентификатор Пользователя в Голосовании нескольким пользователям, так как иначе будет несколько записей в базе данных с одинаковыми Уникальный Одноразовый Идентификатор Пользователя в Голосовании, что легко проверяется, либо одна запись, Специальное Поле которой сможет расшифровать только один из пользователей.

Описанная выше схема работает при следующих условиях:
1. Никто не запоминает соответсвия Уникальный Одноразовый Идентификатор Пользователя в Голосовании <--> Логин в открытом виде.
2. Уникальный Одноразовый Идентификатор Пользователя в Голосовании могут получить только пользователи, прошедшие аутентификацию, то есть не существует Уникальный Одноразовый Идентификатор Пользователя в Голосовании, которые бы не соответствовали реальному пользователю системы.

Для дополнительного удобства пользователя (чтобы ему не пришлось запоминать Уникальный Одноразовый Идентификатор Пользователя в Голосовании), создаем следующую таблицу.

Таблица поиска:
1. Логин пользователя
2. Уникальный Серийный Номер Голосования
3. Уникальный Одноразовый Идентификатор Пользователя в Голосовании, зашифрованный открытым ключом пользователя.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 12:09 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
ameten писал(а):
пара открытый-закрытый ключ (закрытый ключ используется для подписи, открытый ключ - для шифрования)

ameten, вот такие вещи в ваших текстах просто убивают. :( Ну неужели так сложно разобраться с системой ЭЦП и шифрования с открытым ключем?

Для подписи используют закрытый ключ. Процедура подписи заключается в шифровании, грубо говоря, контрольной суммы документа. При этом открытым ключем производится расшифровка! После таких высказываний я не уверен что имеет смысл дальше читать ваш большой текст, т.к. если вы это используете где-то дальше в тексте, он становится бесполезным. :(

В идеале пользователю выдается 3 пары ключей:
1. Одна пара - для ЭЦП
2. Вторая - для шифрования открытым ключем, расшифровки закрытым (то что расшифровать сможет только пользователь);
3. Третья - для расшифровки открытым ключем, шифрования закрытым (что-бы было известно что исходное сообщение от данного пользователя).

Возможно что ключи 1 и 3 используют совместно. Но нужно понимать что используется НЕ одна пара ключей, а, как минимум, две. Возможно и три.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 12:52 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
Андрей писал(а):
ameten писал(а):
пара открытый-закрытый ключ (закрытый ключ используется для подписи, открытый ключ - для шифрования)

ameten, вот такие вещи в ваших текстах просто убивают. :( Ну неужели так сложно разобраться с системой ЭЦП и шифрования с открытым ключем?

Для подписи используют закрытый ключ. Процедура подписи заключается в шифровании, грубо говоря, контрольной суммы документа. При этом открытым ключем производится расшифровка! После таких высказываний я не уверен что имеет смысл дальше читать ваш большой текст, т.к. если вы это используете где-то дальше в тексте, он становится бесполезным. :(

В идеале пользователю выдается 3 пары ключей:
1. Одна пара - для ЭЦП
2. Вторая - для шифрования открытым ключем, расшифровки закрытым (то что расшифровать сможет только пользователь);
3. Третья - для расшифровки открытым ключем, шифрования закрытым (что-бы было известно что исходное сообщение от данного пользователя).

Возможно что ключи 1 и 3 используют совместно. Но нужно понимать что используется НЕ одна пара ключей, а, как минимум, две. Возможно и три.


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

НО

1. Если текст зашифрован закрытым ключем, то открытым ключем происходит его расшифровка.
2. Если текст открытый, то мы можем открытым ключем зашифровать. С помощью закрытого ключа мы его можем расшифровать.

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

Давайте я вам с помощью википедии объясню: http://ru.wikipedia.org/wiki/RSA

Числа e и d абсолютно симметричны. Если мы в качестве открытой экспоненты выберем число d, то, вычисляя число мультипликативно обратное к нему, получим число e. Вопрос только в том, какое из чисел секретное, а какое известно всем.

Андрей писал(а):
После таких высказываний я не уверен что имеет смысл дальше читать ваш большой текст, т.к. если вы это используете где-то дальше в тексте, он становится бесполезным. :(


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 18:26 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
ameten писал(а):
1. Если текст зашифрован закрытым ключем, то открытым ключем происходит его расшифровка.

Вы очень любите путать понятия. Подпись всегда создается закрытым ключем, а проверяется (расшифровывается) открытым. Всегда!

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 18:29 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Давайте, все-таки, договоримся что мы используем только официально признанные алгоритмы шифрования и официально признанные ЭЦП. Это принципиальная позиция для признания результатов голосования юридически обоснованными. Это сразу исключает любые нестандартные способы использования ключей, шифрования, ЭЦП и т.д. ТОЛЬКО стандартные.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 18:56 
Не в сети

Зарегистрирован: 28 июн 2011, 20:07
Сообщения: 150
ameten писал(а):
1. Если текст зашифрован закрытым ключем, то открытым ключем происходит его расшифровка.
2. Если текст открытый, то мы можем открытым ключем зашифровать. С помощью закрытого ключа мы его можем расшифровать.


Андрей писал(а):
Вы очень любите путать понятия. Подпись всегда создается закрытым ключем, а проверяется (расшифровывается) открытым. Всегда!


Андрей писал(а):
2. Вторая - для шифрования открытым ключем, расшифровки закрытым (то что расшифровать сможет только пользователь);
3. Третья - для расшифровки открытым ключем, шифрования закрытым (что-бы было известно что исходное сообщение от данного пользователя).


Андрей, вы себя читаете, или только пишите? Мы же одно и тоже говорим!

Андрей писал(а):
Давайте, все-таки, договоримся что мы используем только официально признанные алгоритмы шифрования и официально признанные ЭЦП. Это принципиальная позиция для признания результатов голосования юридически обоснованными. Это сразу исключает любые нестандартные способы использования ключей, шифрования, ЭЦП и т.д. ТОЛЬКО стандартные.


Да я не против. Я просто уверен, что моя схема не противоречит этим стандартным способам. Просто добавим еще несколько пар ключей, вот и все.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2011, 20:26 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
ameten писал(а):
Андрей, вы себя читаете, или только пишите? Мы же одно и тоже говорим!


В одном месте вы говорите то-же самое, а в соседнем что-то совершенно другое.

ameten писал(а):
Андрей писал(а):
Давайте, все-таки, договоримся что мы используем только официально признанные алгоритмы шифрования и официально признанные ЭЦП. Это принципиальная позиция для признания результатов голосования юридически обоснованными. Это сразу исключает любые нестандартные способы использования ключей, шифрования, ЭЦП и т.д. ТОЛЬКО стандартные.


Да я не против. Я просто уверен, что моя схема не противоречит этим стандартным способам. Просто добавим еще несколько пар ключей, вот и все.

"Просто добавим" не подойдет. Есть ГОСТ, утвержденный законом, есть подписи и ключи которые согласованы с законом и все. Никаких "просто".

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB