Похоже, что оба алгоритма шифрования требуют открытого и закрытого ключей. Почему я должен выбрать одно вместо другого, чтобы обеспечить шифрование в моем клиент-серверном приложении?
encryption
rsa
key
dsa
WilliamKF
источник
источник
Ответы:
Ссылаясь, 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 ниже .
Мой старый ответ кажется неправильным
источник
Кстати, вы не можете зашифровать с помощью DSA, только подпишите. Хотя они математически эквивалентны (более или менее), вы не можете использовать DSA на практике как схему шифрования, только как схему цифровой подписи.
источник
Что касается
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-keygen
RHEL).И в дополнение к вышеупомянутым приятным ответам.
RSA означает Рон R Ivest, Ади S Хамир и Леонард А dleman.
источник