Должен ли один и тот же генератор случайных чисел использоваться для нескольких криптографических операций?
Рекомендуется ли создавать экземпляр криптографически безопасного генератора случайных чисел OpenSSL или Crypto++, запускать его один раз и использовать его последовательно в нескольких криптографических операциях, таких как генерация ключей, шифрование, подписывание и т. Д.?
Будет ли это достаточно безопасно для многократного использования без ущерба для безопасности?
Считается ли безопасной практикой использовать разные ГПС для каждой операции и посеять их по-разному? Есть ли какие-то нюансы, которые следует учитывать?
1 ответ
Оставайтесь с тем же криптографически безопасным PRNG. Я знаю, что, кажется, есть смысл измениться, но это большая ошибка - применять здравый смысл, когда требуется высшая математика. Никогда не "раскручивайте свои" крипто, ни меняйте методы, ни делайте "улучшения", независимо от того, какой смысл они имеют. Придерживайтесь проверенных методов, проверенных алгоритмов и открытого исходного кода, написанного людьми с хорошей репутацией.
Криптографически защищенные PRNG сильно отличаются от стандартных PRNG, используемых для таких вещей, как моделирование по методу Монте-Карло. Они специально разработаны, чтобы быть непредсказуемыми, даже когда берется длинная последовательность значений. Если вы попытаетесь "улучшить" это путем переключения, вы, скорее всего, облажаетесь.
Кроме того, хорошие аппаратные истинные ГСЧ по своей природе криптографически безопасны, поэтому лучший вариант, если он у вас есть, - это использовать что-то вроде random.org.
Худшее, что вы можете сделать, - это менять PRNG каждый ключ. Теперь вы получаете не случайную последовательность, а последовательность, которая является хеш-функцией ваших семян, и настолько же хороша, как ваши семена и функция засева каждого PRNG.