x
1

Canal encubierto



Un canal encubierto (del inglés covert channel), es un canal que puede ser usado para transferir información desde un usuario de un sistema a otro, usando medios no destinados para este propósito por los desarrolladores del sistema.[1][2]​Para que la comunicación sea posible suele ser necesario un preacuerdo entre el emisor y el receptor que codifique el mensaje de una forma que el receptor sea capaz de interpretar. Esta muy relacionado con la esteganografía.

En oposición a los canales encubiertos, se encuentran los canales legítimos o canales abiertos (en inglés overt channel) que comprenden las vías de comunicación diseñadas a tal fin.

[3]​El concepto de canal encubierto fue introducido en 1973 por Butler W. Lampson[4]​ cuando estaba examinando el problema de mantener secreta la información de un proceso para otro en un sistema con seguridad multinivel (problema de confinamiento). En este entorno introduce los canales encubiertos para identificar canales que tiene disponibles un proceso para transmitir información, cuando éste no estaba pensado para este propósito. Por ejemplo cuando un proceso toma el control exclusivo de un Archivo o fichero (otro procesos no pueden acceder a él) o cuando un proceso usa todo el espacio disponible del disco duro. El resto de procesos pueden detectar esta actividad y por tanto puede usarse para implementar un canal encubierto.

A partir de la definición de Lampson, el departamento de defensa de los Estados Unidos, en su TCSEC, también conocido como "libro naranja", define los canales encubiertos como cualquier canal de comunicación que puede ser explotado por un proceso para transferir información de forma que viole la política de seguridad del sistema.

El Common Criteria definió los canales encubiertos como "un forzado, canal de señalización ilícito que permite a un usuario contravenir subreticiamente la política de seguridad multinivel y requisitos de unobserbabilidad del sistema".

En el "Handbook for the Computer Security Certification of Trusted System" del Laboratorio de Investigación Naval de los Estados Unidos[1]​ se define un canal encubierto como un mecanismo que puede ser usado para transferir información desde un usuario de un sistema a otro usando medios no destinados para este propósito por los desarrolladores del sistema.

Podemos ver que con el paso del tiempo el concepto ha ido evolucionando desde el ámbito de los sistemas operativos y el problema del confinamiento de los procesos, hasta abarcar cualquier tipo comunicación entre entidades que utilizan canales que no han sido diseñados para ser utilizados como canal de comunicación. Los conceptos anteriores, también están muy relacionado con la esteganografía.

[3][1]​Tradicionalmente los canales encubiertos se han clasificado según el mecanismo que usan para lograr la comunicación, clasíficándolos en dos grupos: Canales de almacenamiento y canales de temporización. Observar que un mismo recurso compartido puede usarse para implementar un canal de almacenamiento como uno de temporización, la diferencia está en como gestionar ese recurso, si aprovechando el espacio de almacenamiento (canal de almacenamiento) o modulando en el tiempo su comportamiento (canal de temporización).

[3]​Esta clasificación ha sido rechazada por algunos autores y está sujeta a cierta controversia

[2]​Cuando usamos un canal encubierto suele ser necesario un preacuerdo entre el emisor y el receptor para que el emisor use una forma de codificación que el receptor sea capaz de descifrar.[2]​ Hay un tipo especial de canales encubiertos a los que se les llama canales ocultos (en inglés side channel) en los que el emisor de forma accidental comunica al receptor. En estos sistemas el desafío del receptor es descubrir y decodificar el canal oculto para obtener la información.

Los canales ocultos más habituales son aquellos que están relacionados con las emanaciones que de forma no intencionada emiten los dispositivos electrónicos.

Se han propuesto algunas otras clasificaciones para los canales encubiertos.[3]​ Veamos algunos ejemplos:

En su origen los canales encubiertos fueron usados como una forma clandestina de obtener información de un proceso por parte de otro del mismo sistema informático. A partir de ahí el concepto se fue generalizando y se fue aplicando a otros ámbitos como las redes de comunicaciones o las emanaciones de dispositivos (Ej electromagnéticas o térmicas).

