SSH Fingerprint ASCII Visualisation

 ssh-keygenでsshの鍵を作るときに表示される変なアスキーアートみたいなあれ、なんか出てくるけど何に使うのかと長いこと謎ではあったのよ。なので、調べる。

 こいつの正式な名前は、SSH Fingerprint ASCII Visualisationというらしい。opensshでは、randomart imageとか出てくる。

 こういうやつ。

+--[RSA 2048]----+

| .oo+ |

| o o++. |

| . =.*oo |

| o O+= |

| + B |

| . = . |

| |

| |

+-----------------+

 ssh-keygenするときに、「なんか出てくるな」ということくらいしか気にしていなかった。こんな感じ。自分でkeygenしない人は、見ることすらないか。

% ssh-keygen -t ed25519 -f ./testid_ed25519

Generating public/private ed25519 key pair.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in ./testid_ed25519

Your public key has been saved in ./testid_ed25519.pub

The key fingerprint is:

SHA256:ooD+KRjm8tPaE1C20coSRLKYSIOx7/5f1x9ndQuRA9E kinneko@kinnekonom2mba.local

The key's randomart image is:

+--[ED25519 256]--+

|+*o . oo |

|==o + . .E. |

|* = + + |

| oo + o |

|. oo . S . o|

|oo ... . . . +|

|+o.... . . . ..o|

|o+o.+ . . . + |

|..=*oo. . |

+----[SHA256]-----+

 既存の鍵から取得するにはこんな感じ。

% ssh-keygen -lv -f ./testid_ed25519

256 SHA256:ooD+KRjm8tPaE1C20coSRLKYSIOx7/5f1x9ndQuRA9E kinneko@kinnekonom2mba.local (ED25519)

+--[ED25519 256]--+

|+*o . oo |

|==o + . .E. |

|* = + + |

| oo + o |

|. oo . S . o|

|oo ... . . . +|

|+o.... . . . ..o|

|o+o.+ . . . + |

|..=*oo. . |

+----[SHA256]-----+

 昔はkeygenするときにも出なかったと思うのだけど、いつから出るようになったのかな。

 調べてみると、1999年にCrypTEC '99で「ハッシュビジュアライゼーション:現実世界のセキュリティを向上させる新しい手法」として提案された仕様らしい。

 opensshが対応したのは、5.1 2008-07-22 からかな。実装されるまで、結構時間がかかったのね。

 https://www.openssh.com/txt/release-5.1

 鍵のフィンガープリントが、バイナリ形式とか16進文字列とかで人間の可読性が悪いというので、なにかシンボル化したものを使えるようにしたということらしい。

 ホストの公開鍵のハッシュキーを可視化したものなので、接続先が同じであれば、同じ絵になるということのようだ。

 でも、クライアントから接続するときに、表示されたりはしないよな...

% ssh git@github.com

The authenticity of host 'github.com (20.27.177.113)' can't be established.

ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

 VisualHostKey=yesのオプションを与えるか、~/.ssh/configに「VisualHostKey yes」を書いておくとデフォルトで表示されるようになるらしい。

% ssh git@github.com -o VisualHostKey=yes

The authenticity of host 'github.com (20.27.177.113)' can't be established.

ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.

+--[ED25519 256]--+

| |

| . |

| o |

| o o o . |

| .B S oo |

| =+^ =... |

| oo#o@.o. |

| E+.&.=o |

| ooo.X=. |

+----[SHA256]-----+

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

 出たね。

 いやぁ、「公開鍵の識別をわかりやすくするための補助的な方法」で「ホスト鍵の確認をより直感的にする試み」とか言われても、雰囲気合ってるかどうかとかなんて覚えてらんないでしょ。無駄な機能だわな...

 というわけで、謎は解決した。特に気にしなくてよさそうだ。(接続先のフィンガープリントは確認しようねw)


オリジナル投稿:
SSH Fingerprint ASCII Visualisation|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/8974735