Information Flow Control (IFC) es un paradigma de seguridad que se enfoca en regular cómo la información fluye a través de un sistema, en lugar de solo controlar el acceso a los recursos. Su objetivo principal es asegurar que la información clasificada o sensible no pueda ser observada o inferida por entidades no autorizadas (confidencialidad) y que la información no pueda ser modificada de forma no autorizada (integridad). IFC opera asignando etiquetas de seguridad (sensibilidad o nivel de confianza) a los datos y a los procesos, y luego aplicando políticas que dictan cómo la información puede fluir entre diferentes niveles de seguridad. Esto va más allá del control de acceso discrecional (DAC) o mandatorio (MAC) al considerar las dependencias transitivas y las inferencias.
En el mundo real, IFC se implementa en diversos contextos. Por ejemplo, en sistemas operativos como SELinux o AppArmor, aunque principalmente son MAC, incorporan elementos de IFC al restringir las interacciones entre procesos y recursos basándose en etiquetas de seguridad. Lenguajes de programación como Jif (Java Information Flow) o Haskell con extensiones de seguridad permiten a los desarrolladores especificar políticas de flujo de información directamente en el código, garantizando que los datos sensibles no se filtren a través de canales implícitos o explícitos. También se utiliza en sistemas de bases de datos para asegurar que las consultas complejas no revelen información agregada que debería permanecer confidencial, y en sistemas distribuidos para gestionar la propagación de datos en entornos multi-tenant o con diferentes niveles de confianza.
Para un arquitecto, IFC es crucial para diseñar sistemas robustos frente a amenazas internas y externas. Permite modelar y hacer cumplir políticas de seguridad granulares que son difíciles de lograr con solo DAC o MAC. Sin embargo, su implementación introduce una complejidad significativa: el etiquetado de datos y procesos puede ser oneroso, y la verificación de las políticas de flujo de información puede requerir análisis estáticos o dinámicos complejos. Los trade-offs incluyen un mayor overhead computacional y de desarrollo, pero a cambio se obtiene una garantía de seguridad más fuerte, especialmente en entornos donde la confidencialidad y la integridad son primordiales (ej. sistemas financieros, militares, de salud). Un arquitecto debe evaluar si la criticidad de la información justifica la inversión en IFC, considerando la madurez de las herramientas y la experiencia del equipo.