Argumentando la seguridad en la fase de análisis

 

ARGUMENTANDO LA SEGURIDAD EN LAS FASES DE DESARROLLO DE SOFTWARE

  1.  Elabore una tabla comparativa entre las fases del ciclo de vida del desarrollo de software (SDLC) con las fases del ciclo de vida del desarrollo de software seguro (S-SDLC)

Modelos del S-SDLC

  •          Microsoft Security Developmen lifecycle
  •          Oracle Software Security Assurance
  •          Comprehesive Lightweight Application Security Process
  •          Team Software Process Secure
  •          Software Assurance Maturity Model
  •          Building Security in Maturity Model
  •          Agile Developmen

Modelos del SDLC

Existen varios modelos de ciclo de vida de desarrollo de software definidos y diseñados que se siguen durante el proceso de desarrollo de software. Estos modelos también se denominan “Modelos de proceso de desarrollo de software”. Cada modelo de proceso sigue una serie de pasos únicos para su tipo para garantizar el éxito en el proceso de desarrollo de software

  •          Modelo de cascada
  •          Modelo iterativo
  •          Modelo en espiral
  •          Modelo V
  •          Modelo Big Bang


Fases del ciclo de vida del desarrollo de software (SDLC)

 

Descripción

Fases del ciclo del desarrollo del software seguro (S-SDLC)

 

Descripción






Fase de planeación

En esta fase se Identifica las necesidades del nuevo software para lograr los objetivos estratégicos de las partes interesadas. Este es un plan preliminar (o un estudio de viabilidad) para que los interesados adquieran los recursos necesarios para construir una infraestructura para modificar o mejorar un servicio. El propósito de este paso es averiguar el alcance del problema y determinar las soluciones. En esta etapa se deben considerar los recursos, costos, tiempo, beneficios y otros elementos.






Fase de análisis seguro

La fase de planificación es el espacio apropiado para la definición y el establecimiento de la seguridad de la fiabilidad de una aplicación de software. Al conocer los riesgos, se podrán identificar y corregir los errores de seguridad.

 

Se establecen los objetivos de seguridad y se identifican los activos críticos.






Fase de requerimientos

Aquí es donde los equipos consideran los requisitos funcionales y no funcionales del proyecto. También es donde tiene lugar el análisis del sistema, o el análisis de las necesidades de los usuarios finales para garantizar que el nuevo sistema pueda satisfacer su necesidad.

El análisis de sistemas es vital para determinar cuáles son las necesidades de una empresa, así como cómo pueden satisfacerse, quién será responsable de las partes individuales del proyecto y qué tipo de cronograma se debe esperar.






Fase de requerimientos seguro

En esta fase se tiende a identificar y abordar los requisitos de seguridad en esta etapa, se reducen los riesgos y se facilita la creación de un sistema más resistente a las amenazas cibernéticas.

 

La fase de requerimientos en el desarrollo de software seguro es fundamental para establecer una base sólida de seguridad desde el principio








Fase de diseño

En esta fase se describe, en detalle, las especificaciones, características y operaciones necesarias que satisfarán los requisitos funcionales del sistema propuesto que se implementará. Este es el paso para que los usuarios finales discutan y determinen sus necesidades específicas de información comercial para el sistema propuesto.

En esta fase se desarrollan varias actividades, como:

Diseño de la arquitectura.

Especificación abstracta del sistema.

Diseño de interfaces.

Diseño de componentes.

Diseño de las estructuras de datos.

Diseño de algoritmos.








Fase de diseño

Es la etapa del ciclo de vida para determinar requerimientos de diseño,

análisis de los espacios de ataques, modelos de amenazas y medidas para mitigar el riesgo utilizando un análisis dinámico.

 

En la etapa de diseño seguro se puntualiza en la estructura interna del sistema (como la estructura de las bases de datos, elementos para las transacciones y comunicaciones)

Se identifican y evalúan los riesgos de seguridad asociados con el diseño y la arquitectura.







