web-dev-qa-db-ja.com

ssh-keygen:パスフレーズは何ですか?

ssh-keygenを使用する場合:
パスフレーズは何ですか?
なぜオプションなのですか?

1つを指定する(または指定しない)ことのセキュリティ上の意味は何ですか?

以下は、シェルセッションからの抜粋です(一部の詳細は変更されている可能性があります)。

user@localhost:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /user/.ssh/id_rsa.
Your public key has been saved in /user/.ssh/id_rsa.pub.
The key fingerprint is:
60:8b:50:1e:0f:bc:5a:2a:13:1e:83:2b:d9:95:38:9e user@localhost
The key's randomart image is:
+---[RSA 2048]----+
|   .+            |
|   o.+           |
|. ...o+          |
|ooo.=o o         |
|.*oB. . S        |
|*.E              |
|.o               |
|                 |
|                 |
+-----------------+
17
voices
$ man ssh-keygen
[...]
It is possible to specify a passphrase when generating the
key; that passphrase will be used to encrypt the private
part of this file using 128-bit AES.

したがって、このパスフレーズはキーをローカルで暗号化するだけです。秘密鍵は暗号化されているため、システムにアクセスできる攻撃者は秘密鍵を読み取ることができません。 (ただし、キーロガーをインストールできます。)たとえば、ラップトップが盗まれた場合でも、強力なパスフレーズがあれば、sshキーはまだ安全です。または、かなり弱いパスフレーズを使用しても(それが重要でない限り)、攻撃者が解読する前に、キーを取り消して新しいキーにロールバックする時間を確保できます。

ストレージで暗号化されないリスクを受け入れることを選択できるため、これはオプションです。または、ディスクの暗号化を有効にして、同じ攻撃の一部を軽減することもできます(すべてではありませんが、たとえば、マルウェアはディスクの暗号化を使用してもキーを盗むことができます。一方、盗まれたラップトップは実行中に盗まれない限り安全です)メモリ内のキーで)。

サーバーは、ログインに公開鍵とパスワードの両方の使用を要求できます。これのセキュリティは、パスワードで暗号化された公開鍵を使用する場合とは異なります。暗号化されたキーを使用する場合、次のようになります。

  • サーバー側でパスワードを変更することはできません。新しいキーを生成する必要があります。
  • 誰かがキーのパスワードを検出せずにクラッキングする可能性があります。オフラインで実行できるためです(サーバーがパスワードを必要とする場合、サーバーに「aaaaは正しいですか?aaabは正しいですか?」などと尋ねる必要があります)。
  • ネットワークを制限しないオフライン攻撃であるため、誰かがキーをはるかに速くクラックできます。そして
  • クラッキングはオフラインで行われるため、サーバーはfail2banなどを使用して、あまりにも多くのログイン試行を拒否できません。
15
Luc