Оригинальное название: Как я думаю о выборе хранителей для кошельков sig и Social Recovery Автор оригинала: Виталик Бутерин Составитель: Qianwen, ChainCatcher
Кошельки с несколькими подписями (например, Gnosis Safe) — это простой и безопасный способ хранения средств, позволяющий вам пользоваться большинством преимуществ самостоятельного хранения — когда, казалось бы, заслуживающий доверия централизованный объект становится ненадежным, ваши средства также не исчезнут. Но в то же время вам не нужно брать на себя ответственность за всю настройку безопасности. Лично я использую кошелек с мультиподписью для хранения большей части своих средств, как и Ethereum Foundation.
Другим аналогом кошелька с несколькими подписями является кошелек социального восстановления: для подписи транзакций можно использовать один ключ, но если этот ключ утерян, для восстановления средств можно использовать набор ключей, принадлежащих кому-то другому. Кошельки социального восстановления проще в использовании, чем кошельки с несколькими подписями, особенно с появлением абстракции учетных записей ERC-4337 и предстоящим кошельком Soul Wallet, который сделает эту технологию более удобной для пользователя. Как только кошелек социального восстановления станет достаточно зрелым, я предлагаю использовать горячий кошелек социального восстановления для хранения небольшой части средств человека или организации; использовать мультиподпись для холодного кошелька для хранения сбережений человека или организации;
Как кошельки с несколькими подписями, так и кошельки социального восстановления полагаются на концепцию «опекунов»: набор из N адресов, обычно принадлежащих другим, где любые M адресов могут одобрить операцию (например, вы можете установить N=6 и M= 4). В случае кошелька с мультиподписью каждая транзакция должна быть подписана M лицами из N опекунов. В случае кошелька социального восстановления транзакция может быть подписана одним ключом, но если этот ключ утерян, M лиц из N опекунов должны подписать сообщение для сброса ключа.
Два ключевых вопроса при безопасном использовании кошельков с несколькими подписями и кошельков социального восстановления: (i) кого вы выбираете в качестве опекунов и (ii) какие инструкции вы им даете? В этом посте будет изложено, что я думаю об этой проблеме, и многое из этого также применимо к кошелькам с мультиподписями и социальным восстановлением, которые используются для защиты личных и организационных средств.
Чего мы хотим от Стражей?
Минимизируйте вероятность потери ключа.
Сведите к минимуму вероятность того, что они вступят в сговор с целью украсть ваши средства или будут принуждены к этому.
Если два вышеупомянутых риска неизбежны, риск каждого опекуна должен быть максимально некоррелированным — вы хотите свести к минимуму то, что у них общего, потому что этот общий риск может привести к рискам, которые сделают многих из ваших опекунов одновременно недееспособными или затронутыми.
Ответ на этот вопрос прост, но он определяет все мои решения относительно Стражей:
Хранителем может быть ваше собственное устройство, но не позволяйте слишком большому количеству устройств стать вашими опекунами.
Во-первых, на вашем устройстве будет хотя бы один хранитель. Это нормально, ведь это ваши собственные средства, и нет причин, по которым это повлияет на децентрализацию. Однако, если под вашим контролем находится более одного Стража, вы сталкиваетесь с серьезной проблемой: вы меньше доверяете другим и сосредотачиваете больше власти на себе. Если вас взломали, принудили, вывели из строя или убили, что может создать риски.
Мой опыт показывает, что опекунов, контролируемых другими, должно быть достаточно. Если вы исчезнете, у нас будет достаточно других опекунов, чтобы вернуть ваши средства. Другими словами, вы должны контролировать хотя бы одного опекуна и не более N-M опекунов. При этом каждый опекун должен находиться на отдельном устройстве (ноутбуке, телефоне, старом телефоне и т. д.).
Выберите опекуна, с которым вы не часто общаетесь, или, желательно, кого-то, кого вы не знаете.
В идеале опекун не должен знать, кто этот другой человек. Это значительно снижает риск их сговора, и, кроме того, у них нет веской причины знать друг друга. Если бы с вами что-то случилось, они все равно смогли бы найти друг друга, потому что есть некоторые очевидные стандартные процедуры, о которых люди, естественно, подумали бы в этой ситуации (например, связаться с вашей семьей).
Кроме того, вы хотите минимизировать корреляцию между опекунами: не выбирайте двух опекунов, которые живут в одном городе (или даже, желательно, в одной стране), или двух опекунов, которые используют один и тот же тип кошелька, и балансируйте между разными операционными системами.
Прежде чем одобрить действие, опекуны должны задать секретный вопрос:
Когда вы просите опекуна одобрить для вас действие (в мультиподписи — это транзакция; в случае с кошельком социального восстановления — это смена ключей вашей учетной записи), он не должен немедленно начинать операцию. Это катастрофа для безопасности: если кто-то взломает ваш аккаунт в чате, он сможет просканировать ваши сообщения, узнать, кто ваши опекуны, связаться с каждым из них и попросить подтверждения, тем самым похитив ваши средства.
Чтобы избежать этого, я предпочитаю попросить опекуна задать конфиденциальный вопрос. Когда вы просите подтверждения ваших действий, опекун должен спросить вас о чем-то, что известно только вам двоим и очень немногим людям (например, «Какую еду мы ели в последний раз, когда встречались?»), и только после того, как вы дадите это Подтвердить. операция только тогда, когда ответ правильный.
Естественным выбором был бы голосовой или видеозвонок, но в эпоху, когда искусственный интеллект стал знатоком подделки, это уже не так надежно, поэтому вы можете совместить голосовой/видеозвонок с заданием какого-то конфиденциального вопроса.
Если вы «ветеран Дегена», убедитесь, что ваш опекун может быстро отреагировать. В противном случае вам не придется делать этот запрос.
Если вы делаете что-то более рискованное с ончейн-контрактом, возможно, вам придется действовать быстро: если в контракте есть лазейка, выведите средства. Если вас собираются ликвидировать, выведите деньги и т. д. Если у вас есть эти потребности, то вы хотите найти опекунов, которые смогут действовать быстро и в короткие сроки (и, следовательно, также найти опекунов в разных часовых поясах, чтобы было достаточно опекунов для завершения транзакции в любое время), чтобы защитить ваши средства. . Однако если вы не делаете подобных вещей, то скорость не имеет особого значения и даже может быть в некоторой степени вредной, поскольку убеждение людей действовать срочно — это обычная тактика социальной инженерии для хакеров, и если люди испытывают отвращение с этим идеалом все может быть наоборот. Это хорошо.
Проверяйте каждого опекуна не реже одного раза в год.
Выполняйте тестовые операции не реже одного раза в год. В идеале проводите два тестовых запуска в год: один с половиной опекунш, другой с другой половиной. Это гарантирует, что ваши опекуны не забудут и не потеряют свои учетные записи.
Более сложные вопросы: конфиденциальность
Одна из проблем, связанных с Guardians, заключается в том, что в настоящее время не существует технологии, которая могла бы сделать вашу финансовую конфиденциальность невосприимчивой к Guardians. Однако это техническая проблема, которую можно решить технически: вместо непосредственной охраны вашей учетной записи опекун охраняет договор «сейфовой ячейки», и связь между вашей учетной записью и сейфом скрыта.
Сохранить ссылку скрытой до тех пор, пока ее не потребуется восстановить: например, в вашей учетной записи может быть контракт GUARDIAN CREATE2 и может быть создан только сейф. Однако если вы хотите, чтобы ссылка оставалась скрытой после восстановления, потребуется более совершенная технология ZK-SNARK. Я ожидаю, что эта проблема будет постепенно решена в течение следующих нескольких лет.
