485 / 691MIX-H

Entropy Mixing

Змішування ентропії

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

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

NIST SP 800-90B зазначає, що спільну ентропію залежних джерел важко оцінити. Час надходження пакетів і доступу до диска може бути пов’язаний. Тому окремі оцінки не можна просто додати без задокументованої моделі. [NIST SP 800-90B — Additional noise sources]

RFC 4086 використовує XOR як простий приклад змішування. Незалежний рівномірний вхід зберігає рівномірність результату, але копія того самого входу дає X XOR X = 0. Це ілюстрація залежності, а не рецепт побудови гаманця. [RFC 4086 — Mixing and randomness requirements]

Сильне змішування може зосередити наявну невизначеність; детермінований хеш відомих входів залишається передбачуваним. RFC 4086 розрізняє змішування і розгортання. Довжина результату та додавання відомої сталої не доводять відповідної кількості нової ентропії. [RFC 4086 — Mixing and randomness requirements]

NIST SP 800-90B дозволяє приєднати додаткові шумові входи до основного джерела через схвалене кондиціювання, але в цьому режимі не зараховує їм додаткової ентропії. Це правило оцінювання, а не твердження, що інші джерела ніколи не допомагають. [NIST SP 800-90B — Additional noise sources]

В OpenSSL 3.5 RAND_add() змішує num байтів; randomness оцінює ентропію в байтах від нуля до num. Довжина буфера не обґрунтовує оцінку. Типовий генератор зазвичай автоматично ініціалізується й оновлюється із системних джерел. [OpenSSL 3.5 — RAND_add and FIPS reseeding]

Документація OpenSSL 3.5 пояснює: у режимі FIPS дані застосунку є лише додатковим входом, а не довіреним джерелом ентропії. Домішування не зараховується як повний reseed. Сам виклик RAND_add() тому не підтверджує такого оновлення. [OpenSSL 3.5 — RAND_add and FIPS reseeding]

RFC 5869 розрізняє HKDF-Extract та HKDF-Expand. Перший зосереджує вхідну ентропію, другий виводить потрібну довжину. Параметр info прив’язує результат до контексту застосунку; він не замінює якісного початкового матеріалу й не доводить нової ентропії. [RFC 5869 — HKDF extraction, expansion and independence]

Перевірка має визначити походження входів, залежності, можливості нападника й конкретний механізм. RFC 5869 прямо розглядає незалежність та маніпулювання сіллю. Перелік джерел або тест випадкового вигляду не доводить безпеки конструкції після відмови джерела. [RFC 5869 — HKDF extraction, expansion and independence]

Для повної картини прочитайте також Cryptographic Entropy, CSPRNG, True Random Number Generator, Seed Generation. На цю статтю також посилаються Dice Roll Entropy, True Random Number Generator.

DOC · 001NIST SP 800-90B — Additional noise sourcesСпецифікація ↗DOC · 002RFC 4086 — Mixing and randomness requirementsСпецифікація ↗DOC · 003OpenSSL 3.5 — RAND_add and FIPS reseedingДокументація ↗DOC · 004RFC 5869 — HKDF extraction, expansion and independenceСпецифікація ↗
Спочатку джерела · Не інвестиційна порада