El origen mismo del concepto de canal encubierto fue introducido en el marco de un estudio[4]​ de como los procesos de un sistema podían comunicarse saltándose las políticas de seguridad de un sistema con seguridad multinivel. Desde entonces ha habido importantes estudios para intentar evitar este tipo de comunicaciones. Se han desarrollado importantes avances para que los sistemas operativos nos protejan contra este tipo de vulneraciones de la política de seguridad confinando los procesos, es decir, limitando sus actividades a sólo lo que tienen permitido.

[5]​Los sistemas operativos son los guardianes lógicos contra los canales encubiertos. Como ellos ya son los que se encargan de gestionan los canales de comunicación y los recursos compartidos, también tienen que ser responsables de cerrar los canales encubiertos ya que éstos sólo son un subconjunto de los canales de comunicación y utilizan recursos compartidos como conducto de la comunicación. El hardware podría construirse de tal forma que romper el confinamienta fuera improbable, sin embargo tales mecanismos harían al sistema difícil, si no imposible, de usar de forma efectiva

[5]​A causa de que la única forma realmente efectiva de enfrentarse seriamente con un canal encubierto es reestructurar el sistema para que sea eliminado, los diseñadores de sistemas operativos tienen que saber cómo identificar los canales encubiertos y como reestructurar el sistema para eliminarlos. Por esta razón se han desarrollado una serie de tácticas para detectarlos y tratarlos.

Como estrategia general hay que controlar los accesos a recursos compartidos ya que estos son la base de para construir canales encubiertos. En este contexto cuando hablamos de recursos nos referimos a cualquier objeto o colección de objetos que pueden ser referenciados o modificados por más de un proceso. Ejemplos de recursos compartidos que podrían ser usados para canales encubiertos:

Es habitual aprovechar los flujos de datos para establecer canales encubiertos. El escenario que se plantea puede ser modelizado mediante el llamado problema del prisionero. Resumidamente, en el problema del prisionero tenemos dos prisioneros, A y B, que quieren comunicarse de forma confidencial para escapar. El problema es que sólo pueden intercambiar mensajes a través de un guardián, W. El guardián puede leer, modificar o generar el mismo los mensajes. Si el guardián detecta cualquier comunicación que pueda ser utilizada para escapar (Ej. detecta un cifrado) dejará de transmitir los mensajes. En este escenario los prisioneros necesitan establecer un canal encubierto. Las dos estrategias más utilizada para establecerlo son:

Los protocolos que se usan en las redes de comunicaciones se han aprovechado intensamente para la definición de distintos tipos de canales encubiertos:

Hay múltiples protocolos que han sido objeto de estudio para ver como implementar estos canales. Ejemplos: TCP/IP,[7][8][6]​ HTTP,[9]​ DNS,[10]​ DHCP,[3]​ ICMP,[11][6]​ IGMP,[6]​ IPSEC,[6]​ IPv6,[12]​ protocolos IEEE 802[13]​ y protocolos del modelo OSI.[14]

Algunos de los análisis no se han quedado sólo en un mero estudio teórico sino que han sido implementados. Ej: Covert_TCP (para canales encubiertos sobre TCP/IP[7]​), Loki (para ICMP[11]​), Firepass (para HTTP[9]​), PingTunnel (para ICMP[15]​) y Ozyman (para DNS[10]​).

