Классификация экономико-технических атак. Спикер: Григорий Васильков
О безопасности в сети Блокчейн в целом, а также о классификации экономико-технических атак расскажет спикер сегодняшней лекции.
В связи с тем, что индустрия Блокчейн достаточно молода, проблемы безопасности касательно Блокчейн приложений и смарт-контрактов только начинают понимать и решать.
Также следует учитывать, что разработка приложений на Блокчейн платформах не совсем напоминает традиционное программирование, поскольку связана с некоторыми экономическими аспектами, например эмиссией токенов.
Платформы с возможностью имплементации смарт-контрактов
На данный момент в сети существует около 40 Блокчейн платформ на которых можно так или иначе имплементировать смарт-контракты. Стоит отметить, что такое количество платформ в только развивающейся области ставит под угрозу безопасность самих приложений. Следовательно, для освоения азов безопасности должно пройти время и появится определенная классификация атак, которая поможет писать защищенный код.
Языки программирования умных контрактов
Все существующие платформы позволяют создавать смарт-контракты на своих языках программирования или на общеизвестных. Изображение иллюстрирует самые популярные из них. Также должно пройти определенное время, прежде чем программисты изучат данные языки.
Рассмотрим некоторые виды языков программирования и их визуальные отличия:
- Платформа Ethereum, язык программирования Solidity
В ближайшее время Виталий Бутерин планирует внедрить на Ethereum новый функциональный и более безопасный язык Viper.
- Платформа EOS, язык программирования С++
Проект EOS находится на стадии разработки и написан он на C++. Язык C++ подвержен различным типам атак, повлияет ли это на работу сети покажет время.
- Платформа Exonum, язык Rust
Exonum - приватная платформа, ориентированная на финансовый сектор, написана на Rust и язык, который будет использоваться - также Rust.
- Платформа Corda, язык программирования Kotlin
Это платформа R3 Консорциум, в которую вхожи более 70 финансовых учреждений, банков. Corda занимается созданием Блокчейн решений для данных финансовых институтов. Язык программирования платформы - Kotlin, это следующая реинкарнация Java.
- Платформа Hyperledger, язык Go
Hyperledger - приватный Блокчейн, который поддерживает Linux Foundation.
- Платформа Neo, язык C#
Китайская закрытая платформа, все ноды которой принадлежат одной организации.
- Платформа Cardano, язык Plutus
Данная платформа использует два слоя: на одном проходят транзакции, на другом - происходит обмен через смарт-контракты.
Рынок Блокчейн платформ только зарождается и на данном этапе развития существует много проблем с точки зрения технического воплощения, а также безопасности. Разберем более подробно вопросы безопасности:
Проблемы построения безопасной архитектуры на приложений в Блокчейн:
- В публичных Блокчейн платформах логика разработки умного контракта доступна всем участникам платформы
- Персональные данные, хранимые в смарт-контрактах, также доступны всем участникам платформы
- При получении данных из внешних централизованных источников, смарт-контракт не может явно гарантировать достоверность этих данных
Особенности недостатков безопасности в Блокчейн системах:
При разработке смарт-контрактов требуются не только знания технического характера, но и понимание экономических моделей, поскольку:
- Это затрагивает движение ценных криптовалютных единиц
- Разработка требует экономического мышления
При разработке Блокчейн приложений сложно явно предусмотреть поведение и зависимость всех элементов системы, следовательно, затруднительно спроектировать логику исключения ошибок. По этой причине, спикер и его команда решили классифицировать вероятные угрозы и назвали их экономико-технические атаки.
Под описательный язык данной дисциплины попадает такое определение как экономическая кибернетика:
Экономическая кибернетика - область науки, которая связана с кибернетикой и экономикой, включает в себя математическую статистику, эконометрику, анализ процессов.
Теперь разберем основные экономико-технические угрозы, которые были выделены с помощью экономической кибернетики:
- Несостоятельность экономической модели приложения
Необходимо прогнозировать, как может повести себя пользователь, если ему дать дополнительную экономическую стимуляцию или же наоборот ограничения. Если в основу логики приложения ляжет неверная экономическая модель, то приложение может не выполнять желаемых задач и участники могут понести экономические потери.
Данный класс недостатков безопасности чаще всего проявляется в следующих моделях: эмиссия токенов, создание реферальной программы, интеграция экономик блокчейн-приложения с фиатной системой и т.п.
- Невозможность прогнозировать внешних по отношению к экономике приложения факторы
Чаще всего рассматриваются следующие аспекты:
- Прогнозирование точного количества участников приложения, которые будут использовать смарт-контракт
- Прогнозирование потребляемого газа при отправке транзакций
- Внешние шоки, стимулирующие спрос или снижающие его, такие как колебания ожиданий сообщества или резкое изменения новостного фона
- Стоимость токена по отношению к фиатным валютам (слишком высокая или слишком низкая), а также резкое изменение стоимости токена
- Отсутствие стимулов обращения пользователей к смарт-контрактам, транзакционные издержки
Для того, чтобы отправить транзакцию, пользователю необходимо понести дополнительные материальные издержки в виде газа, даже если активация метода не принесет никакой прибыли, что приводит к возрастанию транзакционных издержек в приложении и уменьшает привлекательность его использования. Поэтому разработчики придумывают различные экономические стимулы для отправки транзакций
- Работа с непроверенными данными
Некоторые из Блокчейн платформ имеют замкнутую экосистему и обращаются к внешним источникам посредством внешних агентов - Оракулов, другие же, позволяют это сделать используя средства самой платформы.
Оракулы, как и другие ПО, подвержены рискам компрометации. Также, всегда существует риск подмены данных на самом внешнем источнике. В таком случае смарт-контракт будет считать полученные данные валидными, что в свою очередь может отразиться на работе приложения.
- Зависимость выполнения работы программы от других участников
Разрабатывается множество приложений, в которых вовлечена деятельность сразу множества контрагентов. К таким приложениям можно отнести: создание депозитария на основе Блокчейн, развитие микрокредитования, децентрализованные биржи, обменники, геймификация и т.п.
Во всех этих сущностях необходимо скоординированное взаимодействия всех контрагентов приложения и всегда есть риск возникновения ошибки, обусловленной человеческим фактором.
- Возможность манипуляции порядком исполнения транзакций
Большинство транзакций, использующихся в смарт-контрактах, представляют собой открытые данные. Майнер решает вносить ли отправленную транзакцию в блок, рассчитывая различные метрики, такие как Gas Price и Gas Limit. Злоумышленник может воспользоваться промежутком времени внесения транзакции в блок, чтобы в дальнейшем повлиять на результат выполнения работы транзакции.
- Неопределенность изменения стоимости активов
Криптовалютный рынок постоянно находится в движении и очень сложно предсказать закономерность изменений и стоимость курса на длительный промежуток времени. Зачастую логика разработанного приложения явно зависит от курса криптовалют или токенов, и разработчикам необходимо построить модель приложения таким образом, чтобы учитывались возможные флуктуации курса.
- Задержки при получении информации
Иногда скорость получения данных может не соответствовать заявленной, это может случится по разным причинам:
- Если смарт-контракт зависит от определенных данных другого контракта, которые должен внести сторонний участник
- Перезагрузка Блокчейн сети из-за большого количества транзакций, задержка при включении в блок
- Если транзакция попадет не в тот uncles т.п.
- Несоответствие полученных данных
При правильной разработке архитектуры любого приложения, не следует доверять одному источнику получения данных. Цепочка полученных данных очень длинная и может быть изменена на любом участке. Правильное решение в данной ситуации - получать информацию из нескольких независимых источников и сравнивать ее, а при нахождении несоответствий - принимать необходимые меры.
- Зависимость выполнения работы смарт-контрактов от других смарт-контрактов
Иногда, для удобства использования, смарт-контракты используют сторонние библиотеки или даже обращаются к сторонним вызовам других контрактов. Данная архитектура реализации может помочь с процессом обновления смарт-контрактов, но, в то же время, может ставить в зависимость работоспособность самого приложения от работоспособности сторонних программ или библиотек.
- Раскрытие и влияние собственных данных на результат работы
Блокчейн не является анонимным по своей природе, а является всего лишь неперсонализированным. Это означает то, что если удастся персонализировать адрес кошель пользователя системы, то любой участник сможет составить необходимую картину взаимосвязей данного пользователя и сделать соответствующие выводы.
Важно отметить, что цель классификации - не описание свойств экономической кибернетики, а скорее попытка решить задачи конструирования.
Информация о спикере и его контактные данные для связи: