Не чокаясь

Москва несет очередные потери от китайского вируса. Пишут, что чебуречная на Китай-Городе закрылась.

china-town-rip

https://www.facebook.com/photo.php?fbid=10158502115367930&set=a.10150099797007930&type=3

Режиссерское

Интересно, а почему рекламные ролики двух компактных принтеров — Primera Trio и Epson WF-100 местами совпадают вплоть до построения отдельных сцен?

После драки кулаками не машут, или что хотелось еще сказать

Ну или будем считать это развернутым комментарием к описанию голосовалки на Хабре :)

Начну с того, что ее авторы вовсе не изобрели велосипед — подобного рода системы довольно известны, в «Прикладной криптографии» Шнайера нечто очень похожее названо «голосованием с двумя центральными комиссиями», а вообще в той же русскоязычной википедии приводятся примеры «протокола двух агентств» и «протокола Фудзиока-Окамото-Охта», а в Эстонии такая система довольно широко внедрена и даже обсуждается в публикациях, как пример успешной криптографически защищенной системы голосования. Это, на самом деле, довольно положительно характеризует предложение — как минимум, в современной криптографии принцип security by obscurity не приветствуется, а тут для оценки стойкости системы и возможных рисков можно воспользоваться всем массивом знаний человечества, накопленным с 1990-х годов (когда, собственно, и были описаны основные протоколы тайного голосования).

Естественно, если почитать википедию или книжки «чуть дальше», можно найти примеры более сложных протоколов голосования — например, требование разделения «регистратора» и «счетной комиссии» кажется невыполнимым, соответственно, в некоторых модификациях этого протокола можно от этого отказаться — но проблема в том, что это требует значительного усложнения протокола, но не закрывает одной из самых больших проблем, о которой авторы алгоритмов голосования иногда, такое впечатление, и не подозревают. Нет, они все, конечно, грамотные специалисты — но когда вершиной применения твоего протокола становятся выборы в студенческий совет в университете (пусть даже это Гарвард!), о «мертвых душах» как-то не задумываются — а зря! «Регистратор» может довольно легко создать сколько угодно «виртуальных» избирателей — или еще лучше, «привести на выборы» существующих, но неактивных. Для этого у него есть и техническая возможность, а в случае, когда он видит результаты — еще и необходимые данные. В случае же разделения регистратора и счетчика первому, во-первых, придется устраивать вбросы «вслепую» — довольно рискованная все-таки штука, а во-вторых — «счетчик» может обнаружить и аномалии в поведении избирателей.

Добавлю еще один технический момент — требование уже к реализации этого всего. Даже аккуратная реализация самого лучшего алгоритма может потерять все свои хорошие свойства из-за утечек по «скрытым каналам». В частности, голосование с объединенным «регистратором» и «счетчиком» почти полностью теряет «тайну голосования», если избиратель пользуется для связи с сервером каким-нибудь там HTTP и даже HTTPS (а чем еще можно пользоваться, когда у избирателей зоопарк из компьютеров с 3 популярными семействами ОС и смартфонов самых диких марок?). Пусть даже регистратор раздает избирателям ключи по протоколу ANDOS, который, в теории, не позволит регистратору узнать, какой ключ он кому выдал — но он при этом знает fingerprint браузера избирателя, который авторизовался, как «Иван Петрович Сидоров», и знает fingerprint браузера избирателя, который прислал бюллетень «За кандидата N.»; сопоставить одно с другим совершенно несложно.

Маленькое отступление — да, полностью анонимных каналов связи у нас, скорее всего, нет (за исключением «распечатайте QR-код и отправьте его открыткой по почте» — но это уже не совсем электронное голосование), но деанонимизация избирателей методом «вычислю по IP» потребует уж слишком больших ресурсов, вряд ли доступных какому-нибудь одномандатнику.

Что особенно важно при электронном голосовании — это работа наблюдателей, причем в двух аспектах — как обеспечение такой возможности (нет, принтер, печатающий чеки, падающие в урну — это совсем не то, что надо), так и готовность заинтересованных сторон эту возможность использовать. «Бумажные» выборы довольно просты и понятны — как минимум на уровне здравого смысла «раздали бюллетени и аккуратно их посчитали» — так что наблюдатель на избирательном участке может работать после минимальной подготовки (и даже без нее, хотя будет плавать во многих процедурных вопросах). Электронное голосование — совсем другое дело! Если предъявить этому «минимально подготовленному» наблюдателю базу данных с бюллетенями — то вряд ли он сможет в ней что-то понять. Впрочем, на «круглом столе» озвучивался опыт Эстонии, где для такого «наблюдения» на выборах партии нанимают квалифицированных специалистов в области программирования и защиты информации — и в случае электронного голосования придется делать именно так. При этом «избирком» не должен отмалчиваться, когда ему задают «технические» вопросы, и даже больше — он должен быть готов продемонстрировать интересующие специалистов компоненты системы.

Есть тут еще один интересный момент — никто в принципе не мешает (и это даже было бы правильно) максимально широко опубликовать перед выборами API авторизации и голосования, а после выборов — базу данных с результатами голосования. Людям хочется потрогать систему голосования — и если они имеют подходящую квалификацию, то почему бы и нет? Любой выпускник трехмесячных курсов по data science, лично прошедшийся питоновским скриптом по базе голосов и обнаруживший в ней не только свой бюллетень, но и что его результаты подсчета совпали с официально объявленными, добавит доверия к системе голосования попросту личным примером.