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