Протокол, который невозможен: как на самом деле в ДЭГ обеспечивают тайну голосования

В преды­ду­щей пуб­ли­ка­ции мы срав­ни­ва­ли рос­сий­ские систе­мы ДЭГ (дистан­ци­он­но­го элек­трон­но­го голо­со­ва­ния) с эстон­ски­ми — и мгно­вен­но залез­ли в такие тех­ни­че­ские дета­ли, как сле­пая под­пись, клю­че­вые пары и так далее, то есть, по сути, в архи­тек­ту­ру систем ДЭГ.

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

Кон­крет­ные объ­яс­не­ния, «поче­му с ДЭГ всё пло­хо», зави­сят от ква­ли­фи­ка­ции выска­зы­ва­ю­ще­го­ся — и про­сти­ра­ет­ся от «какие чис­ла захо­тят, такие и пока­жут» (Дарья Мити­на, «Ком­му­ни­сты Рос­сии», на недав­нем круг­лом сто­ле у Алек­сандра Аса­фо­ва) до ссы­лок на про­то­кол двух агентств с ука­за­ни­ем на отсут­ствие тако­вых агентств (ста­тья Алек­сандра Исав­ни­на на Хабре).

Попро­бу­ем разо­брать­ся, так ли всё пло­хо на самом деле, как устро­е­на рос­сий­ская — для опре­де­лён­но­сти возь­мём феде­раль­ную, кото­рую дела­ет «Росте­ле­ком», она инте­рес­нее — систе­ма ДЭГ, что там с про­то­ко­лом двух агентств и что поме­ша­ет пока­зать такие чис­ла, какие захо­тят. Ну и заод­но — какие есть осно­ва­ния верить, что систе­ма реа­ли­зо­ва­на дей­стви­тель­но так, как гово­рит­ся в документах.

Наде­ем­ся, вам будет инте­рес­но — в кон­це кон­цов, мож­но быть рав­но­душ­ным к выбо­рам, но не к слож­ным тех­но­ло­ги­че­ским системам!

Опи­рать­ся мы будем на:

  • пре­зен­та­цию архи­тек­ту­ры феде­раль­ной систе­мы ДЭГ, сде­лан­ную в кон­це июля Юри­ем Сати­ро­вым из «Росте­ле­ко­ма» (запись лек­ции на YouTubeпре­зен­та­ция в PDF);
  • опуб­ли­ко­ван­ное ранее ЦИК Рос­сии офи­ци­аль­ное опи­са­ние этой архи­тек­ту­ры (PDF разPDF два);
  • пре­зен­та­цию моде­ли угроз и нару­ши­те­ля, пред­став­лен­ную на одном из засе­да­ний экс­перт­ной рабо­чей груп­пы при ЦИК России;
  • наше пря­мое обще­ние с «Росте­ле­ко­мом» и ЦИК Рос­сии по тем вопро­сам, кото­рые нам пока­за­лись неясными.

Текст под­го­тов­лен при актив­ном уча­стии Оле­га Арта­мо­но­ва, наблю­да­те­ля за ДЭГ в 2020 году и чле­на ТИК ДЭГ в 2021 году. Выра­жа­ем бла­го­дар­ность за опе­ра­тив­ные отве­ты на наши вопро­сы Юрию Сати­ро­ву (Росте­ле­ком), Артё­му Кали­хо­ву (Waves Enterprises) и Геор­гию Гри­цаю (ЦИК России).

Нач­нём с обсуж­де­ния того, рас­смат­ри­ва­ют ли вооб­ще авто­ры систе­мы такие вещи, как воз­мож­ность нару­ше­ния тай­ны голо­со­ва­ния, в каче­стве угрозы.

Модель угроз и нарушителя

Модель угроз и нару­ши­те­ля (МУиН) — это доста­точ­но тра­ди­ци­он­ный для IT-систем доку­мент, опи­сы­ва­ю­щий, каким имен­но и с чьей сто­ро­ны ата­кам и опас­но­стям они могут под­верг­нуть­ся. Баналь­ные угро­зы в целом всем оче­вид­ны — хаке­ры, DDoS, пожар, навод­не­ние, зем­ле­тря­се­ние и экс­ка­ва­тор в поис­ках кабеля.

Зна­чи­тель­но инте­рес­нее угро­зы, спе­ци­фи­че­ские для кон­крет­ной систе­мы — те, кото­рые повле­кут не про­сто её отказ, а ска­жем так, недо­пу­сти­мое пове­де­ние: утра­ту или иска­же­ние обра­ба­ты­ва­е­мых дан­ных, рас­кры­тие внут­рен­ней инфор­ма­ции. В слу­чае элек­то­раль­ных систем они крайне кри­тич­ны, так как подо­зре­ние на успеш­ную ата­ку на систе­му может при­ве­сти к сры­ву выборов.

