La garantía de seguridad del software es un proceso que ayuda a diseñar e implementar software que proteja los datos y recursos contenidos en dicho software y controlados por él. El software es en sí mismo un recurso y, por lo tanto, se le debe brindar la seguridad adecuada .
La garantía de seguridad del software (SSA) es el proceso de garantizar que el software esté diseñado para funcionar a un nivel de seguridad que sea coherente con el daño potencial que podría resultar de la pérdida, inexactitud, alteración, falta de disponibilidad o mal uso de los datos y recursos que utiliza, controla y protege. [1]
El proceso de garantía de seguridad del software comienza identificando y categorizando la información que debe estar contenida en el software o que este debe utilizar. La información debe categorizarse de acuerdo con su sensibilidad . Por ejemplo, en la categoría más baja, el impacto de una violación de seguridad es mínimo (es decir, el impacto en la misión, las funciones o la reputación del propietario del software es insignificante). Sin embargo, en una categoría superior, el impacto puede representar una amenaza para la vida humana; puede tener un impacto irreparable en las misiones, las funciones, la imagen o la reputación del propietario del software; o puede resultar en la pérdida de activos o recursos significativos.
Una vez que se ha clasificado la información, se pueden desarrollar los requisitos de seguridad. Los requisitos de seguridad deben abordar el control de acceso , incluido el acceso a la red y el acceso físico; la gestión de datos y el acceso a los mismos; los controles ambientales (energía, aire acondicionado, etc.) y el almacenamiento fuera de línea ; la seguridad de los recursos humanos; y los registros de auditoría y de uso.
Todas las vulnerabilidades de seguridad en el software son el resultado de errores de seguridad o defectos dentro del software. En la mayoría de los casos, estos defectos se crean por dos causas principales: (1) incumplimiento o no cumplimiento de los requisitos; y (2) un error u omisión en los requisitos del software.
Una no conformidad puede ser simple (la más común es un error o defecto de codificación) o más compleja (es decir, un sutil error de sincronización o un error de validación de entrada). El punto importante acerca de la no conformidad es que las técnicas de verificación y validación están diseñadas para detectarlas y las técnicas de garantía de seguridad están diseñadas para prevenirlas. Las mejoras en estos métodos, a través de un programa de garantía de seguridad del software, pueden mejorar la seguridad del software.
Los problemas de seguridad más graves con los sistemas basados en software son aquellos que se desarrollan cuando los requisitos del software son incorrectos, inapropiados o incompletos para la situación del sistema. Desafortunadamente, los errores u omisiones en los requisitos son más difíciles de identificar. Por ejemplo, el software puede funcionar exactamente como se requiere bajo un uso normal, pero los requisitos pueden no manejar correctamente algún estado del sistema . Cuando el sistema entra en este estado problemático, puede resultar en un comportamiento inesperado e indeseable. Este tipo de problema no se puede manejar dentro de la disciplina del software; es el resultado de un fallo del sistema y de los procesos de ingeniería de software que desarrollaron y asignaron los requisitos del sistema al software.
Hay dos tipos básicos de actividades de garantía de seguridad de software.
Como mínimo, un programa de garantía de seguridad de software debe garantizar que:
Mejorar el proceso de desarrollo de software y crear un software mejor son formas de mejorar la seguridad del software , al producir software con menos defectos y vulnerabilidades. Un enfoque de primer orden consiste en identificar los componentes críticos del software que controlan las funciones relacionadas con la seguridad y prestarles especial atención durante todo el proceso de desarrollo y prueba. Este enfoque ayuda a concentrar los escasos recursos de seguridad en las áreas más críticas.
Existen muchos paquetes de software comercialmente disponibles (COTS) que respaldan las actividades de garantía de seguridad del software. Sin embargo, antes de utilizarlos, estas herramientas deben evaluarse cuidadosamente y debe asegurarse su eficacia.
Una forma de mejorar la seguridad del software es comprender mejor las debilidades más comunes que pueden afectar la seguridad del software. Teniendo esto en cuenta, existe un programa comunitario en curso llamado Common Weaknesses Enumeration project [2] , que está patrocinado por The Mitre Corporation para identificar y describir dichas debilidades. La lista, que actualmente se encuentra en una forma muy preliminar, contiene descripciones de debilidades, fallas y defectos comunes del software.
El análisis de la arquitectura y el diseño de seguridad verifica que el diseño del software implemente correctamente los requisitos de seguridad. En términos generales, existen cuatro técnicas básicas que se utilizan para el análisis de la arquitectura y el diseño de seguridad. [3] [4]
El análisis lógico evalúa las ecuaciones , los algoritmos y la lógica de control del diseño del software.
El análisis de datos evalúa la descripción y el uso previsto de cada elemento de datos utilizado en el diseño del componente de software . El uso de interrupciones y su efecto sobre los datos deben recibir especial atención para garantizar que las rutinas de manejo de interrupciones no alteren los datos críticos utilizados por otras rutinas.
El análisis de interfaz verifica el diseño adecuado de las interfaces de un componente de software con otros componentes del sistema, incluido el hardware , el software y los usuarios finales de la computadora .
El análisis de restricciones evalúa el diseño de un componente de software en función de las restricciones impuestas por los requisitos y las limitaciones del mundo real. El diseño debe responder a todas las restricciones conocidas o previstas del componente de software. Estas restricciones pueden incluir limitaciones de tiempo, tamaño y rendimiento, limitaciones de datos de entrada y salida, limitaciones de ecuaciones y algoritmos y otras limitaciones de diseño.
El análisis de código verifica que el código fuente del software esté escrito correctamente, implemente el diseño deseado y no viole ningún requisito de seguridad. En términos generales, las técnicas que se utilizan en el análisis de código son similares a las que se utilizan en el análisis de diseño.
Las revisiones de código seguro se llevan a cabo durante y al final de la fase de desarrollo para determinar si se han satisfecho los requisitos de seguridad establecidos, los conceptos de diseño de seguridad y las especificaciones relacionadas con la seguridad. Estas revisiones suelen consistir en la presentación de material a un grupo de revisión. Las revisiones de código seguro son más eficaces cuando las llevan a cabo personal que no ha participado directamente en el desarrollo del software que se está revisando.
Se pueden realizar revisiones informales de código seguro según sea necesario. Para realizar una revisión informal, el desarrollador simplemente selecciona uno o más revisores y proporciona y/o presenta el material que se va a revisar. El material puede ser tan informal como pseudocódigo o documentación escrita a mano.
Las revisiones formales de código seguro se llevan a cabo al final de la fase de desarrollo de cada componente de software. El cliente del software designa al grupo de revisión formal, que puede tomar o afectar una decisión de "seguir adelante o no" para continuar con el siguiente paso del ciclo de vida del desarrollo del software .
Una inspección o un recorrido de código seguro es un examen detallado de un producto paso a paso o línea por línea (del código fuente ). El propósito de realizar inspecciones o recorridos de código seguro es encontrar errores. Por lo general, el grupo que realiza una inspección o un recorrido está compuesto por pares de desarrollo, ingeniería de seguridad y control de calidad .
Las pruebas de seguridad del software , que incluyen pruebas de penetración , confirman los resultados del diseño y el análisis de código, investigan el comportamiento del software y verifican que el software cumple con los requisitos de seguridad. Las pruebas de seguridad especiales, realizadas de acuerdo con un plan y procedimientos de pruebas de seguridad, establecen el cumplimiento del software con los requisitos de seguridad. Las pruebas de seguridad se centran en localizar las debilidades del software e identificar situaciones extremas o inesperadas que podrían hacer que el software falle de maneras que causarían una violación de los requisitos de seguridad. Los esfuerzos de pruebas de seguridad a menudo se limitan a los requisitos del software que se clasifican como elementos de seguridad "críticos".
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )