*Бандвагон  —  повальное бездумное увлечение чем-либо в силу моды, популярности. От амер. Bandwagon  —  фургон с оркестром, привлекающий зевак.

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

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

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

Книга Шеннона положительно повлияла на развитие теории информации. Мы же смеем надеяться, что наш скромный текст позволит предупредить некоторые просчёты и упущения, трагикомические вследствие простоты и очевидности, но от этого не менее досадные. Именно по этой причине мы воспользовались англицизмом «бандвагон» в титуле нашей заметки.

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

Попутно отметим, что анонимность не означает неотслеживаемости. Иными словами, несмотря на анонимность, в большинстве случаев можно проследить перемещение денежных средств (токенов), а именно: с каких адресов и какие суммы списывались, а также на какие адреса и сколько начислялись. Существуют отдельные виды криптовалют, например Monero, которые гарантируют также неотслеживаемость.

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

В Bitcoin метод обеспечения анонимности прост и логически обоснован. Все транзакции включают ЭЦП. Для проверки подписи необходим общедоступный ключ (здесь и далее термин «общедоступный ключ» равнозначен англоязычному термину public key).

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

Логика такого решения в том, что поскольку сертификат содержит в том числе персональные данные владельца общедоступного ключа, то отсутствие сертификата естественным образом гарантирует анонимность. А анонимность, как мы выше упомянули, следует считать фундаментальным свойством криптовалютных сетей. Таким образом, если бы криптовалютная сеть использовала сертификат общедоступного ключа, то она бы лишилась своего главного преимущества. Тут можно предположить: а что если выпускать сертификаты без персональных данных владельцев общедоступных ключей, эдакие анонимные сертификаты? В этом случае смысл таких сертификатов вовсе теряется. Само определение термина «сертификат», сформулированное Л.Конфелдером (Loren Kohnfelder) в 1978 году, предполагает привязку к персональным данным — это его главное предназначение. Таким образом, выпуск и обслуживание сертификатов без персональных данных владельцев общедоступных ключей не имеет смысла, поскольку противоречит парадигме Конфелдера.

Если следовать Конфелдеру, то отсутствие сертификата дезавуирует ЭЦП — возможна фальсификация и подлог со всеми вытекающими последствиями. Но актуальна ли эта проблема для криптовалют? На примере Bitcoin выясним, к каким последствиям может привести отсутствие сертификата. Если читатель расценивает обозначенную проблематику как самоочевидную, то закончить ознакомление с заметкой можно прямо на этой строке — нам останется только выразить сожаление за невольное отвлечение от более насущных тем.

Показателен следующий эксперимент. Если в электронной версии книги Andreas M. Antonopoulos «Mastering Bitcoin: Programming the Open Blockchain». Second edition. O’Reilly Media, Inc. 2017 задать в строке поиска «public key certificate» или даже просто «certificate», то ничего не будет найдено. Автор упомянутой книги даже вскользь не касается проблемы подлинности общедоступных ключей. Хотя проблема как таковая отражает суть парадигмы Конфелдера и наряду с решением на основе сертификатов широко освещена в специальной литературе. Поскольку нет повода для сомнений в компетентности автора, то здраво предположить, что в сети Bitcoin такой проблемы не существует. Разберёмся, однако, по порядку.

В Bitcoin методы асимметричной криптографии ограничены ЭЦП. Нас будет интересовать не конкретная схема ЭЦП, а её целевое назначение и методология применения. В криптовалютных сетях ЭЦП позволяет удостовериться в принадлежности актива, а при наличии блокчейна предотвратить повторную продажу (отчуждение) одних и тех же активов (double-spending).

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

Дальнейшие рассуждения опираются на определения вычислительной трудоёмкости, которые хорошо известны специалистам в области computer science. Разъяснение этих определений выходит за рамки настоящей заметки, однако для ясности изложения в скобках будем указывать интуитивно понятное толкование — «просто» (вычислительно реализуемо) или «сложно» (вычислительно не реализуемо). Сопутствующие рассуждения о доступных вычислительных ресурсах мы также исключаем из рассмотрения.

Для секретного и общедоступного ключей, а также кошелька справедливы следующие соотношения вычислительной трудоёмкости:

  1. Для заданного секретного ключа общедоступный вычисляется с полиномиальной трудоёмкостью (просто).

  2. Для заданного общедоступного ключа секретный вычисляется со сверхполиномиальной трудоёмкостью (сложно).

  3. Для заданного общедоступного ключа адрес (кошелёк) вычисляется с полиномиальной трудоёмкостью (просто).

  4. Для заданного адреса (кошелька) общедоступный ключ вычисляется со сверхполиномиальной трудоёмкостью (сложно).

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