Вооб­ще гово­ря, есть три вида угроз:

  • соци­аль­ная: т.н. голо­со­ва­ние под дав­ле­ни­ем, когда чело­ве­ка при­нуж­да­ет к опре­де­лён­но­му выбо­ру руко­вод­ство или родственники;
  • элек­то­раль­ная: когда про­во­дят­ся мани­пу­ля­ции на уровне про­це­дур изби­ра­тель­ной систе­мы, напри­мер, вброс бюллетеней;
  • тех­ни­че­ская: когда осу­ществ­ля­ет­ся непо­сред­ствен­ная ата­ка на инфра­струк­ту­ру ПТК ДЭГ (при­чём как сна­ру­жи, так и изнутри).

Обсуж­да­е­мая модель угроз рабо­та­ет с тре­тьей кате­го­ри­ей — она опи­сы­ва­ет, какие имен­но угро­зы от каких имен­но зло­умыш­лен­ни­ков, от ино­стран­ных спец­служб до недоб­ро­со­вест­ных сотруд­ни­ков, могут быть направ­ле­ны про­тив ПТК ДЭГ.

Пол­ный текст моде­ли угроз и нару­ши­те­ля (это при­мер­но пол­то­рас­та стра­ниц) пока что ЦИК Рос­сии не опуб­ли­ко­ван, одна­ко на одном из засе­да­ний экс­перт­ной груп­пы при ЦИК была пред­став­ле­на пре­зен­та­ция с основ­ны­ми тези­са­ми, на базе кото­рых МУиН фор­ми­ру­ет­ся. На днях была выло­же­на так­же выпис­ка из моде­ли угроз, но ниче­го прин­ци­пи­аль­но ново­го она нам не добавляет.

Тра­ди­ци­он­ный вопрос жур­на­ли­стов про МУиН, в прин­ци­пе, оче­ви­ден и пре­дель­но бана­лен — «а преду­смот­ре­на ли защи­та от ино­стран­ных хаке­ров?» (инте­рес­но, как они пред­став­ля­ют себе отри­ца­тель­ный ответ?). Одна­ко нас боль­ше инте­ре­су­ет вто­рая часть таб­лич­ки — это угро­зы внутренние.

Как мож­но заме­тить, в чис­ло воз­мож­ных нару­ши­те­лей вклю­че­ны все, начи­ная от убор­щи­цы в ЦОД и закан­чи­вая адми­ни­стра­то­ра­ми систе­мы.

Вто­рой слайд — про то, от чего систе­ма защищается.

По сути, на нём пере­чис­ле­ны тре­бо­ва­ния, кото­рым долж­на удо­вле­тво­рять любая (а не толь­ко элек­трон­ная) систе­ма голосования:

  • голо­со­ва­ние долж­но быть тайным;
  • изби­ра­тель не дол­жен иметь воз­мож­но­сти про­го­ло­со­вать дважды;
  • голо­са изби­ра­те­лей долж­ны быть учте­ны имен­но так, как они были поданы;
  • не долж­но быть воз­мож­но­сти узнать про­ме­жу­точ­ный резуль­тат голосования.

Напри­мер, в бумаж­ном голо­со­ва­нии это реа­ли­зу­ет­ся доволь­но оче­вид­ны­ми спо­со­ба­ми:

  • на бумаж­ном бюл­ле­тене нет ника­ких отме­ток, кото­рые поз­во­ли­ли бы по нему уста­но­вить, кому он был выдан;
  • факт голо­со­ва­ния отме­ча­ет­ся в спис­ке изби­ра­те­лей, где изби­ра­тель рас­пи­сы­ва­ет­ся в полу­че­нии бюллетеня;
  • пере­счёт бюл­ле­те­ней про­из­во­дит­ся в при­сут­ствии наблюдателей;
  • до окон­ча­ния голо­со­ва­ния бюл­ле­те­ни нахо­дят­ся в опе­ча­тан­ной урне, кото­рую запре­ще­но вскрывать.

С элек­трон­ны­ми систе­ма­ми всё на поря­док слож­нее. Боль­ше все­го вопро­сов вызы­ва­ет соче­та­ние пер­во­го и вто­ро­го пунк­тов — мно­гие, напри­мер, про­сто апри­о­ри не верят в воз­мож­ность соблю­де­ния тай­ны голо­со­ва­ния в систе­мах ДЭГ (более того, как мы виде­ли на при­ме­ре эстон­ской систе­мы, она там дей­стви­тель­но соблю­да­ет­ся услов­но: запол­нен­ные бюл­ле­те­ни не ано­ним­ны сами по себе, но ано­ни­ми­зи­ру­ют­ся уже на сервере).

Протокол, который невозможен

Итак, нам необ­хо­ди­мо сна­ча­ла выдать изби­ра­те­лю бюл­ле­тень, а потом при­нять его уже запол­нен­ным — но по пути забыть, как зва­ли это­го изби­ра­те­ля. Но при этом быть уве­рен­ны­ми, что запол­нен­ный бюл­ле­тень мы при­ни­ма­ем имен­но от изби­ра­те­ля, а не от слу­чай­но­го прохожего.

