EMZETT.
Войти

Энтропия в криптографии

Коротко: Энтропия измеряет, насколько непредсказуемо значение. Надёжным ключам нужна энтропия, то есть настоящая случайность, которую злоумышленник не может угадать.

Подробнее: Измеряется в битах: значение с n битами энтропии можно угадать лишь примерно за 2ⁿ попыток. «128-битный ключ» от предсказуемого генератора случайных чисел на деле содержит куда меньше.

Подробности

  • Источники: Тайминги нажатий клавиш и движений мыши, события диска и сети, аппаратный шум, команды CPU вроде RDRAND.
  • Операционная система: Ядро собирает энтропию в пул и выдаёт из него надёжные случайные числа через /dev/urandom и getrandom(). Современные ядра Linux умеют это и вскоре после загрузки.
  • Проблемные случаи: У виртуальных машин и маленьких устройств сразу после загрузки мало энтропии. Клонированные образы ВМ выдают одинаковые случайные числа.
  • Пароли: Пароль из 4 случайных слов из 7776 (Diceware) содержит около 51 бита, придуманный шаблон — гораздо меньше.
  • Правило: Для ключей использовать только криптографически стойкие функции платформы (secrets, crypto.getRandomValues), никогда не rand() и не Math.random().

См. также: случайные числа: псевдослучайные и истинно случайные