Existen numerosas capas de la pila de tecnología en las que podríamos hacer un mejor trabajo de seguridad que en la actualidad. Este es un desafío de ingeniería de sistemas, pero también hay algunos problemas conceptuales muy básicos en juego en los que hemos lanzado nuestra suerte y estamos cosechando las consecuencias.
Si antes no era obvio, el concepto de un “perímetro” de red se está erosionando de manera análoga a la forma en que el acceso generalizado a Internet ha puesto en tela de juicio ciertas ideas sobre el control y la soberanía de los Estados-nación.
La seguridad perfecta puede ser inalcanzable, pero no es completamente irreal, si uno está dispuesto a hacer sacrificios muy profundos en la usabilidad de TI. Muchos sistemas están en redes que probablemente no deberían estar. Muchas organizaciones no tienen idea de qué clases de datos mantienen, sus respectivas sensibilidades o su valor relativo (o absoluto) para la organización. Además, muchas organizaciones en realidad no saben lo que poseen y cómo está todo conectado. Muchos están ejecutando redes que funcionan en algún nivel básico pero están operando con grandes configuraciones erróneas.
Las empresas han realizado importantes inversiones en herramientas de detección, y el desafío se convierte en el personal de los puestos para que las personas tengan sentido de un diluvio de producción y notificaciones sobre eventos de red y seguridad.
Además de ese escenario, ahora tenemos dispositivos de uso personal en el bolsillo de casi todos, y las organizaciones están luchando por una solución tecnológica, aunque no han identificado cuál es la política que debe implementar una tecnología.
En la práctica, no es irrazonable suponer que ya existe actividad no autorizada en la red de cualquier organización.
Hay organizaciones que han intentado dar cuenta de un entorno sobre el cual no tienen control total. Pueden usar términos diferentes para el desafío, pero puede ser idéntico o directamente análogo. Además, este no es un asunto puramente técnico. En ausencia de un objetivo de política coherente, el despliegue de sistemas de seguridad puede, en el mejor de los casos, ser una pérdida de dinero y, en el peor de los casos, proporcionar una seguridad ilusoria. Algunos pueden obstruir adicionalmente el mantenimiento o el diagnóstico de problemas técnicos.
Los militares conocen bien el concepto de “operar en un modo degradado”. Las cosas suceden cuando tienes un adversario inteligente. Pueden atascar o degradar sus comunicaciones, pueden infiltrarse en sus redes y pueden actuar para evitar que las capacidades clave brinden servicios. La tarea, entonces, no es asumir que uno pueda tener una prevención del 100% de tales cosas, sino diseñar para la resiliencia frente a ellas.
Un enfoque que tiene algún sentido en el entorno moderno de TI es el concepto de red de “confianza cero”. Si modelamos conceptualmente lo que sucede en nuestras redes, en el análisis final, muchas cosas se reducen a una aplicación, conectándose a través de una red, a otra aplicación.
Si podemos reducir la confianza entre la aplicación y el sistema operativo host, entre el sistema operativo host y la red, y entre la aplicación y la otra aplicación, hemos creado varios puntos en los que podemos detectar una falla de seguridad o hacer cumplir una control de seguridad.
La autenticación y autorización de aplicaciones sólidas y mutuas sería un buen comienzo, especialmente si se combinan con el cifrado de mensajes. Los diseños de protocolos que suponen una red no confiable simplemente tienen sentido y potencialmente facilitan cosas como la migración a redes móviles y conexiones de respaldo en caso de que se interrumpa el servicio de red. El etiquetado del tráfico en una resolución adecuada de grano fino también podría facilitar garantizar que los datos solo vayan a donde pertenecen.
Ya hay aplicaciones en uso general que intentan no confiar en el sistema en el que se ejecutan. Cada programa antivirus creíble contiene un subsistema significativo que está diseñado para detectar intentos de otro software para impedir su funcionalidad. A veces esta defensa funciona, a veces no, pero la creciente disponibilidad de raíces de confianza de hardware, tal como están incorporadas en los módulos de plataforma de confianza, es una parte importante de cualquier solución de integridad de software.
Del mismo modo, las operaciones de red no deberían confiar en ninguna red que no se encuentre dentro del mismo enclave, que podría ser una empresa o un departamento individual. Las redes de área amplia que no filtran rutas BGP o intentan autenticar criptográficamente los anuncios de ruta están invitando a la manipulación por parte de los adversarios.
Las prácticas básicas de desarrollo de software seguro contribuyen en gran medida a reducir la superficie de ataque. La gente todavía escribe software que intenta usar una conexión de red sin asegurarse primero de que exista, y mucho menos verificar que sea la red correcta .
Desde el punto de vista de la integridad de la plataforma, haríamos bien en mirar hacia atrás sobre un gran cuerpo de investigación de seguridad que se realizó en los años setenta y ochenta. En ese momento, la CPU era escasa y la sobrecarga del ciclo del sistema (frente al usuario) era algo que debía minimizarse. Ahora que tenemos procesadores de 8 núcleos en teléfonos móviles, podríamos tener más margen para hacer un poco de monitoreo de integridad en segundo plano.
Si realmente queremos fortalecer la plataforma a largo plazo, podríamos analizar las arquitecturas de Harvard (no von Neumann). Si no podemos hacer que los programadores usen lenguajes y prácticas que eviten la ejecución accidental de datos, entonces quizás sea mejor usar arquitecturas de procesador donde los datos solo puedan ser datos y nunca una instrucción. Esto también podría hacerse con etiquetado en procesadores y memoria.
El crecimiento de los dispositivos interconectados no hará que esto sea más fácil. La prisa por enviar productos con procesadores integrados y conectividad al mercado significa que se cortarán las esquinas. Hay algunos enfoques de seguridad que se adaptan a las plataformas de hardware con recursos limitados, y son muy necesarios en este momento. Al mismo tiempo, muchos de estos objetos también pueden tener la capacidad de proporcionar cierta percepción de su entorno, ya sea el mundo físico o la red. Algunos de los datos de ese sensor pueden facilitar la construcción de perfiles de múltiples factores para mejorar la seguridad del sistema.
En resumen, creo que la solución ideal probablemente consiste en
- hardware donde los desbordamientos del búfer no pueden funcionar,
- junto con lenguajes de programación que proporcionan funcionalidad para evitar descuidos estúpidos,
- implementando aplicaciones que usan criptografía sólida para autenticar cada extremo de una conversación encriptada,
- ejecutándose en un sistema operativo que se verifica a sí mismo por fallas
- que se validan contra una raíz de confianza de hardware separada protegida criptográficamente.
Si no es obvio, nada de lo que dije implica la ausencia de monitoreo o informes, pero no creo que podamos poner todos nuestros huevos en las canastas de “detección” o “prevención”.
Editar: error tipográfico.