С «бума­гой» всё доста­точ­но про­сто — пока­зав пас­порт и полу­чив бюл­ле­тень, изби­ра­тель дол­жен про­сле­до­вать к урне и опу­стить его туда. Если он вме­сто это­го про­сле­до­вал на выход с участ­ка, то про­го­ло­со­вать он уже не смо­жет (кста­ти, на каж­дом УИК есть какое-то нену­ле­вое коли­че­ство таких изби­ра­те­лей — никто не зна­ет, зачем они так дела­ют, но точ­ное сов­па­де­ние выдан­ных и полу­чен­ных бюл­ле­те­ней полит­тех­но­ло­га­ми даже счи­та­ет­ся при­зна­ком явно­го вбро­са: при под­счё­те дори­со­ва­ли недостающее).

С циф­рой всё намно­го слож­нее — мы не сто­им рядом с изби­ра­те­лем, когда он полу­ча­ет бюл­ле­тень, мы вооб­ще никак не видим это­го про­цес­са. Вот бюл­ле­тень выда­ли — а вот он вер­нул­ся запол­нен­ным, напри­мер, через десять минут. Ника­ки­ми внеш­ни­ми при­зна­ка­ми удо­сто­ве­рить­ся, что вер­нул­ся имен­но выдан­ный бюл­ле­тень, невозможно.

Соот­вет­ствен­но, сам бюл­ле­тень дол­жен нести непод­де­лы­ва­е­мый (sic!) при­знак соб­ствен­ной валид­но­сти, по кото­ро­му ещё и нель­зя отсле­дить его обрат­но к отпра­вив­ше­му этот бюл­ле­тень человеку.

Тео­ре­ти­че­ски, вот уже три деся­ти­ле­тия в ака­де­ми­че­ской сре­де пишут­ся и пуб­ли­ку­ют­ся рабо­ты по про­то­ко­лам тай­ных элек­трон­ных голо­со­ва­ний, кра­е­уголь­ным кам­нем в кото­рых явля­ет­ся так назы­ва­е­мый «про­то­кол двух агентств»: одно агент­ство удо­сто­ве­ря­ет лич­ность чело­ве­ка и выда­ёт некий при­знак, по кото­ро­му вто­рое может опре­де­лить, что этот чело­век име­ет пра­во голо­со­вать, не зная его личность.

Кри­тич­ным — и самым сла­бым — момен­том явля­ет­ся неза­ви­си­мость этих агентств: если они могут обме­нять­ся инфор­ма­ци­ей и выстро­ить пол­ную цепоч­ку путе­ше­ствия изби­ра­те­ля по систе­ме, то они смо­гут и сопо­ста­вить кон­крет­ный бюл­ле­тень с кон­крет­ным изби­ра­те­лем, тем самым раз­ру­шив тай­ну голосования.

Про­бле­ма в том, что эта кра­си­вая кон­струк­ция со всей оче­вид­но­стью не может быть пере­не­се­на в реаль­ность: ни в одной стране мира нет таких двух агентств, кото­рые и обла­да­ли бы тех­ни­че­ски­ми ресур­са­ми и ква­ли­фи­ка­ци­ей для под­дер­жа­ния кус­ка инфра­струк­ту­ры ДЭГ, и не вызы­ва­ли бы подо­зре­ний в попыт­ках, напри­мер, сабо­ти­ро­вать выбо­ры, и были бы абсо­лют­но неза­ви­си­мы друг от дру­га. Госу­дар­ствен­ные агент­ства нико­гда не быва­ют пол­но­стью неза­ви­си­мы, к ком­мер­че­ским ком­па­ни­ям нет дове­рия, у кон­ку­ри­ру­ю­щих пар­тий нет ква­ли­фи­ка­ции и ресурсов.

Более того, утеч­ка инфор­ма­ции может про­изой­ти и вооб­ще без пря­мо­го уча­стия одно­го из агентств: раз­ра­бот­чи­ком может быть попро­сту постав­ле­на в одно или в оба агент­ства систе­ма с бэк­до­ром, сли­ва­ю­щая инфор­ма­цию об изби­ра­те­лях тре­тьей сто­роне. Даже если систе­ма постав­ля­ет­ся в исход­ных кодах — а это мало­ве­ро­ят­но, так как накла­ды­ва­ет ещё боль­шие тре­бо­ва­ния на ква­ли­фи­ка­цию каж­до­го из агентств в IT — в огром­ном объ­ё­ме это­го кода бэк­дор мож­но запря­тать так, что его не най­дут ещё мно­го-мно­го лет.

Ино­гда этот тезис исполь­зу­ет­ся как довод в поль­зу пол­но­го отка­за от ДЭГ — и, конеч­но, он бы был спра­вед­лив, если бы дру­гие фор­мы голо­со­ва­ния были бы лучше.

Напри­мер, дово­ды сто­рон­ни­ков клас­си­че­ско­го бумаж­но­го голо­со­ва­ния сво­дят­ся к тому, что физи­че­ски при­сут­ству­ю­щие на участ­ках наблю­да­те­ли могут про­кон­тро­ли­ро­вать каж­дое дей­ствие комис­сии и изби­ра­те­лей, не допу­стив ника­ко­го беззакония.

