Всеукраинский референдум. Техзадание.

Всеукраинский национальный референдум.
Попытка написать Техническое задание.

Из многочисленных обсуждений в ФБ, ДОУ, ЖЖ, и тд. я вынес такие требования к системе:
1. достоверная авторизация
2. неизменность внесенных данных
3. открытость данных (кроме персональных)
4. отказоустойчивость
5. масштабируемость
6. гарантированная имплементация результатов (иначе зачем тратить время)
7. широкая доступность ( web + Android, Ios)

Предлагаю пункты 3,4,5,7 не описывать, а просто оставить на потом, когда будет собрана команда единомышленников, готовых хотя бы бесплатно помогать, а не только свысока критиковать. Пусть они и оценят решение.

Авторизация

ЭЦП
Проще всего завести себе бесплатные варианты ЭЦП. Можем вообще сами себе быть сертификационным центром. Собрались, удостоверили свои личности, сделали ключи, внесли в базу. На первых порах покатит.

Авторизация по QAuth2
Больше всего надежд на Приватбанк, с его-то базой карточек. Однако от них я пока что имею такой фидбек, и что делать дальше я не знаю:

Дмитрий, всё очень просто.
Если у Вас коммерческий проект, то расскажите о нем, дайте нам компанию, которая будет его реализовывать.
Если некоммерческий, то дайте организацию, для которой Вы делаете его.
5 января 2016 г., 14:35

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

Идея с blockchain интересна, но для других более крутых задач, о которых пока говорить рано.
В данном случае это явное излишество которое сильно затянет сроки разработки.
Открытые данные позволят любому делать снимки базы хоть каждые 5 мин. Для математика этого достаточно чтобы понять, если ли мухлеж с результатами или нет.

Каждый сможет делать себе копию данных (это и надежность повысит).

Имплементация результатов.

Все очень просто, вероятность внедрения результатов народного голосования может быть выражена в виде предела:

P = lim ( q -> 1 .. M ) F = q / M

где М = 42 000 000
соответственно если q=1 вероятность около 0,
а если q=42 000 000 то около 1.

Скажете нереально?
Спросите у Януковича.

https://drive.google.com/open?id=0B-EFPWmvnm7DQ2YxcS1CUnhIakk

https://drive.google.com/open?id=0B-EFPWmvnm7DZndQVzRGVUhZMHc

https://drive.google.com/open?id=0B-EFPWmvnm7DV1g5VklLRG1wckk

Комментарии

Аватар пользователя chabapok
Здорово! Раз 100%, то члены вашей команды могут принимать участие в ответах на критику, касающуюся технических моментов вопроса? Вам определенно стоит их подключить к этому процессу.

Так же, давать ссылки и запрещать к ним доступ - мне кажется это плохая идея.
+1
0
-1
16 января 2016 // 16:13 []
Аватар пользователя chabapok
Как вариант. Только тогда зачем учебным материалом нагружать команду, надо все делать самому, а роль команды может быть только консультативной.
+1
0
-1
16 января 2016 // 20:16 []
Против нашего народного украинского менталитета ни одна защита не поможет, перед ним законы бессильны. Мы между капелек проскочим, но голос свой выгодно продадим.
+1
0
-1
15 января 2016 // 21:02 []
что конкретно? какие проблемы будут - вам написали. в опубликованные доки на уровне лабороторной работы студента, квартальной. вообще ничего особо конкретного.
+1
0
-1
16 января 2016 // 20:37 []
естественно,я упоротый. ато как же.
это ж только у вас опыт в ИТ. вы заявили о 50% готовности. я вас разочарую. эти документы некоторые фрилансеры с 2-3мя годами опыта(а не завленными 15 по 1му судя по всему) делают бесплатно как сопровождение к завке(bid) на проект.
о какой проработки проекта идет речь, если там даже fio одно поле неограниченного размера. да одни только супер-сокращенные названия полей в стартовой заявке уже намекают какбы. я бы такого фрилансера не выбрал
с такими документами готовность не может превышать 5%, прости димсан(с).
+1
0
-1
17 января 2016 // 20:29 []
Аватар пользователя chabapok
Защита от подделки результатов голосования не должна базироваться на человеческом факторе, (например, на честности админа). Аргумент "мой админ - честный" - это несерьезно и безосновательно.

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

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

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

Данная задача - для специалистов в области криптографии. Все остальное (база, дизайны сайта, организация серверов и тд) в ней вторично.

