Reportaje - Evolución de software más segura y económica
Cualquiera que haya descargado una aplicación para un teléfono móvil moderno se habrá percatado de que es posible activar una opción que permite descargar actualizaciones de forma automática. Existen muchas razones por las que es aconsejable actualizar los programas instalados en un dispositivo, desde la introducción de nuevas capacidades hasta subsanar agujeros de seguridad que podrían hacer que el usuario cayese víctima de un ataque por Internet. No obstante, las propias capacidades añadidas pueden crear vulnerabilidades nuevas. Éste, en esencia, es el problema que presentan los métodos tradicionales de desarrollo e implementación de software: realizar concesiones para lograr un equilibrio entre seguridad y flexibilidad. «Se parte de un software seguro, por ejemplo. Tras su entrega al cliente es necesario actualizarlo para añadir características que aporten una ventaja competitiva sobre la competencia. Si se empieza el proceso de verificación del código desde cero y al completo, aunque sólo haya cambiado una pequeña porción del mismo, el coste en tiempo y dinero resulta considerable», explicó Fabio Massacci, profesor de informática de la Universidad de Trento (Italia). El profesor Massacci, coordinador del proyecto SecureChange (1), dedicado precisamente a la solución de este problema, se refirió a los navegadores web como un ejemplo común de software que se actualiza con frecuencia bajo requisitos de seguridad estrictos. Un análisis del navegador de código abierto Firefox realizado por el equipo de SecureChange que abarca seis actualizaciones sustanciales durante un periodo de cinco años sacó a relucir que sólo un tercio del código del programa se modificó de una versión a la siguiente. Además, cada nueva versión heredó de la precedente distintas vulnerabilidades importantes, un fenómeno común también en otros navegadores como Chrome o Internet Explorer. La necesidad de proporcionar actualizaciones rápidas implica una reducción del tiempo que se dedica a las labores de comprobación y verificación. En este contexto cabe preguntarse si es posible comprobar sólo el código nuevo y mantener la integridad del sistema completo. Los investigadores de SecureChange, financiados con 5,1 millones de euros aportados por la Comisión Europea, desarrollaron la metodología, las técnicas y las herramientas que permiten aumentar la eficiencia, la seguridad y la flexibilidad del ciclo de vida del software al completo -desde la ingeniería de requisitos hasta la implementación y las actualizaciones pasando por el diseño, el desarrollo, las pruebas y la verificación- e incluso reducir su coste en términos tanto económicos como del tiempo necesario para implementar todos los pasos. El cambio: un «objeto de primera clase» «Basamos nuestra idea en considerar el cambio en sí mismo como un objeto de primera clase y en emplear normas de evolución del software que garantizasen que cada cambio se adecúe a las propiedades de seguridad exigidas. De este modo se tiene constancia de modo automático de que todas las modificaciones satisfacen las propiedades exigidas», explicó el profesor Massacci. Su método se apoyó en «delta», la diferencia entre la versión anterior y la nueva del programa. Una serie de herramientas innovadoras permite que desarrolladores e ingenieros de pruebas colaboren de manera sincronizada e identifiquen automáticamente las partes del código que deben comprobarse y también las propiedades verificadas mantenidas de una versión a la siguiente. «De este modo, los ingenieros de pruebas pueden identificar las pruebas necesarias, diferenciar entre las partes nuevas y las obsoletas, de manera rápida y sencilla. De este modo se evita comprobar de nuevo millones de líneas de código que no han cambiado y los trabajos pueden centrarse en la parte más novedosa del código y por tanto con mayor probabilidad de presentar riesgos», explicó el profesor Massacci. En cuanto a lo referente a los procesos de desarrollo, el método seguido por el equipo de SecureChange consistió en organizar los cambios en el software de manera granular en lugar de optar por una integración directa. Este enfoque implica que las modificaciones realizadas en un elemento del software no tienen por qué influir en el resto de elementos. Este método puede aplicarse además tanto en programas de pequeño tamaño como en sistemas críticos a gran escala con millones de elementos. Su potencial se puso de manifiesto en una serie de implementaciones prototipo construidas en torno a casos prácticos reales en los que participaron varios socios industriales. En Thales (Francia) el equipo estudió maneras de mejorar sus herramientas y métodos y de acelerar la incorporación de características nuevas en un sistema de control del tráfico aéreo para el que era necesario modificar sus procesos organizativos y operativos. En colaboración con Telefónica (España), los investigadores implementaron una tecnología prototipo dedicada a características críticas de seguridad en redes domésticas que permitió que la red se configurase y se reconfigurase de forma autónoma y segura para permitir la incorporación de nuevos dispositivos, como por ejemplo una visita que se conecte con su teléfono móvil a la red doméstica. En la empresa de seguridad digital Gemalto (Francia) los investigadores implementaron el sistema mediante tarjetas inteligentes y fichas como las utilizadas en el transporte público y otros servicios con el fin de lograr un modo de actualizar el software con seguridad. «Las tarjetas Visa o Mastercard pueden servir de ejemplo. Sería muy cómodo poder utilizarlas a modo de tarjetas inteligentes con las que acceder a los servicios ferroviarios, pero ahora mismo resulta imposible debido a que supondría demasiado tiempo y dinero que un tercero, como la empresa ferroviaria, realizase el proceso de verificar todos los cambios necesarios en el software de la tarjeta. Hemos mostrado que nuestro método permite añadir este tipo de características de manera fácil y rápida y hemos demostrado tanto los aspectos teóricos como, por vez primera, las aplicaciones prácticas», afirmó el profesor Massacci. Planes comerciales y empresas derivadas El coordinador de SecureChange informó que los socios industriales del proyecto ya están aprovechando varios resultados del proyecto en su beneficio. La herramienta EvoTest, desarrollada por SmartTesting, un socio francés del equipo, ya se produce de manera comercial y otras se han puesto a disposición del público bajo licencia de código abierto. El proyecto también contribuyó a la creación de una empresa derivada, QE LaB Business Services, surgida de la Universidad de Innsbruck y del Centro de Empresas Derivadas Académicas del Tirol (CAST, Austria). De manera paralela va a prolongarse el desarrollo de software de código libre a partir de la tecnología del proyecto, concretamente el componente EMF-IncQuery, propuesto a la Fundación Eclipse. La principal ventaja del método de SecureChange, de adoptarse de manera generalizada entre la comunidad dedicada al desarrollo de software, sería una reducción espectacular del tiempo de comercialización de programas nuevos y versiones de software nuevas y de los costes de comprobación y verificación. En la actualidad, las pruebas de software absorben un porcentaje cercano al 50 % de los costes previos a la comercialización y alrededor del 70 % de los posteriores. Además cerca de 6 de cada 10 proyectos de desarrollo de software no alcanzan la funcionalidad deseada y más de 8 de cada 10 no se finalizan a tiempo. «No sólo se reduciría el riesgo de generar errores y vulnerabilidades en la seguridad, sino que las empresas podrían publicar software con mucha mayor rapidez y aprovechar oportunidades de negocio con mayor agilidad», aclaró el profesor Massacci. La investigación de SecureChange se financió mediante el programa «Tecnologías futuras y emergentes» (FET) del Séptimo Programa Marco (7PM) de la Unión Europea. (1) «Ingeniería de la seguridad para sistemas evolutivos durante su ciclo de vida» Enlaces útiles: - FET - sitio web de «SecureChange» - ficha informativa del proyecto SecureChange en CORDIS