Для ядра Linux запропонована реалізація /dev/random, позбавлена ​​прив'язки до SHA-1

Джейсон Доненфілд (Jason A. Donenfeld), автор VPN WireGuard, запропонував оновлену реалізацію генератора псевдовипадкових чисел RDRAND, що відповідає за роботу пристроїв /dev/random та /dev/urandom в ядрі Linux. Наприкінці листопада Джейсон був включений до числа мейнтейнерів драйвера random і тепер опублікував перші результати своєї роботи з його переробки.

Нова реалізація примітна переходом використання хеш-функции BLAKE2s замість SHA1 для операцій змішування ентропії. Зміна дозволила підвищити безпеку генератора псевдовипадкових чисел завдяки рятуванню від проблемного алгоритму SHA1 та виключенню перезапису вектора ініціалізації RNG. Оскільки алгоритм BLAKE2s випереджає SHA1 за продуктивністю, його застосування також позитивно позначилося на продуктивності генератора псевдовипадкових чисел (тестування системі з процесором Intel i7-11850H показало збільшення швидкості на 131%). Ще одним плюсом перекладу змішування ентропії на BLAKE2 стала уніфікація алгоритмів, що використовуються - BLAKE2 застосовується в шифрі ChaCha, що вже застосовується для отримання випадкових послідовностей.

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

Зміни намічені для включення до складу ядра 5.17 і вже рецензовані розробниками Ted Ts'o (другий мейнтейнер драйвера random), Greg Kroah-Hartman (відповідальний за підтримку стабільної гілки ядра Linux) та Jean-Philippe Aumasson (автор алгоритм)

Джерело: opennet.ru

Додати коментар або відгук