«Способ хакнуть нашелся»: история блокчейн-платформы для голосования о поправках в Конституцию
С 25 июля в Москве и Нижегородской области начнется онлайн-голосование о поправках в Конституцию, на раскрутку которого ЦИК и власти Москвы не жалеют сил. The Bell выяснил, как разрабатывалась технология для этого голосования. Разработчиком платформы, которая использовалась на выборах в Мосгордуму 2019 года, был стартап «Лаборатории Касперского» Polys. Технологически платформа на московских выборах сработала успешно, но при подсчете онлайн-голосование дало провластным кандидатам аномально высокий процент. После этого команду Polys покинули несколько ключевых разработчиков.
Мы делали главные деловые СМИ страны, теперь делаем лучше — подпишитесь на email-рассылку The Bell!
Как появился Polys
Проект Polys появился в «Лаборатории Касперского» в 2016 году, после того как внутри компании появился свой бизнес-инкубатор. Темой голосований на блокчейне интересовался сам Евгений Касперский, вспомнил в разговоре с The Bell его знакомый. Проект, как это принято в корпоративных бизнес-инкубаторах, создали сотрудники «Лаборатории»: пришли во внутренний акселератор, представили идею, получили инвестиции на ее реализацию.
В ноябре 2017 года «Лаборатория Касперского» представила итоги работы над Polys: технология позволяла провести любое защищенное анонимное онлайн-голосование на блокчейне Ethereum. Никаких предметных планов модернизировать российское голосование или делать что-то для государства у команды проекта тогда не было, вспоминает собеседник The Bell, знакомый с историей проекта. «Все были уверены: в России наш продукт никому не будет нужен. Главная особенность системы — полная анонимность и прозрачность. Всем казалось, что это не то, что нужно российской избирательной системе», — вспоминает он.
Система изначально была придумана скорее для Западной Европы и США, для стран, которые дальше других ушли в том, что касается референдумов, пиратских и «зеленых» партий, говорит собеседник The Bell. В России первыми клиентами проекта в основном были университеты — например, Высшая школа экономики, которая проводила на Polys голосование в студсоветы. Клиентов из политики было немного: в мае 2018 года «Яблоко» провело с помощью платформы свои праймериз перед выборами мэра Москвы, а в декабре того же года на Polys провели крупнейшее на тот момент в мире голосование на блокчейне — на выборах в саратовский молодежный парламент.
Московские выборы
Большая политика в жизни блокчейн-стартапа для голосований неожиданно появилась в начале 2019 года. Пообщаться с командой приехали представители ЦИК, вспоминает один из собеседников The Bell. «Ребята им очень понравились, они предложили вместе делать систему», — говорит он. Зачем ЦИК понадобился этот проект, сначала понятно не было. Новость о том, что технологию Polys будут использовать на выборах в Мосгордуму, удивила всех, говорит собеседник The Bell. Правда, менеджер по развитию бизнеса «Лаборатории Касперского» Евгений Барков говорил «Коммерсанту», что «ЛК» презентовала технологию ЦИК на научно-практической конференции в 2018 году и предлагала использовать ее на местных выборах.
«Это было очень круто: провести первые в мире настоящие выборы на блокчейне. Для разработчиков это был большой челлендж», — вспоминает бывший сотрудник «Лаборатории Касперского». Работать над платформой команде Polys нужно было уже не с ЦИК, а с Департаментом информационных технологий Москвы (ДИТ). Никакой собственной рабочей технологии для онлайн-голосования у департамента на тот момент не было, и дальше вся разработка шла уже совместно.
«На самом деле ДИТ довольно сильно повезло, что в России на тот момент уже был Polys. Иначе вести всю разработку пришлось бы с нуля — и тогда совершенно непонятно, что получилось бы на выходе», — уверен один из собеседников The Bell. То, что для разработки Москва выбрала именно Polys, — неудивительно: других проектов такого уровня готовности в России просто не было, говорит другой.
В результате доработки платформы к выборам в Мосгордуму у Москвы появилась собственная технология для онлайн-голосования на блокчейне. Команда Polys для нее разработала саму систему голосования, ДИТ Москвы — работал над системой аутентификации через портал mos.ru. «ДИТ всегда работает по такой схеме: для разработки они привлекают кого-то на стороне, — объясняет один из бывших сотрудников “Лаборатории”. — То, что в итоге было сделано, — это был не совсем Polys. Скорее кастомная разработка под конкретный проект. Если сравнивать код, это два разных решения, хотя архитектурно и идеологически они, конечно, похожи».
В ДИТ боялись, что система не будет работать, но в итоге с технической точки зрения голосования прошли не без осечек, но довольно успешно, считают разработчики. Но почти сразу стало понятно, что блокчейн, каким бы он ни был, не сможет защитить голосование от махинаций. «Система защищает от прямых фальсификаций: нельзя просто взять и нарисовать цифры постфактум. Но защитить от административного давления она не может», — говорит один из собеседников The Bell.
Через пять дней после голосования «Медуза» опубликовала анализ зашифрованных голосов дистанционного голосования, которые выложила мэрия. В материалах случайно обнаружился ключ, который позволяет эти материалы расшифровать. Обнаружить там вбросы или какие-то нарушения изданию не удалось. Зато получилось найти странные статистические отклонения: например, половина дистанционных голосов были записаны в блокчейн в один час, а за конкретные 5 минут система записала 1,4 тысячи голосов — это 14% от всех.
Один из кандидатов в Мосгордуму Роман Юнеман, в чьем округе было дистанционное голосование, провел после выборов свое расследование и выяснил, что больше половины проголосовавших в округе оказались бюджетниками, часть из которых голосовала за конкретного кандидата по настоянию начальства, утверждал он. Юнеман на эти выборах боролся с кандидатом от «Единой России» и проиграл с разницей в 84 голоса как раз благодаря онлайн-части голосования. После этого он подал в суд, посчитав голосование нечестным, но проиграл.
Команда Юнемана утверждала, что прямо перед выборами резко выросло количество аккаунтов на портале госуслуг — по его данным, регистрировались бюджетники в рабочие часы. Результаты своей работы команда кандидата выложила на отдельном сайте.
«В итоге система заработала, и все было хорошо — но способ ее хакнуть нашелся, не электронный, а обычный старый-добрый админресурс, старые добрые бюджетники. Только отследить стало проще из-за того, что все в онлайне», — говорит один из собеседников The Bell, следивший за проектом. После московских выборов команду Polys покинуло несколько ключевых сотрудников во главе с руководителем проекта Романом Алешкиным, следует из материалов на сайте компании.
Поправки в Конституцию
Детальной информации о том, как дорабатывалась технология к онлайн-голосованию о поправках в Конституцию, нет. Все, что мы знаем, — это то, что проект поменял блокчейн, на котором ведется разработка технологии: теперь это Exonum разработки компании Bitfury, говорится на сайте голосования в разделе «Специалистам». Издание Coindesk со ссылкой на свои источники писало, что разработкой на этом блокчейне платформы для онлайн-голосования будет заниматься «Лаборатория Касперского». О том, что такие переговоры о продолжении совместных работ ведутся, слышал и собеседник The Bell.
В ДИТ Москвы The Bell заявили, что не используют решение Polys от «Лаборатории Касперского» для голосования по поправкам в Конституцию. «Разработчиком системы дистанционного электронного голосования является ДИТ города Москвы. “Лаборатория Касперского” является привлеченным экспертом. Она оказывает консультационную поддержку наряду с другими экспертами в области информационной безопасности и криптографии», — говорится в комментарии департамента.
В самой «Лаборатории Касперского» позицию ДИТ поддержали: компания «наряду с другими продолжает оказывать экспертную поддержку для ДИТ Москвы. Мы обладаем экспертизой и значительным опытом по обеспечению безопасности и прозрачности массовых онлайн-голосований с применением блокчейн-технологий на нашей платформе Polys». Для выборов 2019 года «Лаборатория» тоже ничего не разрабатывала, сказали в компании: представители ЛК участвовали в рабочей группе в качестве экспертов.
За месяцы между двумя голосованиями система, скорее всего, была сильно доработана: например, блокчейн Ethereum сменили на Exonum, который может выдерживать большую нагрузку, объясняет собеседник The Bell. Все опрошенные The Bell эксперты и разработчики блокчейнов допускают, что с технической точки зрения голосование будет работать хорошо: голоса москвичей и нижегородцев будут автоматически записываться в цепочку блоков и никаких изменений туда вносить никто не будет. Однако большинство опрошенных The Bell специалистов уверены, что даже при этом говорить о доверии к системе в целом будет нельзя.
Главная проблема всех электронных взаимодействий — идентификация, объясняет основатель сервиса Legium Иван Хаустов. «Вопрос в том, как понять, кто именно поставил галочку, отдал голос. Здесь все сделано через “Госуслуги” — но здесь идет совпадение в одном лице и заказчика, и исполнителя. Кто делает “Госуслуги”, тот же делает и подтверждение идентификации — что мешает зарегистрировать миллион виртуальных людей по конкретным номерам телефонов и проголосовать ими “за”? И кто это проверит?» — рассуждает предприниматель.
17 июня на телеканале «Дождь» вышел материал, в котором журналист Антон Баев рассказал о схеме получения одним человеком десятков «чистых» sim-карт, которые можно активировать по персональным данным пенсионеров и создать аккаунты на mos.ru для голосования по поправкам в Конституцию. По мнению журналиста, таких голосов в Москве могут быть десятки тысяч, поэтому электронное голосование надо отменять. В этот же день ГУ МВД Москвы начало проверку этой информации, а ночью к Баеву пришли сотрудники полиции. Еще через день журналиста для дачи показаний вызвали в Центр по противодействию экстремизму (Центр «Э») .
Блокчейн как технология действительно хорошо подходит для выборов, так как дает техническую возможность обеспечивать прозрачности процесса и исключает модификацию результатов постфактум, говорит директор департамента аудита защищенности Digital Security Глеб Чербов. Но это не панацея. «Платформа электронного голосования — система комплексная и защищенность ее в целом определяется надежностью самого слабого звена. Поэтому недостатки реализации связанных компонентов могут свести все на нет даже при условии продуманной архитектуры и математически обоснованной модели под капотом».
Для этого голосования ДИТ Москвы выложил фрагменты исходного кода платформы, на которой будет построено голосование. Но там нет никакой информации о том, как будет устроено шифрование или как будет подтверждаться целостность и подлинность, говорит Чербов: «Аргументировано это соображениями безопасности, однако для подобных систем обеспечение безопасности через сокрытие деталей реализации принято считать пагубной практикой».
Систему можно было бы сделать безопасной и достоверной, но для этого пришлось бы приложить гораздо больше усилий, считает собеседник The Bell, связанный с несколькими блокчейн-проектами. «Чтобы это действительно была достоверная система голосования на блокчейне, нужно, чтобы у каждого человека был ключ-флешка с супердлинным зашифрованным словом на нем. А к этой флешке еще — кодовое слово, которое знает только этот конкретный человек. То есть, даже если у него бы украли флешку, другой человек не смог бы отдать голос, не зная этого кодового слова. И что важно — эти флешки должна выдавать независимая ассоциация, куда бы входили 100 разных структур, с которыми невозможно было бы договориться о взломе. А после этого флешки должны были бы быть завалидированы в 3–4 разных местах. Только тогда это было бы настоящее голосование на блокчейне».
Как только авторизацией начинает заниматься государство, гарантировать, что не будет вбросов и что в запасе не будут лежать 10 млн лишних флешек, нельзя, считает он. Более того, ситуация сейчас еще проще, рассуждает он: «Ты не можешь достоверно убедиться, что голосовавший — это реально существующий человек. Потому что источником данных для блокчейна становится государственный сервер. И какой бы классный и публичный ни был блокчейн, государственная база данных — не публичная и не прозрачная».
Но в целом голосование на блокчейне подделать в два раза сложнее, уверен эксперт: «Накидать печатных бумажек в урну все-таки проще, чем аккуратно подрисовывать данные в государственную базу данных. Если бы была задача нарисовать голоса, наверное, они бы не стали усложнять себе задачу».
С такой точкой зрения согласны не все: программе все равно, сколько голосов генерировать, а вот вбросить 10 тысяч бумажных бюллетеней сложнее, считает руководитель отдела исследований MixBytes Сергей Прилуцкий: «Более того, программа может показать человеку, что посчитала его голос, но не учесть его в финальном подсчете. На самом деле способов манипулировать — масса, и стоит это гораздо дешевле, чем с помощью бумаги».
Технологии не решают проблему доверия, продолжает Прилуцкий. «Электронная система голосования прекрасно работает в Швейцарии и ей не нужен никакой блокчейн. Они могут проводить выборы хоть на стене дома, потому что уровень доверия к государству другой. У нас доверия к системе нет. Она опирается на государственный сайт, к которому по закону открыт полный доступ для любых силовых структур, поэтому он полностью контролируется ими или может быть ими обманут».