2011-06-14 31 views
7

當我通過TCP/IP套接字在進程間發送MPI消息時,OpenMPI和MPICH如何處理安全性?MPI實現(OpenMPI,MPICH)如何處理安全/認證

特別是,它們如何防止同一網絡的其他用戶連接到偵聽套接字併發送僞造的MPI消息?

的具體情況如下:

  • 管理員是可信的。不受信任的用戶無法物理訪問任何硬件或網絡。不受信任的用戶不具有root用戶訪問權限。
  • 但是,不受信任的用戶可以在羣集中運行自己的程序;羣集節點是典型的Linux機箱。特別是,不受信任的用戶可以打開從任何機器到集羣中任何其他機器的TCP連接併發送任意消息。

回答

7

J特勒的權利; MPI並沒有真的這樣做,也不應該這樣做。這是基於MPI用例的設計決策。

MPI用戶是那些爲亞微秒延遲互連付出鉅額資金的人。某些消息的加密簽名的開銷對於這個社區是完全不可接受的。

而且這無濟於事。 MPI的使用方式是作爲受控環境中的消息傳輸接口 - 受限訪問羣集中的節點或計算實驗室中的機器。如果惡意用戶對這些節點中的一個獲得了足夠的控制來干擾MPI通信,那麼與嗅探數據包相比,更容易中斷通信的方式,計算正在進行什麼階段的計算,以及做某種「中間人攻擊。人們可以改變正在運行的作業的內存,或者更簡單地簡單地覆蓋共享文件系統上的結果。 (注意簡單地發送僞造的MPI消息可能會被注意到,因爲「真實」的消息會堆積起來,使用資源並可能使作業崩潰;同樣,截取消息而不中繼它們幾乎肯定會導致死鎖)。

這些參數並不適用於分佈式計算,當然,也可以說BOINC風格:但MPI並不適合這種用途。

當然,沒有任何事情會阻止MPI用戶確實有這種安全需求,只需發送pgp樣式簽名以及每條消息並將其納入他們的代碼;但是這樣做的機制本身並不是MPI的一部分,這當然是正確的決定。

+0

感謝您的回答,但是您是否閱讀過我在問題中的具體情況? *「人們可以改變正在運行的作業的內存,或者更簡單地簡單地覆蓋共享文件系統上的結果」*:如果不同的用戶擁有不同的用戶帳戶,我不會看到這是可能的。數據包嗅探也不可能(它需要root帳戶或物理訪問)。我猜所有郵件中都不需要加密簽名;如果通信是通過TCP進行的,那麼我認爲這足以驗證新的TCP連接的創建? – 2011-07-02 16:25:26

+0

我想說的是,這些集羣通常是受控制的環境,用戶在某種程度上是受信任的,因此它們幾乎不會受到內部攻擊的困擾。此外,TCP只是發送消息的一種方式;大多數MPI都支持許多傳輸。 – 2011-07-02 20:04:06

3

我不是這方面的專家,但基本答案是MPI通常不處理安全問題。它依靠底層操作系統來提供您所描述的安全級別。

對於我的mpi發行版,它內置的是使用mpd守護進程(啓動mpi進程的守護進程)。 mpdboot以一種理智的方式在集羣上設置一串mpd守護進程(每節點1個)。一旦戒指被設置,並且如果你信任mpd守護進程,那麼你就全部設置好了。 Mpd將確保只有您自己的進程連接到您的mpi進程。

但是,我不太理解mpd環設置的「理智方式」。然而,在我的發行版中,mpdboot是一個python腳本,因此可以查看它並查看它是否足夠安全。如果您正在運行的集羣受到訪問控制,則可能足夠安全。

+2

+1。Mpd通常確實有一個啓動守護進程的「共享祕密」,但這是一種非常弱的安全形式,旨在更多地防止意外干擾。 – 2011-07-02 15:30:45