web-dev-qa-db-ja.com

OpenSSHのmoduliファイルを置き換えることは価値があると考えられていますか?

改ざんされた/ etc/ssh/moduliの結果 は、OpenSSHサーバーのmoduliファイルが改ざんされた場合に起こり得るリスクを説明します。

ロジックをさらに一歩進めると、 OpenSSHに同梱されているデフォルトファイル に懸念はありますか? Secure Secure Shell の記事でこれが言及されているため、私は尋ねます:

5 [diffie-hellman-group-exchange-sha256]を有効にすることを選択した場合は、存在する場合は/ etc/ssh/moduliを開き、5番目の列が2000未満の行を削除します。存在しない場合は作成します。

ssh-keygen -G "${HOME}/moduli" -b 4096
ssh-keygen -T /etc/ssh/moduli -f "${HOME}/moduli"
rm "${HOME}/moduli"

これは、2048未満のDH素数は安全でないと見なされ、より大きな素数に置き換える必要があるかのように私に読みます。ただし、OpenSSH開発者である賢い人々は、デフォルトで出荷されるファイルを、より大きな素数を含むファイルに置き換えていません。何か不足していますか?

16
evaryont

交換/選択プロセス

なぜ2000ビットより短い素数を削除するのですか? RFC4419 によると、キー交換は、クライアントがその設定を3つの数値の形式でサーバーに送信することから始まります。

  • 最小許容モジュラス長、
  • 最大許容長
  • そして好ましい長さ。

次に、サーバーはこの要件を最もよく満たすランダムな素数を選択します。

実際には(少なくともOpenSSH 6.7では)、クライアントの最小値と最大値は常に1024と8192です。推奨される長さは、対称暗号のセキュリティレベルの8倍です。次に、サーバーは次のように選択します。

  • min-max範囲外の素数を破棄し、
  • 次に、推奨される長さ以上の最も短い使用可能な長さを選択します
  • 最後に、それらの中からランダムに1つを選択します。

AES-128を使用すると、1024ビットのモジュラスが得られます。これは、2 ^ 80の破壊に近いものです。 (これは線形ではなく、8を掛けることはできません。)

なぜ再生成するのですか?

ファイルを最初から再生成するのはなぜですか? RFC4419を引用するには

The use of multiple moduli inhibits a determined attacker from
precalculating moduli exchange values, and discourages dedication of
resources for analysis of any particular modulus.

これは Logjam 攻撃で実証されています。

誰もがSSHパッケージで配布された同じmoduliファイルを使用する場合、それほど効果的ではありません。このため、ホストごとに異なるmoduliファイルを生成しました。

注:最近のSSHは、理論的にはより安全な楕円曲線Diffie-Hellmanを使用しています

新しい非楕円曲線素数を生成する場合は、次のようにします。

ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates

次に、moduli(通常は/etc/ssh/moduli)ファイルの内容をmoduli-2048の内容に置き換えます

13
stribika