Криптовалюты давно уже вышли из категории «вещь для избранных» и становятся всё более привычными и обыденными. А это означает, что всё больше людей, не имеющих серьёзного технического образования, начинают ими интересоваться. Вот только их знаний и опыта недостаточно для того, чтобы обеспечить высокий уровень безопасности обычных криптокошельков, так что злоумышленникам становится проще получать доступ к чужим активам. К счастью, у данной проблемы есть несколько эффективных вариантов решения, один из которых - SMPC-кошельки.
Что это такое?
Если кратко, то SMPC-кошельки – это криптографические кошельки, использующие для обеспечения безопасности так называемые «безопасные многопартийные вычисления» (MPC) и распределение секрета Шамира. За счёт этого появляется возможность не только разбить код доступа на несколько частей, но и работать с этими частями, не опасаясь случайно разгласить их содержание.
В чём, собственно, проблема. На данный момент, самыми распространёнными являются так называемые кастодиальные кошельки. По сути – банковские депозиты, только в мире криптовалюты. Вы передаёте свой приватный ключ доверенному лицу (чаще всего – бирже, на которой идут торги криптовалютами), а затем – взаимодействуете с кошельком через его посредничество.
Плюсы у этого метода большие – сильное упрощение процедур безопасности, возможность восстановления доступа в случае утраты контроля, отсутствие необходимости обеспечивать защиту данных самостоятельно. Вот только наличие посредника в любом случае увеличивает шансы утечки информации, поскольку для получения доступа необходимо использовать дополнительные каналы. И если конфиденциальную информацию перехватят – преступник получит доступ к вашему кошельку. Не говоря уж о том, что кастодиан может воспользоваться ситуацией и тоже совершить кражу.
Распределение секрета Шамира частично это проблему решает. Если приватный ключ разбить на произвольное количество кусков и сделать так, чтобы для его воссоздания необходимо было собрать определённое число фрагментов. В таком случае потеря одного фрагмента ничего не меняет, а единолично обеспечить себе доступ к информации нельзя. Смысл данного распределения – высчитывание «функции» (приватного ключа), основываясь на достаточном количестве известных точек этой функции (фрагментов ключа). В контексте криптокошельков это работает как в виде распределения фрагментов между разными людьми, так и между разными устройствами. Что-то типа многофакторной идентификации, только безопаснее, поскольку перехват одного фрагмента информации ничего не даст злоумышленнику.
Однако если противник будет перехватывать фрагменты в течение некоторого времени, он сможет накопить достаточное их количество, чтобы получить доступ к информации. А этого как раз можно избежать с помощью безопасных многопартийных вычислений.
Как работает MPC?
В чём смысл. Традиционно криптография защищает информацию от атак извне. А MPC помогает справляться с атаками изнутри. То есть – с ситуацией, когда один из вроде бы доверенных участников пытается в тайне от других получить доступ к их конфиденциальной информации. Поэтому смысл MPC – создать такой обмен информацией, с которым могут работать автоматизированные системы, но при котором невозможно узнать содержание той информации, к которой у вас нет доступа. Рассмотрим это на конкретном примере.
Есть некий коллектив сотрудников с разной зарплатой. И им захотелось выяснить, сколько же в среднем получают на их работе. Однако сообщать свои данные открыто – не хочется. Что делать? Можно выбрать доверенное стороннее лицо и пусть каждый сообщит ему свои данные. Однако где гарантия, что «кастодиан» проделает свою работу добросовестно? Поэтому нужно сделать так.
Первый участник прибавляет к своей зарплате абсолютно произвольное число. Этот результат передаёт второму. Тот тоже приплюсовывает свою зарплату и передаёт дальше. После того, как последний участник справится с вычислениями, он отдаёт записи первому, тот вычитает добавленное произвольное число и делит результат на количество участников.
Примерно так и работают безопасные многопартийные вычисления. Это позволяет удовлетворить три основных требования к безопасности:
- Никто из участников обмена не может получить чужие данные.
- Никто из участников обмена не получит ложный результат, если все предоставляют реальную информацию.
- Никто из участников не может помешать другим получить необходимые им данные.
Но какое отношение всё это имеет к криптокошелькам? Самое непосредственное.
Прикладное значение
Распределение Шамира позволяет разбить приватный ключ на нужное количество частей. Безопасные многопартийные вычисления позволяют закодировать каждую часть так, чтобы работать с ней мог только начальный алгоритм кодировки. Если какой-то подобный фрагмент перехватят – злоумышленник не сможет им воспользоваться. А если к начальной кодировке прибавить ещё и привязку по времени, то бесполезными окажутся и все ранее перехваченные фрагменты приватного ключа.
В этой ситуации отпадает необходимость доверия к кастодиану – он не сможет воспользоваться информацией, которую ему передают, поскольку работать с ней можно только в автоматическом режиме. А это добавляет ещё один уровень безопасности для столь распространённых сейчас кастодиальных кошельков.
Помимо криптографических кошельков, безопасные многопартийные вычисления могут оказаться полезными для сбора статистической информации. Пользователь отправляет свои данные в закодированном виде, не опасаясь, что кто-то сможет их перехватить и использовать. А сборщик будет в автоматическом режиме анализировать полученную информацию, вычислять среднее значение, подсчитывать общее количество или проделывать иные статистические манипуляции.
Выводы
Несмотря на то, что безопасные многопартийные вычисления считаются частным случаем «запутанных логических схем», с точки зрения обычного пользователя всё предельно просто и удобно. Не нужно проделывать лишних действий и разбираться в информации – большую часть проблем безопасности решает автоматика. Так что MPC реально могут сделать криптографические кошельки простыми и удобными для обычных людей.