Vous êtes sur la page 1sur 12

1

Introduccin

La seguridad de ingeniera de software se encarga de proteger la integridad y la
privacidad de la informacin almacenada en un sistema. Dentro de los temas que
abarcan estn la seguridad del Software, la seguridad en el ciclo de desarrollo de
SW, la confiabilidad del SW y la Ingeniera de Seguridad
Uno de los principales objetivos de la seguridad en la ingeniera de software es
desarrollar la habilidad para identificar los riesgos posibles que pueden enfrentar
durante el proceso de desarrollo del software y aplicar medidas de seguridad para
minimizarlos.


2

4.1 Seguridad de Software

La seguridad es una disciplina que se encarga de proteger la integridad y la
privacidad de la informacin almacenada en un sistema
El autor y experto en seguridad Gary McGraw comenta lo siguiente:
La seguridad del software se relaciona por completo con la calidad. Debe
pensarse en seguridad, confiabilidad, disponibilidad y dependencia, en la fase
inicial, en la de diseo, en la de arquitectura, pruebas y codificacin, durante todo
el ciclo de vida del software [proceso].
En pocas palabras, el software que no tiene alta calidad es fcil de penetrar por
parte de intrusos y, en consecuencia, el software de mala calidad aumenta
indirectamente el riesgo de la seguridad, con todos los costos y problemas que
eso conlleva.
Tambin plantea que la base de los problemas de seguridad son la conectividad,
la complejidad y la extensibilidad de los sistemas actuales y su defuncin est
dada bajo 2 conceptos orientados dentro los objetivos de la Ing. de Software:
1.- La seguridad de un producto desarrollado se orienta a la bsqueda de que
dicho producto contine funcionando correctamente ante ataques maliciosos.
2.- La seguridad del Software en construccin se orienta a la resistencia proactiva
de posibles ataques
EL Conocimiento en los pilares para el desarrollo de software seguro se encuentra
distribuido en siete catlogos:
Principios
Guas
Reglas
Vulnerabilidades
Usos indebidos
Patrones de ataques
Riesgos Histricos
La organizacin y distribucin tiene la siguiente clasificacin:
Conocimiento Prescriptivo:
Permiten prevenir fallos de seguridad, orientado a indicar aquello que est o no
permitido realizar durante el desarrollo del Software.

3

*Principios: Equivalen a pronunciamientos de seguridad que se derivan de la
experiencia. Tienen relacin con la madurez necesaria para el desarrollo de
software.
*Guas: Recomendaciones sobre procedimientos a seguir y cuales procedimientos
deben ser evitados durante el desarrollo.
*Reglas: Recomendaciones a nivel sintctico de la forma como se deben realizar
los procedimientos durante el desarrollo.
Conocimiento diagnstico:
Ayuda a los desarrolladores a buscar y combatir los problemas derivados de un
ataque a la seguridad.
*Patrones de ataques: Permite identificar y cuantificar el riesgo provocado por mal
uso del software.
*Usos Indebidos: Se relaciona con los ataques que aprovechan las
vulnerabilidades del software para lograr romper su seguridad.
*Vulnerabilidades: El Resultado de un defecto en el software. Estos defectos son
aprovechados por atacantes para realizar acciones ilegales como tener acceso al
sistema y/o daarlo.
Conocimiento histrico:
Permite utilizar los conceptos y experiencias de desarrollos anteriores para
identificar aspectos similares en el nuevo producto.
*Historial de riesgos: Representa la descripcin detallada de aspectos especficos
no considerados en el desarrollo del software.



4

4.2 Seguridad en el ciclo de desarrollo del Software

El proceso de desarrollo de software requiere un conjunto de conceptos, una
metodologa y un lenguaje propio. A este proceso tambin se le llama el ciclo de
vida del software que comprende cuatro grandes fases: concepcin, elaboracin,
construccin y transicin.
CONCEPCIN ELABORACIN CONSTRUCCIN TRANSICIN
La concepcin
define le
alcance del
proyecto y
desarrolla un
caso de
negocio.
La elaboracin
define un plan
del proyecto,
especifica las
caractersticas
y fundamenta
la arquitectura.
En la
construccin se
crea el producto.
la transicin
transfiere el
producto a
los usuarios.

