Я ищу метод, используемый EJBCA для генерации закрытых ключей в целом (CA, Sub-Ca, сертификаты ...).
Скажем, например, вам нужен размер ключа RSA 2048. Все ли выполняется в приложении EJBCA? Полагаются ли они на случайную генерацию сервера приложений на основе Java EE (в моем случае Jboss)? Есть ли где-нибудь ссылка на локально реализованную генерацию случайных чисел, например, в Linux / dev / (u) random?
Каков уровень энтропии, и гарантируют ли они ее?
Я получил ответ из списка рассылки EJBCA, а также взял информацию из исходного кода.
Возможно, это поможет кому-то другому, поэтому я вставлю здесь ответ.
Базовый метод, используемый EJBCA для генерации закрытого ключа, осуществляется через класс Java java.util.Random и класс java.security.SecureRandom.
В коде EJBCA ключ генерируется методом createCryptoToken из класса CryptoTokenManagementSessionBean, который использует SecureRandom () из файловых модулей / cesecore-ejb / src / org / cesecore / keys / token / CryptoTokenManagementSessionBean.java.
В конце реализация OpenJDK SecureRandom использует / dev / random. Итак, общая энтропия - это энтропия / dev / random. Существует множество способов улучшить его энтропийный пул. Решение - использование аппаратного токена.
NB: Здесь это применимо только к системе без HSM (в этом случае ключ генерируется в HSM, поэтому он зависит от HSM) и работает в Linux (и, скорее всего, в системе с / dev / random, так что семейство BSD).