Это конечно, если мы говорим о голосованиях в масштабах страны. Если нужны голосования в масштабах фирмы - там все может быть проще. Но ведь вы заявили о масштабах страны. Пока вы не предоставите этот механизм - ко всему остальному никто серьезно всерьез относиться не будет. Вас будут троллить, а даже если вы сделаете, то всерьез это никто воспринимать не будет.
+1
0
-1
16 января 2016 // 21:22 []
Аватар пользователя chabapok
Этого недостаточно. Админ может сгенерировать несколько голосов от лица выдуманных им людей или бомжей, сгенерить их мд5 и вставить их в базу. А если голоса обезличины, то даже ненужно привлекать бомжей. Бери да генери их и подписывай мд5 и делай инсерты в базу.
На самом деле, проблема гораздо сложней, чем это кажется навскидку.
Вы не предоставили ни одного ответа, который бы меня устроил. Наличие ответа - это не значит, что он правильный. Давайте так, пока каждый из участников обсуждения не написал явно, что с ответом согласен - считается, что согласия нет, и вы дали неверный ответ. Отшутиться не получится.

ИЛИ - мы говорим, что это задача которую вы решаете в рамках обучения, не практическая. Тогда она оценивается по другим критериям. Хотя проблематика в ней та же, но там уже надо смотреть чему именно вы хотите научиться.
+1
0
-1
16 января 2016 // 22:38 []
Аватар пользователя chabapok
да. И предполагается, что центр не станет заниматься махинациями. Но в политике это предположение не работает. Работники такого центра могут быть в сговоре или под давлением - и сертифицировать некоторое кол-во левых ключей.
+1
0
-1
16 января 2016 // 23:20 []
Аватар пользователя chabapok
К сожалению, это реалии украинского политикума. Если у рыгов находили печати выборчих комиссий (например http://fakty.ictv.ua/ru/index/read-news/id/1505452) - то что мешает рыгам нагенерить себе много левых ЭЦП? Директор государственного Удостоверяющего Центра всегда будет подконтролен одной из политических сил. Это значит он заведомо в сговоре.

Ладно, я подкину вам идею. Если речь идет о заинтересованных кандидатурах, то можно чтобы у каждого кандидата был свой Удостоверяющий Центр. Сертифицироваться избиратель должен у каждого кандидата. Тогда ЭЦП сгенерированное одним из кандидатов безполезно, т.к. у него нет сертификата остальных. Но это если есть противоборствующие кандидаты. А если проводиться референдум в котором варианты ответа "едим яйца с острой стороны" и "едим с тупой" то нет сторон, которым давать УЦ. Там видимо надо как-то делать по желанию.

Хорошо, допустим мы так сделали. У каждого пользователя есть связка ключей и набор сертификатов. Как обеспечить анонимность голосования?
+1
0
-1
16 января 2016 // 23:52 []
Аватар пользователя chabapok
Ваш способ сводится к следующему: предполагается, что обслуживающий персонал махинациями заниматься не станет и сливать базы другим людям не будет. К сожалению, реалии нашего (и не только) политикума таковы, что полагаться на данное предположение крайне наивно.
+1
0
-1
18 января 2016 // 13:03 []
Аватар пользователя chabapok
Это вы не поняли суть опасности. Если вы храните голоса в открытом виде, то админы могут сливать базу - и они будут это делать, конечно.
+1
0
-1
18 января 2016 // 16:39 []
Попалась тут переведенная статейка в тему топика: "...Любое проектирование отстой. И всегда будет отстоем." :) (Автор Мэтт Траут.) Несмотря на такое пессимистичное начало, мне кажется, что статья все же написана для поднятия боевого духа разработчиков. http://habrahabr.ru/post/275231/
+1
0
-1
18 января 2016 // 05:44 []
Аватар пользователя dimson
вот мне помогают Традиційний спосіб голосування анонімний, але голоси все одно продають. І тиск все одно можливий, наша недавня історія має багато прикладів. Отже, не аргумент. Хто боїться — нехай не голосує. Навпаки, якщо буде відкрите голосування — то всі побачать, наприклад, що коллектив заводу «Красная зоря» проголосував за кандидата Х на 100 %. Усім буде видно, що це саме їх голоси, тоді як при анонімному голосуванні їх голоси перемішуються з іншими голосами з всього виборчого округу, хто за кого голосував неясно, і довести тиск з боку начальства взагалі неможливо. Відкритість в данному питанні, навпаки, гарантія чесного голосування, оскільки 100 % голосування «за» певного робочого колективу людей буде відразу видно як на ладоні.
+1
0
-1
18 января 2016 // 18:37 []
Аватар пользователя chabapok
И что дальше? Например, на выборах президента 2014 случился статистический "инцидент": из всех округов Украины на 178 округе (Чугуев) победил Добкин, причем с большим отрывом. Этот кандидат не является каким-то уникальным для данного округа, поэтому такой результат нельзя объяснить с рациональной точки зрения. Ненужно быть гением, чтобы сделать очевидное предположение: там были вбросы.
И что дальше? Кто-то занимался наказанием виновных? Нет. Кто-то вообще в новостях заикнулся о странном результате - нет.
Что касается заводов. Люди на крупных заводах исповедуют принцип "вы нам платите нормально - и говорите кто наш кандидат". Дальше своего завода они не видят. Я могу поверить, что все 100% рабочих завода проголосуют одинаково без давления и угроз.
+1
0
-1
19 января 2016 // 00:01 []

Страницы