Наткнулся на днях на одну статейку, к-я навела меня на некоторые мысли
http://www.xakep.ru/post/53380/:
Избирательную систему пытались взломать листом бумаги и ручкой Дата: 27.09.2010
В результатах недавних выборов, прошедших в Швеции, обнаружены следы попытки взлома. Дело в том, что
шведские законы о выборах позволяют избирателям вписывать свой вариант от руки. Кроме того, анонимный список всех ответов, которые дали избиратели, публикуется в открытых источниках. Любопытный блоггер Йонас Эльфстрeм (Jonas Elfström) обнаружил, по меньшей мере, одну попытку взлома системы подсчета голосов – некий технически подкованный избиратель внес в бюллетень специальный запрос на языке управления базами данных SQL.
В большинстве стран на выборах используются готовые бюллетени с фиксированным списком вариантов – избиратель может лишь поставить галочку или другую отметку в поле напротив нужного варианта. Швеция в этом смысле является исключением – здесь можно вписать любой свой вариант от руки. Судя по всему, кому-то в голову пришла мысль о потенциальной уязвимости системы учета голосов к так называемой «SQL-инъекции». В результате в открытом доступе была обнаружена такая строка, вписанная анонимным избирателем: ";13;Hallands län;80;Halmstad;01;Halmstads västra valkrets;0904;Söndrum 4;pwn DROP TABLE VALJ;1". Само интересное в этой строке – команда «DROP TABLE», которая, если попадет в интерпретатор SQL-команд, вызовет полное уничтожение таблицы. В данном случае, это таблица под названием «VALJ».
Интересно, что атака на базы данных с использованием такого рода фрагментов кода на языке SQL в шутливой форме была описана в одном из комиксов из серии XKCD, где герой назвал своего ребенка именем «); DROP TABLE Students; --». При малейшей небрежности разработчиков системы такое имя привело бы к удалению таблицы Students во всех системах, где встречалось бы подобное имя.
Кроме SQL-атак в последних шведских выборах встретилась и еще одна атака, правда, столь же безуспешная. На этот раз злоумышленник или шутник вставил вместо своего варианта строку «R;14;Västra Götalands län;80;Göteborg;03;Göteborg, Centrum;0722;Centrum, Övre Johanneberg;(Script src=http://hittepa.webs.com/x.txt);1». При
отображении результатов на веб-сайте шведской избирательной комиссии подобный текст мог бы вызвать внешний сценарий на языке JavaScript и нарушить нормальную работу сайта. К счастью, все результаты голосований отображаются на веб-сайте как неформатированный текст, а не в формате HTML, поэтому попытка вставить свой сценарий не сработала.
Кроме SQL-атак с использованием команд DROP TABLE и DROP DOWN (полное уничтожение всех таблиц в СУБД) и атак с попыткой вставить внешние JavaScript-сценариев, наблюдатели обнаружили целый ряд ссылок на различные Интернет-магазины и другие веб-сайты. В целом, использование современных технологий в сочетании со столь демократичными избирательными законами потенциально может привести к самым неожиданным казусам. Вообще, этот пример является хорошим уроком для всех разработчиков приложений, где используются базы данных и другие широко известные технологии, способные интерпретировать вводимый текст как команды.
Подробнее о попытках взломать электронную систему учета и отображения результатов голосования в избирательной системе Швеции с использованием лишь бумаги и ручки можно прочитать в обзорах на сайтах Wired и Switched.
***
Итак, в Швеции избиратель может написать любой текст в поле ответа и этот текст будет опубликован.
1) Совместим эту схему с традиционной (российской). Пусть список ответов будет по-прежнему фиксированным, но добавим в бюллетень специальное поле для произвольного текста. Введя туда достаточно нетривиальный текст, избиратель сможет потом найти его поисковиком на сайте избиркома (или в распечатке по своему участку вручную) и проверить -
правильно ли учтён его голос? Анонимно, заметьте!
2) Можно в этом поле и ничего не писать, никто не неволит. Этим повышается анонимность бюллетеня.
3) Расшифровку и публикацию записей в дополнительном поле можно сделать и позже подсчёта голосов за кандидатов. Т.е. сначала быстро подсчитать галочки, объявить победителя, а потом уже, не торопясь, расшифровывать каракули избирателей (но в разумные сроки, что нужно прописать в Законе).
4) Новая система совместима с другими. Скажем, бюллетени можно пронумеровать, перемешать, выложить обратной стороной, и предложить избирателю вытянуть случайный.