Как, если вообще, ключи SSH отличаются от асимметричных ключей, используемых для других целей?

Как, если вообще, ключи SSH отличаются от асимметричных ключей, используемых для других целей, например, почтовом подписании?

Мне предлагают спросить это, частично, потому что на OS X, существуют приложения, доступные для управления ключами SSH (ssh-агент, SSHKeychain, и т.д.), а также приложения, разработанные для управления ключами GPG (Доступ Связки ключей GPG, и т.д.), и по-видимому ne'er двойка, встречаются. Однако я не полагаю, что это - конкретный вопрос OS X.

Состоит в том это разделение проблем, потому что ключи являются очень отличающимися видами, или потому что они хранятся в различных местах, или это по некоторой другой причине или комбинации причин, например, исторических причин?

13
задан 22.04.2011, 07:13

2 ответа

  • Ключами SSH является просто RSA, DSA или асимметричные пары ключей ECDSA. Такая пара ключей, сгенерированная OpenSSH, может уже использоваться OpenSSL и большинством других программ.

    ( .pub файл, произведенный ssh-keygen находится в OpenSSH-определенном формате, но это не важно, так как "частный" файл уже содержит и закрытые и открытые ключи.)

    Другое программное обеспечение SSH может иметь их собственные форматы устройства хранения данных, такие как RFC 4716 или PPK PuTTY, но они хранят ту же RSA/DSA/ECDSA информацию.

  • X.509 (используемый SSL, S/MIME) немного более сложен: "частный" ключ является все еще тем же, но вместо пустого файла с открытым ключом у Вас есть "сертификат" – структура ASN.1, содержащая открытый ключ, предмет и имена выпускающего, даты законности. В сертификатах X.509 v3 будут присутствовать расширения, такие как "ключевое использование" и "альтернативное подчиненное имя". Весь сертификат подписывается ключом выпускающего (или самоподписывается, если нет никакого отдельного выпускающего).

    Можно легко использовать файл "с закрытым ключом" X.509 для SSH – OpenSSH даже использует тот же формат.

    Можно создать сертификат X.509 из простой пары ключей и затем самоподписать его, или можно создать "запрос сертификата" и отправить его, чтобы быть подписанными CA (центр сертификации).

    Для отображения информации в сертификате X.509 используйте:

    certtool -i < foo.pem
    certtool -i --inder < foo.crt
    
    openssl x509 -noout -text < foo.pem
    openssl x509 -noout -text -inform der < foo.crt
    

    (certtool часть GnuTLS.)

  • OpenPGP (используемый GPG) ключи являются самыми сложными. Что Вы называете "ключом PGP", или "пара ключей PGP" является сложной структурой, названной "сертификатом OpenPGP", содержа:

    • один "первичный ключ" – асимметричная пара ключей, обычно используемая для подписания
    • одни или несколько "идентификаторов пользователей" – текстовые маркировки, обычно в форме "Имени <email@address>"
      • по крайней мере один из них отмечен как "идентификатор основного пользователя"
      • для каждого идентификатора пользователя, "самоподписи" – подпись Вашим собственным первичным ключом
      • для каждого идентификатора пользователя, нуля или большего количества "подписей" другими пользователями
      • пакеты самоподписи также содержат Ваши предпочтительные алгоритмы (SHA-1, AES, и т.д.)
    • один или несколько "подразделов" – дополнительные пары ключей, первое обычно для шифрования
      • для каждого подраздела, подписи первичным ключом
    • нуль или больше "удостоверений личности с фотографией" – JPEG или вложения PNG, содержащие Вашу поверхность
      • подписанный тот же путь как идентификаторы пользователей
    • нуль или больше сертификатов X.509

    Все пары ключей имеют биты использования и даты истечения срока: данные знака, сертифицируйте (подписывают) ключи, шифруют, проходят проверку подлинности к сервисам. Первичный ключ по умолчанию имеет "знак", и "сертифицируйте" биты, и первый подраздел должен "зашифровать". Если Вы добавляете подраздел "аутентификации", можно использовать его через gpg-agent для аутентификации SSH.

    Для наблюдения то, что содержит сертификат:

    gpg --export joe@example.com | gpg -vv
    
    gpg --export joe@example.com | certtool --pgp-certificate-info
    

    (certtool часть GnuTLS.)


Сертификаты X.509 и их связанные закрытые ключи появляются в несколько форматов:

  • DER является двоичным кодированием структуры ASN.1 сертификата. Такие файлы обычно имеют .crt или .cer расширения файла (.der менее распространено, но не невидим).

  • Файлы формата "PEM" содержат те же DER-закодированные данные, но дополнительно закодированное использование Base64 и между "НАЧИНАЕТ ЭТО" и "КОНЕЦ ЭТО" заголовки. Общее расширение файла .pem, хотя оба .crt и .cer иногда используются здесь также (но никогда .der).

  • Для закрытых ключей, принадлежащих сертификатам, формат "PEM" обычно используется – Base64, окруженные заголовками ", НАЧИНАЮТСЯ, ЗАКРЫТЫЙ КЛЮЧ" (введите структуру PKCS#7), или "НАЧИНАЮТ RSA (или DSA) ЗАКРЫТЫЙ КЛЮЧ" (пустой ключ, формат OpenSSL). Иногда ключ находится в отдельном .key файл, иногда это связывается сертификатом.

  • PKCS#12 и немного более старый PFX являются зашифрованными контейнерами, хранящими и сертификат и закрытый ключ (часто сертификат выпускающего также). Этот формат используется большей частью программного обеспечения при экспорте или "резервном копировании" сертификатов с закрытыми ключами.

Менее запутывающая ситуация находится в OpenPGP: все данные следуют за тем же двоичным форматом и дополнительно "бронируются" (закодированный Radix64 и между подобными PEM заголовками).

14
ответ дан 07.12.2019, 11:37

Сохраненный в различных местах и в различных форматах (форматы, используемые PGP, GnuPG, ssh, и несколько различных форматов X.509, среди других, очень отличаются). Возможно транскодировать между ними в некоторой степени путем смешивания и соответствия правильным опциям к ssh-keygen, pgp, gpg/gpg2, openssl, и т.д.; но в целом это не стоит усилия. Кроме того, различные форматы ключа поддерживают различные объемы информации, с ssh содержание наименее дополнительной информации и X.509 PEM и форматов DER, несущих большинство. Кроме того, Связка ключей OSX является просто зашифрованным ключом / устройство хранения данных значения, таким образом, другой механизм обычно необходим каждому приложению для преобразования между собственным ключом программы + формат метаданных и чем-то, что может быть сохранено в Связке ключей. (Подобные проблемы относятся к кошельку KDE и связке ключей GNOME.)

2
ответ дан 07.12.2019, 11:37

Теги

Похожие вопросы