Закрытый ключ macOS все еще выглядит незашифрованным после добавления пароля

Закрытый ключ macOS все еще выглядит незашифрованным после добавления пароля
Закрытый ключ macOS все еще выглядит незашифрованным после добавления пароля - orwhat @ Unsplash

Я не уверен, что это причуда генерации ssh-ключей на macOS, но когда я использую ssh-keygen для создания пары ключей, а затем добавляю пароль, я могу извлечь закрытый ключ, и у него нет заголовка с надписью ENCRYPTED.

Когда я следую инструкциям, обычно файл начинается как:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED

если он зашифрован, но у моего нет такого заголовка. Ключ просто запускается сразу. У меня спрашивают пароль, когда я хочу добавить его в клиент с помощью ssh-add, но меня раздражает отсутствие заголовка ENCRYPTED. Это нормальное поведение на macos?

Существует несколько форматов файлов закрытых ключей

Все они имеют похожую упаковку («BEGIN/END» и кодировку Base64), но только одна из них — PEM — использует заголовки «Proc-Type» для хранения информации о шифровании; другие форматы хранят его как часть самой двоичной полезной нагрузки.

Руководства, которые вы прочитали, демонстрируют формат ключа, который OpenSSH ssh-keygen использовал в то время. Это не означает, что это единственный формат или что он всегда будет одним и тем же форматом.

OpenSSH ранее использовал формат ключа PEM, но у него есть различные ограничения в том, как он обрабатывает шифрование, а также разные алгоритмы ключей. (Например, метод получения ключа слаб, и формат сначала не мог поддерживать ключи Ed25519.) Если вы видите BEGIN RSA PRIVATE KEY (то же самое для ECDSA), это в формате PEM или PKCS#1 или «OpenSSL».

Программное обеспечение, связанное с TLS/SSL (например, инструмент openssl), теперь чаще использует формат PKCS#8, который внешне очень похож, но сохраняет параметры шифрования как часть основной структуры, закодированной в Base64. Если вы видите заголовок BEGIN PRIVATE KEY, значит он в формате PKCS#8 и openssl asn1parse -i может его проверить.

В последних версиях OpenSSH используется собственный формат ключа «OpenSSH», среди прочего, чтобы избежать зависимости от OpenSSL (который ранее использовался для чтения/записи ключей в формате PEM и PKCS#8), а также для поддержки ключевых алгоритмов, которых не было в OpenSSL. в то время не поддерживался (в то время OID для Ed25519 еще не были назначены). Если вы видите заголовок BEGIN OPENSSH PRIVATE KEY, он использует этот формат. Параметры шифрования снова сохраняются в основной части файла ключей; если вы декодируете его с помощью Base64, вы увидите слова «aes128-ctr bcrypt», если он был зашифрован, или «none none», если нет.


NevaDev, 8 февраля 2023 г., 22:05