Что лучше для ключей GPG - RSA или DSA?

58

ssh-keygenпо умолчанию создает ключи RSA, но gpg --gen-keyпредпочитает DSA / ElGamal.

Какой из них - RSA или DSA - лучше для GPG?

grawity
источник
1
См. Также этот вопрос StackOverflow, а также мой ответ на дубликат этого вопроса, в котором объясняется, почему RSA значительно более безопасен, чем DSA, как в 2010 году, так и с известными на сегодняшний день уязвимостями (все из которых предназначены для DSA).
Адам Кац

Ответы:

25

RSA и DSA - неправильные представления и полезная информация содержат
пару старыхссылок на RSA и недавнююссылку на DSA ,


В 2003 году RSA против DSA подписей - Победитель ... - RSA .

Таким образом, генерация ключей невероятно быстрее для DSA, что имеет смысл, если вы понимаете алгоритмы. Подписание также быстрее для DSA, но не так сильно. Большая сила RSA - проверка, которая намного быстрее, чем DSA .

Недавний проект IETF: DSA с SHA-2 для DNSSEC , срок действия истекает 7 января 2010 г. У
него есть некоторые причины для продвижения DSA через RSA сегодня.

Использование DSA с SHA-256 в DNSSEC имеет некоторые преимущества и недостатки по сравнению с использованием RSA с SHA-256 при использовании 2048-битных ключей. Подписи DSA намного короче, чем подписи RSA ; при этом размере разница составляет 512 бит по сравнению с 2048 битами. На типичных платформах, использующих 2048-битные ключи, подписывание DSA происходит примерно в три раза быстрее, чем для RSA, но проверка подписей RSA более чем в десять раз быстрее, чем для DSA .

Криптографическая стойкость DSA, как правило, считается эквивалентной RSA, когда открытый ключ DSA и открытые ключи RSA имеют одинаковый размер. Такая оценка, конечно, может измениться в будущем, если будут найдены новые атаки, которые лучше работают с тем или иным алгоритмом.

В настоящее время нет известных атак на конкретный набор параметров DSA, выбранных для этого документа. Такая оценка, конечно, может измениться в будущем.

Но это только черновик на данный момент.

Все любят скорость проверки RSA (!).

Nik
источник
6

Цитирую обсуждение на форуме :

Мой совет - использовать ключ подписи RSA («первичный» или «главный» ключ) и подключ RSA для шифрования. Причина использования RSA для подписи в основном потому, что RSA позволяет вам использовать большие хэши, чем DSA. DSA2 также позволяет использовать большие хэши, но RSA поддерживается на много лет дольше, чем DSA2.

Я думаю, что если вы используете его стандартным способом (то есть вы не шифруете огромное количество данных), они оба преуспеют.

Я лично выбрал бы RSA, потому что я изучил алгоритм, и это один из самых красивых алгоритмов, которые я когда-либо видел.

Адам Матан
источник
4

Также использование алгоритмов SHA-2 возможно и разрешено начиная с текущей версии DSS; но я не смог выяснить, какая версия GPG следует.

Относительно текущей спецификации DSS ( FIPS-186-3 , стр. I) может использоваться любая хеш-функция, указанная в SHS (FIPS-180-3, стр. Iv):

DSS:

Утвержденные FIPS алгоритмы цифровой подписи должны использоваться с соответствующей хеш-функцией, указанной в SHS.

SHS:

В настоящем стандарте определены пять алгоритмов безопасного хеширования - SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512 - для вычисления сжатого представления электронных данных (сообщения).


На вопрос: оба алгоритма основаны на математических задачах, которые не доказали свою безопасность (RSA использует проблему факторизации чисел, а DSA использует проблему дискретного логарифма), вы не можете сказать, что один является более безопасным, чем другой, потому что не один Ни та, ни другая проблема не были решены.

Но при использовании DSA с SHA-1 у вас могут возникнуть проблемы с безопасностью, как уже говорилось в pgs .

Мануэль Фо
источник
1

Дело в том, что это, вероятно, не имеет большого значения для вас :) В рамках подготовки к генерации пары ключей и в рамках поддержки существующих пар ключей - независимо от того, какую асимметричную криптографию вы выбираете, вы должны быть: 1) проверять текущий рекомендуемый длина ключей 2) выбрал базу / модуль по оптимизации для подписи или проверки - в зависимости от того, что будет происходить чаще (ключи, которые будут использоваться при выдаче сертификатов сервера TLS / SSL, должны быть оптимизированы для проверки, поскольку каждый веб-браузер будет проверять подпись ... ключи, используемые для подписи программного обеспечения, должны быть оптимизированы аналогичным образом) 3) убедитесь, что вы стареете свои ключи - использовали один и тот же ключ для ssh-auth в течение нескольких лет, возможно, пришло время восстановить его, даже если вы выбрали ключ размер, который все еще является разумным для приложения сегодня.

Оба RSA и DSA были в значительной степени оценены; если вы используете надежную кодовую базу (RSAREF, реклама RSA, Mozilla / Netscape, Microsoft, OpenSSL, ...), то вам, вероятно, все равно, какую криптосистему вы используете, если вы используете ее правильно и используете текущие рекомендации

Баран
источник