SSH anahtarları, başka amaçlar için kullanılan asimetrik anahtarlardan nasıl farklıdır?


13

SSH anahtarları, başka amaçlarla kullanılan asimetrik anahtarlardan, örneğin e-posta imzalamadan nasıl farklıdır?

Bunu sormam isteniyor, çünkü OS X'te, SSH anahtarlarını (ssh-agent, SSHKeychain, vb.) Yönetmek için kullanılabilen uygulamalar ve GPG anahtarlarını (GPG Anahtarlık Erişimi vb.) Yönetmek için tasarlanmış uygulamalar var. ve görünüşe göre ikilinin buluşması gerekmiyor. Ancak bunun OS X'e özgü bir sorun olduğuna inanmıyorum.

Bu kaygıların ayrılması, anahtarların oldukça farklı olması ya da farklı yerlerde depolanması ya da başka bir nedenden mi, yoksa tarihsel nedenlerden mi kaynaklandığı gibi mi?

Yanıtlar:


14
  • SSH anahtarları yalnızca düz RSA, DSA veya ECDSA asimetrik anahtar çiftleridir. OpenSSH tarafından üretilen böyle bir anahtar çifti OpenSSL ve diğer birçok program tarafından zaten kullanılabilir.

    ( .pubDosya çıktısı ssh-keygenOpenSSH'ye özgü biçimdedir, ancak "özel" dosya zaten özel ve genel anahtarlar içerdiğinden bu önemsizdir.)

    Diğer SSH yazılım gibi kendi depolama biçimlerini, olabilir RFC 4716 veya PuTTY en PPK , ancak aynı RSA / DSA / ECDSA bilgi depolamak.

  • X.509 (SSL, S / MIME tarafından kullanılır) biraz daha karmaşıktır: "private" anahtarı hala aynıdır, ancak açık bir ortak anahtar dosyası yerine bir "sertifikanız" vardır - açık anahtar, konu ve yayıncı adları, geçerlilik tarihleri. X.509 v3 sertifikalarında, "anahtar kullanımı" ve "alternatif konu adı" gibi uzantılar bulunacaktır. Sertifikanın tamamı yayıncının anahtarı tarafından imzalanır (veya ayrı bir yayıncı yoksa otomatik olarak imzalanır).

    SSH için X.509 "özel anahtar" dosyasını kolayca kullanabilirsiniz - OpenSSH bile aynı formatı kullanır.

    Basit bir anahtar çiftinden bir X.509 sertifikası oluşturabilir ve daha sonra otomatik olarak imzalayabilir veya bir "sertifika isteği" oluşturabilir ve bir CA (sertifika yetkilisi) tarafından imzalanmak üzere gönderebilirsiniz.

    Bir X.509 sertifikasındaki bilgileri görüntülemek için şunu kullanın:

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

    ( certtoolGnuTLS'nin bir parçasıdır.)

  • OpenPGP (GPG tarafından kullanılan) anahtarlar en karmaşık olanlardır. "PGP anahtarı" veya "PGP anahtar çifti" olarak adlandırdığınız, aşağıdakileri içeren "OpenPGP sertifikası" adı verilen karmaşık bir yapıdır:

    • bir "birincil anahtar" - genellikle imzalama için kullanılan asimetrik bir anahtar çifti
    • bir veya daha fazla "kullanıcı kimliği" - genellikle "Ad <e-posta @ adres>" biçiminde metin etiketleri
      • bunlardan en az biri "birincil kullanıcı kimliği" olarak işaretlendi
      • her kullanıcı kimliği için bir "otomatik imza" - kendi birincil anahtarınızla imza
      • her kullanıcı kimliği için, diğer kullanıcılar tarafından sıfır veya daha fazla "imza"
      • otomatik imza paketleri tercih ettiğiniz algoritmaları da içerir (SHA-1, AES, vb.)
    • bir veya daha fazla "alt anahtar" - ek anahtar çiftleri, ilki genellikle şifreleme içindir
      • her alt anahtar için, birincil anahtarın imzası
    • sıfır veya daha fazla "fotoğraf kimliği" - yüzünüzü içeren JPEG veya PNG ekleri
      • kullanıcı kimlikleriyle aynı şekilde imzalandı
    • sıfır veya daha fazla X.509 sertifikası

    Tüm anahtar çiftlerinin son kullanma tarihleri ​​ve kullanım bitleri vardır: verileri imzala, anahtarları onayla (imzala), şifreleme, hizmetlerde kimlik doğrulama. Birincil anahtar varsayılan olarak "sign" ve "certify" bitlerine sahiptir ve ilk alt anahtar "şifrelemek" tir. Bir "kimlik doğrulama" alt anahtarı eklerseniz, gpg-agentSSH kimlik doğrulaması için aracılığıyla bunu kullanabilirsiniz .

    Sertifikanızın neleri içerdiğini görmek için:

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

    ( certtoolGnuTLS'nin bir parçasıdır.)


X.509 sertifikaları ve ilişkili özel anahtarları birkaç biçimde gelir:

  • DER , sertifikanın ASN.1 yapısının ikili kodlamasıdır. Bu tür dosyalar genellikle .crtveya .cerdosya adı uzantılarına sahiptir ( .derdaha az yaygındır, ancak görünmez).

  • "PEM" biçimindeki dosyalar aynı DER kodlu verileri içerir, ancak ek olarak Base64 kullanılarak ve "BU BAŞLAYIN" ve "SONLANDIR" başlıkları arasında kodlanır. Ortak bir dosya adı uzantısı .pemher ikisidir .crtve .cerbazen burada da kullanılır (ancak asla .der).

  • Sertifikalara ait özel anahtarlar için genellikle "PEM" biçimi kullanılır - "BEGIN PRIVATE KEY" (PKCS # 7 yapısındaki anahtar) veya "BEGIN RSA (veya DSA) PRIVATE KEY" (çıplak anahtar, OpenSSL) biçim). Bazen anahtar ayrı bir .keydosyada, bazen sertifika ile birlikte gelir.

  • PKCS # 12 ve biraz daha eski PFX , hem sertifikayı hem de özel anahtarı depolayan şifrelenmiş kaplardır (genellikle sertifikanın sertifikası da). Bu biçim, çoğu yazılım tarafından sertifikaları özel anahtarlarla verirken veya "yedeklerken" kullanılır.

Daha az kafa karıştırıcı bir durum OpenPGP'de: tüm veriler aynı ikili formatı takip ediyor ve isteğe bağlı olarak "zırhlı" (Radix64 ile kodlanmış ve PEM benzeri başlıklar arasında).


2

Farklı yerlerde ve farklı formatlarda saklanır (PGP, GnuPG sshve diğerlerinin yanı sıra birkaç farklı X.509 formatı tarafından kullanılan formatlar oldukça farklıdır). Bu karıştırma ve sağ seçenekleri eşleştirerek bir ölçüde aralarında kodunu dönüştürmek mümkündür etmek ssh-keygen, pgp, gpg/ gpg2, opensslvb .; ama genel olarak çabaya değmez. Ayrıca, farklı anahtar biçimler farklı miktarlardaki bilgileri destekler.sshen az ekstra bilgi ve X.509 en çok PEM ve DER formatını taşır. Ek olarak, OSX Anahtarlık basitçe şifrelenmiş anahtar / değer depolamasıdır, bu nedenle programın yerel anahtarı + meta veri formatı ve Anahtarlıkta saklanabilecek bir şey arasında dönüştürme yapmak için genellikle her uygulama tarafından farklı bir mekanizma gerekir. (Benzer endişeler KDE cüzdanı ve GNOME anahtarlığı için de geçerlidir.)


Temel şifreleme standardının da farklı olduğunu belirtmek önemlidir. gpg çoğunlukla DSA kullanırken SSH çoğunlukla RSA kullanır. Sınırlı sayıda standart asimetrik standart vardır ve çoğu uygulama birden fazla standardı destekler, ancak farklı uygulamalar için 'normal' olan standartlar farklılık gösterir.
jcrawfordor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.