web-dev-qa-db-ja.com

2つのssh公開鍵が同じ始まりを持っているのはなぜですか?

サーバー上のauthorized_keysファイルを、入手した新しいラップトップの公開鍵で更新していましたが、2つの公開鍵が同じであることに驚いたことに驚きました:

# key 1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ....
#
# key 2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ....

AAAAB3...などのストーリーは?オンラインで検索していると、他のキーも同じように始まることがわかります。アルゴリズムやバージョンなどについて説明していますか?

27
Gabe Durazo

これは実際には、これがどのような種類のキーであるかを定義するヘッダーです。 RFC 425 の公開鍵アルゴリズムセクションを確認すると、RSA鍵の場合にそれがわかります。

「ssh-rsa」キー形式には、次の固有のエンコーディングがあります。

 string    "ssh-rsa"
 mpint     e
 mpint     n

ここで、「e」および「n」パラメーターは、署名鍵ブロブを形成します。

実際、Base64で文字列「B3NzaC1yc2E」をデコードすると、ASCII as "ssh-rsa"に変換されます。おそらく "AAAA"は、アプリケーションが認識できるように、ある種のヘッダーを表しますデータストリームのどこでキーの処理を開始するか。

26
Scott Pack

SSH公開鍵の形式は RFC 425 で文書化されており、いくらか要約されています here 。 PEMエンコードされたデータはいくつかの(長さ、データ)ペアで構成され、最初のペアはアルゴリズム名をエンコードします。これはssh-rsaまたはssh-dsaのようなものになります。

これは、すべてのssh鍵の公開鍵データの最初の部分が似ていることを意味します。

15
larsks