Вы говорите о шенноновской энтропии, где при равномерном распределении, достаточной длине строки и алфавита - энтропия будет высокой. А также его термин рассматривает строку без какого-либо контекста, и с теоретической точки зрения это верно, я даже не пытаюсь спорить, а тем более вводить термины и величины.
Я лишь говорю о криптостойкости на практике, ведь если мы введем контекст того, что есть утечка части выходов PRNG, то в таком случае распределение для атакующего уже не является равномерным, из-за чего неопределенность резко снижается.
Да, “реальная энтропия” - неудачная формулировка, правильнее было бы сказать "условная энтропия", с учётом информации, доступной атакующему.
Я не ставил цель в статье показать восстановление внутреннего состояния Mersenne Twister — это уже хорошо известная атака, и при желании её несложно воспроизвести. Мне было важнее объяснить, почему сам выбор генератора здесь принципиален. Возможно, чуть позже, я воспроизведу подобную атаку и расскажу о ней.
Что касается вопроса, для чего фокусироваться именно на свойстве генерации: Проблема не в том, откуда берётся seed. Даже если он получен из urandom, дальше мы имеем дело с детерминированнымPRNG. А значит, при утечке достаточного количества сгенерированных значений появляется возможность восстановить внутреннее состояние и предсказывать остальные.
Например, если в компании N, DevOps для генерации “динамических секретов” использует random, и происходит утечка нескольких тысяч паролей, то при отсутствии reseed’а это уже потенциально позволяет восстановить состояние генератора и предсказывать новые значения.
Аналогично, если есть сервис, который долго генерирует пароли на одном экземпляре MT19937 без reseed’а, то восстановление состояния даёт возможность узнать как будущие, так и прошлые пароли.
Да, в этих примерах должно совпасть довольно много условий, но это не отменяет принципиальной возможности такой атаки.
Поэтому акцент на процессе генерации важен: энтропия начального seed’а сама по себе не делает генератор криптографически стойким. Именно по этой причине для таких задач и существует secrets, а не random.
Вы говорите о шенноновской энтропии, где при равномерном распределении, достаточной длине строки и алфавита - энтропия будет высокой. А также его термин рассматривает строку без какого-либо контекста, и с теоретической точки зрения это верно, я даже не пытаюсь спорить, а тем более вводить термины и величины.
Я лишь говорю о криптостойкости на практике, ведь если мы введем контекст того, что есть утечка части выходов PRNG, то в таком случае распределение для атакующего уже не является равномерным, из-за чего неопределенность резко снижается.
Да, “реальная энтропия” - неудачная формулировка, правильнее было бы сказать "условная энтропия", с учётом информации, доступной атакующему.
Я не ставил цель в статье показать восстановление внутреннего состояния Mersenne Twister — это уже хорошо известная атака, и при желании её несложно воспроизвести. Мне было важнее объяснить, почему сам выбор генератора здесь принципиален. Возможно, чуть позже, я воспроизведу подобную атаку и расскажу о ней.
Что касается вопроса, для чего фокусироваться именно на свойстве генерации: Проблема не в том, откуда берётся
seed. Даже если он получен изurandom, дальше мы имеем дело с детерминированным PRNG. А значит, при утечке достаточного количества сгенерированных значений появляется возможность восстановить внутреннее состояние и предсказывать остальные.Например, если в компании N, DevOps для генерации “динамических секретов” использует random, и происходит утечка нескольких тысяч паролей, то при отсутствии
reseed’а это уже потенциально позволяет восстановить состояние генератора и предсказывать новые значения.Аналогично, если есть сервис, который долго генерирует пароли на одном экземпляре
MT19937безreseed’а, то восстановление состояния даёт возможность узнать как будущие, так и прошлые пароли.Да, в этих примерах должно совпасть довольно много условий, но это не отменяет принципиальной возможности такой атаки.
Поэтому акцент на процессе генерации важен: энтропия начального
seed’а сама по себе не делает генератор криптографически стойким. Именно по этой причине для таких задач и существуетsecrets, а неrandom.