Многие попытки (см., например Открытое электронное голосование(доказательство от противного), Про электронное тайное голосование) “на коленке” придумать эффективные схемы голосования, защищенного от основных видов фальсификаций, основываются на том или ином способе отказа от тайны голосования, игнорируя возникающие при этом опасности облегчения покупки голосов или принуждения избирателя к голосованию. Эти опасности, казалось бы, неизбежно вытекают из необходимости сочетать “несочетаемые” требования честных выборов – обеспечения возможности избирателю проверить, как учтен его голос, и исключения возможности продать свой голос – то есть доказать покупателю, как именно он проголосовал. Учет первого требования приводит к отказу от тайны голосования (хотя бы для самого избирателя), и, автоматически, дает этому избирателю возможность продать свой голос тому, кто захочет его купить. Возможность продажи голоса автоматически означает появление возможности принуждения избирателя голосовать по требованию злоумышленника под угрозой преследования или дискриминации. Фактической покупки голосов или принуждения может и не быть – достаточно самой угрозы и возможности такой покупки для возникновения опасности дискредитации результатов голосования.
Может ли современная криптография, решившая не менее головокружительные проблемы, представлявшиеся неразрешимыми на первый взгляд (открытие асимметричной системы шифрования), предложить решение, обеспечивающие выполнение двух требований честных выборов?
Еще в середине 2000-х годов разработчик широко известного алгоритма несимметричного шифрования RSA Рональд Райвест (Ronald Rivest) предложил в своих работах “The ThreeBallot Voting System” (“Система голосования Три бюллетеня”) и “Three voting protocols: ThreeBallot, VTV and Twin” (“Системы голосования: Три бюллетеня, Голос-Антиголос-Голос и Близнец”) несколько систем голосования, которые способны решить проблему выполнения одновременно обеих принципов честных выборов.
Принцип работы системы ThreeBallot (образец бюллетеня – см. рис.1), заключается в использовании бюллетеня, разделенного на 3 части, каждая из которых имеет уникальный и случайный номер (для того, чтобы его нельзя было запомнить, он состоит из числовых и нечисловых символов – при этом, конечно, необходимо исключить возможность фотографирования всего бюллетеня). Бюллетень заполняется как единое целое, по строкам, при этом для голосования “ЗА” кандидата, указанного в строке, нужно проставить 2 отметки за него в любых 2-х (и только двух) частях бюллетеня. Для голосования “ПРОТИВ” нужно оставить в строке, где указан кандидат только одну отметку в одной из частей бюллетеня. Бюллетень, в котором нет хотя бы одной отметки за каждого кандидата, считается недействительным. После завершения голосования, избиратель вставляет бюллетень в проверочную машину (проверяющую правильность заполнения бюллетеня – наличие хотя бы одной отметки и не более двух отметок в строке для каждого кандидата) и выбирает, копию какой части бюллетеня вернуть ему как квитанцию для контроля правильности учета его голоса. Далее проверочная машина разделяет бюллетень на 3 части, делает копию с выбранной избирателем части, возвращает ее избирателю. Все части бюллетеней публикуются в публичной базе данных (PBB, Public Bulletin Board), вместе со списком проголосовавших избирателей, причем число бюллетеней должно равняться умноженному на 3 числу избирателей, принявших участие в голосовании и правильно заполнивших бюллетени. Победивший в голосовании кандидат вычисляется по числу отметок, поданных за каждого кандидата, из которого вычитается число правильно заполненных бюллетеней, разделенное на 3. Например, если в выборах приняли участие 3 избирателя, правильно заполнившие бюллетени так, как указано на рис.1, то в базу данных попадет 9 бюллетеней, число голосов за кандидата Jo будет равно 6-(9/3)=3 голоса, за кандидата Horror – 3-(9/3)=0 голосов. Невыполнение этого правила будет свидетельствовать о вбросе, изъятии или искажении части бюллетеней. Избиратель может проконтролировать, правильно ли учтен его голос, сравнив копию части бюллетеня, находящегося у него на руках, с находящейся в PBB, но не может продать свой голос, так как не может доказать, за кого из кандидатов он голосовал (для доказательства необходимо знать, какие части разделенного бюллетеня составляли единый бюллетень).
Рис.1. Бюллетень системы “ThreeBallot”. Избиратель проголосовал за кандидата в Президенты Jo и за кандидата в Сенат Wu, и против Horror и Yuk. (рисунок взят из статьи “Three voting protocols: ThreeBallot, VAV and Twin”)
Дальнейшим развитием системы “ThreeBallot”, в целях упрощения для избирателя, стала система “Vote-AntiVote-Vote” (VAV, “Голос-Антиголос-Голос”) (см. рис.2). В ней бюллетень также разделен на 3 части, но разрешено не ставить отметок за некоторых кандидатов, а голос избирателя отдается тому кандидату, для которого избиратель не проставил отметки в бюллетене “AntiVote”, но поставил отметку в бюллетене “Vote”.
Рис 2. Бюллетень системы “Vote-AntiVote-Vote”, избиратель проголосовал за кандидата Xerxes. (Рисунок взят из статьи “Three voting protocols: ThreeBallot, VAV and Twin”)
К сожалению, системы ThreeBallot и VAV уязвимы к возможности продажи голосов, основанной на возможности доступа скупщика к данным о том, из каких частей состояли первоначально бюллетени. Хотя в PBB этих данных и не содержится, они могут быть похищены.
Несколько более простой, является изобретенная Д.Чомом (David Chaum), автором концепции “цифровых наличных”, и описанная в 2006 году С.Поповениуком (S.Popoveniuc) и Б.Хоспом (B.Hosp) из университета Джорджа Вашингтона в статье “An Introduction to Punchscan”, система голосования Punchscan (см. рис.3).
Рис.3. Образец бюллетеня системы Punchscan для вопроса референдума (требуется ответ Да или Нет). Избиратель выбрал ответ “Да” (b). Для традиционных выборов, вместо “Да” и “Нет” могут быть указаны имена кандидатов, число кандидатов может быть больше двух. (рисунок взят из статьи ”An Introduction to Punchscan”)
Бюллетень системы Punchscan состоит из двух листов, помеченных одним и тем же уникальным номером и наложенных один на другой. На первом (верхнем) листе указаны имена кандидатов и их идентификаторы (например, буквы алфавита) в случайном порядке, а в нижней части листа имеются отверстия, через которые виден второй лист бюллетеня. На втором листе, под отверстиями, напечатаны идентификаторы кандидатов, тоже в случайном порядке. Избиратель, выбрав, кому из кандидатов он отдает свой голос, специальным фломастером закрашивает отверстие первого листа, в котором видит идентификатор кандидата, напечатанный на первом листе, так, чтобы отметка фломастера осталась на обеих листах бюллетеня. Далее бюллетень разделяется на листы, одну из частей уничтожают в шредере на глазах избирателя, вторая сканируется и помещается в PBB вместе со списком проголосовавших избирателей, а оригинал выдается избирателю на руки для контроля учета его голоса.
Сравнивая количество бюллетеней в PBB со списком избирателей и свою копию бюллетеня с помещенной в PBB, избиратели контролируют правильность учета его голоса.
Тем не менее, остается опасность продажи голосов избирателями, так как, хотя сам избиратель по имеющейся у него части бюллетеня не может доказать, за кого он голосовал, это может сделать скупщик голосов, если получит доступ к информации о соответствии идентификаторов и кандидатов в бюллетенях.
В системе “Scantegrity”, развивающей достоинства Punchscan, основной недостаток остался без изменений – нет защиты от возможности продажи голоса избирателя в случае получения скупщиком голосов доступа к информации о соответствии случайных номеров выбора, указанных для каждого кандидата в бюллетене, выданном избирателю.
После определенной работы по испытанию и усовершенствованию системы ThreeBallot, Р.Райвист предложил намного более простую систему голосования, радикально упрощающую процесс для избирателя, но сохраняющую преимущества систем ThreeBallot и VAV и исключающую опасность покупки голосов на основе доступа к информации о предварительно напечатанных бюллетенях. Эта система, названная автором Twin (Близнец), описана в статье “Three voting protocols: ThreeBallot, VTV and Twin”.
Основной принцип системы Twin – чрезвычайно прост, называется “плавающая квитанция” (Floating Receiption) и предусматривает, что избиратель, проголосовав, получает на руки для контроля правильности учета голоса копию избирательного бюллетеня, но не свою, а кого-либо, кто проголосовал до него.
Процесс голосования в системе Twin может быть построен следующим образом:
1.Заполненный бюллетень передается избирателем сотруднику избиркома, который проверяет его на отсутствие особых пометок, которые могли бы его идентифицировать в целях продажи голоса, соответствие утвержденной форме и передает скан-копию бюллетеня в PBB, где бюллетень получает случайный номер, который не сообщается ни сотруднику избиркома, ни избирателю.
2.Проголосовавший избиратель, бюллетень которого уже передан в PBB, может (по желанию) получить распечатанную копию заполненного каким-то другим избирателем бюллетеня с проставленным номером PBB, для последующего контроля, правильно ли был учтен голос избирателя, заполнившего бюллетень. Избиратель не сможет продать полученную копию бюллетеня, так как заполнял его не он.
Вот, собственно, и все. Легко видеть, что схема голосования Twin обеспечивает выполнение обеих принципов честных выборов. Избиратель не может продать свой голос, так как не знает, под каким номером учтен его бюллетень, а копия бюллетеня без номера, даже если он его сфотографирует, мало что скажет. Множество избирателей и независимых наблюдателей способны проконтролировать правильность учета голосов, но не своих собственных, а чужих, по опубликованным скан-копиям избирательных бюллетеней с номерами. Отсутствие вброса голосов определяется по соответствию числа учтенных бюллетеней в PBB и числа избирателей в списке избирателей. Список избирателей публикуется для контроля на наличие в нем «мертвых» душ и лиц, заведомо не голосовавших.
Главный недостаток системы Twin состоит в том, что требуется обеспечить печать и сканирование бумажных бюллетеней. Они нужны, чтобы было документальное подтверждение того, как в действительности отдал голоса тот или иной избиратель, а также для вовлечения в процесс слабо технически грамотных избирателей. Но недостаток превращается в достоинство, так как позволяет значительно ускорить процесс голосования и упростить его. В системе Twin, бюллетени могут быть напечатаны самим избирателем или добровольными помощниками и раздаваться на митингах, собраниях, да и просто на пикетах, вместе с краткой инструкцией по заполнению и адресом, по которому надо явиться для регистрации избирателя и сдачи уже заполненного бюллетеня в день голосования. В случае online регистрации избирателей, бюллетень может быть даже выслан по эл.почте. Кроме того, никто не заставляет ограничивать процесс голосования одним днем – оно может проходить весь период регистрации избирателей и только завершаться последним днем голосования.
Может ли современная криптография, решившая не менее головокружительные проблемы, представлявшиеся неразрешимыми на первый взгляд (открытие асимметричной системы шифрования), предложить решение, обеспечивающие выполнение двух требований честных выборов?
Еще в середине 2000-х годов разработчик широко известного алгоритма несимметричного шифрования RSA Рональд Райвест (Ronald Rivest) предложил в своих работах “The ThreeBallot Voting System” (“Система голосования Три бюллетеня”) и “Three voting protocols: ThreeBallot, VTV and Twin” (“Системы голосования: Три бюллетеня, Голос-Антиголос-Голос и Близнец”) несколько систем голосования, которые способны решить проблему выполнения одновременно обеих принципов честных выборов.
Принцип работы системы ThreeBallot (образец бюллетеня – см. рис.1), заключается в использовании бюллетеня, разделенного на 3 части, каждая из которых имеет уникальный и случайный номер (для того, чтобы его нельзя было запомнить, он состоит из числовых и нечисловых символов – при этом, конечно, необходимо исключить возможность фотографирования всего бюллетеня). Бюллетень заполняется как единое целое, по строкам, при этом для голосования “ЗА” кандидата, указанного в строке, нужно проставить 2 отметки за него в любых 2-х (и только двух) частях бюллетеня. Для голосования “ПРОТИВ” нужно оставить в строке, где указан кандидат только одну отметку в одной из частей бюллетеня. Бюллетень, в котором нет хотя бы одной отметки за каждого кандидата, считается недействительным. После завершения голосования, избиратель вставляет бюллетень в проверочную машину (проверяющую правильность заполнения бюллетеня – наличие хотя бы одной отметки и не более двух отметок в строке для каждого кандидата) и выбирает, копию какой части бюллетеня вернуть ему как квитанцию для контроля правильности учета его голоса. Далее проверочная машина разделяет бюллетень на 3 части, делает копию с выбранной избирателем части, возвращает ее избирателю. Все части бюллетеней публикуются в публичной базе данных (PBB, Public Bulletin Board), вместе со списком проголосовавших избирателей, причем число бюллетеней должно равняться умноженному на 3 числу избирателей, принявших участие в голосовании и правильно заполнивших бюллетени. Победивший в голосовании кандидат вычисляется по числу отметок, поданных за каждого кандидата, из которого вычитается число правильно заполненных бюллетеней, разделенное на 3. Например, если в выборах приняли участие 3 избирателя, правильно заполнившие бюллетени так, как указано на рис.1, то в базу данных попадет 9 бюллетеней, число голосов за кандидата Jo будет равно 6-(9/3)=3 голоса, за кандидата Horror – 3-(9/3)=0 голосов. Невыполнение этого правила будет свидетельствовать о вбросе, изъятии или искажении части бюллетеней. Избиратель может проконтролировать, правильно ли учтен его голос, сравнив копию части бюллетеня, находящегося у него на руках, с находящейся в PBB, но не может продать свой голос, так как не может доказать, за кого из кандидатов он голосовал (для доказательства необходимо знать, какие части разделенного бюллетеня составляли единый бюллетень).
Рис.1. Бюллетень системы “ThreeBallot”. Избиратель проголосовал за кандидата в Президенты Jo и за кандидата в Сенат Wu, и против Horror и Yuk. (рисунок взят из статьи “Three voting protocols: ThreeBallot, VAV and Twin”)
Дальнейшим развитием системы “ThreeBallot”, в целях упрощения для избирателя, стала система “Vote-AntiVote-Vote” (VAV, “Голос-Антиголос-Голос”) (см. рис.2). В ней бюллетень также разделен на 3 части, но разрешено не ставить отметок за некоторых кандидатов, а голос избирателя отдается тому кандидату, для которого избиратель не проставил отметки в бюллетене “AntiVote”, но поставил отметку в бюллетене “Vote”.
Рис 2. Бюллетень системы “Vote-AntiVote-Vote”, избиратель проголосовал за кандидата Xerxes. (Рисунок взят из статьи “Three voting protocols: ThreeBallot, VAV and Twin”)
К сожалению, системы ThreeBallot и VAV уязвимы к возможности продажи голосов, основанной на возможности доступа скупщика к данным о том, из каких частей состояли первоначально бюллетени. Хотя в PBB этих данных и не содержится, они могут быть похищены.
Несколько более простой, является изобретенная Д.Чомом (David Chaum), автором концепции “цифровых наличных”, и описанная в 2006 году С.Поповениуком (S.Popoveniuc) и Б.Хоспом (B.Hosp) из университета Джорджа Вашингтона в статье “An Introduction to Punchscan”, система голосования Punchscan (см. рис.3).
Рис.3. Образец бюллетеня системы Punchscan для вопроса референдума (требуется ответ Да или Нет). Избиратель выбрал ответ “Да” (b). Для традиционных выборов, вместо “Да” и “Нет” могут быть указаны имена кандидатов, число кандидатов может быть больше двух. (рисунок взят из статьи ”An Introduction to Punchscan”)
Бюллетень системы Punchscan состоит из двух листов, помеченных одним и тем же уникальным номером и наложенных один на другой. На первом (верхнем) листе указаны имена кандидатов и их идентификаторы (например, буквы алфавита) в случайном порядке, а в нижней части листа имеются отверстия, через которые виден второй лист бюллетеня. На втором листе, под отверстиями, напечатаны идентификаторы кандидатов, тоже в случайном порядке. Избиратель, выбрав, кому из кандидатов он отдает свой голос, специальным фломастером закрашивает отверстие первого листа, в котором видит идентификатор кандидата, напечатанный на первом листе, так, чтобы отметка фломастера осталась на обеих листах бюллетеня. Далее бюллетень разделяется на листы, одну из частей уничтожают в шредере на глазах избирателя, вторая сканируется и помещается в PBB вместе со списком проголосовавших избирателей, а оригинал выдается избирателю на руки для контроля учета его голоса.
Сравнивая количество бюллетеней в PBB со списком избирателей и свою копию бюллетеня с помещенной в PBB, избиратели контролируют правильность учета его голоса.
Тем не менее, остается опасность продажи голосов избирателями, так как, хотя сам избиратель по имеющейся у него части бюллетеня не может доказать, за кого он голосовал, это может сделать скупщик голосов, если получит доступ к информации о соответствии идентификаторов и кандидатов в бюллетенях.
В системе “Scantegrity”, развивающей достоинства Punchscan, основной недостаток остался без изменений – нет защиты от возможности продажи голоса избирателя в случае получения скупщиком голосов доступа к информации о соответствии случайных номеров выбора, указанных для каждого кандидата в бюллетене, выданном избирателю.
После определенной работы по испытанию и усовершенствованию системы ThreeBallot, Р.Райвист предложил намного более простую систему голосования, радикально упрощающую процесс для избирателя, но сохраняющую преимущества систем ThreeBallot и VAV и исключающую опасность покупки голосов на основе доступа к информации о предварительно напечатанных бюллетенях. Эта система, названная автором Twin (Близнец), описана в статье “Three voting protocols: ThreeBallot, VTV and Twin”.
Основной принцип системы Twin – чрезвычайно прост, называется “плавающая квитанция” (Floating Receiption) и предусматривает, что избиратель, проголосовав, получает на руки для контроля правильности учета голоса копию избирательного бюллетеня, но не свою, а кого-либо, кто проголосовал до него.
Процесс голосования в системе Twin может быть построен следующим образом:
1.Заполненный бюллетень передается избирателем сотруднику избиркома, который проверяет его на отсутствие особых пометок, которые могли бы его идентифицировать в целях продажи голоса, соответствие утвержденной форме и передает скан-копию бюллетеня в PBB, где бюллетень получает случайный номер, который не сообщается ни сотруднику избиркома, ни избирателю.
2.Проголосовавший избиратель, бюллетень которого уже передан в PBB, может (по желанию) получить распечатанную копию заполненного каким-то другим избирателем бюллетеня с проставленным номером PBB, для последующего контроля, правильно ли был учтен голос избирателя, заполнившего бюллетень. Избиратель не сможет продать полученную копию бюллетеня, так как заполнял его не он.
Вот, собственно, и все. Легко видеть, что схема голосования Twin обеспечивает выполнение обеих принципов честных выборов. Избиратель не может продать свой голос, так как не знает, под каким номером учтен его бюллетень, а копия бюллетеня без номера, даже если он его сфотографирует, мало что скажет. Множество избирателей и независимых наблюдателей способны проконтролировать правильность учета голосов, но не своих собственных, а чужих, по опубликованным скан-копиям избирательных бюллетеней с номерами. Отсутствие вброса голосов определяется по соответствию числа учтенных бюллетеней в PBB и числа избирателей в списке избирателей. Список избирателей публикуется для контроля на наличие в нем «мертвых» душ и лиц, заведомо не голосовавших.
Главный недостаток системы Twin состоит в том, что требуется обеспечить печать и сканирование бумажных бюллетеней. Они нужны, чтобы было документальное подтверждение того, как в действительности отдал голоса тот или иной избиратель, а также для вовлечения в процесс слабо технически грамотных избирателей. Но недостаток превращается в достоинство, так как позволяет значительно ускорить процесс голосования и упростить его. В системе Twin, бюллетени могут быть напечатаны самим избирателем или добровольными помощниками и раздаваться на митингах, собраниях, да и просто на пикетах, вместе с краткой инструкцией по заполнению и адресом, по которому надо явиться для регистрации избирателя и сдачи уже заполненного бюллетеня в день голосования. В случае online регистрации избирателей, бюллетень может быть даже выслан по эл.почте. Кроме того, никто не заставляет ограничивать процесс голосования одним днем – оно может проходить весь период регистрации избирателей и только завершаться последним днем голосования.