ETAPAS EN EL ANALISIS DE SEGURIDAD DEL SOFTWARE
DESARROLLADO

Anlisis: En esta etapa, se deben identificar aquellos requerimientos funcionales
que tendrn impacto en los aspectos de seguridad de la aplicacin.
Diseo: hay numerosos aspectos de seguridad que deben ser tenidos en cuenta
durante el diseo de la aplicacin. Algunos de ellos son:

5

Diseo de autorizacin
Diseo de autenticacin
Diseo de los mensajes de error
Diseo de los mecanismos de proteccin de datos
Codificacin: Es en este punto en donde suelen incorporarse, por error u omisin,
distintos tipos de vulnerabilidades. Estas vulnerabilidades se dividen en dos
grandes grupos a saber: vulnerabilidades clsicas y vulnerabilidades funcionales.
Testing: La labor de Testing/QA fue la de encontrar y reportar errores funcionales
de la aplicacin o software desarrollado.
Puesta en produccin: En este punto se deben contemplar tareas tales como:
cambio de usuarios y contraseas iniciales o por defecto, borrado de datos de
prueba y cambio de permisos de acceso.

TCNICAS PARA PROBAR EL SOFTWARE
En general las tcnicas para probar en software se dividen en dos categoras:
Tcnicas de Evaluacin Estticas: Buscan faltas sobre el sistema en reposo. As
pues, estas tcnicas se pueden aplicar, tanto a requisitos como a modelos de
anlisis, diseo y codificacin.
Tcnicas de Evaluacin Dinmicas: Generan entradas al sistema con el objetivo
de detectar fallos, cuando el sistema ejecuta dichas entradas. La aplicacin de
tcnicas dinmicas es tambin conocida como pruebas de software o testing y se
aplican generalmente sobre cdigo puesto que es, hoy por hoy, el nico producto
ejecutable del desarrollo.
TCNICAS DE EVALUACIN ESTTICA
Las tcnicas de Evaluacin esttica del desarrollo de software se les conocen de
modo genrico por revisiones.
Revisiones. Las revisiones pretenden detectar manualmente defectos en cualquier
producto del desarrollo.
Existen varios tipos de revisiones, dependiendo de qu se busca y cmo se
analiza el software.
Revisiones informales: solo son un intercambio de opiniones entre los
participantes.

6

Revisiones formales o Inspecciones. En las Revisiones Formales, los participantes
son responsables de la fiabilidad de la evaluacin, y generan un informe que
refleja el acto de la revisin.
Walkthrough. Es una revisin que consiste en simular la ejecucin de casos de
prueba para el programa que se est evaluando.
Auditorias. pretenden comprobar formatos de documentos, inclusin de toda la
informacin necesaria, etc. Es decir, no se tratan de comprobaciones tcnicas,
sino de gestin o administracin del proyecto.

TCNICAS DE EVALUACIN DINMICA
Se dividen en:
Tcnicas de caja blanca o estructural, que se basan en un minucioso examen
de los detalles procedimentales del cdigo a evaluar, por lo que es necesario
conocer la lgica del programa.
Tcnicas de caja negra o funcionales, que realizan pruebas sobre la interfaz del
programa a probar, entendiendo por interfaz las entradas y salidas de dicho
programa. No es necesario conocer la lgica del programa, nicamente la
funcionalidad que debe realizar.
METODOS DE IMPLEMENTACION DE CAJA BLANCA
Cobertura de Sentencias: Se escriben casos de prueba suficientes para que
cada sentencia en el programa se ejecute, al menos, una vez.
Cobertura de Decisin: Se escriben casos de prueba suficientes para que cada
decisin en el programa se ejecute una vez con resultado verdadero y otra con el
falso.
Cobertura de Condiciones: Se escriben casos de prueba suficientes para que
cada condicin en una decisin tenga una vez resultado verdadero y otra falso.
Cobertura Decisin/Condicin: Se escriben casos de prueba suficientes para
que cada condicin en una decisin tome todas las posibles salidas, al menos una
vez, y cada decisin tome todas las posibles salidas, al menos una vez.
Cobertura de Condicin Mltiple: Se escriben casos de prueba suficientes para
que todas las combinaciones posibles de resultados de cada condicin se
invoquen al menos una vez.