Fase de desarrollo

En esta fase del ciclo de vida de un sistema, se genera el código fuente en el lenguaje de programación escogido. Aquí también puede definirse la parametrización del software.

 

Para el desarrollo del código se pueden utilizar herramientas denominadas IDE (entornos de desarrollo integrado), que sirven para codificar de manera más fácil y práctica.

 

En esta fase también pueden realizarse pruebas unitarias que definirán la versatilidad del sistema y su capacidad de detección de fallos.






Fase de desarrollo seguro

Durante esta fase, se aplican prácticas y controles de seguridad para garantizar que el software se desarrolle de manera segura desde el principio.

-Codificación segura

-Revisión de código seguro

-Pruebas de seguridad

-Integración y entrega continuas (CI/CD)

-Control de versiones y gestión de cambios

-Gestión de dependencias seguras

-Seguridad en el diseño arquitectónico

- Pruebas de seguridad de componentes de terceros






Fase de integración y pruebas

Esta fase implica la integración de sistemas y las pruebas del sistema (de programas y procedimientos), normalmente realizadas por un profesional de aseguramiento de la calidad (QA), para determinar si el diseño propuesto cumple con los objetivos definidos. Las pruebas pueden repetirse, específicamente para verificar errores e interoperabilidad. Estas pruebas se realizarán hasta que el usuario final lo considere aceptable. Otra parte de esta fase es la verificación y validación, las cuales ayudarán a garantizar la finalización exitosa del programa.






Fase de integración y pruebas seguro

La fase de integración y pruebas en el desarrollo de software seguro es una etapa crítica en la que se ensamblan todas las partes del software desarrollado y se realizan pruebas exhaustivas para identificar posibles problemas, incluyendo vulnerabilidades de seguridad. Esta fase tiene como objetivo garantizar que el sistema funcione correctamente y que cumpla con los requisitos de seguridad y calidad.



Fase de implementación o despliegue

El software se implementa en un entorno de producción. esta fase implica la instalación real del sistema recientemente desarrollado. Este paso pone el proyecto en producción moviendo los datos y componentes del sistema y colocándolos en el nuevo sistema a través de una transición directa.



Fase de implementación o despliegue seguro

Esta es etapa crítica en la que el software se instala en un entorno de producción y se pone a disposición de los usuarios finales. Garantizar que esta fase se realice de manera segura es esencial para proteger el software contra amenazas y riesgos.



Fase de operación y mantenimiento

sigue necesitando una supervisión, actualización y mantenimiento continuos para que siga funcionando de forma adecuada. Y para satisfacer las crecientes demandas de los usuarios y los riesgos de seguridad, necesita desarrollar funcionalidades y características nuevas y mejoradas junto con actualizaciones de seguridad para seguir cumpliendo a los usuarios finales.



Fase de operación y mantenimiento seguro

La fase de operación y mantenimiento seguro en el desarrollo de software es una etapa continua y crítica en la que el software se ejecuta en un entorno de producción y se gestiona a lo largo de su ciclo de vida para mantenerlo seguro y eficiente. Durante esta fase, se enfatiza la seguridad y la disponibilidad del software.



 

2. Resuma mediante una tabla, las principales características   de las metodologías de desarrollo de software seguro.


CARACTERISTICAS DE LAS METODOLOGIAS S-SDLC

las metodologías de desarrollo de software seguro se caracterizan por su enfoque en la seguridad desde el principio, la integración de actividades de seguridad en todas las etapas del ciclo de vida del desarrollo y la atención a la evaluación de riesgos, pruebas de seguridad, revisión de código seguro y otros aspectos relacionados con la seguridad. Estas metodologías buscan construir software más seguro y resistente a las amenazas cibernéticas.

CARACTERISTICA

DESCRIPCION

 

Enfoque en la seguridad desde el principio

Una característica fundamental es que la seguridad se considera una preocupación desde el inicio del proyecto. Esto implica que se identifican y abordan los riesgos de seguridad desde las primeras etapas del ciclo de vida del desarrollo.

 

