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.John MacHugh,"Covert Channel Analysis". Handbook for the Computer Security Certification of Trusted System. Naval Research Laboratory. Febrero 1996Felix C. Freiling y Sebastian Schinzel,"Detecting Hidden Storage Side Channel Vulnerabilities in Networked Applications".University of Mannheim 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. Está 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.

Evolución del concepto El concepto de canal encubierto fue introducido en 1973 por Butler W. LampsonButler W. Lampson,"A Note on the Confinement Problem" 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 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.

Clasificaciones Según mecanismo de ocultación 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).

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

Canales de almacenamiento En este tipo de canales, el receptor de la información percibe la información como un cambio en el valor de un recursos compartido o atributo. Esas zonas de memoria pueden ser por ejemplo: Ciertos campos en la cabecera de los paquetes de red que bien están en desuso o que su modificación no afecta al correcto funcionamiento del protocolo Mediante el uso de zonas de memoria compartida. Ejemplos: Bloqueos de ficheros del disco duro, modulación de la ocupación del espacio de disco. Observar que tienen que haber algún mecanismo para inicializar la comunicación entre las entidades y para la secuenciación correcta de eventos. Esto se podría hacer mediante otro canal con un pequeño ancho de banda.

Canales de temporización En este tipo de canales, el receptor de la información la percibe vía un cambio en el tiempo requerido por el destinatario para detectar cierta acción. Es decir, para codificar la información se basan en la modulación del comportamiento del emisor, lo cual se traduce, por norma general, en variaciones de la tasa de envío de información. Ejemplos: Tiempo de uso de la CPU. Tiempo de comienzo de un proceso. Demanda de ejecución de determinada tarea observable por el otro usuario. Observar que el emisor y el receptor tienen que tener acceso a un tiempo de referencia, como un reloj de tiempo real. Por otro lado es necesario algún mecanismo para inicializar el proceso y para la secuenciación de eventos. En este tipo de canales está implícita la habilidad del emisor para cambiar el valor de un atributo compartido y la habilidad del receptor para detectarla.

Canal oculto 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. 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. Otras clasificaciones Se han propuesto algunas otras clasificaciones para los canales encubiertos. Veamos algunos ejemplos: Clasificación en función de si existe o no probabilidad de que los datos que reciba el receptor sean incorrectos por la existencia de ruido. Clasificación en función de si la comunicación es sólo 1-1 (un emisor-un receptor) (canales no agregados), o si son creados por varias parejas de procesos que acceden a un mismo conjunto de variables (canales agregados).

Ámbitos de aplicación 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).

Intercomunicación de procesos El origen mismo del concepto de canal encubierto fue introducido en el marco de un estudio 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.

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

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: Consumo de CPU. Por ejemplo, acapararla puede ser considerado como un true y quedándose inactivo puede ser interpretado como false. Consumo de memoria Bloqueos del sistema de ficheros.

Flujo de datos 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: Esconder el canal encubierto dentro de los mensajes permitidos. Para ello se usa la Esteganografía, que es la disciplina de ocultación de los mensajes. No se debe confundir con la Criptografía que es la codificación de los mensajes. Usar autenticación para poder detectar los mensajes auténticos. Además dentro de la autenticación podemos embeber un canal encubierto. A este tipo de canales encubiertos se les llama canales subliminales. El canal encubierto estará dentro del propio algoritmo de autenticación usado por los mensajes legítimos. Por tanto será indistinguible dentro de la autenticación (normalmente una firma digital). Sin el conocimiento del secreto el mensaje subliminal no puede ser leído ni detectado.

Protocolos de comunicación Los protocolos que se usan en las redes de comunicaciones se han aprovechado intensamente para la definición de distintos tipos de canales encubiertos: Canales encubiertos basados en la utilización de ciertos campos de los paquetes. La utilización de datos de aplicación como portador de la información requiere un conocimiento detallado de la información enviada para poder modificarla sin levantar sospechas. Este motivo impulsa al uso de campos de cabecera de los paquetes que bien están en desuso o que si lo modificamos de cierta forma no se afecta al correcto funcionamiento del protocolo. Canales encubiertos basados en la temporización de los mensajes. Canales basados en la reordenación de paquetes. La primera propuesta fue hecha por Kamran AhsanK. Ahsan,"Covert Channel Analysis anda Data Hiding in TCP/IP". 2002