PuTTY: Часто Задаваемые Вопросы
2.2. Поддерживает ли PuTTY работу с файлами личных ключей SSH-2 в форматах OpenSSH и ssh.com?
И да, и нет.
PuTTY поддерживает ключи этих форматов, в том смысле, что PuTTYgen может импортировать и экспортировать ключи OpenSSH и ssh.com, используя свой собственный формат ключей — «PPK». Но шаг конвертации необходим, так как сама PuTTY не содержит возможности импорта внешних ключей.
Мы не желаем вводить такую возможность. Формат PPK тщательно проектировался, преследуя весьма конкретные цели, и PuTTY в его нынешнем виде на самом деле зависит от этих целей.
Преимущества формата ключей PuTTY PPK:
-
Открытая часть ключа хранится в незашифрованном вид:
Личный ключ формата OpenSSH шифрует весь файл ключа, при этом пользователь будет вынужден вводить пароль, прежде чем он сможет сделать хоть что-нибудь. В частности, это означает, что SSH-клиент должен спросить у пользователя его пароль, прежде чем он сможет даже предложить серверу открытый ключ для проверки подлинности.
Формат PuTTY, напротив, хранит открытый ключ в
plaintext
, и шифрует только личную часть ключа, то есть открытый ключ может быть автоматически отправлен серверу, и тем самым определить, готов ли сервере принять аутентификацию с этим ключом, и парольная фраза будет запрошена только когда это действительно необходимо.Вероятно, OpenSSH будет читать
.pub
файл для этих целей, если такой файл находится рядом с личным ключом. Но это, в свою очередь, является источником путаницы так же часто, как и удобства (мы видели массу людей, которые при замене личных ключей, оставляли устаревшие.pub
рядом с ними, и затем были крайне удивлены результатом неудавшейся SSH аутентификации). -
Ключ полностью устойчив к внешним воздействиям:
Форматы, хранящие открытый ключ в обычном тексте, могут быть уязвимы к «tampering-атакам», при которых сигнатуры открытых ключей фальсифицируются для утечки личных ключей. По этой причине, формат ключей PuTTY содержит «MAC» (Message Authentication Code / Код Идентификации Сообщения), выключение пароля, и конвертацию открытой и личной частей ключа. Таким образом, мы обеспечиваем удобство доступности открытого ключа в виде обычного текста, но мы также мгновенно обнаруживаем любые попытки несанкционированного вмешательства, давая сочетание безопасности и удобства, которого нет ни в одном другом формате ключей. И как побочное преимущество, MAC также охватывает комментарий ключа, предотвращая любой вред, который мог бы быть возможен, если кто-то захочет поменять оба ключа подменив их комментарии.
Подход OpenSSH с хранением открытого ключа в зашифрованном виде, может также обеспечить некоторую безопасность против подобных атак. Но не очевидно, что это обеспечит должную защиту: шифрование, предназначенное для конфиденциальности, часто оставляет пути, при которых зашифрованные данные могут быть успешно модифицированы злоумышленником. Для реальной защиты целостности вам нужен узкоспециализированный MAC, который призван делать именно это.
Таким образом, чтобы поддерживать отличные от PPK форматы ключей в PuTTY, мы должны были бы значительно пересмотреть код аутентификации по открытому ключу, сделать его гораздо более гибким в отношении запроса пароля. Это также привело бы к путанице и тонких различиях в эксплуатации различных типов ключей: поддержка OpenSSH .pub
также приводила бы к проблеме рассинхронизации обновления двух файлов одного ключа. И после всех усилий по разработке, это могло бы привести к хаосу в пользовательском интерфейсе, нам бы пришлось предоставить пользователям возможность снизить защищенность свои закрытых ключей, о которой пользователи даже не будут подозревать.
Поэтому, нашей текущей задачей не ставится реализовать эту возможность, и наши рекомендации заключаются в том, чтобы люди конвертировали личные ключи других форматов в формат PPK, чтобы использовать их с PuTTY. Это не слишком сложно, сейчас мы имеем Unix-версию PuTTYgen с интерфейсом командной строки, которая даёт возможность автоматизировать данный процесс.