Чому в DARCA ми відмовилися від звичного сценарію із seed-фразою під час реєстрації
Для багатьох знайомство з некастодіальним криптогаманцем починається однаково: користувач щойно створив гаманець, ще не встиг розібратися з інтерфейсом, а застосунок уже показує 12 або 24 слова й просить зберегти їх у надійному місці.
Якщо втратити ці слова, можна втратити можливість відновити доступ до активів. Якщо показати їх іншій людині, під загрозою опиняться вже самі активи.
Логіка такого підходу зрозуміла. Некастодіальний гаманець залишає контроль над криптовалютою власнику, а разом із контролем передає й відповідальність за ключі. Проте під час створення DARCA ми поставили під сумнів саме перший крок: чи обов’язково користувач має одразу побачити головний секрет гаманця і самостійно вирішувати, як його захистити?
Ми хотіли зберегти головну властивість self-custody — активами розпоряджається власник, а не сервіс — і водночас не створювати зайвий ризик у перші хвилини роботи.
Чому seed-фраза не показується під час реєстрації
Як зашифрована резервна копія забезпечує відновлення
Власник все одно може відкрити seed-фразу
Безпека — це також захист від власної помилки
Що саме ми можемо стверджувати про безпеку DARCA
Навіщо запускати ще один криптогаманець
Яку межу контролю ми зберігаємо
У кастодіальній моделі користувач залежить від сервісу, який контролює інфраструктуру зберігання активів. У некастодіальній моделі ключі перебувають під контролем власника, тому сервіс не має змоги самостійно розпоряджатися його криптовалютою.
DARCA побудований за другим принципом. Ми не зберігаємо seed-фрази або приватні ключі у відкритому вигляді, не можемо самостійно розшифрувати резервну копію гаманця й не маємо можливості розпоряджатися активами власника. Ключі створюються та відкриваються на його пристрої.
Підписуйтеся на наші соцмережі
Стандартна BIP-39 seed-фраза залишається сумісним способом відновлення. Зміна стосується не її існування, а моменту, коли вона вперше з’являється перед користувачем.
Щойно слова відображаються на екрані, виникає нове завдання: зберегти їх так, щоб вони не загубилися і не потрапили до сторонніх.
Скріншот може залишитися в синхронізованій фотогалереї. Текстовий файл легко скопіювати. Нотатка може автоматично потрапити на інший пристрій або відкритися під час демонстрації екрана. Паперову копію неможливо вкрасти віддалено, але її можна загубити, пошкодити або забути.
У DARCA ми вирішили не створювати цю точку ризику автоматично.
Під час реєстрації seed-фраза генерується, але не показується користувачеві. Йому не потрібно одразу переписувати слова, фотографувати їх або шукати місце для фізичної копії. Відкрита версія seed-фрази не надходить і команді DARCA.
Seed-фраза створюється безпосередньо на пристрої користувача і там же шифрується. Застосунок генерує окремий випадковий ключ DEK, який використовується для шифрування seed-фрази за допомогою AES-256-GCM. Сам DEK захищається ключем, пов’язаним із паролем користувача через Argon2id.
На сервер надходить уже зашифрована резервна копія. Відкритої seed-фрази, відкритого DEK і приватних ключів, за допомогою яких можна самостійно керувати активами, на сервері немає.
Тому наявність резервної копії не робить DARCA кастодіальним сервісом. Сервер зберігає дані, потрібні для відновлення, але не має всього необхідного для самостійної розшифровки. Відкриття захищених даних відбувається локально на пристрої власника.
Ми також розділили вхід до облікового запису та доступ до криптографічних секретів. Для перевірки пароля використовується OPAQUE: сервер може перевірити дані для входу, не отримуючи сам пароль у відкритому вигляді. Успішна авторизація дає застосунку змогу отримати зашифрований пакет, але не дає серверу доступу до секретів усередині нього.
Для користувача ця архітектура майже непомітна в повсякденній роботі. Це свідоме рішення: частина безпеки має працювати на рівні конструкції системи, а не залежати від того, чи правильно людина виконала інструкцію в першу хвилину.
У налаштуваннях DARCA власник може навмисно відкрити seed-фразу і зберегти її самостійно. Ми не блокуємо цю можливість, адже без неї важко говорити про справжній self-custody.
Змінюється лише момент прийняття рішення. DARCA не змушує розкривати фразу під час реєстрації. Власник може зробити це пізніше, коли йому знадобиться особиста копія.
Після відображення seed-фразу потрібно вважати потенційно скомпрометованою. Її могли скопіювати, сфотографувати, записати або випадково показати. Від цього моменту відповідальність за її зберігання зростає.
Безпека — це також захист від власної помилки
Коли говорять про безпеку криптогаманця, найчастіше уявляють зловмисника, який намагається викрасти ключі. Але відновлення може не спрацювати й без атаки: власник загубить паперову копію, вона пошкодиться або через кілька років він не згадає, де її залишив.
Зашифрована резервна копія потрібна зокрема для того, щоб відновлення не залежало повністю від здатності роками зберігати один секрет в одному місці. Водночас резервна копія не дає DARCA доступу до активів: серверу недоступні дані, необхідні для її самостійної розшифровки.
Це не робить систему невразливою. Пристрій і пароль користувача все одно потрібно захищати. Але зайву точку ризику не обов’язково створювати ще до того, як користувач вирішив відкрити seed-фразу.
Називати гаманець «найбезпечнішим» без повної методики порівняння некоректно. Технічно корисніше розглядати конкретні сценарії компрометації.
Компрометація серверної бази не відкриває seed-фразу. Зашифрована резервна копія сама по собі не дає змоги розпоряджатися активами. DARCA не має відкритого DEK і приватних ключів, потрібних для самостійного доступу. Поки власник не запросив seed-фразу, вона не з’являється на екрані та не потрапляє автоматично до скріншотів, нотаток або звичайних файлів.
Це не абсолютна безпека. Пристрій і пароль залишаються відповідальністю користувача, а після розкриття seed-фрази потрібно захищати вже її.
Наше твердження конкретніше: архітектура зменшує кількість точок, у яких одна помилка, витік або скомпрометований компонент автоматично перетворюються на доступ до активів.
Криптогаманців уже достатньо, тому сам факт появи нового продукту нічого не доводить. Для DARCA причина запуску — переглянути компроміс, який довго супроводжував self-custody.
Користувачеві часто пропонують вибір: або сервіс бере на себе більше відповідальності й отримує більше контролю, або власник зберігає повний контроль, але самостійно захищає кожен критичний секрет. DARCA залишає контроль власнику й намагається прибрати зайві небезпечні дії з початку шляху.
Seed-фраза стала одним із перших прикладів. Вона існує, належить власнику і за потреби доступна йому, але не показується автоматично лише тому, що так заведено.
Ми не обіцяємо, що користувач ніколи не втратить доступ або що гаманець неможливо скомпрометувати. Практичне питання інше: скільки небезпечних дій можна прибрати, не забираючи контроль у власника?
Для seed-фрази наша відповідь проста: якщо користувачеві ще не потрібно бачити головний секрет гаманця, безпечніше не показувати його одразу.