2011-06-14 10 views
7

¿Cómo manejan OpenMPI y MPICH la seguridad cuando envío mensajes MPI entre los procesos a través de sockets TCP/IP?¿Cómo manejan las implementaciones de MPI (OpenMPI, MPICH) la seguridad/autenticación?

En particular, ¿cómo evitan que otros usuarios de la misma red se conecten a un puerto de escucha y envíen mensajes falsos de MPI?

El escenario específico es el siguiente:

  • Los administradores son de confianza. Los usuarios que no son de confianza no tienen acceso físico a ningún hardware o red. Los usuarios que no son de confianza no tienen acceso de root.
  • Sin embargo, los usuarios que no son de confianza pueden ejecutar sus propios programas en el clúster; los nodos del clúster son típicos cuadros de Linux. En particular, los usuarios que no son de confianza pueden abrir conexiones TCP desde cualquier máquina a cualquier otra máquina en el clúster y enviar mensajes arbitrarios.

Respuesta

7

J Teller's right; MPI realmente no hace esto, y no debería. Esa es una decisión de diseño basada en el caso de uso de MPI.

Los usuarios de MPI son el tipo de personas que pagan mucho dinero por interconexiones con latencia de sub microsegundos. La sobrecarga de algún tipo de firma criptográfica de mensajes sería completamente inaceptable para esta comunidad.

Y realmente no ayudaría en absoluto. La forma en que se utiliza MPI es como una interfaz de transporte de mensajes dentro de un entorno controlado: nodos en un clúster de acceso limitado o quizás máquinas en un laboratorio de cómputo. Si un usuario malintencionado obtiene el control suficiente de uno de estos nodos para interferir con las comunicaciones MPI, existen formas mucho más sencillas de interrumpir la comunicación que olfatear paquetes, averiguar qué etapa del cálculo está en marcha y realizar algún tipo de intervención el ataque medio. Uno podría simplemente alterar la memoria del trabajo en ejecución, o más fácilmente, simplemente sobrescribir los resultados en el sistema de archivos compartidos. (Se notará simplemente el envío de mensajes MPI falsificados, ya que los mensajes "reales" se acumularían, utilizando recursos y posiblemente bloqueando el trabajo; de manera similar, interceptar mensajes sin transmitirlos casi con seguridad provocaría un punto muerto).

Estos argumentos no se aplican tan fuertemente a la computación distribuida, por supuesto, dicen estilo BOINC: pero MPI no es muy adecuado para ese tipo de uso de todos modos.

Por supuesto, nada detiene a un usuario de MPI que tiene este tipo de requisito de seguridad simplemente enviando una firma de estilo pgp junto con cada mensaje e incorporando eso en su código; pero un mecanismo para hacerlo no es parte de MPI per se, y esa es ciertamente la decisión correcta.

+0

Gracias por la respuesta, pero ¿leyó el escenario específico que tuve en la pregunta? * "Uno podría simplemente alterar la memoria del trabajo en ejecución, o más fácilmente, simplemente sobrescribir los resultados en el sistema de archivos compartidos" *: si diferentes usuarios tienen cuentas de usuario diferentes, no veo cómo esto sería posible. Tampoco es posible el rastreo de paquetes (se requeriría una cuenta raíz o acceso físico). Y creo que las firmas criptográficas no serían necesarias en todos los mensajes; si la comunicación es sobre TCP, entonces supongo que sería suficiente para autenticar la creación de nuevas conexiones TCP? –

+0

Y digo que estos clusters suelen ser entornos controlados en los que los usuarios son, en cierto sentido, de confianza, por lo que no están tan endurecidos a los ataques desde dentro. Además, TCP es solo una forma de enviar mensajes; la mayoría de los MPI tienen soporte para muchos transportes. –

3

No soy un experto en esto, pero la respuesta básica es que MPI generalmente no maneja la seguridad. Se basa en el sistema operativo subyacente para proporcionar el nivel de seguridad que está describiendo.

Para mi distribución mpi, esto está integrado usando el daemon mpd (el daemon que inicia los procesos mpi). mpdboot configura un anillo de daemons mpd en el clúster (1 por nodo), de una manera sensata. Una vez que el anillo está configurado, y si confías en los demonios mpd, entonces ya estás listo. Mpd se asegurará de que solo los procesos que posee se conecten a sus procesos mpi.

Sin embargo, no entiendo muy bien la "manera correcta" de configurar el anillo mpd. Sin embargo, en mi distribución, mpdboot es un script de Python, por lo que es posible echarle un vistazo y ver si es lo suficientemente seguro para usted. Probablemente sea lo suficientemente seguro si el clúster en el que se ejecuta tiene acceso controlado.

+2

+1.Mpd generalmente tiene un "secreto compartido" para iniciar los daemons, pero esa es una forma muy débil de seguridad, destinada más a prevenir la interferencia accidental que cualquier otra cosa. –

Cuestiones relacionadas