На прак­ти­ке, одна­ко, в Рос­сии — при­мер­но 97 тысяч изби­ра­тель­ных участ­ков. Что­бы эффек­тив­но наблю­дать за выбо­ра­ми, осо­бен­но с учё­том трёх­днев­но­го голо­со­ва­ния, на каж­дый уча­сток надо хотя бы по 3 наблю­да­те­ля хотя бы от 5 раз­ных пар­тий — то есть почти пол­то­ра мил­ли­о­на чело­век. При­чём это долж­ны быть люди обу­чен­ные, заин­те­ре­со­ван­ные, зна­ю­щие фор­маль­ные про­це­ду­ры про­ве­де­ния выбо­ров, не состо­я­щие в род­стве или под­чи­нён­ных отно­ше­ни­ях с чле­на­ми комис­сии, не состо­я­щие в сго­во­ре друг с дру­гом, и про­чая, и прочая.

Оче­вид­но, что под­го­то­вить такую армию каче­ствен­ных наблю­да­те­лей попро­сту невоз­мож­но — в резуль­та­те наблю­де­ние за голо­со­ва­ни­ем эффек­тив­но рабо­та­ет в горо­дах-мил­ли­он­ни­ках, а даль­ше, по мере сни­же­ния чис­лен­но­сти насе­ле­ния и зна­чи­мо­сти насе­лён­но­го пунк­та, пада­ет до тех пор, пока не начи­на­ют­ся чудеса.

Более того, и пере­счёт бюл­ле­те­ней — вто­рое сред­ство, долж­ное спа­сти выбо­ры — в боль­шин­стве слу­ча­ев не помо­жет, так как мно­гие спо­со­бы фаль­си­фи­ка­ции резуль­та­тов остав­ля­ют после себя фор­маль­но валид­ную стоп­ку бюл­ле­те­ней, кото­рые уже мож­но чест­но счи­тать и пере­счи­ты­вать сколь­ко угод­но раз.

Зна­чит ли это, что выбо­ры вооб­ще надо отме­нить, так как эффек­тив­ных средств кон­тро­ля за ними на прак­ти­ке нет?

Оче­вид­но, нет. Ещё Чер­чилль отме­тил, что демо­кра­тия — худ­шая фор­ма прав­ле­ния, если не счи­тать всех осталь­ных, испро­бо­ван­ных чело­ве­че­ством. Вопрос в том, каки­ми сред­ства­ми мож­но улуч­шить суще­ству­ю­щую систе­му голо­со­ва­ния, сни­зив веро­ят­ность и мас­штаб фаль­си­фи­ка­ций в ней.

Напри­мер, в слу­чае бумаж­но­го голо­со­ва­ния таким сред­ством могут стать КОИ­Бы (комплек­сы обра­бот­ки изби­ра­тель­ных бюлле­те­ней), под­счи­ты­ва­ю­щие бюл­ле­те­ни в момент их пода­чи изби­ра­те­лем и тем самым пре­се­ка­ю­щие пост­фак­тум­ные мани­пу­ля­ции с ними. Да, вопрос дове­рия к ним — тоже боль­ной (см. скан­дал с Dominion на послед­них выбо­рах в США или запрет на исполь­зо­ва­ние гол­ланд­ских КОИ­Бов в Гер­ма­нии), но в любом слу­чае КОИ­Бы при их пра­виль­ной реа­ли­за­ции выгля­дят как шаг впе­рёд, делая невоз­мож­ным целый ряд мани­пу­ля­ций с бюллетенями.

То же самое каса­ет­ся и ДЭГ. Глав­ный вопрос не в том, что в Вики­пе­дии опи­са­на реа­ли­за­ция сфе­ри­че­ско­го ДЭГ в ваку­у­ме — вопрос в том, мож­но ли тех­ни­че­ски­ми сред­ства­ми постро­ить доста­точ­но надёж­ную систе­му ДЭГ в реаль­ном мире.

Ослепление избирателя: обеспечение тайны голосования без двух независимых агентств

В Эсто­нии на дан­ную про­бле­му, как мы выяс­ни­ли ранее, попро­сту заби­ли: там изби­ра­тель под­пи­сы­ва­ет бюл­ле­тень сек­рет­ной частью клю­че­вой пары, пуб­лич­ная часть кото­рой госу­дар­ству извест­на и с кон­крет­ным физ­ли­цом сопо­став­ле­на. Потом, уже после завер­ше­ния голо­со­ва­ния, эта под­пись уни­что­жа­ет­ся. В прин­ци­пе, это всё рав­но, что вме­сто запи­си в кни­гу изби­ра­те­лей на обыч­ном голо­со­ва­нии пря­тать свой бюл­ле­тень в кон­верт с ФИО, пас­порт­ны­ми дан­ны­ми и под­пи­сью — и в таком виде в урну и бро­сать (соб­ствен­но, ана­ло­гия и взя­та с эстон­ских госу­дар­ствен­ных порталов).