7

Cobertura de Caminos: Se escriben casos de prueba suficientes para que se
ejecuten todos los caminos de un programa.

METODOS DE IMPLEMENTACION DE CAJA NEGRA
Estas pruebas se basan en la especificacin del programa o componente a ser
probado para elaborar los casos de prueba.
Para confeccionar los casos de prueba de Caja Negra existen distintos criterios.
Algunos de ellos son:
Particiones de Equivalencia.
Este mtodo intenta dividir el dominio de entrada de un programa en un nmero
finito de clases de equivalencia.
Anlisis de Valores Lmite.
El anlisis de valores lmite complementa la tcnica de particin de equivalencia
de manera que:
En lugar de seleccionar cualquier caso de prueba de las clases vlidas e
invlidas, se eligen los casos de prueba en los extremos.


4.3 Confiabilidad del Software

La IEEE define a la confiabilidad como "la habilidad que tiene un sistema o
componente de realizar sus funciones requeridas bajo condiciones especficas en
periodos de tiempo determinados".
La confiabilidad de software significa que un programa particular debe de se
guir funcionando en la presencia de errores.
Los errores pueden ser relacionados al diseo, a la implementacin, o a la
programacin.
Aunque casi todos los software tengan errores, la mayora de los
errores nunca sern revelados debajo de circunstancias normales. Un
atacante busca esta debilidad para atacar un sistema.

8

Las organizaciones que desarrollan productos basados en software
requieren de prcticas efectivas que permitan mejorar la calidad del
producto. La Ingeniera de la Confiabilidad de Software es una prctica
cuantitativa que puede ser implementada en organizaciones de cualquier
tamao bajo distintos modelos de desarrollo.
Una falla es la manifestacin percibida por el cliente de que algo no funciona
correctamente e impacta su percepcin de la calidad. Un defecto es el problema
en el producto de software que genera una falla.
Se dice que un Software es confiable si realiza lo que el usuario desea,
cuando as lo requiera
No es confiable si as no lo hiciera. A nuestros fines un Software no es
Confiable cuando falla.
Las fallas se deben a errores en el Software. Si corregimos estos errores
sin introducir nuevos, mejoramos la Confiabilidad del Software.
La confiabilidad es un aspecto en el cual se involucran diferentes dimensiones.
Los principales conceptos asociados a la confiabilidad del software son:
Fiabilidad.
Disponibilidad.
Mantenimiento.
Seguridad.
Proteccin.
Fiabilidad: En la ingeniera se usa generalmente para asegurar aquella condicin
de trabajo que permite al usuario realizar sus tareas para que el sistema no llegue
a corromperse.
Disponibilidad: Se refiere a la condicin de trabajo que un sistema debe de tener.
Seguridad: Este concepto no solo describe el comportamiento del sistema,
tambin nos define la habilidad que tiene este para poder resistir los ataques
externos.
Mantenimiento: Es una mediada en la cual el sistema est apto para
reparaciones y modificaciones

9

Proteccin: Se refiere a la capacidad del sistema de permitir las fallas de manera
inmediata, en caso de que el sistema llegara a fallar existir alguna manera de
proteger la informacin o las acciones que el sistema realice.

4.4 Ingeniera de Seguridad

