
Провёл утро, помогая другу восстановиться после истории с кошельком — не взлом, ничего драматичного: он просто слишком быстро подтвердил запрос на подпись в каком-то новом dApp и понял только после того, как транзакция уже прошла, что именно он авторизовал. Ключи всё время были в порядке. Вот что меня зацепило.
Так что вместо того, чтобы снова уйти к графикам, я всё время возвращался к этой мысли и в итоге снова оказался в задаче по Newton Protocol — посмотрел на сторону авторизации агента, а не на цену токена.
И вот что щёлкнуло, довольно неприятно, — мы годами говорили людям: «защищайте свой приватный ключ», будто это конечная цель. Холодный кошелёк, seed-фраза, записанная на бумаге, никогда не делитесь ей — всё это правда. Но ключ моего друга не был скомпрометирован. Он скомпрометировал себя сам — через подпись, пока ключ всё это время лежал идеально безопасно. Уязвимость переместилась. Теперь дело не в том, «у кого ваш ключ», а в том, «что вы авторизовали, удерживая его».
Простая версия того, что на самом деле происходит: люди считают, что подпись транзакции — это небольшое, изолированное действие: одобрить вот это, одно, и дальше идти по своим делам. Но на практике, особенно когда в дело вступают повторяющиеся агенты или автоматические одобрения, вы часто предоставляете непрерывный спектр полномочий, а не единичное событие. Вся подача Newton — zkPermissions, rollup Keystore — по сути является признанием того, что сейчас реальная поверхность атаки вот в этом. Не в ключе. В том, что ключу разрешено делать после того, как он подписывает.
Но вот что меня беспокоит, и я снова и снова к этому возвращаюсь. Если реальный риск сместился с «хранения ключа» на «задание прав», то нагрузка снова просто легла на пользователя — только в более запутанной форме. Раньше совет был простой: никогда не делитесь seed-фразой. Теперь совет такой: точно понимать, что именно разрешает эта конкретная подпись, на какой срок, при каких условиях, прежде чем одобрять. Это… гораздо сложнее попросить у обычного человека. Я думал, что разграниченные разрешения сделают всё проще для пользователей. Но, по правде, я не уверен — они просто переносят сложность на шаг, который большинство людей всё равно пролистывает.
И я не до конца уверен, что это выдерживает проверку, когда начинается активность. В спокойный момент, да, я прочитал бы, что именно разрешено. Но во время всплеска на рынке, когда все стремятся быстро войти или выйти из позиции, кто реально находит время, чтобы проверить, на что агент уполномочен, а не просто нажимает «одобрить», потому что цена движется? Это как раз тот момент, когда раньше происходили кражи ключей по старой схеме — паника, спешка, пропуск шагов. Я не думаю, что замена лозунга «защитите свой ключ» на «понять свой охват полномочий» убирает этот режим отказа — она лишь меняет то, как именно выглядит сбой.
Кому это на самом деле важно, как мне кажется, меньше тем, кто уже глубоко в этом пространстве — мы и так достаточно параноидальны, чтобы замедляться, — и больше новым пользователям, которых подключают именно потому, что агенты и автоматизация должны сделать всё проще. Чем проще становится, тем меньше трения появляется до того, как что-то пойдёт не так, и тем менее вероятно, что кто-то остановится, чтобы прочитать, что именно он только что подписал.
Небольшой момент, но он застрял у меня в голове сильнее, чем я ожидал. В итоге с деньгами моего друга всё было в порядке — в основном, конечно, благодаря везению. Но это по-новому расставило акценты в том, о чём я раньше особо не задумывался: что «безопасно» и «ключ в безопасности» — это больше не одно и то же предложение, и, как мне кажется, инструменты, которые объясняют разрешения, пока не догнали эту реальность.
В общем. Пойду ещё немного подумаю над этим, прежде чем решу, как именно я к этому отношусь. Рынок всё ещё делает своё дело где-то в фоне.
@NewtonProtocol #Newt $NEWT