В чем разница между DSA и RSA? - PullRequest
112 голосов
/ 15 мая 2010

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

Ответы [ 5 ]

82 голосов
/ 15 мая 2010

Проверьте Ответ AVA ниже .

Мой старый ответ кажется неправильным

24 голосов
/ 15 мая 2010

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

23 голосов
/ 25 февраля 2014

Ссылаясь, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html

RSA
RSA-шифрование и дешифрование являются коммутативными
следовательно, он может использоваться непосредственно в качестве схемы цифровой подписи
учитывая схему RSA {(e, R), (d, p, q)} * ​​1009 * чтобы подписать сообщение М, вычислите:
S = M мощность d (мод R)
чтобы проверить подпись, вычислите:
M = S power e (mod R) = M power e.d (mod R) = M (mod R)

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

DSA (алгоритм цифровой подписи)
DSA - это вариант алгоритмов Эль-Гамаля и Шнорра создает 320-битную подпись, но с 512-1024-битной безопасностью безопасность опять-таки зависит от сложности вычисления дискретных логарифмов был довольно широко принят

Генерация ключей DSA
сначала выбираются общие общие значения открытого ключа (p, q, g):
выберите большое простое число p = 2 степени L
где L = от 512 до 1024 битов и кратно 64
выберите q, 160-битный простой множитель p-1
выберите мощность g = h (p-1) / q
для любого h1
затем каждый пользователь выбирает закрытый ключ и вычисляет свой открытый ключ:
выберите х вычислить y = g power x (mod p)

Генерация ключей DSA связана, но несколько сложнее, чем El Gamal. Главным образом из-за использования вторичного 160-битного модуля q, используемого для помощи ускорить вычисления и уменьшить размер получаемой подписи.

Создание и проверка подписи DSA

подписать сообщение M
генерировать случайный ключ подписи k, k вычислить
r = (мощность g k (mod p)) (mod q)
s = k-1.SHA (M) + x.r (mod q)
отправить подпись (-и) с сообщением

для проверки подписи, вычислите:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = r.w (mod q)
v = (g power u1.y power u2 (mod p)) (mod q)
если v = r, то подпись проверяется

Создание подписи снова похоже на Эль-Гамаль с использованием за сообщение временный ключ подписи k, но выполняющий calc first mod p, затем мод q, чтобы уменьшить размер результата. Обратите внимание, что использование хеш-функция SHA здесь явно. Проверка также состоит из сравнивая два вычисления, опять же, немного сложнее, чем но связано с Эль Гамаль.
Обратите внимание, что почти все вычисления являются мод q, и следовательно, намного быстрее.
Но, в отличие от RSA, DSA можно использовать только для цифровых подписей

DSA Security
Наличие подсознательного канала существует во многих схемах (любой, для которых необходимо выбрать случайное число), а не только в DSA. Это подчеркивает необходимость «системной безопасности», а не просто хорошего алгоритма.

20 голосов
/ 05 июня 2013

Со ссылкой на man ssh-keygen длина ключа DSA ограничена ровно 1024 битами, чтобы оставаться совместимой с FIPS 186-2 NIST. Тем не менее, более длинные ключи DSA теоретически возможны; FIPS 186-3 явно позволяет им. Кроме того, безопасность больше не гарантируется с помощью ключей RSA или DSA длиной 1024 бита.

В заключение, 2048-битный ключ RSA в настоящее время является лучшим выбором.

больше мер предосторожности, чтобы принять

Установка безопасного SSH-соединения влечет за собой больше , чем выбор технологии безопасной пары ключей шифрования. Ввиду откровений Эдварда Сноудена об АНБ, нужно быть еще более бдительным, чем то, что ранее считалось достаточным.

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

6 голосов
/ 29 апреля 2016

И помимо приведенных выше приятных ответов.

  • DSA использует дискретный логарифм.
  • RSA использует целочисленную факторизацию.

RSA означает Рон R Ивест, Ади S Хамир и Леонард A Длеман.

...