Советы по созданию сильных ключей RSA

Есть ли документация, включая советы по созданию надежного ключа RSA?

Я имею в виду не просто "использовать утилиту XXX с флагом -X".

Я имею в виду некоторые правила в теории. Например, модуль n должен быть не менее 1024 бит и т. Д.

Кто-нибудь может сказать мне?

2 ответа

Решение

В ответ на ваш вопрос есть такая документация: согласно стандарту ANSI X9.31 для генерации ключей RSA для цифровых подписей требуются сильные простые числа. Это делает факторизацию n = p q с использованием алгоритма Полларда p-1 вычислительно невозможной. Однако сильные простые числа не защищают от факторизации модуля с использованием более новых алгоритмов, таких как факторизация эллиптической кривой Ленстры и алгоритм сита числового поля.

Версия 4 часто задаваемых вопросов Лаборатории RSA о современной криптографии была опубликована в 1998 году и может быть найдена здесь ftp://ftp.rsa.com/pub/labsfaq/labsfaq4.pdf Пожалуйста, обратите внимание на следующие вопросы:

Вопрос 3.1.4. Каковы сильные простые числа и необходимы ли они для RSA?

В литературе, относящейся к RSA, часто предлагалось, что при выборе пары ключей следует использовать так называемые "сильные" простые числа p и q для генерации модуля n. Сильные простые числа имеют определенные свойства, которые затрудняют факторинг продукта конкретными методами факторинга; такие свойства включают, например, существование большого простого множителя p-1 и большого простого множителя p+1. Причиной такого беспокойства является то, что некоторые методы факторинга (например, методы Полларда p-1 и p + 1, см. Вопрос 2.3.4) особенно подходят для простых чисел p, таких что p-1 или p + 1 имеют только небольшие факторы; сильные простые числа устойчивы к этим атакам. Однако прогресс в факторинге за последние десять лет, по-видимому, устранил преимущество сильных простых чисел; алгоритм факторинга эллиптической кривой является одним из таких достижений. Новые методы факторинга имеют столь же хорошие шансы на успех на сильных простых числах, как и на "слабых" простых. Поэтому выбор одних только традиционных "сильных" простых чисел существенно не повышает безопасность. Выбор достаточно больших простых чисел - вот что важно. Однако использование сильных больших простых чисел не представляет опасности, хотя генерация сильного простого числа может занять немного больше времени, чем произвольное простое. Возможно, что в будущем могут быть разработаны новые алгоритмы факторинга, которые снова нацелены на простые числа с определенными свойствами. Если это произойдет, выбор сильных простых чисел может снова помочь повысить безопасность.

Вопрос 3.1.5. Какого размера ключ должен использоваться в RSA?

Размер ключа RSA обычно относится к размеру модуля n. Два простых числа p и q, составляющие модуль, должны иметь примерно одинаковую длину; это усложняет вычисление модуля, чем если бы одно из простых чисел было намного меньше другого. Если кто-либо решит использовать 768-битный модуль, каждое из простых чисел должно иметь длину приблизительно 384 бита. Если два простых числа чрезвычайно близки (идентичны, за исключением, скажем, 100 - 200 бит) или, в более общем случае, если их разность близка к любой заранее определенной величине, то существует потенциальный риск безопасности, но вероятность того, что два случайно выбранных простых числа так близко ничтожно. Лучший размер для модуля RSA зависит от потребностей безопасности. Чем больше модуль, тем выше безопасность, но также и медленнее операции RSA. Нужно выбрать длину модуля при рассмотрении, во-первых, ценности защищаемых данных и того, как долго они должны быть защищены, и, во-вторых, насколько мощными могут быть потенциальные угрозы.

По состоянию на 2010 год самый большой факторизованный номер RSA имел длину 768 бит (232 десятичных знака). Его факторизация с помощью современной распределенной реализации заняла около полутора тысяч процессорных лет (два года реального времени на многих сотнях компьютеров). Это означает, что на данный момент более большой ключ RSA не был учтен. На практике ключи RSA обычно имеют длину от 1024 до 2048 бит. Некоторые эксперты считают, что 1024-битные ключи могут стать хрупкими в ближайшем будущем; мало кто видит, как 4096-битные ключи могут быть сломаны в обозримом будущем. Следовательно, обычно предполагается, что RSA является безопасным, если n достаточно велико.

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

По сути, вам нужно выбрать самую широкую ширину ключа, совместимую с программным обеспечением, которое вы будете использовать.

В настоящее время рекомендуется придерживаться минимального 2048-битного RSA с 2014 года. Это зависит от:

  1. Скорость и частота использования
  2. Что вы защищаете
  3. Максимальная ширина, поддерживаемая вашим программным обеспечением

Если взломанный ключ - это просто неудобство, которое не влияет на ваши финансы или здоровье, то вы можете ошибиться в сторону удобства. Но если вы действительно заботитесь о конфиденциальности, используйте самый сильный ключ, который вы можете выдержать (не менее 2048).

Хорошим документом является OpenPGP Best Practices

https://we.riseup.net/riseuplabs+paow/openpgp-best-practices

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