Перед тем как попасть в блокчейн, транзакция со всеми реквизитами, включающими ЭЦП, размещается в общедоступной долговременной памяти. Поскольку доступ к памяти не ограничен, то возможна фальсификация. Злоумышленник располагает следующими возможностями.

  1. Может сформировать новую ЭЦП без изменения содержания транзакции. 

  2. Может сначала внести изменения, а затем заверить изменённую транзакцию ЭЦП.

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

Таким образом, фальсификация в принципе возможна, но отсутствует мотивация — как показано выше, в результате фальсификации средства будут списаны с другого кошелька. Если исключить компрометацию секретного ключа, то для подобных действий необходимы очень специальные основания. По всей видимости, разработчики сети Bitcoin отнесли такие основания к маловероятным и поэтому несущественным. Однако, отсутствие сертификатов общедоступных ключей гарантирует анонимность, что важнее с точки зрения финансовых операций. Как нам представляется, изложенные соображения правдоподобно объясняют отсутствие сертификатов в сети Bitcoin.

Обратимся теперь к другим приложениям, например электронному документообороту. Для наглядности рассмотрим типичный пример. Предположим, что сторона A выдаёт долговую расписку стороне B. Это электронный документ, заверенный ЭЦП стороны A. Указанная в расписке сумма согласована с B. Каждый, кто имеет доступ к общедоступному ключу PA может проверить, что подпись сформирована стороной A при помощи парного секретного ключа SA. Однако, если отсутствует сертификат для PA, то сторона А всегда может отказаться от взятых на себя обязательств, утверждая, что не является владельцем PA и, следовательно, ничего не должна стороне B. Это простейший пример, который демонстрирует, почему каждый раз перед проверкой ЭЦП необходимо подтверждать подлинность общедоступного ключа. Ведь в сертификате указаны персональные данные стороны A, а наличие в составе сертификата ЭЦП доверенного удостоверяющего центра гарантирует, что  PA принадлежит именно A и никому другому. 

Справедливости ради необходимо упомянуть и другие виды контроля,  не принципиальные в контексте обсуждаемой проблематики, например, сверку со списком отозванных сертификатов. Логично заключить, что без сертификата общедоступного ключа нормативные функции ЭЦП не могут быть реализованы. Криптовалютные сети — это то самое исключение, которое подтверждает правило.

Подлинность общедоступных ключей имеет первостепенное значение для обеспечения такой услуги безопасности, как конфиденциальность. Например, сторона A посылает зашифрованное сообщение стороне B.  Для зашифрования сторона A применяет общедоступный ключ PB, а сторона B выполняет расшифрование при помощи парного секретного ключа SВ. Понятно, что если сторона C выдаст себя за B и для зашифрования сторона A применит PC вместо PB, то сторона C получит доступ к сообщению, которое адресовано стороне B. Благодаря Конфелдеру мы знаем, что исправить положение можно при помощи сертификата общедоступного ключа стороны В.

Известны и другие способы деструктивного воздействия, традиционно именуемые «атаками», среди которых самая распространённая и изученная — это атака «посредника», или MitM (Man-in-the-Middle attack). Все эти обстоятельства, также как и всевозможные атаки, были в своё время подмечены и проанализированы Конфелдером. 

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

Сформулируем выводы: 

  • В результате прямого переноса решений из области криптовалют механизмы асимметричной криптографии становятся уязвимы. 

  • Каждое практическое решение на основе таких механизмов необходимо всесторонне анализировать на предмет возможных атак. 

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

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

Комментарии (5)


  1. amarao
    14.02.2022 12:57

    А почему вы путаете сертификаты и публичные ключи?


    1. AndrChm
      14.02.2022 14:07
      -1

      А Вы уверены, что всё понимаете?


  1. alvisX
    14.02.2022 15:24

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


    1. AndrChm
      14.02.2022 15:32

      Смарт-контракт вторичен, так как инициируется владельцем актива. Владелец представлен адресом (кошельком). Блокчейн сам по себе тоже к этому не имеет отношения. В некоторых приложениях можно применять и сертификаты и блокчейн. Это не запрещено. Зависит от задачи. Так что основная цель, которая достигается путём исключения сертификатов общедоступных ключей – это анонимность.


    1. AndrChm
      14.02.2022 15:45

      Контракт либо проведет сделку с выполнением всех условий, либо не проведет и здесь неважно принадлежит ли адрес тому, кто заявляет об этом.

      Важно. Ведь ЭЦП транзакции проверяется всегда. Если ЭЦП не валидна, то транзакция будет отвергнута и никогда не попадёт в блок. За это, помимо прочего, отвечает смарт-контракт или скрипт в случае Bitcoin.