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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 29 авг 2011, 11:38 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Предлагаю следующий вариант:
Хранить в таблице голосований следующую структуру:
1) id голосования
2) id выбора
3) my_sign = f(data)
data=(id голосования, id выбора, id пользователя)
f(data) = public_encrypt( private_encrypt( data ) );

Таким образом, голосовавший может не только проверить, но и доказать, как он проголосовал.

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

Замечание 2: можно целиком и полностью отказаться от использования "одноразовых идентификаторов", так как my_sign является уникальными(1) данными.

Замечание 3: для исключения вброса голосов, все так же необходимо вести дополнительную таблицу с id проголосовавших. Для изменения данных, пользователю необходимо будет предоставить my_sign предыдущего выбора (2).

(1) данные my_sign настолько же уникальные как и ключи, то есть вероятность коллизий настолько мала, что ими можно пренебречь.
(2) есть вариант хранить в дополнительном поле public_encrypt(private_encrypt(id голосования, id пользователя), это не раскрывает пользователя, но идентифицирует его предыдущий выбор в момент изменения выбора.

Если мой вариант повторяет уже существующий - извиняюсь.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Юрий, вы не учитываете одного момента. Расшифровать данные никто не сможет, но определить кто их зашифровал - легко. Так что это не вариант.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
как вы проверите кто проголосовал?


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
yurial писал(а):
как вы проверите кто проголосовал?

При попытке расшифровать gpg дает возможность определить параметры ключа нужного для расшифровки. По этим параметрам легко определить кто проголосовал.

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Цитата:
Кроме того, открытый список с открытыми подписями проголосовавших нужен в любом случае, т.к. иначе легко можно произвести вброс голосов. Надо что-бы всем была доступна информация кто принимал участие в голосовании. И что-бы была возможность обратиться к этому человеку что-бы он проверил свой голос.

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

Цитата:
При попытке расшифровать gpg дает возможность определить параметры ключа нужного для расшифровки. По этим параметрам легко определить кто проголосовал.

Можно конкретнее, с gpg я познакомился совсем недавно.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
yurial писал(а):
Можно конкретнее, с gpg я познакомился совсем недавно.

Ну вот смотрите, у меня тут есть в базе gpg несколько открытых ключей, которыми я могу зашифровать информацию... Шифрую какой-нибудь, текст...

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.14 (GNU/Linux)

hQEOAwL0Fa51Ij9JEAQA1lvW/BWnt4W/qBW0qS87V5/yiyowan6SLAD3tJgsicVS
Tn9zb0V2IejKRQzsHHFb5BtefgAosPKgi/DPC5FuoOegO3IW4tx9KEN3hLEQ9FL2
60x1zPFxLe0xfCSv2G0JzBQCzlKzrSgp6i0kBCI6twOW2d5wPC0nZjRgV5Uil4ED
/Rb+8ObGR8Nl47PoYm2uwSpHPuN4UfjI7VySuEj+wv+05o9Zv/MM6pusTcF+GkzJ
/Q6TAMeutDk/lZ7VWiiCNaVWK4bgqyFYacSlcOdb/SIICaomzZZYJxdrxNXcLYb8
Byj27ahgRPMb1to8L1Tm46qAS0g5GTyI8Mnj3a7PyAZm0lIBWznK5DbSuRtGC5EG
xyE63h6N/Rfjnqh9gFlinkfW+C3KvZl7hAIxrM/wtw10/b9nLz0p7CYphAkNQ5Ne
mElfbJ6dYKfX18Eg8c0gODHT4gqg
=aXRj
-----END PGP MESSAGE-----

Т.к. у меня есть только открытый ключ, расшифровать я ее не могу, но если я ее дам на вход gpg, он мне ответит:

gpg: зашифровано 1024-битным ключом ELG, с ID 75223F49, созданным 2002-03-13
"Mandrake Linux <mandrake@mandrakesoft.com>"
gpg: сбой расшифрования: Нет секретного ключа

Текст я не расшифрую, но легко могу определить чьим ключем этот текст зашифрован.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Думаю эту информацию можно вырезать из зашифрованных данных. При необходимости доказать свою правоту - восстанавливать (имя пару ключей это не составит труда).

----
ID ключа имеет смещение +0x08

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.14 (GNU/Linux)

hQEOAwL0Fa4AAAAAEAQA1lvW/BWnt4W/qBW0qS87V5/yiyowan6SLAD3tJgsicVSTn9zb0V2IejK
RQzsHHFb5BtefgAosPKgi/DPC5FuoOegO3IW4tx9KEN3hLEQ9FL260x1zPFxLe0xfCSv2G0JzBQC
zlKzrSgp6i0kBCI6twOW2d5wPC0nZjRgV5Uil4ED/Rb+8ObGR8Nl47PoYm2uwSpHPuN4UfjI7VyS
uEj+wv+05o9Zv/MM6pusTcF+GkzJ/Q6TAMeutDk/lZ7VWiiCNaVWK4bgqyFYacSlcOdb/SIICaom
zZZYJxdrxNXcLYb8Byj27ahgRPMb1to8L1Tm46qAS0g5GTyI8Mnj3a7PyAZm0lIBWznK5DbSuRtG
C5EGxyE63h6N/Rfjnqh9gFlinkfW+C3KvZl7hAIxrM/wtw10/b9nLz0p7CYphAkNQ5NemElfbJ6d
YKfX18Eg8c0gODHT4gqg

-----END PGP MESSAGE-----

Почитав документацию можно вырезать _все_ лишние данные способные рассекретить владельца.

ps Так как у меня нет открытого ключа, то он мне не выдал ни дату создания ни владельца (только id). Это меня наводит на мысль что эти данные он выдергивает из соответствующего открытого ключа. Если мы сотрем id, то никакие данные мы не получим.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
yurial писал(а):
ps Так как у меня нет открытого ключа, то он мне не выдал ни дату создания ни владельца (только id). Это меня наводит на мысль что эти данные он выдергивает из соответствующего открытого ключа. Если мы сотрем id, то никакие данные мы не получим.

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

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

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
#man gpg

--throw-keyids

Do not put the recipient key IDs into encrypted messages. This helps to hide the receivers of the message and is a limited countermeasure against traffic analysis.

Проверено, работает.


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

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
yurial писал(а):
#man gpg

--throw-keyids

Do not put the recipient key IDs into encrypted messages. This helps to hide the receivers of the message and is a limited countermeasure against traffic analysis.

Проверено, работает.


Не знал. Спасибо за информацию.

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

Вообще, этот вопрос уже осбуждался, насколько я помню, с ameten. И он меня не убедил в преимуществах такого метода. Что-бы нам по второму кругу не спорить об одном и том-же, рекомендую почитать вот эту ветку - http://облачная-демократия.рф/forum/viewtopic.php?f=5&t=59 и вот эту - http://облачная-демократия.рф/forum/viewtopic.php?f=5&t=48

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


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

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


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

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


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

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