11 апреля, 2019, BIS Journal №1(32)/2019

Ключ к паутине


Колодзей Александр

кандидат физико-математических наук, доцент кафедры ИУ-10 МВТУ им. Н.Э.Баумана, генеральный директор (ООО «Вычислительные решения»)

Перспективы использования блокчейн-технологий в цифровом государстве

Пик ажиотажного интереса к криптовалютам и блокчейн-технологиям остался позади. Тем не менее, был дан серьезный импульс к развитию самых разнообразных цифровых сервисов на базе тех или иных блокчейн-платформ и, тем самым, сделан важный шаг к цифровой экономике, к цифровому государству. Основной областью применения блокчейн-технологий является ведение распределенного реестра в децентрализованных системах в условиях взаимного недоверия. При всех своих достоинствах эти технологии имеют и ряд недостатков, часть из которых носит фундаментальный характер: криптовалюты не могут быть одновременно децентрализованными, масштабируемыми и защищенными. Хотя блокчейн считается децентрализованной технологией, но это относится только к генерации блоков. Сама же блоковая цепочка централизована, что порождает такие угрозы как перехват вычислительной мощности, возможность изоляции участников, а также приводит к бесполезному расходу энергии и излишнему сетевому трафику. Возможной альтернативой блокчейну могли бы стать решения типа блокнета («блоковая сеть») или блоквеба («блоковая паутина»), когда каждый блок должен зависеть от нескольких разных блоков, и от каждого блока может начинаться несколько разных цепочек. Обеспечение необходимого уровня информационной безопасности распределенных реестров может быть достигнуто путем использования доверенных аппаратных блочкейн-клиентов, а также путем создания сети независимых доверенных операторов распределенного реестра, например, по образцу операторов фискальных данных.

БИТКОИНУ – ДЕСЯТЬ ЛЕТ

31 октября 2008 года была опубликована «Белая книга» под авторством Сатоши Накамото «Биткоин: Одноранговая электронная денежная система» («Bitcoin: A Peer-to-Peer Electronic Cash System»). В ней были изложены основные принципы криптографической валюты, функционирующей без посредников. Решение проблемы двойной траты было основано на распределенном одноранговом сервере меток времени, который своей вычислительной мощностью подтверждает хронологический порядок транзакций. Электронная монета была определена как последовательность цифровых подписей. Очередной владелец отправляет монету следующему, подписывая хэш предыдущей транзакции и публичный ключ будущего владельца и присоединяя эту информацию к монете. Получатель может проверить каждую подпись, чтобы подтвердить корректность всей цепочки владельцев. Чтобы избавить схему от посредника, участникам необходимо открыто публиковать транзакции, а также уметь приходить к согласию относительно единого порядка их следования. Получателю нужно доказательство того, что для каждой транзакции из цепочки большинство пользователей согласны считать ее первой. Предполагается, что система находится в безопасности, пока самая крупная часть ее вычислительных ресурсов находится под совокупным контролем честных участников.

На основании изложенных принципов была реализована цифровая одноранговая цифровая валюта Bitcoin (Биткоин, BTC). 3 января 2009 года был сгенерирован первый генезис-блок блокчейна Bitcoin, а 12 января 2009 года, в 170-й блок была включена первая транзакция — создатель криптовалюты Сатоши Накамото отправил 10 биткоинов на биткоин-адрес Хэла Финни, известного специалиста по криптографии, работавшего над ранней версией PGP бок о бок с Филом Циммерманом.

Первоначально Bitcoin был уделом отдельных энтузиастов. Первый установленный курс составлял $1 = 1309.03 BTC. Постепенно, а потом взрывообразно интерес к криптовалюте рос. С 2011 года на основе открытого исходного кода Bitcoin начали появляться другие криптовалюты, число которых к настоящему времени достигло нескольких тысяч. На пике в конце 2017 года рынок криптовалют оценивался в 814 миллиардов долларов, курс BTC приблизился к отметке $20000. Затем случился резкий откат. К декабрю 2018 года общая капитализация криптовалют упала примерно до 100 миллиардов, а курс биткоина откатился к уровню лета 2017 года - $3000 за 1 BTC.

