SSH Ключи объяснены Ed25519 против ECDSA против RSA (остановите нажатие Enter)
Вы ввели ssh-keygen, нажали Enter четыре раза и получили RSA. Вот почему Ed25519 — правильный выбор, что ECDSA делает неправильно, и единственные сценарии, где действительно требуется RSA.
Каждый разработчик делал это. Вы вводите ssh-keygen, появляется волшебник, который спрашивает о типе ключа, длине в битах, фразе-пароле, пути вывода — и вы просто нажимаете Enter, пока не появится случайный рисунок. Поздравляем, у вас теперь есть ключ RSA-2048 и вы не знаете, почему это число.
Краткий ответ: используйте Ed25519. Запустите ssh-keygen -t ed25519 -C "you@example.com" и прекратите читать ответы на StackOverflow из 2012 года. Остальная часть этой статьи объясняет, почему — и охватывает случаи, когда действительно требуется RSA.
Три алгоритма
RSA
RSA (Rivest–Shamir–Adleman, 1977) был стандартным алгоритмом для публичных ключей в интернете на протяжении десятилетий. Его безопасность основана на сложности разложения больших целых чисел, что означает, что вам нужны большие ключи, чтобы оставаться в безопасности — как минимум 2048 бит, лучше 4096. Публичный ключ RSA размером 4096 бит составляет примерно 800 байт. Каждое соединение включает арифметические операции с этими большими числами, что медленнее, чем современные альтернативы.
Единственное реальное обоснование для RSA — совместимость. Старые SSH-серверы, устаревшее оборудование, проприетарные сетевые устройства из начала 2010-х — все они поддерживают RSA. Если вы подключаетесь к системе, которая была настроена во время администрации Обамы и не менялась с тех пор, RSA может быть единственным вариантом.
ECDSA
ECDSA (Elliptic Curve Digital Signature Algorithm) появился как более быстрый и компактный аналог RSA. Ключ ECDSA размером 256 бит обеспечивает примерно такое же безопасность, как ключ RSA размером 3072 бита. Лучшая математика, меньший ключ, быстрые операции — звучит как победа.
Проблема заключается в том, какие кривые использует OpenSSH по умолчанию: кривые NIST (P-256, P-384, P-521). Эти кривые вызывают серьёзные опасения. Вовлечение NIST в стандартизацию эллиптических кривых исторически подозрительно — агентство помогло стандартизировать Dual_EC_DRBG, генератор случайных чисел, под влиянием НАСА, позже обнаруженный с задержкой. ECDSA сама по себе не сломана, но кривые NIST имеют неясные критерии проектирования. Никто не может доказать, что они не были выбраны с целью предоставить какому-то лицу асимметричное преимущество. Большинство разработчиков не являются целями НАСА, но нет смысла принимать «скорее всего безопасно», когда существует доказательно лучший вариант.
Ed25519
Ed25519 (EdDSA на кривой Curve25519) — это тот, который вы должны использовать. Он был разработан Дэниелом Дж. Бернштейном с полностью публичными критериями проектирования — параметры кривой получены из «ничего не в моих рукавах» чисел, а не из процесса, который не подлежит прозрачности.
Практические цифры: публичный ключ Ed25519 составляет 68 байт. Подписание и проверка происходят быстрее, чем у RSA и ECDSA. Алгоритм устойчив к атакам на время — не содержит ветвей, зависящих от секрета, и не использует переменных по времени операций. Поддержка появилась в OpenSSH 6.5 в 2014 году. GitHub, GitLab и Bitbucket поддерживают его уже много лет. Нет недостатков по сравнению с ECDSA и все преимущества по сравнению с RSA.
Сравнение бок о бок
| Свойство | RSA (4096-бит) | ECDSA (P-256) | Ed25519 |
|---|---|---|---|
| Размер публичного ключа | ~800 байт | ~200 байт | 68 байт |
| Эквивалентная безопасность | ~140 бит | ~128 бит | ~128 бит |
| Скорость подписи | Медленно | Быстро | Очень быстро |
| Устойчив к атакам на время | Нет | Нет | Да (по дизайну) |
| Опасения по поводу кривых | Никто | Кривые NIST (спорные) | Нет (Curve25519) |
| Поддержка в OpenSSH с | Всегда | 5.7 (2011) | 6.5 (2014) |
| GitHub / GitLab / Bitbucket | Да | Да | Да |
Как генерировать каждый тип
Рекомендуемый выбор — используйте этот:
ssh-keygen -t ed25519 -C "you@example.com"
Старая система требует RSA? Используйте минимум 4096 бит:
ssh-keygen -t rsa -b 4096 -C "you@example.com"
ECDSA, если у вас есть конкретная причина избегать Ed25519 (вы, вероятно, не имеете):
ssh-keygen -t ecdsa -b 521 -C "you@example.com"
Если вы хотите интерфейс вместо запоминания флагов, используйте Генератор SSH-ключей на IO Tools позволяет выбрать алгоритм, длину в битах и опции пароля без обращения к терминалу.
Когда действительно требуется RSA
Существуют законные случаи, когда Ed25519 не является возможным:
- SSH-серверы до 2014 года — любые системы, работающие с OpenSSH старше 6.5, не принимают Ed25519. Редко, но реально: встроенные системы, сетевые устройства, старые серверы RHEL 6, которые никогда не обновлялись.
- Среды FIPS-140-2 — федеральные и некоторые регулируемые корпоративные среды требуют алгоритмов, прошедших FIPS-проверку. Ed25519 не одобрен FIPS. Используйте RSA-3072+ или ECDSA с P-384 в таких средах.
- Организационная политика SSH CA — некоторые компании используют собственные сертификатные агентства с жесткими требованиями к типу ключа. Проверьте перед генерацией ключа, который будет отклонён при регистрации.
Помимо этих трёх случаев, аргумент в пользу RSA — это инерция, а не достоинство.
Пропущенный пароль
Когда ssh-keygen спрашивает о пароле, и вы нажимаете Enter, чтобы пропустить это, ваш приватный ключ остаётся на диске в чистом виде. Если кто-то получит ваш ноутбук, он получит доступ ко всему, что может получить этот ключ — каждому серверу, каждому Git-хосту, каждой производственной среде. Добавьте пароль. Используйте ssh-agent таким образом, вы будете вводить его только один раз в сессии:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
На macOS, добавьте --apple-use-keychain к ssh-add таким образом, пароль сохраняется после перезагрузки. На Linux, большинство десктопных сред запускают ssh-agent автоматически — проверьте с помощью echo $SSH_AUTH_SOCK.
Вы нажали Enter четыре раза, не прочитав. Просьба о пароле — это то, что стоит вернуться.
Вам также может понравиться
Установите наши расширения
Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска
恵 Табло результатов прибыло!
Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!
Подписаться на новости
все Новые поступления
всеОбновлять: Наш последний инструмент был добавлен 7 июня 2026 года
