У криптографії ентропія описує невизначеність, яка залишається зловмиснику під час вгадування таємного значення. Для гаманця Bitcoin вона важлива вже при створенні основи його ключів. Справа не в тому, чи складно виглядають символи, а в тому, скільки результатів було насправді можливими, якими були їхні ймовірності та що зловмисник знає про процес.
Уявіть секрет, створений із дати й часу відкриття гаманця. Після кодування він може виглядати як довга суміш символів. Але якщо зловмисник знає приблизний час і спосіб, йому може вистачити перевірки невеликого набору варіантів. Довший запис не обов’язково ускладнить йому роботу. Саме тому RFC 4086 розрізняє непередбачуваність і лише видимість випадковості. Оцінити ентропію, просто глянувши на один ключ, не можна: потрібно знати, як він виник. [3]
Біт — основна одиниця запису даних зі значенням 0 або 1. Сама кількість бітів не показує, скільки невизначеності залишається зловмиснику. Коли гаманець створює Seed Phrase за BIP39, спочатку потрібні випадкові вхідні дані. Лише потім він перетворює їх на слова. Для 12 слів це 128 бітів входу та 4 біти контрольної суми; для 24 слів — 256 бітів входу та 8 контрольних бітів. Контрольна сума допомагає виявити деякі помилки запису, але не додає ентропії: її обчислюють з уже наявного входу. Тому довший список не виправить погано згенеровану випадковість. Важливо, як створено резервну копію, а не лише скільки в ній слів. [4]
Гаманцю не потрібно робити нове фізичне вимірювання для кожного наступного байта, тобто групи з 8 бітів. Він може використовувати криптографічний генератор DRBG — алгоритм, що створює нові значення з таємного початкового стану. За правильного проєктування й використання передбачити результати без знання стану складно. Водночас алгоритм детермінований: однаковий повний стан і однакові входи дають однакове продовження. Отже, більше створених байтів не означає автоматично більше нової фізичної ентропії. Важливі і якість початкового входу, і захист внутрішнього стану. [2]
Хеш-функція обчислює з даних відбиток сталої довжини, який може здаватися випадковим. Але той, хто знає вхід, може обчислити такий самий результат. Повністю відомі дані так не стають секретом. Технічний термін conditioning означає обробку, яка може зменшити нерівномірність і зосередити вже наявну невизначеність. Це не створення секрету з нічого. Так само не можна автоматично додавати ентропію кількох джерел: вони можуть бути пов’язані й давати ту саму інформацію. [1] [3]
Електронне джерело шуму може зламатися або змінити поведінку під впливом довкілля. Тому NIST SP 800-90B вимагає перевірок необробленого шуму під час запуску й роботи, ще до подальшої обробки. Ці перевірки шукають ознаки збоїв; вони не доводять безпечність кожного результату. Розробник має розуміти джерело, його обмеження та можливі залежності. Про виявлений збій слід повідомити застосунок, який використовує дані. За стійкої несправності джерело має припинити видавати результати. Самої наявності чипа з назвою «генератор випадковості» недостатньо. [1]
Якщо зловмисник отримає внутрішній стан DRBG, то залежно від конструкції зможе передбачати наступні результати. Для повернення непередбачуваності потрібно достатньо нових даних, невідомих зловмиснику; таке додавання ентропії називають reseeding. Саме продовження обчислень або додавання відомого часу цього захисту не гарантує. І розрізняйте відновлення генератора та безпеку попередніх коштів: відновлений генератор не робить уже розкритий ключ недійсним. [2]
Статистичний тест може показати, наприклад, підозрілі повторення. Але він не визначить напевно, чи знає зловмисник таємний вхід або спосіб передбачити результат. NIST SP 800-22 прямо вказує на це обмеження. Тести — корисна частина перевірки, а не заміна аналізу всього генератора. Файл із начебто випадковими числами сам по собі не доводить безпеку гаманця. [5]
Початківцю не потрібно вручну обчислювати ентропію свого гаманця. Корисніше шукати документований процес створення: звідки береться випадковість, як її обробляють, як реагують на помилки та захищають секрети. NIST SP 800-90C якраз розглядає поєднання джерел ентропії та DRBG у повний генератор. Але посилання на стандарт чи відомий чип ще не доводить, що конкретна версія гаманця використовує його правильно. Вирішальними є підтверджені властивості реальної реалізації. [1] [6]
Для повної картини прочитайте також Entropy Bit, CSPRNG, Dice Roll Entropy, Private Key. На цю статтю також посилаються BIP85, Dice Roll Entropy, Entropy Bit, Brute Force Search Space.