Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ilya-gont
6 лет назад

«Метод запутывания» и защита в GONT

Здравствуйте, друзья! Сегодня поговорим про методы защиты криптовалютных кошельков от взлома и, конечно, про философию «запутывания» ключей внутри специализированной защищенной gVM в GONT. Продуктивного чтения!

Философия защиты крипто кошелька

При физическом захвате устройства (мошенниками, бандитами и т.п.) наибольшую опасность с точки зрения взлома представляет Reverse Engineering.

Reverse engineering (RE) переводится как «обратная разработка» (обратное проектирование, обратный инжиниринг, реверс-инжиниринг).

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

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

В GONT мы будем во многом опираться на базовые идеи по защите программ от эксперта Криса Касперски, а также предложим свои инновационные методы.

Канонические методы защиты от Криса Касперски

Цель: криптосейф должен выдержать любой контакт с хакером: как физический (RE), так и удаленный (сетевая атака). При этом мы считаем, что физический контакт с хакером — это нормальная ситуация, т.к. мы сами раздаем всем свой софт для хранения крипто активов.

Философия текущих кошельков

Мобильные кошельки

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

Аппаратные кошельки

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

Парадигма ядра кошелька

Исходя из Касперски путь хакера к хранилищу ключа должен быть максимально «запутанным». Даже если применять многократное слоеное шифрование, то хранить ключ самого верхнего уровня все равно необходимо в максимально безопасном месте (чтобы его нельзя было элементарно забрать при помощи RE).

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

Парадигма супер защищенного ядра кошелька в первую очередь опирается на способ максимального «запутывания» пути к верхнему уровню ключей. Условно говоря, к ключу, который шифрует хранилище основного ключа.

Для этого мы используем совокупность методов в GONT.

Введение в подход защиты кошелька от RE

Vault of empiric noise (Лента с «эмпирическим» шумом)

Рассмотрим ленту блоков со случайным эмпирическим шумом. Будем называть такую ленту GESS лентой.

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

Значимые данные имеют специальные координаты в шумовой ленте, которые также вводятся через специальную псевдослучайную таблицу координат. Таким образом, ключ спрятан в большом массиве зашумленных (незначимых) данных.

Шумовые ленты для разных пользователей не имеют корреляций.

Функция «запутывания» и обратная функция

Введем запутанное состояние ленты:
Scrambling state = SC_STATE

Запутывание ключа:
SC_STATE = F(ЛЕНТА)

Процедура извлечения ключа:
ЛЕНТА = F^-1 (SC_STATE) — обратная функция преобразования

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

Парадигма состояний кошелька

Состояние — STATE — абстракция (по аналогии с Блокчейном), с которой работает Secure core (аналог виртуальной машины EVM).
STATE = текущее состояние кошелька в сериализованной форме.

Почему нужно ввести STATE как отдельную структуру?

STATE вводится как структура для инкапсуляции и хранения всех данных аккаунта кошелька (в полной аналогии с Ethereum).

STATE состоит из набора GESS лент. Для каждых важных данных, которые нужно «запутать» строится своя GESS лента.

Главное свойство защиты

Виртуальная машина с «неизвестной» системой широких команд.

Цели по разработке кошелька

  • Невозможность взлома кошелька даже в случае физического захвата устройства любой организацией (включая спецслужбы).
  • Максимальное применение трюков против RE кода кошелька и различных атак.
  • Единый подход к разработке кода ядра кошелька для удобства отображения на множество устройств. Т.е. реализация единого защищенного ядра для всех типов устройств.
  • Создание новой философии безопасности для хранения криптовалюты (что кошелек лучший в мире) для маркетинга.
  • Создание модели разработки без передачи критических знаний (например, о криптоядре) между группами разработки одного продукта. Важно для быстрой параллельной разработки.

Варианты софта кошелька (максимально полный комплект)

  • Десктоп
  • Мобильник
  • HW версия (как FPGA, свои чипы, чужие чипы — ARM)

Универсальное secured-Core (усиленная VM) будет задействовано на всех версиях.

Модель усиления защиты от взлома

Виртуализация с гибридной «неизвестной» системой команд в secured-VM.

  • Защищенный Boot (в стиле iBoot от Apple).
  • Защищенная специализированная OS на базе RTOS.

Модель контейнера VM с неизвестной для атакующего системой команд (своя модель может генерироваться для каждого пользователя) со множественными «запутанностями» (scrambling) и внутренней криптографией (внутри VM ядра).

Т.е. мы инкапсулируем весь основной секретный код внутрь secured VM.

Внедрение защищенного контейнера кода в обычный интерфейс кошелька

Философия кошелька

Функционально кошелек можно разделить на работу с аккаунтами/ ключами и на работу с цепочками блокчейнов. Максимальный уровень защиты необходим для работы с аккаунтами и ключами.

Базовые блоки для этого уже реализованы тут:

libwally: https://github.com/Appscrunch/Multy-Core/tree/master/third-party/libwally-core/src

Данные блоки будут отображены на VM через специализированную Secured OS.

Пример Design Flow для кошелька

Наш подход значительно усиливает (по глубине защиты) подход, например, multy.io.

Поэтому имеет смысл брать все интерфейсы у Multy, учитывая то, что они быстро разрабатывают их и внедрять собственную усиленную защиту.

Спасибо за внимание! Успехов!
GONT

0
0.071 GOLOS
На Golos с April 2018
Комментарии (0)
Сортировать по:
Сначала старые