Каждый, кто владеет более-менее приличным количеством биткоинов, должен подумать об использовании мультиподписи для безопасности, в том числе для того, чтобы защититься от возможных хакерских атак.
Текст данной статьи написан Анантом Тападиа, компьютерным инженера, сделавшим вклад в разработки проектов по самостоятельному хранению биткоина Bitcoin Keeper и Hexa Wallet.
Система безопасности с несколькими подписями, или «мультиподпись» (мультисиг, multisig), предлагает набор гарантий безопасности, отличный от решения с одной подписью (singlesig). Хотя я считаю, что singlesig – это отличная форма хранения, когда человек только начинает работать с биткоином или управляет небольшими суммами, по моему мнению, каждый, кто держит более-менее приличное количество биткоинов в долгосрочной перспективе, должен знать о мультиподписи.
Определение мультиподписи
Необходимо понимать, что мы подразумеваем под словом «кошелек», прежде чем приводить аргументы в пользу одного типа кошелька по сравнению с другим. Мультисиг-кошелек называют «хранилищем» в таких приложениях, как Bitcoin Keeper и Blue Wallet, а некоторые также называют его «координатором» или «координирующим программным обеспечением». По сути, это кошелек, который может общаться с несколькими подписывающими устройствами и координировать между ними подписывание транзакций (обычно с использованием формата PSBT [Partially Signed Bitcoin Transactions – частично подписанные биткойн-транзакции]). Для сравнения, singlesig-кошелек общается только с одним подписывающим устройством. Такой кошелек также часто является подписывающим устройством, что означает, что ключи являются «горячими».
Таким образом, поверхность атаки [общее количество возможных уязвимых мест] кошелька и хранилища, схожа, поскольку они оба выполняют схожие функции. Наличие подписывающего устройства в обоих случаях повышает безопасность и создает новые поверхности атак.
Мультисиг часто называют "m-of-n", когда требуется «m ключей из n» для подписания транзакции. Дескриптор вывода или bitcoin secure multisig setup (BSMS) – это формат, который используется для определения конфигурации мультиподписи. Его можно использовать для воссоздания вашей настройки на других координаторах или для регистрации мультисига с использование подписывающих устройств.
Соображения по хранению биткойнов
Минимизация доверия
Очевидные преимущества наличия нескольких подписей заключаются в уменьшении количества точек отказа и увеличении избыточности в вашей системе. С помощью распространенных примеров атак на multisig, приведенных ниже, я объясню, почему эти атаки применимы даже при хранении монет с использованием сингсига. Однако, использование мультиподписи сводит к минимуму необходимость в доверии к какой-либо одной стороне, поскольку в процесс вовлечены сразу несколько сторон.
Операционные усилия
Настройка и использование multisig может занять больше времени и содержать больше подводных камней, если все сделано неправильно. Поэтому я рекомендую пользователям рассматривать multisig только для долгосрочного HODLing, когда регулярные транзакции не предполагаются.
Затраты на настройку
Надежная система мультиподписью с несколькими поставщиками может быть создана за сумму от 250 до 600 долларов США. Таким образом, если у вас есть около 0,5 BTC (около $11 000 на момент написания этой статьи), потратить менее 10% на обеспечение безопасности хранения этой суммы – неплохая идея, поскольку стоимость биткоинов может очень быстро вырасти.
Стоимость устройств для подписи также снижается, например, Tapsigner от Coinkite. Кроме того, использование неаппаратных программных ключей дает вам возможность обойтись без лишних затрат, но не рекомендуется использовать их для более чем одного ключа.
Защита от распространенных атак
Сейчас я рассмотрю некоторые атаки, которые могут произойти, если координатор ключей хранения попытается действовать злонамеренно. Затем я объясню, почему это не отличается от угроз в системе с одной подписью и что могут предложить мультисиг-кошельки для снижения этих рисков. Конечная ответственность неизбежно лежит на пользователе, который должен убедиться, что он предпринял надлежащие шаги, как это предлагается ниже.
Неправильный адрес получения
Самая прямая атака, которую я опишу, это та, когда пользователь пытается получить средства, а приложение-координатор вместо этого показывает адрес злоумышленника. В таких случаях программа все равно может показать, что средства были получены по адресу пользователя. Теоретически такая атака возможна с любым кошельком с одной подписью, поскольку пользователь полагается на то, что кошелек сам сгенерирует для него адрес. Не существует способа вручную получить адрес из фразы восстановления, состоящей из 12 или 24 слов.
В случае кошелька с мультиподписью этого можно избежать, проверив адрес получения на устройствах, где осуществляются дополнительные подписи. Вы также можете использовать другую программу-координатор, импортировать ту же конфигурацию и проверить адрес таким образом.
Замена адреса отправителя
Как и в предыдущем сценарии атаки, мультисиг-координатор может подменить адрес, на который вы пытаетесь отправить средства, при построении PSBT. Ситуация ничем не отличается от ситуации с обычным синглсиг-кошельком.
Чтобы защититься от такого типа атаки, пользователю всегда рекомендуется проверять адрес отправителя на дополнительных подписывающих устройствах. Поскольку подписывающие устройства подписывают транзакцию, содержащую адрес получателя (в формате PSBT), они будут показывать адрес, который подписывают.
Изменение адреса изменения (change address)
Менее очевидная атака – это атака, при которой приложение-координатор заменяет адрес изменения в вашей транзакции. Это означает, что изменение от транзакции будет отправлено на адрес злоумышленника. В отличие от адреса отправки, пользователь может не проверять адрес изменения при отправке средств, что делает эту атаку менее очевидной.
Здесь очень важен выбор полностью верифицирующего подписывающего устройства. Большинство подписывающих устройств, поддерживающих стандарт, не будут подписывать транзакцию, если они не могут идентифицировать адрес изменения.
Изменение регистрации
Поскольку координатор также координирует этап регистрации, может быть зарегистрирована другая мультиподпись, так что злоумышленник контролирует "n" или более ключей. В этом случае подписывающее устройство не сможет определить адрес получения или правильно изменить адрес. Пользователь увидит тот же (атакующий) адрес получения и на подписывающем устройстве, и измененный адрес будет принят подписывающим устройством как правильный, поскольку у него нет возможности подтвердить, были ли изменены другие соподписанты или нет.
Поэтому рекомендуется, чтобы в вашей конфигурации было зарегистрировано "n" устройств. Более того, во время регистрации вы подтверждаете данные настройки на всех таких устройствах. Другой способ проверить правильность регистрации – установить ту же мультиподпись на другом программном обеспечении координатора и проверить, отображает ли она точные данные.
Таким образом, у вас может быть мультисиг с одним устройством подписания свода реестра и двумя "слепыми" подписантами. Повторите тот же процесс с другим координатором. Теперь проверьте конфигурацию на обоих координаторах и на подписывающем устройстве мультисиг с регистрацией. Вы можете добавить еще координаторов, чтобы исключить сговор.
Атака с целью получения выкупа
Этот тип атаки похож на описанный выше, но атакующий контролирует менее "n" ключей, поэтому он не может контролировать средства. Но в ситуации, когда вы теряете часть ключей, злоумышленник может потребовать выкуп, поскольку теперь у вас нет необходимого минимального кворума. Эта атака также может быть осуществлена путем вставки ключей, когда в конфигурацию добавляются дополнительные соподписанты. Это имеет тот же эффект, что и замена некоторых из них.
Опять же, проверка данных соподписанта на нескольких координаторах, требующих регистрации, снизит вероятность таких атак.
Использование мультиподписи для хранения ваших биткоинов
Повторимся: наличие минимального кворума зарегистрированных в мультисиг-системе подписывающих устройств и проверка деталей транзакций (когда вы должны их совершать) будет хорошим эмпирическим правилом при использовании мультиподписи.
При проверке адресов или деталей настройки хранилища не проверяйте только начало и конец адреса, так как у злоумышленника может быть очень похожий адрес.
Проверить, является ли приложение хранилища с открытым исходным кодом, и просмотреть его код (если есть такая возможность) – тоже неплохая идея. Поддержка общих стандартов, таких как BSMS и PSBT, гарантирует, что настройка или multisig-транзакция может быть перенесена в другие приложения для проверки.
Я также считаю, что никогда нельзя ошибиться, протестировав настройку. Как только вы подготовите мультисиг, продублируйте настройку на нескольких координаторах. Получите небольшую сумму в одном приложении и отправьте часть ее из другого. После каждого шага проверяйте, чтобы остатки были отражены на всех координаторах.
Автор: Anant Tapadia. Источник: Bitcoin Magazine.
Начать торговать и присоединиться к криптовалютному сообществу можно здесь.
Можете также почитать наши статьи на других площадках: