Según [B$^+$88] un canal oculto es un cauce de comunicación que permite
a un proceso receptor y a un emisor intercambiar información de forma que
viole la política de seguridad del sistema; esencialmente se trata de un
método de comunicación que no es parte del diseño original del sistema
pero que puede utilizarse para transferir información a un proceso o usuario
que a priori no estaría autorizado a acceder a dicha información.
Los canales ocultos existen sólamente en sistemas con seguridad multinivel
([PN92]), aquellos que contienen y manejan información con
diferentes niveles de sensibilidad, de forma que se permite acceder
simultáneamente a varios usuarios a dicha información pero con diferentes
puntos de vista de la misma, en función de sus privilegios y sus necesidades
de conocimiento (needs to know). El concepto de canal oculto
fué introducido en 1973, en [Lam73], y desde entonces muchos han
sido los estudios realizados sobre este método de ataque, que afecta
especialmente a sistemas en los que el aspecto más importante de la seguridad
es la privacidad de los datos (por ejemplo, los militares).
Generalmente se suelen clasificar los canales cubiertos en función de
varios aspectos ([G$^+$93]):
- Escenario
Cuando se construyen escenarios de canales cubiertos generalmente se suele
diferenciar entre canales cubiertos de almacenamiento y de
temporización ([Lip75]). Los primeros son canales en los que se
utiliza la escritura directa o indirecta de datos por parte de un proceso y la
lectura - también directa o indirecta - de esos datos por parte de otro;
generalmente utilizan un recurso finito del sistema, como bloques de disco, que
se comparte entre entidades con diferentes privilegios. Por contra, los
canales ocultos de temporización utilizan la modulación de ciertos recursos,
como el tiempo de CPU, para intercambiar la información entre procesos. En
[G$^+$93] se pueden encontrar ejemplos de ambos tipos de canales ocultos;
otro buen ejemplo de covert channel se encuentra en [McH95].
- Ruido
Como cualquier canal de comunicación, oculto o no, los canales cubiertos
pueden ser ruidosos o inmunes al ruido; idealmente, un canal inmune al ruido es
aquél en que la probabilidad de que el receptor escuche exactamente lo que
el emisor ha transmitido es 1: sin importar factores externos, no hay
interferencias en la transmisión. Evidentemente, en la práctica es muy
difícil conseguir estos canales tan perfectos, por lo que es habitual
aplicar códigos de corrección de errores aunque éstos reduzcan el ancho
de banda del canal.
- Flujos de información
De la misma forma que en las líneas convencionales de transmisión de
datos se aplican técnicas (multiplexación en el tiempo, multiplexación en
frecuencia...) para maximizar el ancho de banda efectivo, en los canales
cubiertos se puede hacer algo parecido. A los canales en los que se transmiten
varios flujos de información entre emisor y receptor se les denomina agregados, y dependiendo de cómo se inicialicen, lean y reseteen las
variables enviadas podemos hablar de agregación serie, paralela o
híbrida; los canales con un único flujo de información se llaman
no agregados.
La preocupación por la presencia de canales ocultos es, como hemos dicho,
habitual en sistemas de alta seguridad como los militares; de hecho, muchos
de los estudios sobre ataques basados en canales cubiertos y su prevención
han sido - y son - realizados por las clásicas agencias gubernamentales
y militares estadounidenses (National Security Agency, US Air Force,
National Computer Security Center...). No obstante, también en
entornos más `normales' es posible la existencia de canales ocultos,
especialmente aprovechando debilidades de la pila de protocolos TCP/IP
([Rou96], [Row96]...).
El análisis y detección canales cubiertos es una tarea complicada que
generalmente se basa en complejos modelos formales y matemáticos
([Wra91b], [MK94]...); diversas aproximaciones son
utilizadas para el estudio de
canales de temporización ([Hu91], [Wra91a]...), y también
para el de canales de almacenamiento ([PK91]).
© 2002 Antonio Villalón Huerta