Introduccción
La criticidad de los actuales sistemas de información en diferentes dominios de la sociedad determina que, si bien es importante asegurar que el software se desarrolla de acuerdo a las necesidades del usuario (requerimientos funcionales), también lo es garantizar que el mismo sea seguro. Hasta hace poco tiempo la Ingeniería de Software y la Ingeniería de Seguridad venían desarrollándose de forma independiente, limitando la posibilidad de que la seguridad sea considerada como parte del proceso de desarrollo de sistemas de software seguros. Si no se dispone de una definición precisa de lo que significa seguridad y cómo debe comportarse un software, no tiene sentido alguno preguntarse si el mismo es seguro o no. Es necesario revisar la terminología y definir un conjunto de conceptos de manera más rigurosa, considerar y comparar diferentes metodologías de tratamiento de la seguridad pasibles de ser articuladas con las metodologías para el proceso del ciclo de vida del desarrollo de software ya existentes, y considerar los modelos de madurez y aseguramiento de calidad.
La creciente dependencia de tareas críticas respecto del software conlleva a que el valor del mismo ya no resida solamente en la aptitud que posee de mejorar o sostener la productividad y la eficiencia de las organizaciones, sino que además se requiere que posea la capacidad de continuar operando de manera confiable aun cuando deba enfrentar eventos que amenazan su utilización. Esto ha conducido a un conjunto de cambios, derivados de la incorporación de los aspectos de seguridad, en la visión de las propiedades de los sistemas de información que hacen uso intensivo de software, por lo que resulta necesario revisar algunos conceptos de manera más precisa. Surgen de esta revisión dos conceptos fundamentales como son “software assurance”(SA) y “software secure”.

Seguridad de software
La seguridad en el software es un área de investigacion y de estudio en el cual con el paso del tiempo se han desarrollado varias tecnicas tanto para proteccion del software, como para ataque de un software utilizando herramientas especialmente diseñadas para cada tipo de software. Esto a la vez nos ayuda para poner a prueba cuan seguro es nuestro software y desarrollar software mas seguro.
Actualmente en el desarrollo de Software, el desarrollador ya no sólo debe concentrarse únicamente en los usuarios y sus requerimientos, sino también en los posibles atacantes. Esto ha motivado cambios importantes en el proceso de diseño y desarrollo de software para incorporar a la seguridad dentro de los requerimientos críticos del sistema. Prácticamente todo sistema debe incorporar cuestiones de seguridad para defenderse de ataques maliciosos.
Como desarrollador de software uno primero debe de determinar lor riesgos de una aplicación particular. por ejemplo un sitio web puede ser sujeto de una variedad de riesgo, tales como ataques hacia el servidor, el host, ataques sobre la base de datos, lo que pudiera implicar perdidas monetarias.
Criterios para desarrollar un Software Seguro
- Autenticación: el proceso de verificar la identidad de una entidad.
- Control de acceso: el proceso de regular las clases de acceso que una entidad tiene sobre los recursos.
- Auditoria: un registro cronológico de los eventos relevantes a la seguridad de un sistema. Este registro puede luego examinarse para recontruir un escenario en particular.
- Confidencialidad: la propiedad de que cierta información no este disponible a ciertas entidades.
- Integridad: la propiedad de que la información no sea modificada en el trayecto fuente-destino.
- Disponibilidad: la propiedad de que el sistema sea accesible a las entidades autorizadas.
Objetivos para un Software Seguro
- independencia de la seguridad: la seguridad debe de construirse y utilizarse de manera independiente de la aplicacion.
- independencia de la aplicación: la aplicación no debe depender del sistema de seguridad usado, debe ser desarrollada y matenida en forma separada.
- Uniformidad: la seguridad debe aplicarse de manera correcta y consistente a través de toda la aplicación y del proceso que desarrolla la misma.
- Modularidad: mantener la seguridad separada. Entre otras ventajas esto nos brindará mayor flexibilidad y menor costo de mantenimiento.
- Ambiente seguro: se debe partir de un entorno confiable. es decir las herramientas de desarrollo y lenguajes de programación no deben contener agujeros de seguridad.
- Seguridad desde el comienzo: la seguridad debe ser considerada como un requerimiento desde el inicio del siseño.
No hay comentarios.:
Publicar un comentario