Що краще для GPG-ключів - RSA або DSA?


58

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

Який з них - RSA або DSA - краще для GPG?


1
Дивіться також це питання StackOverflow , а також мою відповідь на дублікат цього питання, в якому йдеться про те, чому RSA є значно безпечнішим, ніж DSA, як у 2010 році, так і з відомими сьогодні вразливими місцями (усі вони стосуються DSA).
Адам Кац

Відповіді:



25

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


У 2003 році RSA проти DSA Signatures - Переможець - ... - 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 (!).



6

Цитування дискусії на форумі :

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

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

Я особисто вибрав RSA, тому що я вивчив алгоритм, і це один з найкрасивіших алгоритмів, який я коли-небудь бачив.


4

Також використання алгоритмів SHA-2 можливе та дозволено з моменту поточного перегляду DSS; але мені не вдалося з’ясувати, яка редакційна GPG випливає.

Що стосується поточної специфікації DSS ( FIPS-186-3 , p. I), будь-яка хеш-функція, визначена в SHS (FIPS-180-3, p. 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, ...), то вам, мабуть, все одно, яку криптосистему ви використовуєте, поки ви правильно її використовуєте та використовуєте поточні найкращі практики

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.