Сгенерируйте новый ключ с помощью ssh-keygen -o -a 100 -t ed25519, укажите надежную фразу-пароль и прочитайте дальше, если вам нужен плавный переход.
- DSA и RSA 1024 бит устарели
- Определите свою текущую ситуацию
- Плавный переход, обещаю.
- Вам понравится кривая Twisted Edwards
- Как повысить устойчивость к взлому паролей
- Создай свой новый ключ Ed25519
- Знающий о нескольких ключах SSH клиент
- Изменить или установить парольную фразу
- Обновите свой текущий ключ RSA
- Системы, поддерживающие Ed25519
DSA и RSA 1024 бит устарели
Определите свою текущую ситуацию
Перечислите все ваши ключи:
$ for keyfile in ~/.ssh/id_*; do ssh-keygen -l -f "${keyfile}"; done | uniq
- DSA или RSA 1024 бита: красный флаг. Опасные.
- RSA 2048: желтый рекомендуется поменять
- RSA 3072/4096: отлично, но у Ed25519 есть некоторые преимущества!
- CDSA: По-разному. Рекомендуется изменить
- Ed25519: вау круто, но ты точно в безопасности?
Плавный переход, обещаю.
Вы, наверное, думаете… «Я давно пользуюсь своим ключом, я не хочу менять его везде и сейчас».
Серьезная точка зрения, но вы не должны!
Приятно осозновать, что в вашей системе может быть несколько ключей, и ваш SSH-клиент автоматически выберет подходящий для правильной системы.
Это часть протокола SSH, которая может предлагать несколько ключей, и сервер выбирает тот, с которым ваш клиент должен будет доказать то, что у него есть секретный ключ.
Посмотрите на это в действии, добавив немного подробностей к команде SSH connect (-vvv).
Также, если вы используете агент SSH, вы можете загрузить несколько ключей, и он обнаружит все из них.
Вам понравится кривая Twisted Edwards
Наиболее распространенным является ключ типа RSA, также известный как ssh-rsa с SSH.
Он очень совместим, но также медленен и потенциально небезопасен, если создается с небольшим количеством битов (<2048). Мы только что узнали, что ваш SSH-клиент может обрабатывать несколько ключей, поэтому включите новейшую более быструю криптографию с эллиптическими кривыми и наслаждайтесь очень компактным форматом ключей, который он предоставляет!
Ключи Ed25519 короткие.
Очень короткие.
Если вы привыкли копировать несколько строк символов из системы в систему, вы будете приятно удивлены размером.
Открытый ключ составляет всего около 68 символов.
Он также намного быстрее в аутентификации по сравнению с безопасным RSA (3072+ бит).
Генерация ключа Ed25519 выполняется с помощью опции -t ed25519 команды ssh-keygen.
Ed25519 является эталонной реализацией для EdDSA с использованием кривых Twisted Edward (ссылка на Википедию).
Как повысить устойчивость к взлому паролей
При создании пары ключей вас просят ввести фразу-пароль для шифрования закрытого ключа.
Если вы когда-нибудь потеряете свой закрытый ключ, он должен быть защищен от выдачи третьих лиц за вас, поскольку он будет зашифрован с помощью ключевой фразы.
Чтобы на самом деле предотвратить это, необходимо убедиться, что парольная фраза не подвергается простому перебору.
Генератор ключей OpenSSH предлагает два варианта противодействия взлому паролей через брутфорс: использование нового формата ключей OpenSSH и увеличение количества раундов функции получения ключей.
Это замедляет процесс разблокировки ключа, но это то, что помешает злоумышленнику также эффективно использовать бруфорс паролей.
Я бы посоветовал провести эксперимент с количеством раундов в вашей системе.
Начните примерно со 100 раундов.
В моей системе для расшифровки и загрузки ключа один раз в день с помощью агента требуется около одной секунды.
Очень приемлемо, по моему мнению.
В ssh-keygen используйте опцию -o для нового формата ключей RFC4716 и используйте современную функцию получения ключей, основанную на bcrypt.
Используйте параметр -a <num> для указания количества раундов.
На самом деле, создается впечатление, что при создании ключа Ed25519 подразумевается опция -o.
Создай свой новый ключ Ed25519
Подсказка: используйте одну и ту же фразу-пароль для всех ваших типов ключей для большего удобства.
$ ssh-keygen -o -a 100 -t ed25519 Generating public/private ed25519 key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/gert/.ssh/id_ed25519. Your public key has been saved in /home/gert/.ssh/id_ed25519.pub. The key fingerprint is: SHA256: [...] gert@hostname The key's randomart image is: [...]
Знающий о нескольких ключах SSH клиент
$ ssh user@host
он предложит серверу несколько открытых ключей, и сервер запросит подтверждение наличия соответствующей записи для аутентификации.
А ежедневное использование команды ssh-add не изменится и автоматически обнаружит ключ Ed25519:
$ ssh-add Enter passphrase for /home/gert/.ssh/id_rsa: Identity added: /home/gert/.ssh/id_rsa (gert@hostname) Identity added: /home/gert/.ssh/id_ed25519 (gert@hostname)
Он не только обнаружил оба ключа, но и загрузил их, введя одну фразу-пароль (потому что это то же самое)!
Мы достигли очень важной цели.
Без каких-либо изменений в вашей повседневной работе мы можем изменить существующую конфигурацию на удаленных хостах, чтобы принять ключ Ed25519.
Тем временем ключ RSA все еще будет работать.
Изменить или установить парольную фразу
$ ssh-keygen -f ~/.ssh/id_rsa -p -o -a 100
Обновите свой текущий ключ RSA
Использование Ed25519 будет (и должно) работать в большинстве ситуаций к настоящему времени, но устаревшие системы могут еще не поддерживать их.
Лучший запасной вариант – это сильная пара ключей RSA.
В то время как клиент OpenSSH поддерживает несколько ключей RSA, ему требуются параметры конфигурации / командной строки для указания пути, поэтому он довольно подвержен ошибкам.
Вместо этого я бы порекомендовал обновить существующий ключ, чтобы все было просто.
В зависимости от силы (размера ключа) вашего текущего ключа RSA вы можете все изменить.
Если у вас по-прежнему слабый ключ RSA, уберите его со стандартного пути и сгенерируйте новый размером 4096 бит:
$ mv ~/.ssh/id_rsa ~/.ssh/id_rsa_legacy $ mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa_legacy.pub $ ssh-keygen -t rsa -b 4096 -o -a 100
$ ssh-add ~/.ssh/id_rsa ~/.ssh/id_rsa_legacy ~/.ssh/id_ed25519
Системы, поддерживающие Ed25519
Поддержка доступна начиная с OpenSSH 6.5 и принята в мировых операционных системах Unix для рабочих станций. Ubuntu 14.04+, Debian 8+, CentOS / RedHat 7+ и т. д.
Все уже поддерживают это. (Если у вас есть сведения о Mac OS X, пожалуйста, напишите об этом)
Некоторым программам, таким как настраиваемые агенты ключей рабочего стола, могут не нравиться новые ключи по нескольким причинам (см., например, ниже о Gnome-keyring).