Криптовалюты и стоящая в их основе технология блокчейн продолжают получать самые противоречивые оценки. Так, панельная сессия Петербургского экономического форума (ПЭФ-2017) прошла под названием «Блокчейн — рождение новой экономики». А известный экономист Нуриель Рубини в своём выступлении в Сенате США подверг технологии блокчейн жестокой критике, назвав крипто самым серьёзным в истории лопнувшим пузырём, а блокчейн – самой переоцененной технологией, которая в реальности не лучше, чем таблица Экселя или обычная база данных. Реальная революция в сфере денежного обращения, по его словам, это ФинТех, основанный на искусственном интеллекте (ИИ), бигдате и интернете вещей, а не крипта и не блокчейн. Истина, скорее всего, где-то посередине.

Вот мнение Виталика Бутерина, одного из создателей Etherium (Эфириум, ETH): «Пик котировок криптовалют остался в прошлом, в декабре 2017, тех диких рекордов спекулятивного роста мы больше не увидим. Дело в том, что практически каждый средний образованный человек уже слышал о блокчейне хотя бы раз. Больше невозможно привлечь новых людей за счет эффекта новизны. Кроме того, после того, как лопнул спекулятивный пузырь, исчезает возможность заработка на новом растущем активе - теперь индустрии нужно сосредоточиться на удобстве использования, а не маркетинге и легком заработке. Стратегия рекламы блокчейна и криптовалют максимально широкому кругу людей достигла тупика, теперь нужно думать, как заинтересовать людей делать реальные сделки на этой платформе, заинтересовать людей реальными приложениями и использованием в реальной жизни».

Какое место технологии распределенного реестра займут через несколько десятков лет сейчас сказать сложно. Можно сравнить криптовалюты с деривативными ценными бумагами. Тридцать лет тому назад среднесуточный оборот внебиржевых деривативов составлял примерно 500 млрд. долларов, и регуляторы их не воспринимали. После регуляторы смирились с существованием этих бумаг и стали давать им положительную оценку, как инструменту, страхующему от колебания цен. По данным Банка международных расчетов, общая номинальная стоимость деривативов во всем мире к 2014 году выросла до суммы в $710 трлн., по другим оценкам эта сумма составляет квадриллионы долларов. При этом уже появились и криптовалютные деривативы.

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

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

Криптографическая валюта позиционировалась как:

- децентрализованная;

- безопасная;

- масштабируемая.

Постепенно выяснилось, что блокчейн Bitcoin обладает существенными недостатками и, вообще, постепенно пришло понимание, что на данном этапе развития технологии распределенного реестра одновременно можно обеспечить только две из перечисленных характеристик и принести в жертву что-то одно.

К ключевым параметрам блокчейна Bitcoin можно отнести:

- среднее время генерации одного блока – 10 минут;

- максимальный размер одного блока – 1 мегабайт;

- способ подтверждения блока и достижения консенсуса – доказательство работой (Proof-of-Work, PoW);

- механизм динамического изменения сложности генерации блока, сложность пересматривается через каждые 2016 блоков, примерно раз в 2 недели;

- ограниченный язык скриптов в транзакциях;

- криптографические алгоритмы хэширования SHA256, RIPEMD-160 и цифровой подписи на эллиптической кривой secp256k1;

- общий объем эмиссии – 21 миллион BTC.

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

ТРАНЗАКЦИИ BITCOIN

Каждая транзакция Bitcoin содержит список входов и список выхода. Вход — идентификатор транзакции, которая должна быть потрачена целиком. Выход — сумма и адрес получателя. Разность между суммами входов и суммой выходов — комиссия, которую получит майнер.

Если отправитель хочет потратить сумму входов частично, он должен просто отправить разницу на какой-то из собственных адресов. Bitcoin позволяет не только переводить средства с одного адреса на другой. На самом деле, в выходе транзакции записывается не просто биткоин-адрес получателя, а некоторый скрипт. Язык скриптов Bitcoin развивается от версии к версии.  Появились переводы, требующие множества подписей, стало возможным установить временной лимит, по истечении которого средства становятся доступны — можно реализовывать схемы с доверенным посредником, с многофакторной авторизацией и т. п. Возможны переводы, когда в качестве адреса получателя выступает хэш скрипта. Это позволяет создавать любые самые сложные контракты на языке скриптов без необходимости выкладывания их самих в общедоступный блокчейн, экономя в нём место и не раскрывая сути контрактов до момента их исполнения. В 2013 в блокчейн даже был записан скрипт, который принимал значение «истина» при предъявлении коллизии SHA1. И в 2017, после того, как инженерами Google была решена задача построения такой коллизии, что стало одним из самых значительных вычислительных проектов современности, кто-то получил 2.48 ВС.

