Система Punchscan
С 1860 по 1890 годы для борьбы с широкомасштабной подделкой выборов в США было введено множество разных технических средств. Таких, как избирательные урны с прозрачными стеклянными стенками для недопущения двойного дна и встроенных тайных отсеков. Или механические счетчики для опускаемых в щель бюллетеней, чтобы предотвратить хищения отданных голосов и массовое вбрасывание фальшивых бюллетеней.
Систему под названием Punchscan, переводимым примерно как "Дыркоскан" (punchscan.org), изобрел Дэвид Чом (David Chaum) - автор ряда криптографических протоколов, широко применяемых в электронной коммерции, а также концепции "цифровых наличных". Кроме того, Дэвид Чом был одним из отцов-основателей IACR, Международной ассоциации криптологических исследований, созданной в 1982 году и по сию пору остающейся главной в мире организацией для специалистов, занимающихся открытой криптографией.
При сравнении с традиционным избирательным бюллетенем система Punchscan может показаться замысловатой, однако принцип ее работы прост. Новый бюллетень представляет собой лист бумаги, поделенный на две равные части проходящей посередине перфорацией. На каждой из половин напечатан уникальный номер-идентификатор. Лист складывают по линии раздела, так что на первой странице оказываются напечатаны имена избираемых кандидатов, каждому из которых случайным образом присвоена одна из букв алфавита. Ниже списка имеется горизонтальный ряд круглых отверстий, число которых соответствует количеству кандидатов. Через эти отверстия видны те же буквы алфавита, соответствующие кандидатам, но напечатанные на второй половине бюллетеня опять-таки в произвольном порядке.
Когда избиратель выбирает кандидата, ему надо найти в отверстиях соответствующую букву и отметить ее специальным маркером-фломастером. Красящий стержень у маркера намеренно сделан большего диаметра, чем у отверстия. Поэтому маркер обязательно пометит обе половинки бюллетеня в позиции избранного кандидата. Когда выбор сделан, избиратель разделяет бюллетень по линии перфорации. Одна из половинок (все равно какая) тут же публично уничтожается в шреддере, а вторая пропускается через стандартный портативный сканер и остается у избирателя в качестве проверочной квитанции. Отсканированный бюллетень с распознанным выбором изображается на экране, давая избирателю возможность убедиться в правильности учета и подтвердить завершение голосования.
Таким образом, система Punchscan фиксирует выбор, сделанный избирателями, однако не имеет никакой базы данных, сопоставляющей конкретный бюллетень с использовавшим его человеком. Очень важно случайное присвоение букв каждому из кандидатов, так что в разных бюллетенях эти буквы будут разными у одних и тех же фамилий в списке. По этой причине каждая из половинок бюллетеня по отдельности не дает никакой информации о сделанном выборе. Ибо на одной части есть фамилии с присвоенными им буквами и помеченная дырка, но неизвестно, какая там была буква. А на второй части есть помеченная буква, но неизвестно, какому кандидату она была присвоена.
Благодаря такой системе, избиратели не могут продавать свой голос, предъявляя квитанцию. А комиссии на избирательных участках, соответственно, обеспечивают лишь правильную процедуру голосования, но не знают, как именно отданы голоса. Итоги может подвести лишь центральная система Punchscan, где случайное присвоение букв было изначально зафиксировано в базе для каждого номера бюллетеня.
Система, как уже говорилось, ничего не знает о том, каким избирателям достались какие номера. Однако каждый избиратель после итогового подсчета голосов может зайти в онлайновую базу и по номеру оставшейся у него квитанции проверить, что его голос учтен, и учтен правильно.
Комплекс программного обеспечения Punchscan в первой стабильной версии 1.0 был опубликован с открытыми исходными кодами в ноябре 2006 года на условиях лицензии Revised BSD. При этом система Punchscan разработана с учетом принципов безопасного программирования, то есть защита информации здесь реализована программно-независимым образом - на основе известных и надежных криптографических функций. Иначе говоря, такую архитектуру можно реализовывать и в системах с закрытыми кодами вроде Windows.