За підтримки
Featured

Завдяки кидкам кубиків ключі від біткойнів зберігаються в офлайн-режимі, але не всі будуть цим перейматися

Стандартний шестигранний кубик при кожному кидку генерує приблизно 2,6 біта непередбачуваної інформації. Це може здатися небагато, але при достатній кількості повторень такі кидки можуть створити необхідну випадковість для захисту біткойн-гаманця без використання програмного забезпечення чи електронних компонентів.

АВТОР
ПОДІЛИТИСЯ
Завдяки кидкам кубиків ключі від біткойнів зберігаються в офлайн-режимі, але не всі будуть цим перейматися

Основні висновки

  • Згідно з формулою Клода Шеннона, кидок чесного шестигранного кубика забезпечує приблизно 2,585 біта ентропії.
  • У документації Coinkite зазначено, що 50 кидків кубика відповідають 128-бітовому стандарту для початкового насіння біткойн-гаманця.
  • Аналіз «Wizard Sardine» Кевіна Лоаека вказав на ризики в інструментах Coldcard, що виходять за межі основного початкового коду.

Чому результат кидка кубика так важко передбачити

Клод Шеннон, математик, який заснував теорію інформації, використовував ентропію для вимірювання ступеня невизначеності результату. У разі чесного шестигранного кубика кожна грань має однаковий шанс — один до шести — випасти. Це дає кожному кидку приблизно 2,585 біта ентропії. Підкидання монети дає 1 біт, а восьмигранний кубик — 3 біти.

Image of different colored diceНещодавній скандал навколо Coldcard спричинив поширення генерації початкових значень на основі кидання кубиків у соціальних мережах. Деякі користувачі тепер вважають це необхідним, інші кажуть, що це захистило їхні кошти, тоді як досвідчені оператори зазначають, що більшість новачків не терпітимуть повільного, схильного до помилок процесу налаштування.

Важливим є не те, що кубик, який котиться, поводиться випадково на атомному рівні. Це не так. Результат визначається законами фізики, але одночасно змінюється занадто багато дрібних змінних, щоб хтось міг надійно обчислити результат. Кубик вилітає з руки з певною швидкістю, під певним кутом, з певної висоти та з обертанням, потім вдаряється об стіл і змінює напрямок руху з кожним відскоком.

На практиці навіть найменша зміна у кидку може призвести до зовсім іншого результату. Трохи інше положення пальців або трохи сильніший кидок змінюють траєкторію настільки, що остаточне число неможливо передбачити, спостерігаючи за рухом. Результат може бути детермінованим у теорії, але для генерації гаманця важливо те, що зловмисник не може його відтворити чи обчислити.

Перетворення результатів кидків кубиків на корисні дані

Комп’ютер не може безпосередньо використовувати список результатів кидків кубиків. Спочатку кидки потрібно перетворити на двійкові дані, і метод перетворення має велике значення.

Простий метод «парне-непарне» легкий для розуміння, але він марнує значну частину доступної ентропії. Кожен кидок зводиться до одного біта, хоча кубик генерує приблизно 2,6 біта інформації. Більш ефективні методи збирають довгу послідовність кидків і обробляють весь ланцюжок, зазвичай за допомогою криптографічної хеш-функції. Це дозволяє зберегти набагато більше випадковості.

Цей самий принцип застосовується в Diceware — давно відомому методі створення безпечних парольних фраз — та під час ручного формування біткойн-гаманців. Типова 12-слівна фраза для відновлення гаманця складається зі 128 бітів ентропії. При приблизно 2,6 біта на один кидок близько 50 чесних кидків забезпечують достатньо вихідної інформації, щоб подолати цей поріг.

Coinkite, виробник апаратного гаманця Coldcard, рекомендує 99 або більше кидків для користувачів, які прагнуть отримати близько 256 бітів ентропії. Це не робить гаманець удвічі складнішим у використанні, але надає згенерованому секрету набагато більший математичний запас безпеки.

Практичне випробування початкових значень, згенерованих за допомогою кубиків

Ця відмінність стала важливою після того, як Coinkite повідомила про проблему з прошивкою, що сягає 2021 року. На деяких пристроях Coldcard програмне забезпечення могло оминати внутрішній апаратний генератор випадкових чисел і замість цього використовувати слабший алгоритм, пов’язаний із відкритою інформацією про пристрій.

Оскільки частини цього процесу можна було відтворити, зловмисники мали змогу звузити коло можливих ключів гаманця, замість того щоб перебирати весь простір ключів. Ця вразливість була пов’язана з крадіжкою, за оцінками, 1 128,6633 BTC з приблизно 1 100 адрес (станом на 13:00 за східним часом).

X screenshot
Джерело зображення: X

Початкові насіння гаманців, створені виключно на основі достатньої кількості незалежних кидків кубиків, не були скомпрометовані таким самим шляхом. Ці користувачі надали власну ентропію, тому несправний апаратний генератор не брав участі у створенні основного секрету гаманця.

Однак цей захист поширювався лише на початковий код, згенерований за допомогою кубиків. Він не забезпечував автоматичного захисту всіх інших секретних даних, згенерованих пристроєм.