БЛОКЧЕЙН

Блокчейн – это опубликованная база транзакций, распределенный реестр. Автор транзакции рассылает её по сети. Транзакции должны быть объединены в блоки. Каждый блок содержит обязательные элементы — заголовок и список транзакций. Заголовок включает хэш данного блока, хэш предыдущего блока, хэши транзакций и дополнительную информацию о блоке. Для проверки конкретной транзакции запрашивается доказательство Меркла. Оно состоит из корня и ветви, включающей хэши от запрашиваемой транзакции до корня, поскольку в этом случае не нужна информация о других операциях.

Сложив запрошенные хэши и сравнив их с корнем, можно убедиться, что транзакция находится на своем месте. Такой подход значительно снижает нагрузку на сеть, так как для проверки конкретной транзакции могут скачиваться только необходимые хэши. Например, вес блока с пятью транзакциями максимального размера составляет более 500 килобайт. Вес доказательства Меркла в этом же случае не превысит 140 байт.

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

В системе устанавливается цель – значение, которое не должен превышать хэш от блока. Нужного значения майнеры добиваются за счёт произвольного параметра Nonce и метки времени в заголовке хэшируемого блока. Чем цель меньше, тем задача более трудоёмкая. Значение цели динамически подбирается так, чтобы среднее время генерации блоков оставалось примерно одинаковым. В Bitcoin эта величина составляет 10 минут.

Майнер, сгенерировав блок, рассылает этот блок-претендент остальным участникам. Остальные участники берут первый по времени блок-претендент, проверяют валидность включенных в него транзакций и начинают строить цепь дальше. Иногда в один момент времени может быть найдено несколько блоков-претендентов, либо возможны ситуации, когда не все участники получают все блоки. В результате может получается несколько веток. По общему правилу все переходят на самую длинную ветвь и цепь стабилизируется. Транзакция, включенная в блок, считается подтверждённой и её можно тратить, если сгенерировано ещё несколько последующих блоков – в Bitcoin это обычно 6 блоков. При этом сами майнеры могут использовать биткоины, которые они получили в качестве вознаграждения за создание блока, только после подтверждения 100 блоков.

РАЗМЕР БЛОКА

В Bitcoin размер блока транзакций ограничен 1 мегабайтом. Тем самым при скорости 1 блок в 10 минут максимальная пропускная способность ограничена 3-7 транзакций в секунду. Майнеры в период пиковых нагрузок начинают отбирать для включения в блоки транзакции с максимальной комиссией. В результате транзакции с минимальными комиссиями могут ждать своей очереди на включение в очередной блок несколько часов или даже дней, что снижает привлекательность использования криптовалюты для мелких платежей. Однако простое увеличение размера блока или уменьшение времени генерации блока увеличат нагрузку на сеть. Здесь необходимо учитывать, что на один блок может приходиться и 1000 блоков претендентов, и все они как можно быстрее должны доходить до всех участников, чтобы минимизировать время синхронизации цепи. Рост себестоимости работы узлов сети, построенной на блокчейне, приведёт к тому, что меньшее число людей смогут позволить себе этим заниматься, и сеть будет более централизованной.

В Monero реализовано динамическое ограничение предельного размера блока в зависимости от объема транзакций в конкретный момент времени. Сам Bitcoin так и не пошел на увеличение размера блока. В результате, в августе 2017 года от него откололся Bitcoin Сash, в котором максимальный размер блока был установлен 8 мегабайт, а в 2018 году разработчики еще больше увеличили этот объем – до 32 Мб. Отличие майнинга BCH заключается и в схеме изменения сложности: здесь она пересматривается через каждые 6 блоков. Существуют криптовалюты, у которых сложность может пересматриваться после каждого блока.

В свою очередь, Bitcoin Сash в ноябре 2018 разделился на Bitcoin ABC, который через некоторое время снова стал признаваться как Bitcoin Cash (BCH) и Bitcoin SV.

