SSHキーが他の目的で使用される非対称キーとどう違うのですか?


13

SSHキーは、たとえあったとしても、電子メール署名などの他の目的で使用される非対称キーとどのように異なりますか?

OS Xには、SSHキー(ssh-agent、SSHKeychainなど)を管理できるアプリと、GPGキー(GPGキーチェーンアクセスなど)を管理するアプリがあるため、これを尋ねられます。そして、どうやらトウェインの出会いはありません。ただし、これはOS X固有の問題ではないと思います。

この懸念の分離は、キーの種類がまったく異なるためか、キーが異なる場所に保存されるためか、または他の理由または理由の組み合わせ(歴史的理由など)によるものですか?

回答:


14
  • SSHキーは、単なるRSA、DSA、またはECDSA非対称キーペアです。OpenSSHによって生成されたこのようなキーペアは、すでにOpenSSLおよび他のほとんどのプログラムで使用できます。

    .pubファイル出力ssh-keygenはOpenSSH固有の形式ですが、「プライベート」ファイルにはすでにプライベートキーとパブリックキーの両方が含まれているため、これは無関係です。)

    他のSSHソフトウェアには、RFC 4716やPuTTYのPPKなどの独自のストレージ形式がありますが、同じRSA / DSA / ECDSA情報が格納されます。

  • X.509(SSL、S / MIMEで使用)はやや複雑です。「秘密」キーは同じですが、公開キーファイルの代わりに「証明書」、つまり公開鍵、件名、発行者名、有効期限。X.509 v3証明書では、「キー使用法」や「代替サブジェクト名」などの拡張機能が存在します。証明書全体は、発行者のキーによって署名されます(個別の発行者がいない場合は自己署名されます)。

    SSH用のX.509「秘密鍵」ファイルを簡単に使用できます。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
    

    certtoolGnuTLSの一部です。)

  • OpenPGP(GPGで使用)キーは最も複雑です。「PGPキー」または「PGPキーペア」と呼ばれるものは、「OpenPGP証明書」と呼ばれる複雑な構造で、次のものが含まれます。

    • 1つの「主キー」–通常は署名に使用される非対称キーペア
    • 1つ以上の「ユーザーID」-通常は「名前<email @ address>」の形式のテキストラベル
      • 少なくとも1つは「プライマリユーザーID」としてマークされています
      • ユーザーIDごとに、「自己署名」-自分の主キーによる署名
      • 各ユーザーIDに対して、他のユーザーによる0個以上の「署名」
      • 自己署名パケットには、優先アルゴリズム(SHA-1、AESなど)も含まれます。
    • 1つ以上の「サブキー」-追加のキーペア。最初のペアは通常暗号化用です
      • 各サブキーについて、主キーによる署名
    • 0個以上の「写真ID」–顔を含むJPEGまたはPNG添付ファイル
      • ユーザーIDと同じ方法で署名しました
    • ゼロ以上のX.509証明書

    すべてのキーペアには有効期限と使用ビットがあります:データに署名、キーを認証(署名)、暗号化、サービスに認証します。主キーにはデフォルトで「sign」および「certify」ビットがあり、最初のサブキーは「encrypt」です。「認証」サブキーを追加するとgpg-agent、SSH認証に使用できます。

    証明書に含まれるものを確認するには:

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

    certtoolGnuTLSの一部です。)


X.509証明書とそれに関連付けられた秘密鍵には、いくつかの形式があります。

  • DERは、証明書のASN.1構造のバイナリエンコーディングです。このようなファイルには通常.crt.cerファイル拡張子またはファイル名拡張子.derがあります(あまり一般的ではありませんが、見えないことはありません)。

  • 「PEM」形式のファイルには、同じDERエンコードデータが含まれますが、Base64を使用して、「BEGIN THIS」ヘッダーと「END THAT」ヘッダーの間に追加エンコードされます。一般的なファイル名の拡張子はある.pemの両方が、.crtとは.cer時々あまりにも(決してここで使用されています.der)。

  • 証明書に属する秘密鍵の場合、通常は「PEM」形式が使用されます。ヘッダー「BEGIN PRIVATE KEY」(PKCS#7構造のキー)または「BEGIN RSA (またはDSA) PRIVATE KEY」(ベアキー、OpenSSLフォーマット)。キーが別の.keyファイルにある場合もあれば、証明書にバンドルされている場合もあります。

  • PKCS#12と少し古いPFXは、証明書と秘密キー(多くの場合は発行者の証明書も)を保存する暗号化されたコンテナです。この形式は、秘密鍵を使用して証明書をエクスポートまたは「バックアップ」するときに、ほとんどのソフトウェアで使用されます。

わかりにくい状況はOpenPGPです。すべてのデータは同じバイナリ形式に従い、オプションで「装甲」されます(Radix64でエンコードされ、PEMのようなヘッダー間でエンコードされます)。


2

さまざまな場所にさまざまな形式で保存されます(PGP、GnuPG ssh、およびいくつかの異なるX.509形式で使用される形式は、とりわけまったく異なります)。混合及び右のオプションを照合することによって、ある程度、それらの間にトランスコードすることが可能となるまでssh-keygenpgpgpg/ gpg2openssl等。しかし、一般的には努力する価値はありません。また、さまざまなキー形式がさまざまな量の情報をサポートします。ssh最小限の追加情報を運び、X.509 PEMおよびDER形式を最も多く運びます。さらに、OSXキーチェーンは単に暗号化されたキー/値ストレージであるため、プログラムのネイティブキー+メタデータ形式とキーチェーンに格納できるものとの間で変換するには、各アプリケーションで一般に異なるメカニズムが必要です。(同様の懸念がKDEウォレットとGNOMEキーチェーンに適用されます。)


基礎となる暗号化標準も異なることに注意することが重要です。gpgは主にDSAを使用しますが、SSHは主にRSAを使用します。標準の非対称標準の数は限られており、ほとんどのアプリケーションは複数の標準をサポートしていますが、異なるアプリケーションで「標準」である標準は異なります。
jcrawfordor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.