Tabla de contenidos
La seguridad juega un papel importante en el software y, por lo tanto, debe considerarse desde el inicio del proyecto. Los pasos necesarios pueden integrarse bien en las fases del ciclo de vida del desarrollo de software y, por lo tanto, acompañar al desarrollo.
En el pasado, prácticamente todo el software se desarrolló durante largos períodos de tiempo. Es posible que se publiquen nuevas versiones una o dos veces al año, tal vez incluso solo cada pocos años. En consecuencia, se podría dedicar una gran cantidad de tiempo a las pruebas y los conceptos de seguridad.
Hoy en día, las cosas tienen que ir más rápido en muchos casos: los cambios a veces incluso deberían llegar al cliente cada pocas semanas. En la práctica, la atención se centra a menudo en ofrecer contenido tangible. Te enfocas en la funcionalidad y el diseño porque el cliente puede ver y evaluar estos aspectos.
Por el contrario, los mecanismos de seguridad sofisticados y los escenarios de prueba exhaustivos producen resultados que apenas son visibles a primera vista. Si estos puntos son los últimos en el proceso de desarrollo, a veces se descuidan demasiado. Especialmente si los ciclos de lanzamiento van a ser cortos, las tareas sin resultados tangibles se descartan primero.
Por tanto, tiene sentido incluir el tema de la seguridad con firmeza desde el principio y así repartir las tareas a lo largo del ciclo completo. En cada fase, los aspectos que están en juego se pueden abordar de manera óptima y no se descuida ningún área.
Seguridad en pequeños pasos
La seguridad es más importante que nunca en el desarrollo de software. Constantemente están disponibles nuevas tecnologías, que a su vez allanan el camino para escenarios de amenazas cada vez más complejos. Además, las demandas de seguridad están aumentando, por ejemplo, debido a los requisitos legales o al avance de la digitalización de la vida cotidiana.
Para los desarrolladores de software, esto significa que la seguridad debe integrarse de manera integral en cada proyecto desde el principio para cubrir tantos escenarios como sea posible. Eso se puede planificar: en el ciclo de vida del desarrollo de software seguro, se pueden llevar a cabo ciertos pasos en cada fase que están específicamente dirigidos a la seguridad del proyecto.
Planificación y análisis
El proyecto aún está en sus inicios. Actualmente se está planificando lo que el software debería poder hacer más adelante y cómo se podrían lograr estos objetivos. Ahora es el momento de establecer pautas de seguridad y considerar posibles vulnerabilidades. ¿Qué no deberían poder hacer los usuarios definitivamente? ¿Qué podría pretender un atacante y cómo podría lograr su objetivo?
En un entorno ágil, las historias de usuario se utilizan a menudo para mapear las funciones planificadas. Esto ofrece la posibilidad de incluir historias de usuarios desde la perspectiva de un atacante en la planificación: Historias de usuarios malvados. Intentan descubrir la intención maliciosa para poder incorporar contramedidas predictivas más adelante.
Diseño
En este punto, se planifican específicamente los medios por los cuales se pueden implementar los requisitos. Esto incluye, por ejemplo, el diseño, la arquitectura, las tecnologías y el hardware del proyecto. ¿Cómo podría esta o aquella tecnología ser vulnerable? ¿Qué vulnerabilidades de seguridad se conocen? ¿Qué medidas se pueden tomar contra los riesgos identificados? ¿Qué riesgos surgen de la arquitectura planificada y cómo se pueden evitar? ¿Cómo puede contribuir la superficie a la seguridad del sistema? ¿Cómo se puede fortalecer el sistema contra los ataques?
Desarrollo
Ahora comienza la implementación técnica de los planes. Los desarrolladores, expertos en hardware y diseñadores de superficies ahora están implementando las medidas de seguridad especificadas en paralelo con los requisitos habituales.
Incluso durante el desarrollo, se pueden utilizar medidas y herramientas estandarizadas para comprobar si se han cumplido determinadas especificaciones del concepto de seguridad. Pueden ser pruebas automatizadas, revisiones de código o herramientas específicamente relacionadas con la seguridad (por ejemplo, herramientas que buscan en el código funciones que se han clasificado como inseguras de forma predeterminada). Dependiendo del procedimiento, los probadores ya pueden participar y, por lo tanto, señalar problemas en una etapa temprana.
Pruebas
El sistema se desarrolló de acuerdo con las especificaciones y ahora se puede probar en detalle. Los probadores comprueban si se han cumplido las pautas y medidas de seguridad especificadas y si el sistema es vulnerable. Si encuentran deficiencias o brechas de seguridad, documentan el incidente y lo pasan al desarrollo. En el caso de sistemas críticos, es aconsejable que la integridad del software se verifique mediante pruebas de penetración externas, a veces incluso después de la entrega.
Entrega y mantenimiento
Antes de que el software esté disponible para el cliente, se debe realizar una revisión final de todas las actividades de seguridad de las fases anteriores. Si se ha olvidado algo en un momento, el error ahora sale a la luz y se puede corregir.
Después de la entrega, el software finalmente pasa a la fase de mantenimiento. Si se encuentran errores o puntos débiles en el sistema, ahora deben corregirse. Es ventajoso que ya existan personas de contacto fijas y modelos de procedimiento para tales problemas, de modo que los sistemas críticos para la seguridad puedan mejorarse a tiempo.