В Bitcoin ABC было предложено:

внедрить новый код операций, называемый OP_CHECKDATASIG, который позволит осуществлять транзакции между различными блокчейнами;
использовать «транзакции канонического порядка». Правило консенсуса, унаследованное от классического клиента Сатоши, предполагает, если сделка B зависит от сделки A, то она должна и в блокчейн быть записана после сделки A – топологическое упорядочение. Если отказаться от этого требования и упорядочивать транзакции в блоке по их идентификатору, то, по мнению разработчиков, это позволит упростит программную реализацию и облегчить масштабируемость;
предоставить сообществу удобный функционала, благодаря которому возможно будет голосовать за тот или иной размер блока (на текущий момент — 32 МБ);
внедрить в блокчейн умные контракты с возможностью разработки децентрализованных приложений.

В Bitcoin SV (BSV), наоборот, было предложено:

внедрить новый размер блока – 128 МБ. Уже был добыт блок размером 64 Мб. Планы включают в себя увеличение размера блока BSV до 512 Мб в ближайшие 6 месяцев, а позже - до 2 Гб;
откатить текущие наработки до оригинального блокчейна Bitcoin Cash, который был сразу же после отделения от BTC;
рассматривать BSV исключительно как средство платежа (никаких смарт-контрактов и распределенных приложений и т.д.).

В самом Bitcoin острота проблемы размера блока в июле 2017 году была снята за счёт использования технологии Segregated Witness (SegWit). Суть заключается в вынесении подписей транзакций в одноименную структуру (отделенный свидетель) вне основного блока. Так как общий объем подписей составлял в среднем 53 % от размера всего блока, это позволило примерно в 2 раза увеличить количество транзакций, помещающихся в основной блок. Теперь, чтобы проверить все транзакции, узлу нужно загружать расширенный блок (основной блок + отделенный свидетель). О готовности принять расширенный блок узел специально сообщает соседям. Остальные узлы принимают стандартные блоки в 1МБ, считая, что транзакции не нуждаются в подписи. Блок подписей связывается с основной цепочкой с помощью дерева Меркле.

Использование технологии SegWit одновременно решает «проблему пластичности транзакций» (transaction malleability). Идентификатор транзакции (txid) определялся как хэш от всех полей транзакции, включая scriptSig – скрипт подписи под транзакции. Любой держатель полной ноды биткоин (не только майнер) помогает собирать и распространять по сети данные о транзакциях. В процессе он может изменить scriptSig таким образом, чтобы скрипт подписи оставался корректным, результат транзакции оставался тем же, но txid поменялся. Например, к любому скрипту подписи можно добавить операцию OP_NOP (не делает ничего), или добавить две операции OP_DUP OP_DROP (первая дублирует подпись на стеке, а вторая удаляет верхний элемент стека). Подпись останется корректной, но txid поменяется. После этого злоумышленник рассылает измененную транзакцию дальше и в блок может войти именно она, а исходная транзакция будет отвергнута как попытка двойной траты. По одной из версий, так произошло с биржей MtGox. Злоумышленник выводил биткоины с этой печально известной биржи, перехватывал транзакцию, менял ей txid. Транзакция оставалась валидной, злоумышленник получал свои биткоины. Но биржа видела, что транзакция с изначальный txid не вошла в блок, и не уменьшала баланс злоумышленника. Когда подписи транзакций вынесены в отдельный блок и не участвуют в выработке txid, подобные атаки становятся невозможны, но под угрозой остаются непотраченные выходы транзакций, совершенных до начала использования этой технологии. Транзакции SegWit могут быть отправлены только с адресов SegWit и получены только на адреса SegWit. Адреса SegWit имеют другой формат по сравнению с традиционными, такой же, как и перевод на хэш скрипта. Пользователь сам может решать, пользоваться или нет ему этой технологией.

ВТОРИЧНЫЕ СЕТИ

