480 / 7362^N

Brute Force Search Space

Простір повного перебору

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

Brute Force Search Space — це набір варіантів, які можна послідовно перевіряти, намагаючись вгадати секрет. Уявіть, що ви забули пароль до власної зашифрованої резервної копії: кожне припущення є кандидатом, і треба розпізнати, чи правильно воно відкрило копію. Більша кількість рівноймовірних варіантів і дорожчі перевірки зазвичай ускладнюють пошук. Але для справжнього гаманця спершу потрібно визначити, що саме шукаємо.

Пароль до резервної копії, приватний ключ, який дозволяє витрачати біткоїни, і вхідні дані генератора, що створив ключ, — різні речі. Відрізняються і можливі варіанти, і способи їх перевірки. Якщо несправний генератор вибирав з невеликого набору входів, пошук може бути простішим, ніж здається з довжини готового ключа. Зловмисник може перебирати саме цей обмежений набір, а не всі математично можливі ключі. Тож перш ніж рахувати варіанти, треба зрозуміти походження секрету. [1] [3]

Уявімо 16 рівноймовірних варіантів, серед яких правильний лише один. Перевіряємо їх по черзі, без повторень. Іноді вдається швидко, іноді лише наприкінці; у середньому потрібно перевірити 8,5 кандидата. Для довільної кількості N це записують як E = (N+1)/2. За сталої швидкості 2 спроби на секунду середній час становить 4,25 секунди. Дробова кількість спроб стосується середнього, а не окремого пошуку. Це наочна модель, а не виміряний час відновлення біткоїн-гаманця. [1]

Улюблені слова, імена й легкі для запам’ятовування шаблони трапляються частіше, ніж випадкові комбінації. Тому зловмисник може почати з імовірніших варіантів. Подібну проблему створює несправний генератор, який частіше видає певні результати. Середнє з попереднього прикладу тоді вже не працює. Мін-ентропія описує шанс найкращої першої здогадки, але сама не визначає загальні витрати роботи чи гарантований строк успіху. Кількість варіантів без їхніх імовірностей — неповна інформація. [1] [2]

Перевірка кандидата не обов’язково миттєва. PBKDF2 — функція, що виводить ключ із пароля та інших входів; повторення обчислень збільшує роботу для кожної спроби. Ще один вхід — salt. Зазвичай це відкриті дані, які розрізняють окремі виведення: з різними salt не можна просто повторно використати ту саму готову таблицю результатів. Salt не є ще одним таємним паролем і не замінює надійний вхід. Для оцінки швидкості потрібно знати конкретну функцію, її налаштування та обладнання. [3]

BIP39 перетворює слова відновлення та необов’язкову passphrase, тобто додатковий пароль, на seed — таємне початкове значення для виведення ключів. Він використовує PBKDF2 з HMAC-SHA512 як внутрішньою обчислювальною функцією та 2048 ітерацій, тобто повторень, і створює 512-бітний seed. Тут параметр salt складається з тексту «mnemonic», за яким іде passphrase; додатковий секрет забезпечує саме passphrase. Кожна passphrase створює допустимий seed, тому контрольна сума слів відновлення не підтверджує, що ви ввели потрібну passphrase. Відновлюючи власний гаманець, його можна впізнати, наприклад, за відомою адресою з правильними налаштуваннями виведення ключів. Довгий результат не робить слабкий пароль сильним. [4]

Існують і математичні методи, що не зводяться до послідовного вгадування. У криптографії на еліптичних кривих (ECC) з приватного ключа можна обчислити публічний; знайти приватне значення у зворотному напрямку — складна задача дискретного логарифмування. SEC 2 описує параметри кривої secp256k1, яку використовує Bitcoin. Тому підрахунок усіх 256-бітних рядків не охоплює всіх шляхів атаки. NIST SP 800-57 розрізняє довжину ключа та стійкість захисту — оцінку зусиль для його подолання за певних припущень. Наявність математичного шляху не означає, що він практично простий. [5] [6]

Більше процесорів можуть розподілити незалежні спроби, але виграш також залежить від пам’яті й організації обчислень. Hashrate у майнінгу показує кількість обчислень для майнінгу, а не швидкість PBKDF2 чи операцій ECC. Важливо розрізняти вхід на сайт і копію резервного файлу. Сервіс може обмежити доступ після неправильних спроб. А той, хто отримав зашифрований файл, може перевіряти припущення offline на власному пристрої. Саме обмеження входу на сайті таких спроб не зупиняє. [3] [6]

Хто отримає весь seed, не мусить перебирати величезний набір варіантів. До такого самого наслідку може призвести шкідлива програма або помилка в програмі, яка працює з ключами. Отже, безпека не закінчується вибором непередбачуваного секрету: важливі його зберігання та використання. Коли чуєте оцінку часу злому, з’ясуйте, яку атаку мають на увазі, що зловмисник уже знає і як виміряли швидкість. Велике число саме собою не гарантує безпеки пристрою, а ця модель не обіцяє успішного відновлення втраченого гаманця. [6]

Для повної картини прочитайте також Cryptographic Entropy, Entropy Bit, Private Key, Seed Phrase. На цю статтю також посилаються Entropy Bit, Random Number Generator.

DOC · 001RFC 4086 — Secret distributions and guessingСпецифікація DOC · 002NIST SP 800-90B — Min-entropy and guessing costСпецифікація DOC · 003RFC 8018 — Salt, derivation cost and offline searchСпецифікація DOC · 004BIP39 — Passphrase derivation and valid seedsСпецифікація DOC · 005SEC 2 v2 — secp256k1 parametersСпецифікація DOC · 006NIST SP 800-57 Part 1 Rev. 5 — Security strength and key protectionСпецифікація
Переглянуто: Спочатку джерела · Не інвестиційна порада