Яка різниця між ключами 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, і чи потрібно мені всі три?

Відповіді:


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


2
Ви коротко розповіли про те, чому всі троє існують, мета ключа ssh та що спільного між ними ключами: ключі використовують алгоритми шифрування. Що ви не говорили про те, яка різниця між ключами RSA, DSA та ECDSA.
Енкуаямі

6

Вам потрібні всі вони?
Ні, вашому ssh-серверу потрібен лише один, а клієнту потрібно лише підтримувати цей тип ключа для ssh-з'єднань.


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

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

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

ECDSA ( Еліптична крива алгоритму цифрового підпису ) - це еліптична крива реалізації DSA (Digital Signature Algorithm). Криптографія еліптичної кривої здатна забезпечити порівняно той самий рівень рівня безпеки, що й RSA, за допомогою меншої клавіші. Він також поділяє недолік DSA, що він чутливий до поганих РНГ.

EdDSA ( Алгоритм цифрового підпису Edwards-curve ) - схема цифрового підпису, що використовує варіант підпису Schnorr на основі кривих Twisted Edwards . Створення підписів є детермінованим в 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 .


1
Це EdDSA чи ECDSA ?
muru

@muru Це ECDSA. Я оновлю відповідь інформацією про обидва, хоча і виправлю посилання.
Enkouyami

Що я не міг знайти, коли EdDSA був представлений у OpenSSH.
Enkouyami

Чи може квантовий комп’ютер розбити їх усіх?
К'єльд Фларуп

@KjeldFlarup, так; грунтуючись на відповідях та коментарях щодо security.stackexchange.com/questions/211587/… , квантовий комп'ютер міг би їх зламати.
Enkouyami
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.