В чем разница между ключами RSA, DSA и ECDSA, которые использует ssh?

13

В моем /etc/ssh/каталоге я вижу три типа ключей ssh:

-rw------- 1 root root    607 Oct  4 22:43 ssh_host_dsa_key
-rw-r--r-- 1 root root    623 Oct  4 22:43 ssh_host_dsa_key.pub
-rw------- 1 root root    241 Oct  4 22:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    194 Oct  4 22:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root   1602 Oct  4 22:43 ssh_host_rsa_key
-rw-r--r-- 1 root root    378 Oct  4 22:43 ssh_host_rsa_key.pub

Каковы различия между ключами RSA, DSA и ECDSA в ssh, и нужны ли мне все три?

fouric
источник

Ответы:

9

Это ключи, созданные с использованием разных алгоритмов шифрования. Вы можете выбрать использование разных форм шифрования при использовании SSH, что несколько похоже на возможность выбирать разные методы шифрования для WiFi (WPA2, WPA, WEP и т. Д.).

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

Ваш компьютер отправляет обратно свой собственный открытый ключ RSA из файла ключа, который вы указали в своем вопросе. Серверу нужен этот ключ, чтобы вернуться к вам и ответить.

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

Вот некоторые дополнительные ресурсы:

/security/5096/rsa-vs-dsa-for-ssh-authentication-keys

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/RSA_(algorithm)

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

http://en.wikipedia.org/wiki/Elliptic_Curve_DSA

Zoasterboy
источник
2
Вы кратко рассказали, почему все три существуют, назначение ключа ssh и что общего у ключей: ключи используют алгоритмы шифрования. То, о чем вы не говорили, в чем разница между ключами RSA, DSA и ECDSA.
Enkouyami
6

Вам все они нужны?
Нет, вашему ssh-серверу нужен только один, а клиенту нужно только поддерживать этот тип ключа для ssh-соединений.


RSA, DSA, ECDSA, EdDSA и Ed25519 все используются для цифровой подписи, но только RSA также может использоваться для шифрования.

RSA ( Rivest-Shamir-Adleman ) является одной из первых криптосистем с открытым ключом и широко используется для безопасной передачи данных. Его безопасность зависит от целочисленной факторизации , поэтому безопасный RNG (генератор случайных чисел) никогда не нужен. По сравнению с DSA RSA быстрее для проверки подписи, но медленнее для генерации.

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

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

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

Ed25519 , схема подписи EdDSA, но с использованием SHA-512/256 и Curve25519 ; это безопасная эллиптическая кривая, которая обеспечивает лучшую безопасность, чем DSA, ECDSA и EdDSA, плюс имеет лучшую производительность (не заметно для человека).


Другие примечания
Наиболее широко используются ключи RSA, поэтому они лучше всего поддерживаются.

ECDSA, (представленный в OpenSSH v5.7 ), вычислительно легче, чем DSA, но разница не заметна, если у вас нет машины с очень низкой вычислительной мощностью.

Начиная с OpenSSH 7.0 , SSH больше не поддерживает ключи DSA (ssh-dss) по умолчанию. Ключ DSA используется везде, согласно стандарту SSH (RFC 4251 и последующие).

Ed25519 был представлен в openSSH 6.5 .

Enkouyami
источник
1
Это EdDSA или ECDSA ?
Муру
@muru Это ECDSA. Я обновлю ответ с информацией об обоих, хотя и исправлю ссылку.
Enkouyami
Что я не смог найти, так это когда EdDSA был представлен в OpenSSH.
Enkouyami
Может ли квантовый компьютер сломать их все?
Кьелд Фларуп
@KjeldFlarup, да; основываясь на ответах и ​​комментариях на security.stackexchange.com/questions/211587/… , квантовый компьютер может сломать их все.
Enkouyami