Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ssh-keygenについて

14
Last updated at Posted at 2022-11-22

環境

Ubuntu20.4

はじめに

SSH接続をするときに利用する鍵(秘密鍵と公開鍵)を作るコマンド、ssh-keygenについての記事です。

内容

ssh-keygenコマンドで作る鍵は、公開鍵暗号方式で使われます。鍵を作るときにアルゴリズムを選択しますが、アルゴリズムを明示的に指定しなければ、デフォルトでRSAが選択されます。RSAが推奨されているため、RSAを選択して問題ないと思います。RSAの他にもDSAというアルゴリズムがありますが、DSAは鍵の長さが1024bitとなっており、RSAよりセキュリティが弱く、推奨されていません。他にも、ECDSAというアルゴリズムがありますが、こちらもDSA系であるため、セキュリティは弱くなります。その他、ED25519というアルゴリズムもあります。こちらは、RSAの代わりに選択しても悪くはありません。RSAの第二候補として挙げられるかと思います。ED25519はRSAと比べ、鍵の長さは短く設定されているが、短い割にはアルゴリズムが強いといった特長を持っています。鍵の長さが短い分、暗号化、復号化の処理が速いといった利点があります。

アルゴリズムにRSAを選択すると、鍵の長さはデフォルトで2048bitになります。2048bitはいくつかあるセキュリティ段階の中で、高強度に分類され、セキュリティは十分に満たしているといえます。しかし、更に、もっと強度な鍵を設定したい場合は、オプションbを使って、鍵の長さを指定することができます。RSAで設定できる最大の鍵の長さは4096bitです。4096bitは超高強度に分類されます。本当のそこまで必要なのかといった意見はあるかも分かりませんが、4096bitで設定すれば、デフォルト値よりもセキュリティはより強化になります。

$ssh-keygen -b 4096

アルゴリズムにED25519を採用する場合は、オプションtでアルゴリズム名を指定します。

$ssh-keygen -t ED25519

デフォルトで本当にRSAが指定されるのか不安な場合は、次のように明示的にRSAを指定すれば、確実にRSAで作成されます。

$ssh-keygen -t RSA

RSAにはバージョン1とバージョン2が存在します。普通に、-t RSAを指定した場合は、バージョン2が選択されます。バージョン1はセキュリティに問題があることが分かっており、既に非推奨となっているため、今後利用することはないと思いますが、バージョン1を指定する場合は、次のようにします。

$ssh-keygen -t RSA1

RSAで作られた鍵が、RSAバージョン1で作られたのか、バージョン2で作られたのかを、鍵の名前から判断することができます。

  • 鍵の名前が、id_rsaであれば、バージョン2で作られています
  • 鍵の名前が、identityであれば、バージョン1で作られています

あくまでもデフォルトで作成される名前であるため、鍵を作成した後、名前を変更していれば、判断することはできないということにはなります。

まとめ

ssh-keygenコマンドで鍵を作成するときは、次のコマンドで作ることが、今のところ、ベストエフォートだと言えるかと思います。

$ssh-keygen -t RSA -b 4096
14
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
pyon_kiti_jp

@pyon_kiti_jp(pyon kiti)

SIerでエンジニアをしています。

Comments

angel_p_57
@angel_p_57

何を情報元にされたのか分かりませんが、理解が雑過ぎます。その状態で情報展開してもデマになる可能性が高いでしょう。

ssh-keygenコマンドで作る鍵は、公開鍵暗号方式で使われます。(略)暗号化、復号化の処理が速いといった利点があります。

今回の話題となっている鍵 (認証鍵) は、デジタル署名を応用した認証である「公開鍵認証」( あるいは「ホスト認証」 ) に使われるものです。暗号化・復号ではありません。広い意味で「公開鍵暗号」ではありますが、基本的な機能からまず誤解があるものと読み取れます。

他にも、ECDSAというアルゴリズムがありますが、こちらもDSA系であるため、セキュリティは弱くなります。

DSAが弱いのは ( ECDSAという上位互換に近い方式があることで ) 鍵長を伸ばす対応が見送られたためです。なので「DSA系自体が弱い」などという話はありません。

2048bitはいくつかあるセキュリティ段階の中で、高強度に分類され、セキュリティは十分に満たしているといえます。(略) RSAで設定できる最大の鍵の長さは4096bitです。4096bitは超高強度に分類されます。

「十分」なのは否定しませんが、「いくつかあるセキュリティ段階の中で、高強度」は流石にミスリーディングに過ぎます。実際は「現在許容される最低ライン」であって、一般的な暗号技術の取り扱い方針として、2031年以降は非推奨とされているレベルです。
※ECDSA256bit や ed25519 よりも下
また、「最大の鍵の長さは4096bit」ということもありません。Ubuntu18/OpenSSH7.6p1時点での制限は16384bitです。もちろん、そこまでの鍵を作る必要はないところですが。
なお、「4096bitは超高強度」といっても、ECDSA384bitより強度的には下です。印象だけで語るのは誤解の元なので、ちゃんと定量的な情報を先に把握すべきです。

RSAにはバージョン1とバージョン2が存在します。(略)バージョン1はセキュリティに問題があることが分かっており、既に非推奨となっているため、(略)

これだとRSAバージョン1に問題があってRSAバージョン2に更新されたかのように読めますが、要らぬ誤解を生みます。
実際はSSHプロトコルバージョン1(セキュリティ的に問題がある/鍵はRSAのみ)からSSHプロトコルバージョン2(現行/鍵は複数種類対応)に替わる際に、同じRSAでも鍵フォーマットが変化しているところであって、RSA自体の問題ではありません。

2
pyon_kiti_jp
@pyon_kiti_jp(pyon kiti)

@takotakot ご指摘ありがとうございます。

typo by takotakot 2024/03/27 14:35

0

Let's comment your feelings that are more than good

14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address