También se ha intentado la implementación de canales encubiertos usando temporización.[16]​En los primeros intentos para implementarlos tuvieron muchas dificultades para establecer una forma de sincronización. Además, el estado de la red resulta determinante en la correcta recepción de los datos o el ancho de banda del canal se ve gravemente reducido.[3][17]​En 2006 se propone[18]jitterbugs. Son disposivos, que pueden ser tanto hardware como software, cuya finalidad es reconocer información sensible (Ej passwords) y modularla a través de canales de temporización a través de la red. Para modular no genera nuevos eventos sino que utiliza otros para transmitir la información, y por eso se dice que son semipasivos. Por ejemplo si se está ejecutando una aplicación que usa una comunicación interactiva (como SSH, Telnet, IM, un receptor que monitorice el tráfico de red del host puede recuperar los datos, incluso aunque la sesión esté cifrada. En el estudio original[18]​ se implementó un jitterbugs hardware para el teclado. Éste aprovecha que la mayoría de las aplicaciones de red interactivas (Ej telnet) envía un paquete de datos tras cada pulsación de teclado realizado. Jitterbugs añade pequeños retardos, virtualmente inapreciables a nivel de usuario, cada vez que se pulsa una tecla para retrasar a su vez el envío de los respectivos paquetes. Estos retrasos serán observados por la entidad receptora con el fin de recuperar la información oculta.

Hay abundantes ejemplos del aprovechamiento de las emanaciones electromagnéticas que realizan distintos dispositivos, para su uso como canal de comunicación encubierto. Normalmente este tipo de canales son producidas por emanaciones no intencionadas y por tanto se dice que se trata de canales ocultos.[19]​Veamos algunos:

Por la preocupación por todo este tipo de problemas el gobierno de los Estados Unidos desarrolla el programa TEMPEST que estudia este tipo de tecnologías que permiten escuchas clandestinas y desarrolla una serie estándar de requisitos a exigir según el nivel de protección que se desea.

[20]​Además de las emanaciones electromagnéticas se ha experimentado que cambios en la temperatura pueden ser inducidos remotamente, por ejemplo produciendo una sobrecarga de CPU. Este tipo de ataques puede ser usado para geolocalización, y como canal encubierto.

[1]​Un sistema informático se puede considerar seguro si para que un usuario pueda acceder a cierta información es necesario que éste se identifique para que el sistema pueda comprobar si tiene autorización para acceder a dicha información (seguridad multinivel). Es decir, el acceso a la información se realiza mediante una porción del sistema que hace de mediador confiable. En el mundo real de los sistemas informáticos no tenemos seguridad absoluta sobre la fiabilidad del mediador. Además la mayoría de los sistemas tienen características (Ej. ficheros de bloqueo, bits de estado, memorias, discos duros, redes de comunicaciones) que son compartidos entre los usuarios a distintos niveles. Algunas de estas características o recursos tienen atributos que pueden ser la base para constituir canales encubiertos que permiten la comunicación de información de forma que se viole la política de seguridad.

[21]​Los canales encubiertos también pueden ser aprovechados como canal de comunicación de difícil detección que permita que cierta información sea transmitida a un tercero. Ejemplo típico de este tipo de información pueden ser contraseñas, correos electrónicos o documentos confidenciales. Por ejemplo puede ser aprovechados por virus o troyanos

[3]​Los canales encubiertos se pueden usar como canales de comunicación de información de difícil detección por parte de terceros que no sepan de su existencia. Se pueden utilizar para intentar evitar problemas de censura.

[3]​Los canales encubiertos se pueden aprovechar para generar nuevos servicios. Por ejemplo Z. Kotulski propone[22]​ su uso para mejorar las prestaciones del protocolo VoIP.

Hay importantes estudios sobre la detección/prevención/eliminación de canales encubiertos. Veamos algunos de las más importantes aportaciones:[3]

[21]​Determinar si cierto hardware o software contiene canales encubiertos es indecidible.

Por esta razón se han desarrollado técnicas que permitan poder identificarlos. Estos sistemas se basan en buscar dependencias que puedan ser explotadas para implementar este tipo de canales. Veamos algunos ejemplos:[23][1][5]

Una vez que los canales encubiertos han sido identificados, su importancia tiene que ser determinada analizando diversos factores. Veamos algunos de ellos:

[1]​En general una vez que hemos detectado un canal, podemos tomar tres tipos de decisiones:

[5]​Ejemplos de técnicas típicas de luchar contra los canales ocultos, a veces los eliminan y otras veces lo que hacen es reducir la capacidad del canal:

Son herramientas diseñadas para explotar canales encubiertos para permitir mantener ocultas ciertas comunicaciones.[29]

Herramientas de este tipo son:



Escribe un comentario o lo que quieras sobre Canal encubierto (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!