В Рос­сии, где уро­вень дове­рия к выбо­рам и комис­си­ям и так крайне низок, так вряд ли бы получилось.

Поэто­му в рос­сий­ском ДЭГ был исполь­зо­ван зна­чи­тель­но более слож­ный меха­низм, име­ну­е­мый «сле­пой под­пи­сью», смысл кото­ро­го в том, что­бы в двух агент­ствах — неваж­но, неза­ви­си­мы они или нет — попро­сту не суще­ство­ва­ло бы еди­но­го при­зна­ка, по кото­ро­му они мог­ли бы сопо­ста­вить изби­ра­те­ля и его бюллетень.

Если пытать­ся изло­жить это мак­си­маль­но крат­ко, схе­ма выгля­дит так:

  • Изби­ра­тель захо­дит на сайт голо­со­ва­ния и авто­ри­зу­ет­ся через ЕСИА (в про­сто­на­ро­дье «Госус­лу­ги», но мы-то с вами зна­ем, что это раз­ные системы).
  • Систе­ма ДЭГ, полу­чив из ЕСИА дан­ные учёт­ной запи­си изби­ра­те­ля, про­ве­ря­ет, есть ли он в кни­ге изби­ра­те­лей, и выда­ёт бюл­ле­те­ни, соот­вет­ству­ю­щие выбо­рам, про­хо­дя­щим по его месту житель­ства. На бюл­ле­те­нях нет ника­ких иден­ти­фи­ка­ци­он­ных при­зна­ков, они оди­на­ко­вы до послед­не­го бита у всех избирателей.
  • На устрой­стве изби­ра­те­ля (код выпол­ня­ет­ся в бра­у­зе­ре) гене­ри­ру­ет­ся клю­че­вая пара — сек­рет­ный и пуб­лич­ный ключ. Назо­вём пуб­лич­ный ключ K, а сек­рет­ный — S.
  • Пуб­лич­ный ключ мас­ки­ру­ет­ся — напри­мер, домно­жа­ет­ся на какое-то слу­чай­ное, так­же толь­ко что сге­не­ри­ро­ван­ное, чис­ло. Таким обра­зом полу­ча­ет­ся ключ K’, вос­ста­но­вить по кото­ро­му исход­ный ключ K, не зная пара­мет­ры мас­ки­ров­ки, невозможно.
  • Замас­ки­ро­ван­ный ключ K’ отправ­ля­ет­ся на сер­вер, выда­ю­щий бюллетени.
  • Сер­вер под­пи­сы­ва­ет этот ключ сво­им соб­ствен­ным клю­чом и воз­вра­ща­ет под­пись (назо­вём её C’, что­бы под­черк­нуть, что она отно­сит­ся к клю­чу K’) на смарт­фон избирателя.
  • Одно­вре­мен­но сер­вер пере­да­ёт на смарт­фон изби­ра­те­ля свой пуб­лич­ный ключ голо­со­ва­ния (оди­на­ко­вый для всех избирателей).
  • Запол­нен­ный бюл­ле­тень на устрой­стве изби­ра­те­ля шиф­ру­ет­ся пуб­лич­ным клю­чом голо­со­ва­ния и под­пи­сы­ва­ет­ся сек­рет­ным клю­чом изби­ра­те­ля S.
  • С под­пи­си C’ и клю­ча K’ на смарт­фоне изби­ра­те­ля сни­ма­ет­ся мас­ки­ров­ка — этот алго­ритм устро­ен таким обра­зом, что в резуль­та­те полу­ча­ет­ся под­пись C, валид­ная для клю­ча K.
  • Зашиф­ро­ван­ный и под­пи­сан­ный бюл­ле­тень отправ­ля­ет­ся на сер­вер при­ё­ма бюл­ле­те­ней, к нему при­кла­ды­ва­ет­ся пуб­лич­ный ключ изби­ра­те­ля K и полу­чен­ная в пунк­те 9 под­пись это­го клю­ча С.
  • Так как пуб­лич­ный ключ изби­ра­те­ля был создан на его устрой­стве при полу­че­нии бюл­ле­те­ня «с нуля», то сер­вер при­ё­ма бюл­ле­те­ней ниче­го о нём не зна­ет — одна­ко может про­ве­рить его под­пись C, а после это­го — про­ве­рить, что бюл­ле­тень дей­стви­тель­но под­пи­сан сек­рет­ной частью это­го же клю­ча. Если на оба пунк­та ответ поло­жи­тель­ный — зна­чит, бюл­ле­тень был выдан насто­я­ще­му изби­ра­те­лю (той частью систе­мы, кото­рая ещё зна­ла ФИО это­го избирателя).
  • Систе­ма отправ­ля­ет бюл­ле­тень на хра­не­ние в блокчейн.

Таким обра­зом, два сер­ве­ра — выда­ю­щий пустой бюл­ле­тень и при­ни­ма­ю­щий запол­нен­ный — зна­ют об избирателе:

  • выда­ю­щий сер­вер: ФИО, пас­порт­ные дан­ные, адрес про­жи­ва­ния, ключ K’, под­пись C’;
  • при­ни­ма­ю­щий сер­вер: галоч­ки в бюл­ле­тене, ключ K, под­пись C.

