По-перше, трохи жаргону. А "повідомлення" це одиниця зв'язку між двома або більше учасниками мережі блокчейн. Він може містити будь-які типи даних, і вони зазвичай використовуються для отримання цифрового схвалення від користувача.
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 і додатковий захист для своїх користувачів, Бобу потрібно зробити 2 речі: вкажіть, які поля мають відображатися користувачеві, і надайте для них гарне, чітке відображуване ім’я.
Якщо як розробник ви хочете приєднатися до Боба та зробити це для своєї програми, у вас є вся документація тут, і це, по суті, зводиться до створення запиту на отримання білого списку вашого контракту в реєстрі активів dApps Ledger за допомогою файлу JSON, який містить:
- Селектори, щоб вказати, які поля пристрій має показати Алісу,
- Позначте кожен селектор відображуваною назвою.
Це не косметика, це хороша практика
Вносячи свій смарт-контракт у білий список і вказуючи, як пристрої Ledger можуть відображати ваші повідомлення, ви не тільки значно покращуєте взаємодію з вашим додатком, але, що більш важливо, ви захищаєте всіх нас від шахрайства та допомагаєте виробити хороші звички в екосистема web3.
Ми ніколи не повинні підписувати щось, чого не розуміємо.
Ми не можемо зробити це без вас, допоможіть нам зробити чітке підписання нормою.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoAiStream. Web3 Data Intelligence. Розширення знань. Доступ тут.
- Карбування майбутнього з Адріенн Ешлі. Доступ тут.
- Купуйте та продавайте акції компаній, які вийшли на IPO, за допомогою PREIPO®. Доступ тут.
- джерело: https://www.ledger.com/blog/securing-message-signing
- :є
- : ні
- :де
- $UP
- 1
- 2016
- 22
- 220
- a
- здатність
- Здатний
- МЕНЮ
- про це
- абсолютно
- Achieve
- через
- адреса
- змагальність
- алгоритм
- ВСІ
- дозволяти
- Дозволити
- дозволяє
- вже
- Також
- кількість
- an
- та
- Інший
- будь-який
- будь
- додаток
- додаток
- твердження
- ЕСТЬ
- Срібло
- AS
- активи
- At
- авторизації
- заснований
- BE
- оскільки
- було
- перед тим
- початок
- буття
- Краще
- між
- Біт
- blockchain
- блокчейн-мережа
- боб
- будувати
- але
- by
- CAN
- який
- догоджати
- шанси
- зміна
- Перемикач
- ясно
- coinbase
- Гаманець Coinbase
- приходить
- зазвичай
- Комунікація
- комплекс
- згода
- зміст
- зміст
- контекст
- контракт
- контроль
- Перетворення
- створення
- криптовалюта
- DApps
- дані
- Днів
- рішення
- оборони
- докладно
- Розробник
- розробників
- пристрій
- прилади
- різний
- цифровий
- дисплей
- показ
- do
- документація
- Ні
- Не знаю
- вниз
- кожен
- легко
- екосистема
- EIP
- кінець
- Навколишнє середовище
- істотний
- по суті
- Ефіріума
- Навіть
- Крім
- очікування
- досвід
- піддаватися
- додатково
- додаткова безпека
- факт
- Поля
- філе
- фокусування
- для
- кувати
- форма
- форми
- Вперед
- від
- Повний
- повністю
- Крім того
- гра
- змінювач гри
- збирати
- отримати
- GIF
- буде
- добре
- надавати
- рука
- щасливий
- Жорсткий
- Мати
- допомога
- допомогу
- її
- тут
- HEX
- його
- Як
- Однак
- HTTPS
- читається людиною
- i
- ідея
- Особистість
- if
- значення
- удосконалювати
- поліпшений
- поліпшення
- поліпшення
- in
- includes
- вказувати
- вказуючи
- промисловість
- інформація
- повідомив
- взаємодіючих
- сумісна
- введені
- Вводить
- Вступ
- IT
- пунктів
- приєднатися
- JPG
- json
- просто
- ключ
- Знати
- Гросбух
- довжина
- рівні
- життя
- LINK
- трохи
- Довго
- зробити
- Робить
- шкідливих програм
- манера
- матч
- макс-ширина
- Максимізувати
- значущим
- засоби
- повідомлення
- повідомлення
- метадані
- MetaMask
- відсутній
- змішаний
- більше
- ім'я
- рідний
- потреби
- мережу
- ніколи
- Нові
- приємно
- немає
- зараз
- of
- часто
- on
- ONE
- тільки
- непрозорий
- операція
- операції
- оптимізація
- or
- Інше
- з
- над
- власний
- пара
- Папір
- Учасники
- дозвіл
- перспектива
- plato
- Інформація про дані Платона
- PlatoData
- точка
- бідні
- це можливо
- потенційно
- практика
- точно
- Принципи
- приватний
- Private Key
- Проблема
- процес
- пропозиція
- захищає
- Доведіть
- доводить
- забезпечувати
- за умови
- громадськість
- публічний ключ
- мета
- ставка
- Читати
- реальний
- справжнє життя
- Реальний світ
- реєстру
- представляє
- запросити
- вимагається
- в результаті
- сейф
- то ж
- шахрайство
- секрет
- безпечний
- безпеку
- побачити
- бачить
- служити
- комплект
- форми
- вона
- Короткий
- Повинен
- Показувати
- підпис
- підписаний
- істотно
- підписання
- з
- розумний
- розумний контракт
- So
- що в сім'ї щось
- конкретний
- специфікація
- зазначений
- Spot
- standard
- заявив,
- залишатися
- Крок
- Історія
- рядок
- структура
- структурований
- представлений
- такі
- Super
- підтримка
- Підтриманий
- Підтримуючий
- Приймати
- технології
- terms
- ніж
- Що
- Команда
- їх
- Їх
- Ці
- вони
- річ
- речі
- думати
- це
- ті
- хоча?
- час
- до
- занадто
- Transactions
- переклад
- передані
- прозорість
- прозорий
- два
- тип
- розуміти
- на жаль
- блок
- необмежений
- us
- використання
- використовуваний
- користувач
- User Experience
- зручно
- користувачі
- використання
- зазвичай
- ux
- значення
- перевірити
- через
- Wallet
- Гаманці
- хотіти
- було
- we
- Web3
- Екосистема Web3
- ласкаво просимо
- ДОБРЕ
- були
- Що
- Що таке
- коли
- який
- Білий список
- ВООЗ
- волі
- з
- без
- світ
- б
- письмовий
- років
- ви
- вашу
- зефірнет