7

TCP/IP ソケットを介してプロセス間で MPI メッセージを送信する場合、OpenMPI と MPICH はどのようにセキュリティを処理しますか?

特に、同じネットワークの他のユーザーがリッスンしているソケットに接続して偽の MPI メッセージを送信するのをどのように防ぐのでしょうか?

具体的なシナリオは次のとおりです。

  • 管理者は信頼されています。信頼されていないユーザーは、ハードウェアやネットワークに物理的にアクセスできません。信頼されていないユーザーには root アクセス権がありません。
  • ただし、信頼されていないユーザーは、クラスター内で独自のプログラムを実行できます。クラスタ ノードは典型的な Linux ボックスです。特に、信頼されていないユーザーは、任意のマシンからクラスタ内の他のマシンへの TCP 接続を開き、任意のメッセージを送信できます。
4

3 に答える 3

7

J テラーの権利。MPI は実際にはこれを行いませんし、行うべきではありません。これは、MPI のユース ケースに基づく設計上の決定です。

MPI ユーザーは、マイクロ秒未満のレイテンシーの相互接続に多額の費用を支払うような人々です。メッセージのある種の暗号署名のオーバーヘッドは、このコミュニティではまったく受け入れられません。

そして、それは本当に何の役にも立ちません。MPI は、制御された環境 (アクセスが制限されたクラスター内のノード、またはコンピューティング ラボ内のマシン) 内のメッセージ トランスポート インターフェイスとして使用されます。悪意のあるユーザーがこれらのノードの 1 つを十分に制御して MPI 通信を妨害した場合、パケットを盗聴し、計算のどの段階が進行中であるかを突き止め、ある種のマンインを実行するよりもはるかに簡単に通信を妨害する方法があります。ミドルアタック。実行中のジョブのメモリを変更するか、より簡単に共有ファイル システムの結果を上書きすることができます。(「本物の」メッセージが積み重なって、リソースを使用し、ジョブをクラッシュさせる可能性があるため、単に偽造された MPI メッセージを送信することに注意してください。同様に、

もちろん、これらの議論は、BOINC スタイルの分散コンピューティングにはそれほど強く当てはまりませんが、いずれにせよ、MPI はそのような用途にはあまり適していません。

もちろん、この種のセキュリティ要件を持つ MPI ユーザーが、すべてのメッセージと共に pgp スタイルの署名を送信し、それをコードに組み込むことを妨げるものは何もありません。しかし、それを行うためのメカニズムは MPI 自体の一部ではなく、それは確かに正しい決定です。

于 2011-07-02T15:28:39.793 に答える
3

私はこれについてはあまり専門家ではありませんが、基本的な答えは、MPIは一般的にセキュリティを処理しないということです。基盤となるOSに依存して、説明しているセキュリティレベルを提供します。

私のmpiディストリビューションの場合、これはmpdデーモン(mpiプロセスを起動するデーモン)を使用して組み込まれています。mpdbootは、クラスター上にmpdデーモンのリング(ノードごとに1つ)を適切な方法でセットアップします。そのリングがセットアップされ、mpdデーモンを信頼する場合は、すべて設定されています。Mpdは、所有するプロセスのみがmpiプロセスに接続することを確認します。

ただし、mpdリングの「正しい方法」が設定されているかどうかはよくわかりません。ただし、私のディストリビューションでは、mpdbootはPythonスクリプトであるため、それを調べて、十分に安全かどうかを確認することができます。実行しているクラスターがアクセス制御されている場合は、おそらく十分に安全です。

于 2011-06-29T18:41:51.363 に答える
0

私は @Jonathan Dursi に賛成です。MPI 通信を保護しても、適切に構成されたクラスターのセキュリティにはほとんど貢献しませんが、(a) 管理者は主張するかもしれません。(b) 何らかの理由で、信頼されていないネットワーク上で MPI を実行したい場合、および (c) ) 問題を解くのは楽しいです。

信頼できないネットワークの状況については、以前に IPSec を使用してクラスター上の MPI 通信ネットワークを保護しました。証明書を必要とする IPSec の自動構成スクリプトを使用するのではなく、python スクリプトで自動的に生成したシェル スクリプトを介して対称暗号化キーを読み込みました。

クラスター上の個々のジョブの MPI 通信を分離するには、このアプローチを拡張して、システムの起動時に一度だけではなく、各ジョブのプロローグで新しく生成された IPSec キーをロードできるようにする必要があります。このセットアップでは、ジョブはノードを共有してはなりません。さらに、進行中の接続 (ssh、ジョブ マネージャーなど) をそのままにしておく必要があるため、MPI 用の専用ネットワークを使用してこれをセットアップする方が簡単です。ジョブ管理システムは、攻撃者がそこに座っている可能性があるため、ジョブの IPSec ネットワークに接続する必要があります。

于 2018-09-24T10:19:44.940 に答える