Увеличение производительности Bitcoin в несколько раз по сравнению со скоростью 7 транзакций в секунду всё равно не является кардинальным решение проблемы. Для сравнения, платежные сети типа Visa рутинно обрабатывают 2 000 транзакций в секунду. Решение проблемы масштабирование возможно за счёт использовнаия вторичных сетей, таких как Lightning Network. Если необходимо организовать проведение большого количества транзакций между двумя или более участниками, в блокчейн записываются только транзакции о создании каналов обмена, а потом их закрытии. При открытии канала происходит блокирование средств в размере установленных лимитов. При закрытии канала стороны договариваются о подведении баланса в расчетах. Все остальные транзакции между ними осуществляются, минуя блокчейн – транзакции генерируются, но в блокчейн не записываются. Криптографические протоколы гарантируют, что в случае недобросовестного поведения одного участника, второй участник может забрать первоначально замороженные средства себе. Технология SegWit, обезопасившая от мошенничества с неподтвержденными транзакциями, существенно облегчила безопасную реализацию подобных вторичных сетей.

КРИПТОГРАФИЧЕСКИЕ ФУНКЦИИ

В качестве хэш-функций в Bitcoin используются комбинации SHA-256 и RIPEMD-160. В качестве алгоритма цифровой подписи - алгоритм подписи на эллиптических кривых (Elliptic Curve Digital Signature Algorithm, ECDSA). Используется эллиптическая кривая y2=x3+7, secp256k1.

Эллиптическая кривая E определяется как множество пар точек (x,y) из некоторого поля, таких что y2 = x3 + ax + b, где 4a3 + 27b2 ≠0. Инвариант эллиптической кривой  ГОСТ Р 34.10-2012 требует, чтобы , . Можно отметить, что инвариант эллиптической кривой Bitcoin равен 0, то есть эта кривая не рекомендована ГОСТ к использованию. Основания для выбора эллиптической кривой secp256k1 в Bitcoin никогда публично не обсуждались.

Алгоритм ECDSA для выработки каждой очередной цифровой подписи включает выбор некоторого целого числа  Если хотя бы для одной подписи это число становится известным злоумышленнику (навязано при помощи программной закладки, снято со слабого генератора случайных чисел и пр.), то компрометируется и сам секретный ключ цифровой подписи. Поэтому некоторые пользователи после каждой транзакции остаток средств каждый раз пересылают на новый адрес, что не всегда удобно.

Транзакции Bitcoin никак не шифруются, хранятся и пересылаются по сети в открытом виде. Это позволяет осуществлять атаки на сетевую инфраструктуру, блокировать распространение тех или иных транзакций или блоков-претендентов.

Говорить об анонимности блокчейна можно лишь условно. Отследить, с какого IP-адреса была отправлена транзакция с тем или иным адресом Bitcoin – дело техники. Например, в своё время расследование выявило автора очередного вируса, несмотря на то, что для его вброса в сеть хакер использовал цепочку более чем из 20 прокси-серверов. Не случайно, что за деньгами, которые были отправлены на биткоин-кошелёк очередного вируса-вымогателя, обратиться никто так и не рискнул.

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

Система адресов Monero использует два приватных ключа: viewkey (ключ для просмотра) и spendkey (ключ для траты). Приватный ключ для трат работает как аналогичный приватный ключ в Bitcoin — им вы подписываете транзакции. Ключи для просмотра же используется для поиска входящих платежей в цепочке блоков. Только если у вас есть доступ к ключу для просмотра вы можете узнать точный выход транзакции, связанный с вашим адресом Monero.

Кольцевая подпись (ring signature) — это такая электронная подпись, которая позволяет одному из участников группы (называемой кольцом) выполнить подписание некоторого сообщения от имени всей группы, при этом не будет доподлинно известно, кто из участников группы выполнил подписание.

В 2017 году Monero была добавлена технология RingCT (Кольцевые конфиденциальные транзакции), которая позволяет скрывать суммы транзакций. В разработке находится проект Kovri — I2P-маршрутизатор на языке C++, который должен позволить пользователям Monero скрывать свои IP-адреса во время отправки транзакций.

Анонимность переводов в Monero всё равно не имеет 100% гарантии. Гипотетически, злоумышленник, сумевший захватить большую часть сети, может получить контроль над некоторыми транзакциями.

Monero отличается ещё и тем, что это одна из немногих криптовалют, у которых эмиссия не ограничена.

(Окончание следует)

 

 

Смотрите также

AI, ML и ИБ

31 декабря, 2018
Подпишись на новости!
Подписаться