Во-первых, немного жаргона. А "сообщение" единица связи между двумя или более участниками сети блокчейн. Он может содержать данные любого типа, и они обычно используются для получения цифрового разрешения от пользователя.
A "сделка", с другой стороны, представляет собой особый тип сообщения, предполагающий передачу ценности от одного участника к другому. Обычно он включает в себя такую информацию, как адрес отправителя, адрес получателя, сумму переводимой криптовалюты и цифровую подпись, подтверждающую авторизацию отправителя для перевода.
Пользователи уже могут очищать подписанные транзакции с помощью своих устройств Ledger. как подробно описано в этом посте, и мы распространили эту передовую практику, используя те же принципы, и на сообщения, вот как.
Почему мы подписываем сообщения в web3?
Блокчейны основаны на «криптография с открытым ключом», где пользователи владеют открытым ключом и закрытым ключом, которые образуют пару. Открытый ключ представляет личность владельца, а закрытый ключ является секретным, что позволяет ему доказать, что он владеет парой ключей.
Подписывая сообщение, вы используете свой закрытый ключ в алгоритме подписи, чтобы связать подпись с сообщением и открытым ключом. Никто не может получить ваш закрытый ключ или подделать для вас действительную подпись. Однако любой, кто знает ваш открытый ключ, может легко убедиться, что сообщение было подписано вашим закрытым ключом.
Короче говоря, это тот же процесс и идея, что и подписание транзакций, за исключением того, что здесь мы сосредоточимся на подписании сообщений, которые служат другой цели: разрешению. Мы подписываем сообщения в крипто-приложениях, чтобы получить согласие пользователя, точно так же, как в реальной жизни вы использовали бы свою письменную подпись на бумаге. Это криптоверсия «фиатной подписи».
Важность EIP-712
Подписание сообщений не является чем-то новым. Мы можем подписывать сообщения уже много лет, и они могут принимать разные формы и формы по мере их улучшения с течением времени. Фактически, Предложение по улучшению Ethereum 191 (EIP-191) был представлен в 2016 году и представил стандарт для удобочитаемых сообщений, который изначально поддерживается устройствами Ledger. Но где EIP-191 потерпел неудачу, так это в том, что стандарт не структурирует данные. Это просто объявление неограниченной длины данных в конце сообщения, что затрудняет его использование. На практике сообщения часто бывают слишком длинными, что приводит к их усечению, в результате чего пользователь упускает потенциально ключевую информацию; плохой UX.
Как было сказано в начале Предложение по улучшению Ethereum 712 (EIP-712): «Подписание данных — это решенная проблема, если все, о чем мы заботимся, — это строки байтов. К сожалению, в реальном мире мы заботимся о сложных осмысленных сообщениях». – Не могу не согласиться. По мере того, как сообщения росли, чтобы обслуживать более сложные операции, введение структур типизированных данных в сообщениях, как указано в EIP-712, было долгожданным изменением.
Что это означает для пользователей, так это то, что теперь разработчики могут анализировать данные в сообщении и знать, что к чему, что теперь может быть предоставлено пользователю. Разбор означает возможность прочитать содержимое, потому что вы знаете, как оно структурировано. Это меняет правила игры с точки зрения пользовательского опыта, а также с точки зрения безопасности, поскольку теперь я могу проверить, что я подписываю.
Возвращаясь к контексту того, для чего используются сообщения, если вы просите Алису предоставить вам конкретное разрешение на содержимое ее кошелька, как разработчику приложения, вы должны очень четко указать это, чтобы максимизировать свои шансы на то, чтобы она продолжила. Но это больше, чем просто оптимизация коэффициента конверсии.
Если вы думаете о безопасности и защите в враждебной среде, мошенник, очевидно, сделает это сообщение как можно более непрозрачным, чтобы обманом заставить Алису разрешить эту вредоносную операцию. Прозрачность и возможность для Алисы перепроверить то, что она подписывает, абсолютно необходимы.
И вот тут-то и появляется EIP-712. До этого EIP подписанные сообщения представляли собой непрозрачную шестнадцатеричную строку, отображаемую пользователю с небольшим контекстом элементов, составляющих сообщение.
Вы бы подписали это? Есть идеи, что вы разрешаете здесь?
Спецификация EIP-712 вводит типизированные структуры данных для сообщений, которые позволяют кошелькам анализировать их и отображать в удобном для пользователя виде, чтобы Алиса могла принять обоснованное решение. Кроме того, это стандарт и совместимость во всей отрасли: поддерживая EIP-712, ваше сообщение может быть проанализировано Ledger, MetaMask, Rainbow, Argent, Coinbase Wallet и другими.
Поддержка реестра для EIP-712
Прежде всего, счастливых дней, устройства Ledger имеют встроенную поддержку сообщений EIP-712, и как разработчик вы можете точно контролировать, как ваши сообщения отображаются на устройстве.
По сути, существует 3 уровня поддержки сообщений на устройствах Ledger:
Уровень 1: Подписание вслепую
Если Боб, разработчик приложения, не использует сообщения EIP-712, Боб, по сути, просит Алису подписать нечитаемую шестнадцатеричную строку: Боб просит Алису подписать что-то, что она даже не может прочитать, это слепая подпись.
Уровень 2: Прозрачная подпись
Реализуя сообщение EIP-712, Боб делает шаг вперед, переходя от шестнадцатеричной строки к читаемому содержимому. Теперь он позволяет Алисе прочитать содержимое сообщения, однако, поскольку он отображает для нее полное содержание сообщения, трудно определить ключевую информацию, смешанную с технической информацией. Это прозрачно, но пока не ясно.
Уровень 3: Очистить подпись
Поскольку устройство может анализировать содержимое сообщения, указывая, что отображать и как, мы можем добиться четкой подписи. Итак, при условии, что Боб установил необходимые метаданные, вот что Алиса увидит на своем устройстве Ledger:
Гораздо лучше, чем шестигранная строка, не так ли?
Еще одним ключевым моментом является то, что, поскольку он отображается на полностью защищенном, отдельное устройство, которое не может быть изменено, Алиса на 100 % уверена, что она подписывает то, что видит на этом устройстве: никакое вредоносное ПО или вредоносное приложение не может изменить то, что ей отображается. Если то, что отображается на устройстве, не соответствует ее ожиданиям, она может оставаться в безопасности и отказаться подписывать сообщение.
Чтобы предоставить своим пользователям улучшенный UX и дополнительную безопасность, Бобу нужно сделать две вещи: укажите, какие поля должны отображаться для пользователя, и укажите для них красивое явное отображаемое имя.
Если как разработчик вы хотите присоединиться к Бобу и сделать это для своего приложения, у вас есть вся документация здесь, и, по сути, это сводится к созданию запроса на внесение изменений в белый список вашего контракта в реестре активов Ledger dApps через файл JSON, содержащий:
- Селекторы, чтобы указать, какие поля устройство должно показывать Алисе,
- Пометьте каждый селектор отображаемым именем.
Это не косметика, это хорошая практика
Внося свой смарт-контракт в белый список и указывая, как устройства Ledger могут отображать ваши сообщения, вы не только значительно улучшаете взаимодействие с пользователем при взаимодействии с вашим приложением, но, что более важно, защищаете всех нас от мошенничества и помогаете формировать хорошие привычки в экосистема web3.
Мы никогда не должны подписывать то, чего не понимаем.
Мы не можем сделать это без вас, помогите нам сделать четкие подписи нормой.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- ПлатонАйСтрим. Анализ данных Web3. Расширение знаний. Доступ здесь.
- Чеканка будущего с Эдриенн Эшли. Доступ здесь.
- Покупайте и продавайте акции компаний PREIPO® с помощью PREIPO®. Доступ здесь.
- Источник: https://www.ledger.com/blog/securing-message-signing
- :является
- :нет
- :куда
- $UP
- 1
- 2016
- 22
- 220
- a
- способность
- в состоянии
- О нас
- об этом
- абсолютно
- Достигать
- через
- адрес
- состязательный
- алгоритм
- Все
- позволять
- Позволяющий
- позволяет
- уже
- Также
- количество
- an
- и
- Другой
- любой
- кто угодно
- приложение
- Применение
- утверждение
- МЫ
- Серебро
- AS
- активы
- At
- разрешение
- основанный
- BE
- , так как:
- было
- до
- начало
- не являетесь
- Лучшая
- между
- Немного
- блокчейн
- сети блокчейна
- зерно
- строить
- но
- by
- CAN
- заботится
- обслуживать
- шансы
- изменение
- Переключатель
- Очистить
- coinbase
- Coinbase Wallet
- выходит
- обычно
- Связь
- комплекс
- согласие
- содержание
- содержание
- контекст
- контракт
- контроль
- Конверсия
- Создающий
- криптовалюта
- DApps
- данным
- Дней
- решение
- Защита
- подробный
- Застройщик
- застройщиков
- устройство
- Устройства
- различный
- Интернет
- Дисплей
- отображать
- do
- документации
- не
- Dont
- вниз
- каждый
- легко
- экосистема
- EIP
- конец
- Окружающая среда
- существенный
- по существу
- Эфириума
- Даже
- Кроме
- ожидания
- опыт
- подвергаться
- дополнительно
- дополнительная безопасность
- факт
- Поля
- Файл
- фокусировка
- Что касается
- ковать
- форма
- формы
- вперед
- от
- полный
- полностью
- Более того
- игра
- игра-чейнджер
- собирать
- получить
- GIF
- будет
- хорошо
- предоставлять
- рука
- счастливый
- Жесткий
- Есть
- помощь
- помощь
- ее
- здесь
- HEX
- его
- Как
- Однако
- HTTPS
- человек читаемый
- i
- идея
- Личность
- if
- значение
- улучшать
- улучшенный
- улучшение
- улучшение
- in
- включает в себя
- указывать
- с указанием
- промышленность
- информация
- сообщил
- взаимодействующий
- совместимость
- выпустили
- Представляет
- Введение
- IT
- пункты
- присоединиться
- JPG
- JSON
- всего
- Основные
- Знать
- Ledger
- Длина
- уровни
- ЖИЗНЬЮ
- LINK
- мало
- Длинное
- сделать
- Создание
- вредоносных программ
- способ
- Совпадение
- макс-ширина
- Максимизировать
- значимым
- означает
- сообщение
- Сообщения
- Метаданные
- MetaMask
- отсутствующий
- смешанный
- БОЛЕЕ
- имя
- родной
- потребности
- сеть
- никогда
- Новые
- хороший
- нет
- сейчас
- of
- .
- on
- ONE
- только
- непрозрачный
- операция
- Операционный отдел
- оптимизация
- or
- Другое
- внешний
- за
- собственный
- пара
- бумага & картон
- новыми участниками
- разрешение
- перспектива
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Точка
- состояния потока
- возможное
- потенциально
- практика
- Точно
- Принципы
- частная
- Секретный ключ
- Проблема
- процесс
- рассматривается
- защищающий
- Доказывать
- доказывает
- обеспечивать
- при условии
- что такое варган?
- публичный ключ
- цель
- Обменный курс
- Читать
- реальные
- реальная жизнь
- реальный мир
- реестра
- представляет
- запросить
- обязательный
- в результате
- безопасный
- то же
- мошенничество
- Secret
- безопасный
- безопасность
- посмотреть
- видит
- служить
- набор
- формы
- она
- Короткое
- должен
- показывать
- подпись
- подписанный
- существенно
- подписание
- с
- умный
- умный контракт
- So
- удалось
- конкретный
- Спецификация
- указанный
- Спотовая торговля
- стандарт
- заявил
- оставаться
- Шаг
- История
- строка
- Структура
- структурированный
- представленный
- такие
- супер
- поддержка
- Поддержанный
- поддержки
- взять
- технологии
- terms
- чем
- который
- Ассоциация
- их
- Их
- Эти
- они
- задача
- вещи
- think
- этой
- те
- хоть?
- время
- в
- слишком
- Сделки
- перевод
- переданы
- Прозрачность
- прозрачный
- два
- напишите
- понимать
- К сожалению
- Ед. изм
- Неограниченный
- us
- использование
- используемый
- Информация о пользователе
- Пользовательский опыт
- удобно
- пользователей
- через
- обычно
- ux
- ценностное
- проверить
- с помощью
- Кошелек
- Кошельки
- хотеть
- законопроект
- we
- Web3
- Экосистема Web3
- добро пожаловать
- ЧТО Ж
- были
- Что
- Что такое
- когда
- который
- Белый список
- КТО
- будете
- без
- Мир
- бы
- письменный
- лет
- являетесь
- ВАШЕ
- зефирнет