Вопрос или проблема
Я хочу сгенерировать пару ключей с помощью gpg2
2.1.11
и libgcrypt
1.6.5
.
Я использую команду gpg2 --expert --full-key-gen
. Это позволяет мне выбрать ECC:
Пожалуйста, выберите, какой тип ключа вы хотите:
(1) RSA и RSA (по умолчанию)
(2) DSA и Elgamal
(3) DSA (только подпись)
(4) RSA (только подпись)
(7) DSA (установите свои собственные возможности)
(8) RSA (установите свои собственные возможности)
(9) ECC и ECC
(10) ECC (только подпись)
(11) ECC (установите свои собственные возможности)
Я выбираю (9)
, а затем он спрашивает, какую ECC я хочу использовать:
Пожалуйста, выберите, какую эллиптическую кривую вы хотите:
(2) NIST P-256
(3) NIST P-384
(4) NIST P-521
(5) Brainpool P-256
(6) Brainpool P-384
(7) Brainpool P-512
Ваш выбор?
Поскольку я не знаю, какая из них безопасна и не предназначена для взлома, я поискал в интернете и нашел: https://safecurves.cr.yp.to Теперь я не знаю, насколько этот сайт надежен, но я также не знаю, где еще найти хороший источник информации по этому вопросу.
Предположим, что страница правильная и надежная, мне кажется, что GPG не предлагает ни одной безопасной кривой. Я сейчас в бедственном положении и обречен использовать небезопасную, или есть лучший источник информации по этому поводу?
Во-первых, опции для генерации ключа с помощью gpg
предоставляют вам возможность создать ваш Master (сертифицирующий) ключ одновременно с подписью на шифрование. Это опции для (1), (2) и (9). В противном случае вы создаете один ключ и настраиваете его возможности.
Вам нужно учитывать компромиссы современных криптосистем и программного обеспечения, которое их поддерживает. Большинство GPG ключей сегодня все еще используют корневой RSA ключ для поддержания обратной совместимости с клиентским программным обеспечением, которое еще не поддерживает ECC. Мне еще не встречались смарт-карты или безопасные элементы, которые предлагают кривые Ed25519. Если вы используете HSM, вероятно, вы по-прежнему ограничены кривыми NIST, и P-256 в частности.
Из кривых ECC кривые NIST имеют наибольшую поддержку. [Примечание: Вы можете прочитать этот вопрос, чтобы понять беспокойство вокруг параметров NIST: https://crypto.stackexchange.com/questions/10263/should-we-trust-the-nist-recommended-ecc-parameters]
Если бы я использовал смарт-карты, я бы использовал кривые NIST с наибольшим размером ключа, который разрешает смарт-карта. Если бы я не использовал смарт-карты, я бы использовал кривую Ed25519.
Ответ или решение
При выборе алгоритма эллиптической криптографии (ECC) для использования с GPG важно учитывать несколько факторов, включая безопасность, совместимость и поддерживаемые варианты. Я дам вам полное объяснение, чтобы вы смогли сделать осознанный выбор.
1. Доступные варианты
Вы уже заметили, что при запуске команды gpg2 --expert --full-key-gen
у вас есть следующие опции для выбора ECC:
- NIST P-256 (то есть, кривые, рекомендованные NIST, размер ключа 256 бит)
- NIST P-384 (размер ключа 384 бит)
- NIST P-521 (размер ключа 521 бит)
- Brainpool P-256, P-384, P-512 (альтернативные кривые с другими параметрами)
2. Безопасность кривых
Как вы упомянули, вы получили информацию с сайта SafeCurves, который действительно является надежным источником для сравнения и оценки безопасности различных эллиптических кривых.
На момент написания этого ответа все кривые, представленные в GPG, имеют свои плюсы и минусы:
- NIST P-256: Наиболее широко используемая и поддерживаемая кривая, хотя есть опасения по поводу ее безопасности и возможности "задней двери".
- NIST P-384 и P-521: Обеспечивают более высокий уровень безопасности, но более медленно обрабатываются.
- Brainpool: Неплохой вариант, но менее распространен и поддерживается по сравнению с NIST.
3. Рекомендации
Если ваше основное беспокойство – безопасность, а вы также учитываете совместимость, вот несколько рекомендаций:
- Используйте NIST P-384: Это хороший компромисс между безопасностью и производительностью, который также имеет широкую поддержку.
- Избегайте DSA и Elgamal: RSA и ECC сейчас предпочтительнее из-за меньшего размера ключей и большей эффективности.
Для генерации ключа можно выбрать следующее:
- Выберите ECC/ECC (9).
- Затем выберите NIST P-384 (3) для максимальной безопасности среди доступных опций.
4. Совместимость с современным оборудованием
Если вы собираетесь использовать аппаратные модули безопасности (HSM) или смарт-карты, вы можете столкнуться с ограничениями на выбор кривых. Большинство современных HSM поддерживает NIST-кривые, поэтому в этом случае рекомендуется использовать P-384 при наличии такой возможности.
Заключение
Выбор эллиптической кривой зависит от ваших конкретных потребностей в безопасности, совместимости и производительности. Используйте NIST P-384 для сильной безопасности и хорошей совместимости, особенно если ваше приложение требует высокой степени надежности.
Следите за тем, чтобы все используемое программное обеспечение и оборудование были обновлены, и периодически пересматривайте ваши криптографические практики. Надеюсь, это поможет вам сделать информированный выбор!