「ssh-keygen -t rsa」を使用する場合、どのキーにどのエンコーディングが使用されますか?

「ssh-keygen -t rsa」を使用する場合、どのキーにどのエンコーディングが使用されますか?

私が実行したとき:

ssh-keygen -t rsa

id_rsa.pubやid_rsaなどのファイルから公開鍵と秘密鍵のペアを生成するには、公開鍵は小数pをエンコードし、秘密鍵は数字pqをエンコードすることがわかります。ただし、このファイルを開くと、人間が読める数字ではなく一連の文字が表示されます。だから私の質問は簡単です。私は何を見ていますか?これらの文字を数値に直接マッピングできますか?それでは、どのルール/アルゴリズム/エンコーディングを使用しますか?

ベストアンサー1

ssl(個人と公開)は通常、いわゆる名前で保存されます。PEMフォーマット

Privacy Enhanced Mail(PEM)は、「Privacy Enhanced Mail」を定義する1993 IETF標準セットに基づいて暗号化キー、証明書、およびその他のデータを保存および転送するための事実上のファイル形式です。もともと標準は広く採用されておらず、PGPとS / MIMEに置き換えられましたが、それらが定義したテキストエンコーディングは非常に有名になりました。 PEMフォーマットは最終的にRFC 7468のIETFによって定式化されました。

この形式は実際にはヘッダーです。64ビットベースエンコードされたバイナリデータとフッター。

Base64は、バイナリデータをASCII文字列形式から基数64表現に変換することによって表す類似したバイナリテキストエンコーディングスキームのセットです。 Base64という用語は、特定のMIMEコンテンツ転送エンコーディングに由来しています。各Base64数字は正確に6ビットのデータを表します。したがって、3つの8ビットバイト(つまり、合計24ビット)は、4つの6ビットBase64数字で表すことができます。

sshキーについては、以下のdave_thompson_085の説明を確認してください。

ssh-keygenは(複数の)PEM形式を使用しますが、7468の形式は使用しません。過去のRSAの場合、デフォルトでOpenSSLの2つの「レガシー」(別名「レガシー」)形式(暗号化されていない、または7468類似形式(PKCS1を除く)またはProcタイプ、DEK-Infoおよびbase64暗号化を使用する暗号化暗号化)に設定されました。 PKCS1の1421に似ていますが、7468には似ていません。 7.8以降、デフォルトではOpenSSHの独自の「新しいフォーマット」(以前は-oオプションで呼び出されていました)が使用されます。これは7468と似ていますが、内容はまったく異なります(ASN.1ではなくXDRスタイル)。いくつかのスタックでこれについて多くの質問がありました。

OpenSSH公開鍵形式はPEMではありませんでしたが(商業用「SSH2」はそうですが)、SSH有線形式のbase64にすぎません。最近誰かが私に思い出させました。このQ&A秘密鍵形式をかなり徹底的に扱います。

おすすめ記事