После взлома Bitfinex стало очевидно, что люди действительно не понимают, как работает такая особенность биткоина, как мультиподпись. Есть много непонимания того, что такое мультиподпись и что она может или не может делать. Эта статья стремится разъяснить, какие есть устоявшиеся неправильные представления, чтобы вы поняли, как мультиподпись работает на самом деле. Также вы узнаете, почему правила не являются заменой комплексных мер безопасности, и что вы самостоятельно можете сделать, чтобы защитить себя.
Мультиподпись это инструмент
Так же, как и любой другой инструмент, мультиподпись может использоваться для достижения различных результатов. Среди её применений: распределение и нейтрализация риска компроментации или потери ключей, создание резервной копии и общего счета, которым может пользоваться несколько сторон (а также для распределения зарплаты в организации).
Мультиподпись это не план по безопасности. Она может быть мощным компонентом хорошо разработанного плана по безопасности, только не сам план. Просто говоря“мультиподпись”, не рассматривая её конкретное применение, как имено она используется и каких целей мы пытаемся при этом достичь, мы не говорим ничего.
В ней нет «волшебной таблетки» для безопасности, но многие задачи безопасности с ней становятся проще. Для того, чтобы понять, что она может и что не может делать, нам нужно понять немного больше о том, как она работает. Вы не должны думать, что эта статья для технических специалистов — она написана для кого угодно, только не для них.
Создайте адрес с мультиподписью. Чтобы создать такой адрес, вам пртосто потребуется более одного открытого ключа. Давайте рассмотрим пример. Алиса, Боб и Чарли организовали встречу сторонников биткоина и открыли сбор средств для этой затеи. Но они хотят, чтобы один человек не мог распоряжаться всеми деньгами. Поэтому Алиса, Боб и Чарли делают адрес с мультиподписью, использовав программное обеспечение от CoPay. Оно позволяет выбрать такую конфигурацию, когда нужно две из трёх подписей, чтобы подписать транзакцию и сделать её действительной. В этом случае возможны такие комбинации пользователей — A&B, B&C, A&C.
Что в это время происходит за кулисами сделки? Их программное обеспечение делает две вещи: запускается скрипт с инструкциями, в которых написано, сколько подписей требуется, какие общие ключи соответствуют приватным ключам, имеющим полномочии ставить подпись (m-of-n), и берет хэш биткоин-адреса, связанного со скриптом. Скрипт также часто называют “скриптом выплаты”, поскольку он содержит требования к транзакции, позволяющей перевести средства с кошелька с мультиподписью.
Вы можете думать о скрипте выплаты как о наборе постоянных, неизменных правил управления доступом. Они ограничивают доступ на уровне адреса биткоина. Это значит, что при пересылке средств на некий адрес скрипт должен проверить соответствие правилам: можно ли совершить транзакцию. Правила создаются при создании биткоин адреса и никогда не могут быть изменены. В буквальном смысле слова, правила являются частью самого адреса. Это одно из самых сильных преимуществ мультиподписи. Из-за этой особенности многие полагают, что она более безопасна, чем обычная подпись, встроенная в любой биткоин кошелек. Когда мультиподпись испольуется как часть целостного плана безопасности, она может обеспечить дополнительную защиту от растрат, ошибок, потерь, мошенничества, отказа точки доступа, так как требует участия нескольких сторон или использования нескольких устройств для подтверждения транзакции.
Но заметим, что она не может делать
Вы не можете установить лимит на трату средств; всё, что есть на счету, можно вывести одной, правильно подписанной транзакцией.
Она не имеет временных ограничений; как только транзакция подписана, она позволяет немедленно вывести все средства.
У неё нет дневного лимита на количество транзакций: вы можете создавать тысячи транзакций в минуту.
У неё нет уведомлений; вы не получаете смс или электронной почты, когда состояние счета изменилось.
Средства управления доступом не входят в понятие мультиподписи. На этом этапе у вас могут возникнуть сложности с выбором, так как многие поставщики кошельков для биткоина предлагают мультиподписи и другие дополнительные услуги. Они рекламируют дополнительные услуги как средства безопасности и управления. Но вам нужно учесть, что это услуги, которые предоставляет ПО компании, а не протокол биткоина. Это важно, поскольку значит, что контроль может быть обойден, лимиты могут измениться. В то же время скриптовый язык Биткоина продолжает развиваться, и некоторые новые функции, такие, как блокировка транзакции по времени, уже реализованы. Однако они пока не получили широкого распространения.
Разоблачение: сегодняшние правила не так безопасны, как может показаться. Фактически, уровень безопасности находится на уровне безопасности системных настроек компьютера. К сожалению, многие люди верят, что этого достаточно.
Держатели ключей имеют возможность автоматической подписи, основанной на правилах безопасности. Многие кошельки с мультиподписями (но не все) сейчас поддерживают автоматические транзакции, как одну из особенностей контроля средств на кошельке. В этих реализациях компания кошелька владеет одним из ключей, который используется для создания адреса с мультиподписью. Ключ и связанное с ним правило подписи под котролем компании провайдера кошелька, часто называют оракулом или подписью оракула. При создании адреса в дополнение к открытым ключам компания бумажника принимает установленные пользователем правила доступа. Например, пользователь может ограничить дневной вывод денег лимитом в $1 000.00. Это значит, что при создании адреса он задаёт такие параметры (такого оракула).
Процесс подписи обычно выглядит примерно так — пользователь создает транзакцию (например на $500.00), подписывает её, aи высылает провайдеру кошелька для проверочной подписи. Оракул просматривает транзакцию, проверяет на соответствие правилам (в данном случае контроль пройден, так как $500 меньше$1000.00), делает проверочную подпись и выпускает транзакцию в сети Биткоина. Быстро, удобно, эффективно. Безопасно? Может быть. Может быть и нет. Во всяком случае, процедура выглядит более безопасной, чем та, что используется сейчас.
Безопасность зависит от большого количества факторов. И не только от того, сколько ключей задействовано в подписи транзакции.
Это зависит от правил и того, как они выполняются: Кто может изменить лимиты на траты? Ограничения по времени? Уведомления?
Когда их можно изменять? Есть ли период обдумывания и переговоров, во время которого никакие транзакции вообще не подписываются?
Также зависит от внутренней политики безопасности, принятой в компании: Кто имеет доступ к оракулу или ключам подписи? Когда делаются резервные копии и кто имеет доступ к ним? Кто пишет программное обеспечение для оракула и имеет ли оно открытый исходный код? Это только крошечная часть примеров задач в области безопасности, которые не решает мультиподпись. Мультиподпись значит, что больше чем один ключи может использоваться при задании стартовых параметров адреса. Ничего более. Это не синоним к слову безопасность. Сама по себе она не сделает хранение ваших средств на кошельке более безопасным.
Безопасность нельзя передавать на аутсорс. Мы все должны прекратить путать передачу права подписи на аутсорс с передачей на аутсорс безопасности. Просто передача подписания ключей и определения правил политики безопасности третьей стороне не защитит ни вас, ни ваших клиентов. Нам нужны стандарты безопасности, такие, как CCSS, и ежегодные проверки с аудитом безопасности. Ещё более важно то, что нам нужно понять, какие существуют риски на самом деле, и точно объяснить риски пользователям.
Наконец, всегда помните: “Лишившись личных ключей, вы лишились денег.”
Примечания: 1. Если вы читаете эту статью, я уверен, что вы понимаете основы биткоина. Безопасность биткоина обеспечивается за счёт криптографии с открытым ключом. 2. Технически, эта возможность называется P2SH (сокращение от pay-to-script-hash), а не мультиподпись. Однако мультиподпись является одной из самых распространённых реализаций P2SH.