2 LOS SISTEMAS MULTI-AGENTE Y LA SEGURIDAD
2.2 LA SEGURIDAD EN SISTEMAS MULTI-AGENTE
2.2.2 LOS NIVELES DE INTERACCIÓN ENTRE SISTEMAS MULTI-AGENTE
En los sistemas multi-agente distribuidos la interacción entre agentes se da principalmente a dos niveles: interacción intra-plataforma e interacción inter-plataforma. En ambos casos la interacción se da generalmente a través del intercambio de mensajes entre agentes. Aun cuando existen similitudes en los aspectos de seguridad para ambos tipos de interacción, existen diferencias sustanciales por las cuales se tratarán por separado [19].
Antes de ir más adelante es necesario diferenciar a los elementos principales que constituyen a un sistema multi-agente distribuido, desde el punto de vista de su implementación, dichos elementos se presentan en la figura 2.6:
Plataforma Plataforma Agente Contenedor Agente Agente Contenedor Agente Contenedor Agente Plataforma Plataforma Agente Contenedor Agente Agente Contenedor Agente Contenedor Agente
Figura 2.6 Elementos de un sistema multi-agente distribuido.
1. Agentes. Pueden definirse como componentes autónomos y atómicos del sistema. Un agente interactúa con el contenedor al que pertenece y se comunica con agentes de su contenedor o agentes remotos a través del intercambio de mensajes ACL [12]. 2. Contenedores. Constituyen el ambiente de ejecución en el que los agentes son
hospedados. Una de sus principales funciones es la de mantener un canal de comunicación de modo que los agentes que contiene puedan intercambiar mensajes a través de él. Desde el punto de vista más cercano a la seguridad, cada contenedor puede verse como un elemento atómico del sistema [12].
3. Plataformas. Constituyen la infraestructura sobre la cual los agentes pueden ser desplegados. Pueden estar distribuidas en diversos hosts, dicho de otra manera
2.2.2.1 La seguridad Intra-Plataforma
Por seguridad Intra-plataforma nos referiremos a los aspectos relacionados con la interacción entre agentes y contenedores sin tomar en cuenta problemáticas específicas de la interacción entre los componentes de diferentes plataformas [19].
A este nivel, en cuanto a seguridad se refiere, la meta principal es proteger todas las interfaces expuestas por los agentes y sus contenedores, Esto se tiene que realizar tanto a nivel infraestructura (interacción entre objetos distribuidos) como a nivel de agentes (intercambio de mensajes ACL y acciones realizadas sobre el ambiente) de modo que acciones específicas sean realizadas sólo si se cumplen condiciones de seguridad establecidas [23].
De esta manera todo mensaje ACL [12] e invocaciones de métodos deben ser tratadas como amenazas a la seguridad del sistema y deberán ser concienzudamente analizadas antes de aceptarlas.
En un sistema multi-agente existen diferentes tipos de entidades, desde el punto de vista de la seguridad podemos distinguir a entidades principales como aquellas que pueden realizar acciones sobre el sistema y que deben hacerse responsables por dichas acciones y sus consecuencias. Tanto los agentes como los contenedores deben ser catalogados como entidades principales [23].
Los usuarios deben considerarse también como entidades principales dado que aun cuando no pueden actuar directamente sobre el sistema, deben hacerse responsables de las acciones que los agentes realizan en su nombre.
También debe considerarse que cualquier entidad externa es una entidad principal pues puede actuar sobre el sistema a través del intercambio de mensajes ACL. Sin embargo este tipo de entidades no se tomará en esta sección.
Dado que es necesario saber qué entidad es responsable de cada acción, un mecanismo de autenticación debe ser implementado en el sistema de tal forma que una entidad pueda actuar sobre el sistema sólo después de haber sido identificada y autenticada. Los mecanismos de autenticación pueden ser de diferentes tipos como: nombres de usuario y contraseñas, llaves criptográficas, certificados, información biométrica, entre otros [23].
Generalmente en sistemas muy complejos los permisos no se otorgan individualmente a entidades principales sino que se otorgan a diversos roles, los cuales son organizados en grupos a los cuales una entidad principal puede ser añadida o eliminada dinámicamente. De esta forma si una entidad principal está cumpliendo un cierto rol (pertenece a un cierto grupo) se le otorgarán los permisos que dicho rol tiene.
Asegurar una plataforma implica proteger los recursos de la misma de ataques provenientes de otras plataformas, proteger a los agentes de la plataforma de ataques por
parte de otros agentes (internos o externos) y prevenir el acceso a los recursos del sistema por parte de entidades no autorizadas, dichos recursos no solo incluyen a la infraestructura y los agentes mismos sino que también incluyen recursos del sistema subyacente como sistemas de archivos, sockets, etc [23].
El sistema de gestión de agentes (parte fundamental de una plataforma) mantiene el registro (nombres, propietarios, localización, etc.) de los agentes que contiene, estos registros deben ser protegidos para evitar ataques de tipo spoofing2 hacia los agentes y
hacia la misma plataforma.
Los contenedores deben ser protegidos también de ataques provenientes de otros contenedores, estos ataques pueden estar orientados a eliminar o suspender agentes indebidamente, encaminar mensajes ACL falsos o alterados e inclusive hasta llegar a cerrar el contenedor.
De la misma manera, los contenedores deben estar protegidos de sus propios agentes, especialmente en sistemas que permiten la movilidad (migración) de agentes. La mayoría de los contenedores limitan y controlan las acciones de los agentes que contienen sin embargo, ataques de tipo DOS3 no son fácilmente detectables al interno de los contenedores [23].
Por su parte los agentes deben proteger sus recursos y servicios que controlan de posibles ataques provenientes de otros agentes. Los agentes están obligados a confiar en los contendores (infraestructura en hardware y software) en que se encuentran ya que no
pueden prevenir que su ambiente de ejecución robe o modifique su código y datos ni tampoco pueden evitar que su ejecución sea alterada (e inclusive terminada), esto podría ser también un problema de seguridad en el caso de migración pues el agente que emigra hacia un nuevo contenedor debe poder confiar en dicho contenedor.
Lo anterior deja en claro dos puntos fundamentales, las entidades principales deben ser identificadas y autenticadas y se debe mantener un control estricto (pero que permita cierto grado de flexibilidad) sobre los permisos que cada una de las entidades principales tiene para acceder a los recursos del sistema.
Los permisos generalmente incluyen una entidad objetivo y una lista de acciones que son permitidas en esa entidad. Los permisos son comúnmente registrados en listas de control de acceso que asocian a cada entidad principal con un conjunto de permisos. Las acciones que se permiten dependen casi siempre del tipo de entidad que las ejecutarán, para contenedores generalmente las acciones incluyen creación o eliminación de un contenedor,
2
En éste tipo de ataque, una entidad es reemplazada por otra sin autorización de modo que con dicha sustitución los servicios provistos por la entidad reemplazada serán ahora provistos por la entidad que la reemplaza.
3
Denial of Service. En este tipo de ataque, el atacante de alguna manera previene que el sistema atacado
preste sus servicios, en la mayoría de los casos el ataque se realiza saturando al sistema atacado de forma que no pueda atender solicitudes del servicio que provee.
añadir, clonar, copiar y eliminar agentes en un contenedor, etc. Acciones típicas sobre agentes incluyen intercambio de mensajes ACL, suspensión-continuación, creación, copiado, clonado, terminación y migración [23].
Los sistemas multi-agente comúnmente hacen uso de la delegación de tareas entre agentes cooperantes por lo cual es necesario también que las plataformas provean de un mecanismo adecuado para la delegación de permisos, de manera que una entidad principal que cuenta con ciertos derechos pueda heredad a otra entidad delegada los mismos permisos que ella tiene. Tomando lo anterior en cuenta es necesario también que el mecanismo de delegación de permisos sea seguro con respecto a que una entidad no pueda delegar permisos que no posee, que no pueda robar permisos delegados a otras entidades, etc.
2.2.2.2 La seguridad Inter-Plataforma
La mayoría de las interacciones entre plataformas se da a través del intercambio de mensajes mediante el uso de protocolos tales como: IIOP (Internet Inter-ORB Protocol,
protocolo inter-ORB en Internet), HTTP (Hyper Text Transfer Protocol, protocolo de
transferencia de hyper texto) y RMI (Remote Method Invocation, invocación remota de
métodos) [19].
En el sistema de transporte de mensajes de una plataforma, un agente tiene tres posibilidades para intercambiar mensajes con agentes de otras plataformas:
1. El agente A envía el mensaje al canal de comunicación de agentes (ACC, Agent Communication Channel), el cual es parte fundamental de cualquier plataforma,
mediante una interfaz estándar o propietaria. El ACC se encarga de enviar el mensaje al ACC remoto (a través de un protocolo de transporte –MTP Message Transport Protocol- adecuado) que a su vez eventualmente transmite el mensaje al
agente destinatario [19].
2. El agente A envía el mensaje directamente al ACC de la plataforma remota donde reside el agente destinatario. A su vez el ACC remoto retransmite el mensaje al agente destinatario. Para que este escenario funcione, el agente A debe soportar la interfaz (estándar o propietaria) del ACC remoto [19].
3. El agente A envía directamente el mensaje al agente destinatario utilizando un mecanismo directo de comunicación (por ejemplo sockets o RMI). En este escenario
es necesario que los agentes envueltos en la comunicación se encarguen de resolver el transporte del mensaje, direccionamiento, buffering y gestión de errores [19].
Comúnmente el método de comunicación utilizado es el primero, o al menos la mayoría se basan en él. En esta sección se presentan algunas consideraciones con respecto a asegurar la comunicación entre dos plataformas sobre canales inseguros.
Anteriormente se presentó el panorama general de seguridad Intra-Plataforma por lo que en esta sección se asume que al interno las plataformas son seguras, es decir que se supone que la comunicación Intra-Plataforma no es una amenaza para la seguridad.
Ya que la interacción entre plataformas se realiza mediante el intercambio asíncrono de mensajes ACL, las problemáticas de seguridad en este escenario son prácticamente las mismas que tienen los sistemas de correo electrónico, aun si esta analogía es muy burda.
Un primer problema se puede apreciar tomando en cuenta que la comunicación se realiza a través de canales inseguros (redes públicas como Internet) y que los mensajes son transmitidos en claro. Es obvio que cualquier entidad puede acceder a la información transmitida y que es factible atacar dicha información.
La gama de ataques posibles a la información transmitida es bastante amplia. Un atacante puede acceder a la información transmitida sin ningún problema por lo cual la privacidad de la información se ve amenazada. La información transmitida puede ser alterada por un atacante produciendo funcionamientos anormales del sistema e inclusive puede dar lugar al uso de exploits4 para atacar a las plataformas. Además es posible para el
atacante enviar mensajes fraudulentos a nombre de una plataforma. Ataques de tipo DOS y DOS distribuido5 son también posibles ya que cualquier entidad que tenga acceso al canal de comunicación puede enviar mensajes a cualquier plataforma.
Asegurar el canal de comunicación es posible haciendo uso de diferentes tecnologías como por ejemplo SSL (Secure Socket Layer, capa de sockets seguros) que
permitan cifrar los mensajes transmitidos, sin embargo asegurar el canal no es suficiente para garantizar la seguridad de la comunicación. El cifrado es proceso computacionalmente lento y pesante por lo cual su aplicación excesiva redundaría en una pérdida en el rendimiento del sistema por lo cual no es muy recomendable su aplicación durante todo el proceso de comunicación [19].
Además de asegurar el canal de comunicación es necesario un mecanismo de autenticación que permita eliminar la posibilidad de mantener comunicación con una entidad fraudulenta a través de un canal seguro con una entidad.
En resumen para asegurar la comunicación entre plataformas se deben garantizar al menos la privacidad e integridad de la información, autenticación de las entidades que se comunican y el no repudio.
Como ya se mencionó anteriormente para garantizar la privacidad basta con cifrar los mensajes intercambiados, sin embargo esto presenta otra problemática que es la de distribución de llaves criptográficas. Para resolver esta problemática es posible utilizar
4 Este tipo de ataque implica alterar la estructura de un mensaje para alterar el funcionamiento de la
infraestructura hardware del sistema que recibe el mensaje.
5
esquemas existentes como PKI (Public Key Infrastructure, infraestructura de llave pública),
o llaves simétricas previamente acordadas.
En cuanto a la integridad, ésta no es una característica fácil de garantizar, sin embargo haciendo uso de mecanismos de cifrado o Digests6 es posible asegurar que
cualquier alteración a la información será detectada aun cuando no sea posible evitar que la información sea alterada.
La autenticación en el escenario de comunicación Inter-Plataforma presenta las mismas características que en Intra-Plataforma, es decir que pueden ser utilizados mecanismos basados en cadenas de confianza o terceras partes como autoridades de certificación.
El no repudio implica que se pueda establecer sin margen de error qué entidad realizó cada acción en el sistema. En el escenario Inter-Plataforma implica que se pueda establecer cual plataforma originó cada mensaje. Este problema está ligado al de la autenticación, ya que para poder asegurar que cierto mensaje fue generado por una cierta plataforma, es necesario primero autenticar a dicha plataforma, en otras palabras es necesario conocer la verdadera identidad de la plataforma. En este caso pueden aplicarse tecnologías de firma digital.
Es necesario que los mecanismos utilizados para la seguridad Inter-Plataforma no altere de sobremanera la estructura de los mensajes de modo que no sea necesario cambiar completamente la funcionalidad de la infraestructura utilizada.