З зростанням популярності Bitcoin і інтеграції криптоиндустрії в наше життя тема безпечного зберігання монет стає все більш актуальною. Адже у звичайного інвестора з’являється можливість заробити, інвестуючи в криптоиндустрію, а у шахраїв з’являються нові можливості для швидкого збагачення. На сьогоднішній день апаратні (залізні) гаманці зарекомендували себе як одні з найбільш надійних та захищених, проте і у них є свої уразливості.
Які бувають гаманці для зберігання криптогвалюти?
Сьогодні ми представляємо вам переклад статті, в якій Карл Кредер (Karl Kreder), співзасновник Gridplus.io і директор з енергетики в ConsenSys, детально порівнює два популярних залізних гаманця – Ledger Nano S і Trezor:
Цей огляд Ledger Nano S і Trezor включає в себе як перелік вразливих місць цих продуктів, так і список відмінних рішень для забезпечення безпеки. Також тут не розглянуті варіанти гаманців без дисплея, так як вони дуже схильні до MIM-атак.
MIM-атака (від англ. Man in the middle – MITM) – атака посередника або атака «людина посередині». Це вид атаки в криптографії, коли зловмисник перехоплює і підміняє повідомлення, якими обмінюються кореспонденти, причому жоден з останніх не здогадується про його присутність в каналі.
«Залізо»
Trezor – відносно простий пристрій, що живиться від мікро-USB роз’єму. Він має дуже простий пластиковий корпус з пластиковими кнопками і рідкокристалічним екраном. Цікаво, що пластиковий корпус скріплений чимось, що нагадує супер клей.
У Trezor використаний стандартний STM32F205 в якості єдиного мікрочіпа, що створює величезні можливості для апаратних загроз. Це дуже поширений 32-розрядний процесор ARM Cortex M3. Він не є ні одним з надійних чіпів від компанії ST, ні якимось різновидом «захищеного анклаву» (зразок технології Secure Enclave у Apple). Це просто мікрочіп загального призначення – він просто генерує і зберігає приватні ключі. З цієї причини у Trezor немає сертифікації за загальним критеріям безпеки.
Ledger Nano S також живиться від мікро-USB, має дві кнопки введення і вбудований екран. Найбільша різниця між Trezor і Ledger полягає в тому, що у Ledger два чіпа замість одного. Першим мікрочіпом є STM32F042K, а другим – ST31H320. STM32F042K дуже схожий на STM32F205, використовуваний в Trezor, за винятком того, що він має внутрішній генератор тактових імпульсів, а не зовнішній. Що ще цікавіше, в Ledger Nano S є «безпечний анклав» ST31H320 високого класу, в якому зберігаються приватні ключі гаманця. ST31H320 вже широко використовується в інших додатках у банківській сфері, у процесах ідентифікації та в платному телебаченні. Більш того, він відповідає стандартам безпеки EAL6+. Об’єднана архітектура ST31 / STM32 має більш низьку, але також заслуговує довіри сертифікацію EAL5+.
На додаток до безпечного зберігання приватних ключів, цей «безпечний анклав» містить ідентифікаційний ключ конкретного пристрою, який гарантує, що ваш Ledger не є підробкою і не був скомпрометований у процесі постачання.
Можливі вразливі місця
Будь-який комп’ютер, до якого підключений апаратний гаманець, може бути скомпрометований одним або декількома способами. По-друге, розглядємо способи розкрадання ваших коштів, допускаючи, що зловмисник може отримати доступ до пристрою до і після його ініціалізації користувачем. Наведені вище припущення є гарною відправною точкою, тому що мета апаратних гаманців полягає в тому, щоб допомогти зменшити рівень уразливості з урахуванням, що ці припущення вірні. Більш того, якщо ми відхиляємо припущення про те, що гаманець підключений до взломанного комп’ютера, необхідність в апаратному гаманці взагалі пропадає. У такому випадку ми можемо використовувати сам «чистий» комп’ютер замість апаратного гаманця.
MIM-атака вартістю 800$
Хоча у Ledger Nano S і є дисплей, він все-таки вразливий для MIM-атак. Причиною цього є те, що він відображає лише 8 цифр адреси одержувача. Це 8-значне підтвердження транзакції може бути зламано при відносно невеликих економічних витратах. Також зверніть увагу на те, що 8 цифр адреси одержувача відображаються не тільки для Ethereum, але і для Bitcoin, і Litecoin операцій.
Оновлено: в останній версії прошивки 1.3.1 (а також в Ledger Bitcoin Wallet) це виправлено для Bitcoin адрес, вони показуються повністю; тому ця загроза не актуальна. Однак Ethereum адреси все ще частково відображаються як в прошивці 1.3.1, так і в Ledger Ethereum Wallet 1.0.19, тому для них ця уразливість існує.
Поточна вартість генерації 8 знаків (з різним регістром) для вашої адреси на сайті генератора «красивих» адрес vante.me коштує приблизно 800$. Так, vante.me розроблений для створення адрес з «гарним» початком (щоб люди впізнали їх і легше запам’ятовувати), а не для організації атак. Але факт залишається фактом – вартість генерації 8 знаків вашої адреси (навіть якщо це поділ послідовності знаків на 4 певних знака на початку і 4 певних знака в кінці) складає всього 800$.
Тому, якщо ви підключаєте Ledger Nano S до взломаного комп’ютера і використовуєте його для переміщення великих сум грошей між однією або декількома обліковими записами на регулярній основі, ви уразливі для цієї атаки. Наприклад, у вас є обліковий запис для обміну валют, на яку ви часто переводите кошти. Якщо ваш комп’ютер зламаний, то зловмисник буде знати, на які адреси ви відправляєте кошти і в якій кількості. Потім йому буде неважко створити практично ідентичний адреса (8 знаків якого будуть повторювати ваш) і просто чекати, поки ви не створите чергову транзакцію на значну суму. На цьому кроці ваш комп’ютер зробить запит на проведення транзакції на адресу зловмисників замість запиту у вашого Ledger на підтвердження транзакції на ваш аккаунт. Ви і не помітите, як власноруч підтвердіть транзакцію на своєму девайсі і відправите гроші шахраям.
Цікаво, що Trezor не може постраждати від такої атаки, тому що перед підписанням транзакції він відображає весь адреса одержувача на екрані пристрою. Це також пояснює точку зору тих, хто вважає, що як мінімум 10 знаків (атака в такому випадку буде коштувати 3 мільйони доларів), а ще краще весь адресу, потрібно перевіряти перед відправкою істотних для вас сум. Крім того, варто зазначити – якщо ви використовуєте одноразові адреси при надсиланні грошей через ваш Ledger, то подібна MIM-атака також не страшна вам. У зловмисника просто не вистачить часу згенерувати підроблену адресу в такому випадку.
Оновлення прошивки пристрою через USB
Як Ledger, так і Trezor можна оновити, використовуючи щось схоже на мікро-USB пристрій оновлення (DFU) від компанії ST. DFU дозволяє оновлювати прошивку пристрою через USB-порт і диспетчер пристроїв на приєднаному комп’ютері. На жаль, існує цілий ряд атак, які можливі при оновленні через USB порт.
Багато спроб використовувати DFU для віддаленого скидання пам’яті мікрочіпа сімейства STM32F виявилися вдалими. Що це означає? Для Trezor це дуже велика проблема, тому що теоретично це дозволить хакеру віддалено витягнути приватні ключі з вашого пристрою. А для Ledger це не проблема, тому що приватні ключі зберігаються не на STM32, а за допомогою «безпечного анклаву» ST31. Тому, навіть якщо пам’ять STM32 буде віддалено скомпрометована, приватні ключі будуть як і раніше в безпеці на ST31.
На додаток до потенційної загрози віддаленого дампа пам’яті STM32, USB DFU може дозволити зловмиснику перепрошити пристрій за допомогою шкідливого програмного коду під час оновлення. Хоча і Ledger, і Trezor надають контрольну суму для перевірки на екрані пристрою під час оновлення, ця операція може бути легко скомпрометована шкідливим кодом. Але, щоб це зробити, зловмисник повинен зламати ваш комп’ютер в той момент, коли ви оновлюєте ПЗ вашого гаманця.
Таким чином, якщо Trezor був оновлений з допомогою шкідливого коду, то зловмисник легко отримує контроль над вашими засобами – він просто знає ваші приватні ключі. У випадку з Ledger приватні ключі все одно будуть в безпеці, і зловмисник не зможе створити спотворені транзакції.
Обхід захисту PIN-коду
Наступна вразливість може проявитися, якщо апаратний гаманець безпосередньо потрапить в руки зловмисника. І Trezor, і Ledger мають функцію скидання, якщо хибний PIN-код введено 3 рази. Це запобігає отримання доступу до гаманця через простий підбір вашого PIN-коду.
Кошти в повній безпеці, бо вони захищені PIN-кодом, чи не так?
На всесвітньо відомій конференції хакерів DEF CON 25 відбулася презентація, на якій була продемонстрована можливість зламати Trezor STM32F205 без знання PIN-коду. Ви навіть можете знайти в Інтернеті блог, який дає покрокову інструкцію, як це дуже швидко зробити без застосування якогось спеціалізованого обладнання.
Щодо Ledger? Ledger менш вразливий для подібного типу атаки, оскільки він має внутрішній генератор тактових імпульсів, а також захищений «безпечним анклавом». Це запобігає можливість вкрасти ваші кошти навіть, якщо чіп STM32F042K був успішно зламаний.
Фізичні механізми «безпеки» пристрою актуальні для Trezor через потенційних векторів атаки, пов’язаних з підробкою пристрою протягом поставок. На додаток до супер клею, який скріплює корпус, коробка Trezor «захищена» голографічними наклейками, які також є жалюгідною спробою фізичного захисту. Всі ці спроби Trezor переконати споживача, що гаманець не був скомпрометований протягом постачання, повинні насторожувати. Це доводить тільки те, що ці «захисні» функції не працюють. А сам продавець не впевнений, чи він створив і запрограмував пристрій надсилає запит на офіційний сайт.
Якщо Trezor був перехоплений третьою стороною до того, як гаманець доставили кінцевому користувачеві, зловмисник може просто відкрити його і встановити шкідливу версію програмного забезпечення Trezor. Цьому сприяє і той факт, що всі прошивки Trezor – з відкритим вихідним кодом. Крім того, оскільки захисний ключ самого пристрою зберігається на STM32, зловмисник може змінити його при перепрошиванню пристрою. Це означає, що навіть сам Trezor ніколи не дізнається, підробили це пристрій або він оригінальний.
Ledger, в свою чергу, не страждає від таких загроз, тому що «безпечний анклав» надійно зберігає ключ пристрою, який використовується для підтвердження оригінальності продукту. Це значно скорочує вірогідність успішного проникнення підробок в ланцюжок поставок.
Фраза відновлення
Найбільш вразливою частиною є фраза відновлення. Фраза відновлення – це серія з 12-24 слів, яка дозволяє відновлювати приватні ключі з допомогою BIP39. На відміну від апаратних гаманців, які забезпечують певний бар’єр для шкідливого використання або злому, фраза відновлення існує у вигляді простого тексту. Ми любимо називати цю уразливість «атакою на білизняний ящик», так як ви найімовірніше зберегли папірець з цією фразою в своїй шафі біля ліжка:).
Ймовірно, це найбільш вразлива частина апаратного гаманця. Також особливо іронічно, що якщо людина хоче якомога надійніше зберегти фразу відновлення, то він, врешті-решт, може виявитися в банку, оформляючи банківську комірку. Після майже десятиліття роботи над створенням децентралізованої P2P мережі, фраза відновлення повертає нас на початок – туди, де ми несемо наші гроші в банк. Це, насправді, просто підкреслює той факт, що криптовалюти є активами на пред’явника». Як і у випадку з золотом, безпека криптовалют, принаймні в даний час, залежить від здатності користувача фізично захистити їх або надійно сховати.
Нарешті моя фраза відновлення в надійному місці!
Існують способи підвищення безпеки фрази відновлення, такі як розбивка її на частини і подальше їх виклад з допомогою кількох довірених контрагентів. Або фраза відновлення також може бути зашифрована, чи використана в поєднанні з якимось додатковим паролем.
Огляд біржі LiveCoin, як торгувати і виводити гроші
Остання загроза, про яку слід розповісти хоча б коротко – це небезпека прихованого спостереження. Якщо зловмисник підглянув PIN-код до вашого апаратного гаманця, то це точно кінець. Існують віддалені інструменти спостереження, веб-камера комп’ютера може бути включена і контролюватися без відома або дозволу користувача. Існують також більш очевидні способи: наприклад, навколишнє середовище, в якій ви живете або працюєте, може бути скомпрометована прихованою камерою.
Едвард Сноуден був параноїком щодо спостереження за приміщеннями, він використовував ковдру, щоб приховати введення пароля.
Це може здатися не самою ймовірною загрозою, але, якщо є достатньо великий стимул, а мета відома, то це, швидше за все, самий простий вектор атаки.
Висновок
Який висновок ми робимо з усього вищевикладеного? Якщо б не було уразливості MIM-атаки, то Ledger був би явним переможцем. Однак наявність цієї загрози ускладнює прийняття рішення. Якби розробники Ledger прислухалися до відгуків користувачів і включили повний адресу одержувача (або хоча б 10-11 символів, а не 8, як зараз), було б набагато легше проголосити їх продукт переможцем.
Оновлено: у статті на medium.com розробники Ledger заявили, що відновлять додаток, щоб він показувало повні адреси.
Чи є щось ще, що ми можемо зробити для підвищення безпеки зберігання криптовалют? Так. Гаманці з мульти-підписами. Гаманець з мульти-підписом вимагає декількох цифрових підписів для переміщення токенів, аналогічно тому, як для відкриття банківської комірки потрібні два ключа. Мульти-підпис серйозно ускладнює завдання зловмисникам, адже приватні ключі тепер можна тримати в різних місцях і на різних пристроях. Ця технологія вже давно розроблена, має довгу історію успішного використання. Як Trezor, так і Ledger надають користувачам можливість використовувати мульти-підпис. Крім того, наявність декількох осіб, які повинні підписувати транзакції перед переміщенням коштів, створює внутрішню ієрархію управління, яка зазвичай бажана в організаціях.
На жаль, Ethereum ще не підтримує гаманці з мульти-підписом. Будь-який заявлений Ethereum гаманець з мульти-підписом заснований на смарт-контракті, а цей смарт-контракт може мати додаткові уразливості.