Какой алгоритм криптографии на эллиптических кривых (ECC) выбрать с GPG?

Вопрос или проблема

Я хочу сгенерировать пару ключей с помощью 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 сейчас предпочтительнее из-за меньшего размера ключей и большей эффективности.

Для генерации ключа можно выбрать следующее:

  1. Выберите ECC/ECC (9).
  2. Затем выберите NIST P-384 (3) для максимальной безопасности среди доступных опций.

4. Совместимость с современным оборудованием

Если вы собираетесь использовать аппаратные модули безопасности (HSM) или смарт-карты, вы можете столкнуться с ограничениями на выбор кривых. Большинство современных HSM поддерживает NIST-кривые, поэтому в этом случае рекомендуется использовать P-384 при наличии такой возможности.

Заключение

Выбор эллиптической кривой зависит от ваших конкретных потребностей в безопасности, совместимости и производительности. Используйте NIST P-384 для сильной безопасности и хорошей совместимости, особенно если ваше приложение требует высокой степени надежности.

Следите за тем, чтобы все используемое программное обеспечение и оборудование были обновлены, и периодически пересматривайте ваши криптографические практики. Надеюсь, это поможет вам сделать информированный выбор!

Оцените материал
Добавить комментарий

Капча загружается...