Разработчики Decred выпустили обновление кошелька, закрывающее уязвимость в механизме смешивания монет. Дыра позволяла деанонимизировать участников сессии — то есть подрывала ровно ту функцию, ради которой смешивание и делают.
Коротко: что исправлено
Обновление вышло в составе dcrwallet версии 2.1.6. Изменён протокол клиента смешивания и повышена версия сопряжения, по которой участники определяют совместимость друг с другом.
Практическое следствие: кошельки версии 2.1.6 не будут смешивать монеты со старыми, а старые не смогут участвовать в сессиях с обновлёнными. Разработчики требуют обновиться всем пользователям предыдущих версий.
Попутно закрыты ещё две проблемы. Первая касалась распределения вины при сбое сессии: участник, некорректно инициировавший обвинение, мог сам избежать ответственности. Вторая — удаления сообщений из пула после истечения сессии.
Что изменилось в версии 2.1.6
| Изменение | Содержание |
|---|---|
| Протокол клиента смешивания | Изменён для предотвращения деанонимизации |
| Версия сопряжения | Повышена, старые кошельки несовместимы |
| Распределение вины | Исправлена возможность избежать ответственности |
| Очистка пула сообщений | Исправлено удаление после истечения сессии |
| Требование к пользователям | Обязательное обновление всех прежних версий |
| Использованный механизм | CoinShuffle++, протокол смешивания сети |
Как работает смешивание и что в нём ломается
Смысл смешивания в том, что несколько участников одновременно отправляют одинаковые суммы и получают выходы, которые снаружи невозможно сопоставить с входами. Приватность здесь — свойство группы: чем больше участников и чем строже одинаковость сумм, тем меньше шансов связать конкретный вход с конкретным выходом.
Отсюда и природа таких уязвимостей. Ломается обычно не криптография, а протокольная логика: порядок сообщений, обработка сбоев, механизм обвинения нечестного участника. Достаточно, чтобы одна сторона могла извлечь дополнительный бит информации о том, кто с кем оказался в сессии, — и анонимность группы начинает распадаться.
О том, почему шифрование транзакций не спасает от наблюдения за сетевым трафиком, мы писали отдельно: слоёв утечки в таких системах больше, чем кажется.
Почему принудительная несовместимость версий — правильное решение
Насколько я это вижу, самое интересное в этом обновлении — не сам патч, а способ его внедрения.
Разработчики намеренно сделали новые кошельки несовместимыми со старыми. В обычной ситуации это считалось бы недостатком: пользователи со старой версией теряют функциональность. Но в приватности иначе — если бы совместимость сохранили, обновившиеся участники продолжали бы смешивать монеты с необновлёнными и наследовали бы их уязвимость.
Иными словами, здесь нельзя защититься в одиночку. Анонимность каждого участника зависит от поведения всех остальных в сессии, поэтому единственный способ закрыть дыру — заставить всю сеть перейти на исправленную версию сразу.
Это принципиальное отличие приватных протоколов от остальной инфраструктуры. Обновление кошелька для хранения защищает только вас; обновление кошелька для смешивания имеет смысл лишь тогда, когда его установили все.
Насколько это критично для пользователя
Сведений о том, что уязвимость использовалась на практике, в сообщениях нет. Не приводится и оценка того, сколько прошлых сессий теоретически могли быть деанонимизированы.
Что известно точно: пользователям прежних версий обновление необходимо, иначе смешивание попросту перестанет работать — сессии со старыми клиентами не собираются. Приватные монеты и без того находятся под давлением делистингов, и любая новость об уязвимости в этой нише воспринимается острее обычного.
Частые вопросы
Что именно исправили в Decred?
Уязвимость в протоколе клиента смешивания, позволявшую деанонимизировать участников сессии, а также две ошибки в обработке сбоев и очистке пула сообщений.
В какой версии вышло исправление?
В dcrwallet 2.1.6. Разработчики требуют обновления от всех пользователей предыдущих релизов.
Почему старые кошельки не работают с новыми?
Повышена версия сопряжения: это сделано намеренно, чтобы обновлённые участники не наследовали уязвимость необновлённых.
Использовалась ли уязвимость на практике?
Сведений об этом нет. Оценки числа потенциально затронутых сессий также не публиковались.
Что такое CoinShuffle++?
Протокол смешивания, применяемый в сети: участники одновременно отправляют одинаковые суммы, чтобы связь входов и выходов нельзя было восстановить.
Можно ли не обновляться?
Технически да, но смешивание перестанет работать: сессии между старыми и новыми клиентами не формируются.
Источники
Материал подготовлен на основе публикации crypto.news и релизов dcrwallet.
0 комментариев к “Decred закрыл дыру в смешивании монет”
Добавить комментарий