В этой схе­ме нет ни одно­го при­зна­ка, кото­рый при­сут­ство­вал бы одно­вре­мен­но на сер­ве­ре, выда­ю­щем пустые бюл­ле­те­ни, и сер­ве­ре, при­ни­ма­ю­щем запол­нен­ные бюл­ле­те­ни, и поз­во­лил бы уста­но­вить соот­вет­ствие меж­ду бюл­ле­те­нем и физ­ли­цом, его заполнявшим.

Обра­ти­те так­же вни­ма­ние: ано­ни­ми­за­ция, по сути, про­ис­хо­дит на устрой­стве поль­зо­ва­те­ля, боль­шая часть алго­рит­мов выпол­ня­ет­ся в его бра­у­зе­ре, то есть, их код и состав отправ­ля­е­мых на сер­ве­ра дан­ных может про­ве­рить любой жела­ю­щий. Соот­вет­ствен­но, даже без зна­ния сер­вер­ной части кода мож­но с доста­точ­ной уве­рен­но­стью судить о том, кор­рект­но или некор­рект­но реа­ли­зо­ва­на эта схема.

Итак, зафик­си­ру­ем пер­вый пункт: в офи­ци­аль­ном дизайне систе­мы при­ня­ты меры к соблю­де­нию тай­ны голо­со­ва­ния даже в том слу­чае, если два агент­ства не явля­ют­ся независимыми.

Атака сбоку: раскрытие тайны голосования через логгирование

Тем не менее, все мы пони­ма­ем, что тео­ре­ти­че­ски бюл­ле­тень и изби­ра­те­ля мож­но сопо­ста­вить по кос­вен­ным дан­ным — ведя на сер­ве­рах систе­мы деталь­ные логи: IP-адрес, бра­у­зер, вре­мя отправ­ки и полу­че­ния бюл­ле­те­ня, а потом сопо­ста­вив на одном ком­по­нен­те их с ФИО изби­ра­те­ля, а на дру­гом — с бюллетенем.

Дока­зать пол­ную невоз­мож­ность реа­ли­за­ции такой схе­мы нере­аль­но. Ни реа­ли­за­ция сфе­ри­че­ско­го про­то­ко­ла двух агенств в ваку­у­ме, ни аудит исход­ных кодов, ни допуск неза­ви­си­мых экс­пер­тов в ЦОД — ничто из это­го не даёт гаран­тии, что где-то в систе­ме не оста­лась хоро­шо спря­тан­ная заклад­ка, логги­ру­ю­щая и сохра­ня­ю­щая или отправ­ля­ю­щая дан­ные, поз­во­ля­ю­щие иден­ти­фи­ци­ро­вать избирателя.

Поэто­му оцен­ка подоб­ной угро­зы так­же дела­ет­ся по кос­вен­ным признакам:

  • есть ли осно­ва­ния пола­гать, что в систе­ме преду­смот­ре­на такая возможность?
  • есть ли осно­ва­ния пола­гать, что в систе­ме исполь­зо­ва­лась такая возможность?

Есте­ствен­но, на оба вопро­са ответ может быть толь­ко веро­ят­ност­ный — но, с дру­гой сто­ро­ны, и ответ на вопрос «нет ли на изби­ра­тель­ных участ­ках над кабин­кой скры­той каме­ры, под­клю­чён­ной к систе­ме рас­по­зна­ва­ния лиц» — тоже веро­ят­ност­ный, обсле­до­вать поме­ще­ние вас в общем слу­чае не пустят.

Отве­ты на подоб­ные вопро­сы каж­дый дол­жен дать себе сам, одна­ко при­ве­дём наши вари­ан­ты вме­сте со сто­я­щей за ними логикой.

  • таких осно­ва­ний нет — в первую оче­редь в силу того, что если бы в систе­му необ­хо­ди­мо было зало­жить воз­мож­ность вскры­тия тай­ны голо­со­ва­ния, это мож­но было бы сде­лать намно­го надёж­нее и про­ще на уровне её архи­тек­ту­ры; это вызва­ло бы недо­воль­ство неко­то­ро­го — неболь­шо­го — коли­че­ства экс­пер­тов, но в целом уже на уровне СМИ пре­крас­но зашла бы отсыл­ка, напри­мер, к эстон­ско­му опы­ту и «мы руко­вод­ство­ва­лись меж­ду­на­род­ны­ми практиками»;
  • таких осно­ва­ний нет — хотя в Рос­сии про­шло уже два круп­ных голо­со­ва­ния в систе­ме ДЭГ (по поправ­кам к Кон­сти­ту­ции и ЕДГ 13 сен­тяб­ря 2020), ника­ких извест­ных нам сви­де­тельств, что кому-то «на стол лег­ли» поимён­ные спис­ки, кто как голо­со­вал, нет.

