Архитектурная уязвимость голосования

Технология блокчейна имеет одну гарантированную уязвимость, которая проявляется тогда, когда в одних руках сосредоточены больше определенной доли майнеров. Например, если более 51% майнеров биткоина  контролирует один владелец, то он сможет встраивать в него любые блоки по своему усмотрению. Это так называемая атака 51%, которая для биткоина становится все более реальной по мере консолидации майнеров вокруг крупных вычислительных центров. Однако у биткоина изначально майнеры распределены по независимым владельцам, поэтому организовать на него атаку 51% практически невозможно, а вот с некоторыми второстепенными криптовалютами случаи консолидации более 51% в одних руках с последующей подделкой блоков были зафиксированы.

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

Один из примеров такой гарантированно уязвимой системы – электронное голосование по поправкам в Конституцию РФ. Разработчики решения даже опубликовали исходные коды голосования на github [1], чтобы независимые эксперты могли найти уязвимости в коде. И да, да – все результаты голосования хранятся в блокчейне Exonum, все узлы которого принадлежат ДИТ Москвы. Стало быть, он гарантированно уязвим к «атаке 51%», точнее, к «атаке 67%». Дело в том, что в Exonum используется Византийский консенсус, основанный на «задаче византийских генералов» [2]. При использовании этого консенсуса захватить нужно не больше половины, а свыше двух третей майнеров. Но какая разница, сколько процентов майнеров необходимо взять под контроль, если все они принадлежат одной организации – ДИТ Москвы. Формально это гарантирует, что никто, кроме ДИТ Москвы, не может вставить свой блок в цепочку. Беда лишь в том, что именно к государственным службам при таком голосовании доверия меньше всего.

При этом в самой технологии Exonum, естественно, предусмотрены два способа защиты от «атаки 67%». Первая – анкоринг хэшей в открытый блокчейн [3]. Название метода происходит от английского слова anchor – якорь. То есть данная процедура якорения хэша блокчейна в другом открытом и независимом блокчейне. Она заключается в том, чтобы периодически записывать хэши блоков «недоверенного» блокчейна в открытый, например, в биткоин. Такие резервные копии хэшей не могут быть изменены в дальнейшем, поскольку стали частью открытого и достаточно защищенного блокчейна, что гарантирует неизменность в том числе и «недоверенного» блокчейна. Если владелец блокчейна попытается его изменить, то это будет заметно по сравнению фальшивых хэшей с сохраненными в независимой цепочке. Судя по опубликованному коду, механизм анкоринга в текущем голосовании задействован не был.

Второй метод защиты – создание независимых узлов аудита, которые просто получают уже готовый блокчейн в виде последовательности блоков и проверяют корректность работы майнеров, сгенерировавших его. Данный метод позволяет заметить и подделку блоков, но лишь при условии постоянного контроля со стороны. Дело в том, что в Exonum используется метод верификации блока «Proof of Authority», т. е. верификация блока проводится только специально назначенными узлами. Но это также означает, что для генерации всего блокчейна требуется меньше ресурсов, чем при методе «Proof of Work», который применяется в биткоине. Таким образом, у владельца голосования есть возможность сгенирировать полностью фальшивую цепочку блоков и «подсунуть» ее узлам-аудиторам. При этом бизнес-логика фальшивого блокчейна нарушена не будет. Однако если аудитор с самого начала получает данные из основного блокчейна, то он может заметить, когда ему попытаются передать фальшивый посторонний блокчейн. Впрочем, узлов-аудиторов в текущем голосовании не предусмотрено.

Правда, непонятно, почему блокчейн голосования должен быть приватным. Достаточно обеспечить доступ к нему для любого желающего провести его аудит. Методы шифрования голосов позволяют защитить анонимность голосования, и в результате только ДИТ Москвы может расшифровать все голоса для финального подсчета своим мастер-ключом, разделенным на несколько частей. Поэтому анонимность голосования не будет нарушена, если предоставить доступ к блокчейну голосования всем независимым наблюдателям. Но в результате будет обеспечена гарантия неизменности всех голосов. В этом случае даже ДИТ Москвы не сможет подделать голосование, чтобы не быть уличенным в изменении блокчейна. Будем надеяться, что на следующих голосованиях будут учтены особенности технологии блокчейна и предоставлен доступ для независимого аудита формирования цепочки блоков голосования или хотя бы задействованы механизмы анкоринга.

 

[1] https://github.com/moscow-technologies/blockchain-voting/tree/voting2020/elec2020

 

[2] https://ru.wikipedia.org/wiki/Задача_византийских_генералов

 

[3] https://exonum.com/ru/doc/advanced/bitcoin-anchoring/

Поделиться:
Спецпроект

Форум «ИТОПК-2020» оценил потенциал господдержки

Подробнее
Спецпроект

Напряженный трафик или Современные требования к инфраструктуре ЦОД

Подробнее

Подпишитесь
на нашу рассылку