web-dev-qa-db-ja.com

OpenSSH:キーベースの認証、最大キー長

キーベースの認証を使用するウィンドウでPuTTYを使用して、一部のサーバーにアクセスしています。

〜3700ビットのキーでは完全に正常に機能しますが、〜17000ビットのキーでは、クライアント側で20秒間ほど考えてから、「アクセスが拒否されました」と表示してパスワードを要求します。

キーベースの認証のためにOpenSSHにキーの長さの制限またはタイムアウトはありますか?

このような大きなキーを使用しても、特にこの20秒間の計算を見て、直面している問題を解決しようとするだけでは、実用的な意味があまりないことを理解しています:-) ...

9
BarsMonster

ある時点で、Diffie-HellmanキーのOpenSSLのソースを調べたところ、DHキーのサイズに「任意」の10Kの制限があることがわかりました。テストのソースを変更したところ、うまくいったことがわかりました。私は作者にバグを書きました、そして彼らは巨大なキーを使うことによってDoSを防ぐことが設計意図であると答えました。

OpenSSHで同様のものが表示されても驚かないでしょう。

9
Paul Holder

プロトコルで定義されている最大キーサイズまたはタイムアウトはありません(または、少なくともヒットするものはありません)が、実装はそのような長いキーをサポートしていない可能性があります。秘密鍵を使用した20秒の処理時間は、17kビットのRSA鍵では高く聞こえません。その場合、サーバーは認証されていないユーザーに過度の計算能力を費やしたくない場合があります。非常に大きなキーを拒否することは、DoS攻撃に対する保護です。

現在、2048ビットはRSAキーとして妥当であると考えられています。 4096ビットは必要以上に高いですが、通常はサポートされています。これを超えて、いくつかのプログラムがキーを拒否しても驚かないでください。

目的のターゲットシステムでそのサイズのキーを生成できましたか?サポートされているものに制限が発生している可能性があります。むしろ、私の現在のCentosシステムは、大規模なキーには十分と思われる最大16kをサポートしています。以下に示すように、ssh-keygenでそれを超えようとすると、最大値が表示されます。

[nathan@omni ~]# ssh-keygen -t rsa -b 32768
key bits exceeds maximum 16384
3
zaznet

OpensshサーバーにはLoginGraceTime設定があります。マニュアルページから:

The server disconnects after this time if the user has not suc-
cessfully logged in.  If the value is 0, there is no time limit.
The default is 120 seconds.

これは、20秒に設定されている場合に発生する限界です。

野蛮な推測:公開鍵認証のクライアント側の処理にこれほど長い時間がかかる場合は、何かがおかしいと考えて、PuTTY自体にこの制限がある可能性もあります。

1
AndreasM