web-dev-qa-db-ja.com

Diffie-Hellman鍵交換は、SSH鍵を安全に交換するための最良の方法ですか?

一連のサーバーと通信するエンドユーザーデバイスの通信メカニズムを設計しています。私の現在の計画は

  1. 最初の実行時に、デバイスは独自のSSHキーペア(RSAおよび4096ビット)を生成します
  2. デバイスは、IDと公開キーをHTTPS経由で(有効な証明書を使用して)登録サーバーの1つに転送します
  3. 確認されると、デバイスは登録サーバーへのSSH接続を開き、サーバーの公開鍵を受信します

これは有効なアプローチですか、それとも「証明書を使用したサーバー認証」(DHキー交換)の使用がより良い==より安全な方法でしょうか?

3
5drive

は、私にはよく見えますよ。有効にした暗号リストに応じて、HTTPSはDHキー交換を行うことに注意してください。デバイスとサーバーのSSL実装を信頼し、デバイスの証明書信頼リストを監査する限り、デバイス間の接続は安全であると見なすことができます。

私が心配している唯一のことは、デバイスがサーバーへのSSHアクセスを開くことができることです。シェルアクセス(ファイルの転送や保存、ほとんど任意のプログラムの実行など)を提供しているため、SSHのセキュリティ保護は非常に困難です。デバイスにアクセスする可能性のあるすべての人を完全に信頼していない場合、これはサーバーにとって非常に危険な場合があります。

本当に人々に任意のプログラムを実行する能力を与える必要がある場合を除いて、通常、HTTPSのようなサービスラッパーを介して特定の事前に定義されたリソースのリストを公開する方が良いでしょう。これにより、サーバーでのコマンドの実行をより詳細に制御できます。

2
Lie Ryan