Я ищу метод, используемый 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).