Как EJBCA генерирует закрытый ключ

Я ищу метод, используемый EJBCA для генерации закрытых ключей в целом (CA, Sub-Ca, сертификаты...).

Допустим, вы хотите, например, размер ключа RSA 2048. Все ли процесс генерации выполнен в приложении EJBCA? Они полагаются на случайную генерацию сервера приложений на основе Java EE (в моем случае Jboss)? Есть ли где-нибудь ссылка с локально реализованной генерацией случайных чисел, например, в Linux /dev/(u)random?

Каков уровень энтропии, и гарантируют ли они один?

1 ответ

Решение

Я получил ответ из списка рассылки 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).

Другие вопросы по тегам