Integración de seguridad en cada etapa

Estas metodologías enfatizan la integración de actividades de seguridad en todas las fases del desarrollo, desde la concepción y el diseño hasta la implementación, las pruebas y el mantenimiento.

 

Evaluación de riesgos

Se lleva a cabo una evaluación de riesgos en la fase inicial para identificar y priorizar las amenazas y los activos críticos. Esto guía la planificación de las medidas de seguridad adecuadas.

 

Pruebas de seguridad

Incluyen la realización de pruebas específicas de seguridad para identificar vulnerabilidades y debilidades en el software. Esto abarca pruebas de penetración, análisis de código, análisis de seguridad estático y dinámico

 

Revisión de código seguro

Las metodologías de desarrollo seguro fomentan la revisión de código con un enfoque en la identificación de problemas de seguridad. Esto ayuda a eliminar errores de seguridad antes de que lleguen a producción

Desarrollo de documentación segura

Se enfatiza la documentación de las medidas de seguridad implementadas, así como las políticas y procedimientos relacionados con la seguridad del software

 

Gestión de vulnerabilidades

Se establecen procesos para gestionar y remediar las vulnerabilidades de seguridad de manera eficiente y oportuna

 

Cumplimiento normativo

Estas metodologías permiten cumplir con estándares y regulaciones de seguridad específicos, como ISO 27001, HIPAA, PCI DSS y GDPR

Gestión de configuración segura

Se presta atención a la gestión segura de la configuración del software y los sistemas en producción para evitar configuraciones no seguras.

Seguimiento y registro de incidentes de seguridad

Se establecen procedimientos para el seguimiento y el registro de incidentes de seguridad durante el desarrollo y la operación del software.

Capacitación en seguridad

Se proporciona formación en seguridad a los desarrolladores y otros profesionales involucrados para promover las mejores prácticas de seguridad.

Revisión continua

La seguridad es una preocupación continua, y las metodologías de desarrollo seguro incluyen revisiones y mejoras continuas en las medidas de seguridad y en el proceso de desarrollo.

 

3. De todas las metodologías estudiadas cuál de ellas seleccionaría para el desarrollo de software seguro. Especifique los criterios que tendría en cuenta para seleccionar dicha metodología.  Una vez desarrollado este ítem, capture la pantalla de la diapositiva y publíquela en el blog portafolio.


De las metodologías estudiadas utilizaría la metodología Agile Secure Development (Desarrollo Ágil Seguro) ya que esta metodología es una gran opción a la hora de realizar proyectos por varios motivos. Esta se alinea perfectamente con la tendencia cambiante de la industria del software. En la actualidad, los requisitos y las amenazas de seguridad pueden evolucionar rápidamente, y Agile permite adaptarse a estos cambios de manera ágil, reconocer la importancia de la adaptabilidad en un mundo tecnológico en constante cambio es fundamental. Agile permite una respuesta rápida a los cambios en los requisitos de seguridad y las prioridades del proyecto, lo que es esencial para mantener la relevancia y la efectividad del software en un entorno altamente competitivo y en constante evolución.


La metodología Agile promueve la colaboración y la comunicación efectiva entre los equipos de desarrollo, seguridad y operaciones. Esto significa que, tendría la oportunidad de aprender y trabajar en un entorno multidisciplinario, lo que ampliaría mi comprensión de los desafíos y las mejores prácticas en seguridad. La colaboración cercana entre equipos también fomenta la identificación temprana de problemas de seguridad y la corrección oportuna de vulnerabilidades, lo que mejora la calidad del software resultante.

Otra razón importante es su enfoque en la entrega continua de valor al cliente. En un proyecto de ingeniería de software, el objetivo final es proporcionar software funcional y seguro que satisfaga las necesidades del cliente. Agile permite la entrega de incrementos de software en intervalos regulares, lo que significa que el cliente puede obtener rápidamente características útiles y seguras en lugar de esperar largos períodos para ver resultados. Esto no solo satisface al cliente, sino que también mejora la visibilidad y la retroalimentación sobre la seguridad del software.

