Рейтинг:2

Хороший асимметричный алгоритм для Java keytool по состоянию на 2021 г.

флаг ke

Хотя я ожидаю получить критику за термин «лучший», некоторые алгоритмы широко считаются лучшими, чем другие, практически для всех целей. Например, DES больше не считается безопасным.

Мой особый проблема в том, что я хочу использовать ключевой инструмент создать хранилище ключей Java, содержащее асимметричный ключ, и не знать, какой алгоритм использовать. Здесь есть список: https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Cipher , но не дает рекомендаций — и содержит вышеупомянутый DES, так что не все они одинаково хороши.

Кроме того, я попробовал несколько, для которых я получил «KeyPairGenerator недоступен».

У меня есть команда для генерации ключа:

keytool -genkey -keyalg RSA -alias server -keystore selfsigned.jks -validity 1000 -keysize 2048

Это может быть хорошо, но я на самом деле не знаю, так или иначе.

kelalaka avatar
флаг in
Не понятно чего вы хотите! вы хотите симметричный (ссылка) или асимметричный (тег)? По ссылке очевидным выбором является AES с 256-битным ключом.
dave_thompson_085 avatar
флаг cn
Единственным асимметричным _Cipher_, поддерживаемым хранилищем ключей и keytool в Java, является RSA (по крайней мере, до PQC, а возможно, и после); Существует несколько алгоритмов _Signature_, и я назову вам «лучший» после того, как вы сообщите нам, какой цвет одежды лучше всего носить людям (всем людям, везде и всегда, для всех целей), поскольку известны некрасивые цвета и, следовательно, ваша логика должна быть ровно одна лучшая.
Рейтинг:2
флаг in

DES — симметричный шифр. Как правило, хранилище ключей Java используется/пригодно только для пар асимметричных ключей, а если быть точнее, для пар асимметричных ключей с сопровождающим сертификатом, чтобы оно стало полезным. Да, RSA по-прежнему считается хорошим алгоритмом, хотя я бы рекомендовал 3072-битную пару ключей для 128-битной защиты.

Обратите внимание, что RSA не является квантовобезопасным, поэтому не используйте его для обеспечения долгосрочной (скажем, более 10 лет) безопасности. Имейте в виду, что по умолчанию Java использует довольно плохой метод для получения ключа из пароля, а затем 3DES для защиты самого хранилища ключей, даже если используются хранилища ключей PKCS#12. Поэтому убедитесь, что вы защитили сам файл и выбрали надежный пароль (т. е. сгенерированный с помощью генератора паролей, например, из базы данных паролей).

knaccc avatar
флаг es
Кстати, если вы хотите использовать PBEWithHmacSHA512AndAES_256 вместо 3DES по умолчанию для защиты ключей, хранящихся в хранилище ключей PKCS#12, их необходимо добавить программно, а не использовать keytool в командной строке. См. https://stackoverflow.com/a/47389384.
dave_thompson_085 avatar
флаг cn
API хранилища ключей требует сертификата для асимметричного, как вы говорите, а keytool генерирует самозаверяющий сертификат, и единственным асимметричным алгоритмом (в настоящее время), способным как к прямому шифрованию, так и к подписи, является RSA; также поддерживаются несколько алгоритмов только для подписи. @knaccc: это устарело; начиная с 8u301 (если указать тип хранилища, pkcs12 не используется по умолчанию для 8) 11.0.12 и 16 и выше, по умолчанию для pkcs12 действительно используется HmacSHA512-AES256; см. примечания к выпуску. (И поскольку он использует PBES2, его нельзя прочитать из-за ошибки в более старых версиях 8 и ниже, а также в 9 и 10, но они «мертвые».)
knaccc avatar
флаг es
@dave_thompson_085 Спасибо, здорово! Файл java.security очень интересен. Похоже, что по умолчанию в моем JDK используется keystore.pkcs12.keyProtectionAlgorithm = PBEWithHmacSHA256AndAES_256 с keystore.pkcs12.keyPbeIterationCount = 10000.
Maarten Bodewes avatar
флаг in
Да, но 10000 — это довольно мало, и обратите внимание, что PKCS#12 на самом деле требует нескольких запусков этого алгоритма, в любом случае в прошлый раз, когда я смотрел на него. Вероятно, лучше увеличить до миллиона или более, если вы не используете сгенерированный пароль.
kelalaka avatar
флаг in
У меня есть итерация 383233 на Luks, и с 4 ядрами они могут тестировать не более 11 паролей в секунду с помощью PBKDF2-SHA1.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.