Наша команда использует SecureRandom для генерации списка пар ключей (SecureRandom передается в KeyPairGenerator). Мы не можем договориться о том, какой из следующих двух вариантов использовать:
-
Создайте новый экземпляр каждый раз, когда нам нужно сгенерировать пару ключей
-
Инициализировать статический экземпляр и использовать его для всех пар ключей
Какой подход вообще лучше и почему?
ДОБАВЛЕНО: Чувствуется, что второй вариант более безопасен. Но мой единственный аргумент - теоретическая атака, основанная на предположении, что псевдослучайность выводится из текущей метки времени: кто-то может видеть время создания пары ключей, угадывать временные метки в окружающем временном интервале, вычислять возможные псевдослучайные последовательности и получать ключевой материал.
ДОБАВЛЕНО: мое предположение о детерминизме, основанном на отметке времени, было неправильным. Это разница между Random и SecureRandom. Итак, похоже, что ответ: с точки зрения безопасности это не имеет большого значения.