Я понимаю, что PRNG — это генераторы случайных чисел, которые используют детерминированный алгоритм, основанный на семени.
Я также понимаю, что CSRNG — это PRNG, которые криптографически безопасны для использования для генерации случайных чисел.
А под криптографической безопасностью я полагаю, что это означает, что даже если злоумышленник знает детерминированный алгоритм и начальное число, он не сможет предсказать следующее случайное число. Я понимаю, что это связано с тем, что CSRNG также использует некоторые внутренние состояния.
Если в приведенном выше есть какие-либо ошибки, я буду признателен за разъяснение, потому что мои вопросы зависят от их точности.
Итак, мой главный вопрос: когда вам нужен PRNG? и когда вы должны использовать CSPRNG?
Мой первоначальный ответ на это заключался в том, что CSPRNG следует использовать при генерации ключей, но когда я искал «для чего используется prng», одна из найденных страниц была это в котором говорится, что:
В криптографии PRNG используются для создания сеансовых ключей и потоковых шифров.
Что оставляет меня немного в замешательстве, почему PRNG, который не является криптографически сильным, должен использоваться для ключей? Я бы ожидал, что вместо этого будет использоваться CSPRNG.
Это заставляет меня понять, что, возможно, я еще не полностью понимаю PRNG и CSPRNG и то, как они используются. Отсюда этот вопрос: в криптографии, когда именно используется PRNG и когда используется CSPRNG?