Esta metodología pone la seguridad en el centro del proceso de desarrollo. Como estudiante, esto me proporcionaría una base sólida en las prácticas de seguridad desde el principio, lo que es esencial en un entorno donde las amenazas cibernéticas son una preocupación constante. Aprender a identificar y mitigar riesgos de seguridad de manera proactiva es una habilidad valiosa en la industria.

 

4. Consulte y exponga las principales características del nuevo paradigma de desarrollo “Programación   Orientada a Aspectos (POA)”  y qué aportes hace este paradigma  al desarrollo de software seguro

La Programación Orientada a Aspectos (POA) Aspect-Oriented Programming , es un paradigma de desarrollo de software que se centra en la modularidad y encapsulación de aspectos transversales o preocupaciones que no encajan fácilmente en la Programación Orientada a Objetos (POO). Los aspectos transversales son preocupaciones que afectan a múltiples módulos o componentes de un sistema de software, como la seguridad, la auditoría, el registro, el control de acceso y otros.

Separación de preocupaciones: La POA permite separar las preocupaciones transversales de las preocupaciones principales del negocio. Esto facilita el mantenimiento y la comprensión del código, ya que cada aspecto se encapsula en un módulo independiente llamado "aspecto".

Aspectos y puntos de unión: En la POA, los aspectos se definen como módulos que contienen código que se ejecuta en "puntos de unión" específicos del programa. Los puntos de unión son lugares en el código donde se intersecan las preocupaciones principales y los aspectos transversales.


Modularización: Los aspectos permiten la modularización de las preocupaciones transversales, lo que facilita la reutilización y la gestión de la lógica relacionada con la seguridad, la autenticación, la autorización, entre otros.

Mejora de la legibilidad y mantenibilidad: Al separar las preocupaciones, el código principal del negocio se vuelve más limpio y legible, lo que facilita el mantenimiento y la colaboración en el desarrollo de software.

Este paradigma hace una gran cantidad de aportes al desarrollo de software seguro como: Mejora de la seguridad: La POA puede mejorar la seguridad al permitir la encapsulación de aspectos de seguridad directamente en el código. Por ejemplo, se pueden implementar aspectos de control de acceso, autenticación y autorización de manera coherente en todo el sistema, lo que reduce la posibilidad de omisiones de seguridad.

Gestión de políticas de seguridad: La POA facilita la gestión de políticas de seguridad en un solo lugar. Los aspectos de seguridad pueden definir y aplicar políticas de seguridad en puntos de unión específicos, lo que simplifica el mantenimiento y la adaptación de políticas de seguridad a medida que cambian los requisitos.

Auditoría y registro: Los aspectos pueden utilizarse para gestionar la auditoría y el registro de eventos de seguridad de manera centralizada. Esto garantiza que se registren adecuadamente las actividades relacionadas con la seguridad y se cumplan los requisitos de cumplimiento normativo.

Flexibilidad en la adaptación de seguridad: La POA permite una mayor flexibilidad en la adaptación de las preocupaciones de seguridad a medida que evolucionan los requisitos y las amenazas. Los cambios en las políticas de seguridad o la adición de nuevas capas de seguridad se pueden implementar de manera más eficiente utilizando aspectos.





Referencias

 

https://web.fdi.ucm.es/posgrado/conferencias/AndresCaroLindo-slides.pdf

https://platzi.com/blog/desarollo-software-seguro/

https://geekflare.com/es/software-development-life-cycle-sdlc-guide/

file:///D:/Seguridad%20en%20el%20ciclo%20de%20vida%20del%20desarrollo%20de%20software.pdf


Comentarios

Entradas populares de este blog

Resumen Estrategia de prueba del software

Mapa de Telaraña Fundamentos de Pruebas