Тем не менее, послед­ний вопрос — доволь­но серьёз­ный, ведь если такие спис­ки суще­ству­ют, как утвер­жда­ет Алек­сандр Исав­нин в недав­ней ста­тье, то сам этот факт обну­ля­ет все раз­го­во­ры о соблю­де­нии тай­ны голо­со­ва­ния. По этой при­чине мы запро­си­ли как у Алек­сандра Исав­ни­на, так и у его кол­ле­ги, чле­на ТИК и чле­на тех­ни­че­ской рабо­чей груп­пы ДИТ Моск­вы по элек­трон­но­му голо­со­ва­нию Евге­ния Феди­на, есть ли у них какие-то фак­ти­че­ские сви­де­тель­ства нали­чия таких спис­ков. Алек­сандр Исав­нин отве­тил «Вы — наслед­ни­ки сур­ков­ской про­па­ган­ды!», Евге­ний Федин — «имен­но спис­ки с голо­са­ми изби­ра­те­лей мне пока не попа­да­лись». Навер­ное, на этом вопрос мож­но счи­тать закрытым.

Соот­вет­ствен­но, на дан­ный момент мож­но с уве­рен­но­стью гово­рить, что:

  • в заяв­лен­ном дизайне систе­мы спо­со­бов нару­шить тай­ну голо­со­ва­ния не наблюдается;
  • так как зна­чи­тель­ная часть алго­рит­мов реа­ли­зо­ва­на на устрой­стве поль­зо­ва­те­ля, даже не имея досту­па в ЦОД к сер­вер­ной части систе­мы, мож­но убе­дить­ся, что фак­ти­че­ский дизайн систе­мы в части алго­рит­мов обес­пе­че­ния тай­ны голо­со­ва­ния соот­вет­ству­ет заявленному;
  • фак­ти­че­ских при­ме­ров нару­ше­ния тай­ны голо­со­ва­ния на преды­ду­щих двух слу­ча­ях мас­со­во­го исполь­зо­ва­ния ДЭГ в Рос­сии зафик­си­ро­ва­но не было.

Скрыть нельзя показать: проверка избирателем собственного голоса

Ещё один инте­рес­ный вопрос, кос­вен­но отно­ся­щий­ся к тайне голо­со­ва­ния — это воз­мож­ность для само­го изби­ра­те­ля про­ве­рить, был ли учтён его голос.

В мос­ков­ской систе­ме ДЭГ такая воз­мож­ность есть, хоть и неофи­ци­аль­ная — надо было в момент голо­со­ва­ния открыть отла­доч­ные инстру­мен­ты бра­у­зе­ра и запи­сать пере­да­ва­е­мые на сер­вер пара­мет­ры, что­бы потом най­ти по ним свой бюл­ле­тень. Бюл­ле­те­ни отправ­ля­лись и хра­ни­лись в блок­чейне в зашиф­ро­ван­ном виде, одна­ко перед под­счё­том голо­сов они расшифровывались.

Такая схе­ма вызы­ва­ет опа­се­ния в том, что про­вер­ка голо­са может быть исполь­зо­ва­на для обес­пе­че­ния голо­со­ва­ния под дав­ле­ни­ем или про­да­жи голо­сов изби­ра­те­лей — в каче­стве под­твер­жде­ния «пра­виль­но­сти» голо­со­ва­ния заказ­чик потре­бу­ет предъ­явить ему резуль­тат про­вер­ки. По этой при­чине, в част­но­сти, воз­мож­ность оста­ва­лась доступ­ной толь­ко для тех­на­рей с высо­кой ква­ли­фи­ка­ци­ей, и не выно­си­лась в интер­фейс пользователя.

В феде­раль­ной систе­ме ДЭГ реши­ли сов­ме­стить несов­ме­сти­мое — и дать поль­зо­ва­те­лю воз­мож­ность про­ве­рить, что его голос дей­стви­тель­но хра­нит­ся в блок­чейне, но не давать воз­мож­но­сти этот голос посмот­реть (и пока­зать другим).

Для это­го вме­сто одно­го клю­ча шиф­ро­ва­ния бюл­ле­те­ня будут созда­вать­ся два:

  • еди­ный ключ шиф­ро­ва­ния, созда­ю­щий­ся на отклю­чён­ном от сети ноут­бу­ке в при­сут­ствии СМИ и наблю­да­те­лей. Его сек­рет­ная поло­ви­на раз­де­ля­ет­ся на части и раз­да­ёт­ся на флэш­ках несколь­ким людям, пуб­лич­ная же на флэш­ке пере­но­сит­ся на сер­вер голо­со­ва­ния, после чего либо дан­ные на ноут­бу­ке уни­что­жа­ют­ся (так­же в при­сут­ствии СМИ и наблю­да­те­лей), либо ноут­бук опе­ча­ты­ва­ет­ся и уби­ра­ет­ся в сейф;
  • клю­че­вые пары, гене­ри­ру­ю­щи­е­ся для каж­до­го про­хо­дя­ще­го голо­со­ва­ния, пуб­лич­ная часть кото­рых пере­да­ёт­ся на сер­ве­ра, а сек­рет­ная оста­ёт­ся в HSM — аппа­рат­ном моду­ле, кото­рые поз­во­ля­ет выпол­нить рас­шиф­ров­ку загру­жа­е­мых в него дан­ных, но не поз­во­ля­ет ска­чать из него ключ.