La Ingeniera de la seguridad es una rama de la ingeniera, que usa todo tipo de
ciencias para desarrollar los procesos y diseos en cuanto a las caractersticas de
seguridad, controles y sistemas de seguridad. La principal motivacin de esta
ingeniera es el dar soporte de tal manera que impidan comportamientos
malintencionados.
El campo de esta ingeniera puede ser muy amplio, podra desarrollarse en
muchas tcnicas:
Equipos: Como el diseo de cerraduras, cmaras, sensores,...
Procesos: polticas de control, procedimientos de acceso,...
Informtico: control de passwords, criptografa,...
Niveles de Seguridad
Nivel D1 El sistema entero no es confiable
Nivel C1 Proteccin de hardware
Nivel C2 Resuelve problemas del nivel C1 y C2
Nivel B1 Proteccin de Seguridad Etiquetada
Nivel B2 Proteccin Estructurada
Nivel B3 Dominio de Seguridad
Nivel A Diseo Verificado
Nivel D1
Es la forma ms baja de seguridad, esta norma establece que el sistema entero no
es confiable. No dispone de proteccin para el hardware; el sistema operativo se
compromete fcilmente y no existe autentificacin respecto de los usuarios y sus
derechos a tener acceso a la informacin almacenada en la computadora.

10

Nivel C1
Los usuarios deben identificarse ante el sistema mediante su login y contrasea,
se emplea esta combinacin para determinar los derechos de acceso a programas
e informacin que tiene cada usuario.
Nivel C2
Tiene la capacidad de restringir an ms el que los usuarios ejecuten ciertos
comandos o tengan acceso a ciertos archivos, con base no slo en los permisos,
sino tambin en los niveles de autorizacin. Adems, este nivel de seguridad
requiere que se audite al sistema.
La auditora se utiliza para llevar registros de todas las acciones relacionadas con
la seguridad como puede ser las actividades efectuadas por el administrador del
sistema.
Nivel B1
Es tambin llamado Proteccin de Seguridad Etiquetada, es el primer nivel con
soporte para seguridad multinivel. En este nivel se establece que el dueo del
archivo no puede modificar los permisos de un objeto que este bajo control de
acceso obligatorio.
Nivel B2
Conocido como Proteccin Estructurada, requiere que todos los objetos estn
etiquetados, los dispositivos como discos, cintas y terminales, pueden tener
asignado uno o varios niveles de seguridad. Este es el primer nivel en que aborda
el problema de la comunicacin de un objeto con otro que se encuentra en un
nivel de seguridad inferior.
Nivel B3
Llamado de Dominios de Seguridad, refuerza los dominios con la instalacin de
hardware. Por ejemplo, se utiliza hardware de manejo de memoria para proteger el
dominio de seguridad contra accesos no autorizados y modificaciones de objetos
en diferentes dominios de seguridad. Este nivel requiere tambin que la terminal
del usuario est conectada al sistema a travs de una ruta de acceso confiable.
Nivel A
Conocido como Diseo Verificado, constituye actualmente el nivel de seguridad
vlido ms alto. Para alcanzar este nivel de seguridad, deben incluirse todos los
componentes de los niveles inferiores; el diseo debe verificarse

11

matemticamente y debe realizarse un anlisis de los canales cubiertos y de
distribucin confiable. La distribucin confiable significa que el hardware y el
software hayan estado protegidos durante su traslado para evitar violaciones de
los sistemas de seguridad.




12

Conclusin

La seguridad del software es uno de los principales objetivos para que el software
cumpla con los requisitos que el cliente necesita para prevenir ataques externos
que pongan en riesgo la informacin y los datos que deseen almacenar en el
software, al mismo tiempo, durante el ciclo de desarrollo del software tambin se
realizan las pruebas necesarias para la seguridad que debe tener el software, as
cumple con el punto de la confiabilidad que todo sistema necesita y as lograr la
prevencin de errores que en un futuro puedan afectar el funcionamiento y la
seguridad. Para que el software sea confiable debe pasar por los siete niveles de
seguridad desde el D1 hasta el nivel A.

Bibliografa

Ian Sommerville. (2006). Ingeniera del Software. Madrid, Espaa:
Pearson Educacin, S.A.
Jos Luis Vite. (2013). Seguridad en Ingenieria de Software. 23 de mayo
del 2014, Recuperado de Blog Sitio web: http://joseviteperezith.blogspot.mx/