Wizard Sardine аналізує дрібний шрифт

1 серпня дослідник у галузі безпеки Кевін Лоек опублікував на веб-сайті Wizard Sardine оцінку уразливості Coldcard. Його найважливіше спостереження стосувалося функцій Coldcard, які генерували власні секрети окремо від основного насіння гаманця.

«Я вважаю надзвичайно важливим підкреслити, що навіть користувачі, які імпортували або згенерували початковий код за допомогою кубиків, є вразливими, якщо вони використовують наведені нижче функції», — написав Лоек на X, після чого надав схему ураженої системи.

На схемі показано, що генерaтор випадкових чисел із вразливістю живить кілька вторинних функцій Coldcard. До них належать створення паперового гаманця, клонування пристрою, шифрування USB-сеансів, функція переказу Secret Teleport, створення ключів для спільного підписання, вбудований генерaтор паролів та коди автентифікації апаратного модуля безпеки.

X screenshot
Джерело зображення: публікація в X від дослідника безпеки Кевіна Лоаека.

Основний гаманець, створений за допомогою 99 кидків кубиків, залишався в окремій частині системи. Проблема полягала в тому, що інші інструменти все одно могли запитувати нові випадкові дані від несправного генератора. Як наслідок, безпечне насіння не гарантувало, що кожен пароль, резервна копія, код автентифікації або додатковий ключ, створені на тому самому пристрої, були однаково безпечними.

Чому більшість нових користувачів не кидатимуть кубики

Ентропія, згенерована за допомогою кубиків, є технічно обґрунтованою, якщо все виконується правильно, але для більшості нових користувачів це нереалістичний варіант за замовчуванням. Кидання кубика 50 або 99 разів, точне введення кожного результату та перевірка того, що жоден кидок не було пропущено чи повторено, вимагає терпіння та великої концентрації. Одна помилка при введенні цифри може повністю змінити кінцевий гаманець, і більшість пристроїв не можуть визначити, чи помилка сталася через невдалий кидок, помилку при введенні чи неправильне розуміння інструкцій.

X screenshot
Джерело зображення: X

Цей процес також створює ризики, яких немає при використанні належним чином функціонуючого апаратного генератора. Користувачі можуть записувати результати кидків на папері, фотографувати їх, вводити в онлайн-інструмент або залишати список десь, де його може знайти інша людина. Деякі люди кидають кубик повторюваним або контрольованим чином, використовують підроблений або пошкоджений кубик, або припиняють процес раніше, оскільки він здається їм надмірним. Математика може бути надійною, але безпека результату залежить виключно від процедури, якої дотримується користувач.

X screenshot
Джерело зображення: X

Саме тому кидання кубика не завжди вважається найкращим методом для багатьох людей, навіть серед досвідчених користувачів біткойна. Воно замінює довіру до пристрою на довіру до ручного процесу. Для технічно обережного користувача, який розуміє ентропію, перевіряє метод і зберігає послідовність кидків у таємниці, такий обмін може мати сенс. Для пересічного покупця, який налаштовує гаманець уперше, це створює кілька можливостей припуститися непоправної помилки, а також є водночас обтяжливим процесом.

X screenshot
Джерело зображення: X

Також важко уявити широке поширення біткойна, якщо для отримання коштів і забезпечення їхньої безпеки люди муситимуть сидіти за столом і записувати результати 99 кидків кубиків. Заходи безпеки мають витримувати реалії побуту, напружений графік, відволікаючі фактори та користувачів, які не бажають вивчати криптографію. Ручна ентропія має залишатися доступною як розширена опція, але довгостроковою метою є апаратне та програмне забезпечення, яке правильно генерує сильну випадковість, чітко пояснює, що відбувається, і вимагає якомога менше спеціалізованих знань.

Що слід перевірити власникам Coldcard

Власникам уражених пристроїв Coldcard слід спочатку перевірити версію прошивки, встановлену на пристрої. Потім їм слід переглянути, якими функціями вони користувалися під час роботи зі старою прошивкою, а не зосереджуватися лише на тому, як було згенеровано основне насіння гаманця.

Кожному, хто використовував уражене пристрій для генерації паперового гаманця, секрету клонування, пароля, ключа для спільного підписання або коду автентифікації, може знадобитися негайна заміна цих матеріалів. Встановлення оновлення запобігає виникненню цієї проблеми з новими секретами, але не виправляє те, що було створено раніше.

Цей інцидент також надає вагомі практичні аргументи на користь використання гаманців із декількома постачальниками. У схемі з багатопідписом для затвердження транзакції можуть бути потрібні окремі апаратні пристрої від різних виробників. Така структура не унеможливлює помилок у прошивці, але може запобігти тому, щоб один дефектний генератор випадкових чисел самотужки поставив під загрозу весь гаманець.

Цю статтю перекладено з англійської мови за допомогою штучного інтелекту. Оригінальна англомовна версія є авторитетним джерелом; автоматичні переклади можуть містити неточності, особливо в юридичній та нормативній термінології.

Теги в цій статті