Оба пуб­лич­ных клю­ча при выда­че бюл­ле­те­ня пере­да­ют­ся вме­сте с ним на устрой­ство изби­ра­те­ля, где бюл­ле­тень шиф­ру­ет­ся ими. Зашиф­ро­ван­ные бюл­ле­те­ни скла­ды­ва­ют­ся в блокчейн.

Про­сто так взять и рас­шиф­ро­вать бюл­ле­те­ни ста­но­вит­ся невоз­мож­ным: так как ответ­ная часть одно­го из клю­чей хра­нит­ся в HSM, рас­шиф­ров­ка доступ­на толь­ко людям, име­ю­щим к дан­но­му HSM доступ. Но для под­счё­та голо­сов это и не тре­бу­ет­ся: в феде­раль­ной ДЭГ исполь­зу­ет­ся гомо­морф­ное шиф­ро­ва­ние, кото­рое поз­во­ля­ет сна­ча­ла скла­ды­вать дан­ные, а потом рас­шиф­ро­вы­вать результат.

Что­бы под­ве­сти ито­ги голосования:

  • бюл­ле­те­ни, зашиф­ро­ван­ные дву­мя клю­ча­ми, скла­ды­ва­ют­ся, в резуль­та­те чего в силу гомо­морф­но­сти исполь­зу­е­мых алго­рит­мов шиф­ро­ва­ния полу­ча­ет­ся зашиф­ро­ван­ный теми же дву­мя клю­ча­ми резуль­тат сложения;
  • резуль­тат сло­же­ния отправ­ля­ет­ся в HSM, где с него сни­ма­ет­ся пер­вый ключ;
  • вла­дель­цы флэ­шек с частя­ми вто­ро­го клю­ча соби­ра­ют­ся вме­сте (сно­ва в при­сут­ствии СМИ) и про­во­дят про­це­ду­ру сбор­ки клю­ча из его частей;
  • собран­ный ключ пуб­ли­ку­ет­ся, с его помо­щью окон­ча­тель­но рас­шиф­ро­вы­ва­ет­ся резуль­тат голосования.

Обра­ти­те вни­ма­ние, что в про­цес­се нигде не про­из­во­дит­ся рас­шиф­ров­ка инди­ви­ду­аль­ных бюл­ле­те­ней, невоз­мож­но это сде­лать и само­сто­я­тель­но — для это­го нужен доступ к HSM.

В резуль­та­те изби­ра­тель может най­ти в выгруз­ке блок­чей­на свой бюл­ле­тень и может про­ве­рить, что он дей­стви­тель­но его и не был никем моди­фи­ци­ро­ван (так как бюл­ле­тень под­пи­сан на устрой­стве изби­ра­те­ля) — но при этом не может посмот­реть, а так­же кому-либо пока­зать, как имен­но в бюл­ле­тене были про­став­ле­ны галоч­ки. В буду­щем, по сло­вам раз­ра­бот­чи­ков, это может стать базой для функ­ци­о­на­ла выда­чи изби­ра­те­лю крип­то­гра­фи­че­ски под­твер­ждён­ной кви­тан­ции о том, что его голос учтён (при­нят и загру­жен в блокчейн).

Оста­ёт­ся вопрос учё­та бюл­ле­те­ня в финаль­ном под­счё­те — тео­ре­ти­че­ски мож­но пред­по­ло­жить, что резуль­тат может быть под­ме­нён при рас­шиф­ров­ке сум­ма­ри­зо­ван­но­го бюл­ле­те­ня в HSM. На прак­ти­ке, одна­ко, это неслож­но про­ве­рить, взяв резуль­тат рас­шиф­ров­ки (он пуб­ли­ку­ет­ся в блок­чейн) и зашиф­ро­вав его обрат­но пуб­лич­ным клю­чом дан­но­го голосования.

Что даль­ше?

Наде­ем­ся, вопрос о том, как тех­ни­че­ски­ми сред­ства­ми обес­пе­чи­ва­ет­ся тай­на голо­со­ва­ния в систе­мах ДЭГ, мы раскрыли.

В сле­ду­ю­щих ста­тьях попро­бу­ем так­же осветить:

  • мож­но ли что-то сде­лать с угро­за­ми, не вхо­дя­щи­ми в МУиН ПТК ДЭГ;
  • как наблю­дать за ходом голо­со­ва­ния в ДЭГ (в том чис­ле, не будучи офи­ци­аль­ным наблюдателем);
  • что-то ещё? Пред­ла­гай­те в комментариях.

Подписаться на рассылку новостей
Партии прямой демократии

Directed by Pixel Imperfect Studio. Produced by Git Force Programming LLC.