В чем разница между DSA и RSA?

114

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

WilliamKF
источник
3
Как сказал Анри , DSA не для шифрования, а только для подписи.
Samveen
Возможный дубликат В чем разница между id_rsa.pub и id_dsa.pub?
Адам Кац

Ответы:

27

Ссылаясь, 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)}
для подписи сообщения M, вычислить:
S = M power d (mod R)
для проверки подписи вычислить:
M = S power e (mod R) = M power ed (mod R) = M (mod R)

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

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

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

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

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

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

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

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

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

AVA
источник
ссылка на вашу ссылку не работает
Пол Винц
82

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

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

SDReyes
источник
Значит ли это, что если объем данных для шифрования велик, он будет работать быстрее при использовании RSA?
WilliamKF
2
Нет, наоборот. DSA быстрее подписывается (что математически более или менее равно шифрованию), поэтому, если вам нужно много шифровать и часто расшифровывать, DSA работает быстрее.
Анри
На стороне клиента нужно зашифровать много данных, но на сервере они дешифруются только один раз, так что DSA по-прежнему выигрывает?
WilliamKF
30
DSA не шифрует. Повторяю, DSA не шифрует. Вот тест: что означает буква S в DSA?
Президент Джеймс К. Полк
4
@GregS Возможность шифрования RSA по сравнению с невозможностью шифрования DSA - это в основном вопрос терминологии. Мы называем несколько различных алгоритмов RSA, некоторые из которых подписываются (например, RSA-PSS), некоторые из которых шифруют (например, RSA-OAEP). Но мы дали каждому алгоритму в групповой криптографии другое имя, назвав один из алгоритмов шифрования шифрованием Эль-Гамаля и назвав один из алгоритмов подписи DSA.
CodesInChaos
24

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

Henri
источник
20

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

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

ДОПОЛНИТЕЛЬНЫЕ МЕРЫ ПРЕДОСТОРОЖНОСТИ

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

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

Серж Строобандт
источник
Некоторые старые версии также ssh-keygenпозволяют использовать ключи другого размера в битах (я сам использую 2048-битный ключ DSA, сгенерированный с помощью ssh-keygenRHEL).
Samveen
6

И в дополнение к вышеупомянутым приятным ответам.

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

RSA означает Рон R Ivest, Ади S Хамир и Леонард А dleman.

Премрадж
источник