Вы находитесь на странице: 1из 13

1

INGENIERIA DE SOFTWARE
UNIDAD 4

ING. NELLY ROSINA IZAGUIRRE CARDENAS

CRUZ MEDINA PEDRO
DE LEON MARTINEZ PABLO
GOMEZ REYES CARLOS FRANCISCO
MEJIA RODRIGUEZ CINTHIA
RAMIREZ GARCIA EMMANUEL VALENTIN
RUIZ RAMIREZ LUIS VALENTIN
VELARDE ORTEGA DANIEL IVAN


FECHA DE ENTREGA 04/03/2014


2

INDICE
INTRODUCCION..3
4.1 Seguridad de software4
4.2 Seguridad en el ciclo de desarrollo del software6
4.3 Confiabilidad del software8
4.4 Ingeniera de seguridad10
CONCLUSION12
















3

Introduccin
El concepto de la seguridad en los sistemas de software es un rea de investigacin que ha
pasado a ser vital dentro de la Ingeniera de Software. Con el crecimiento de Internet, y otras
aplicaciones sobre redes, como el comercio electrnico, correo electrnico, etc., la
posibilidad de ataques se ha incrementado notablemente, como tambin lo han hecho las
consecuencias negativas de estos ataques.
En la actualidad prcticamente todo sistema debe incorporar cuestiones de seguridad para
defenderse de ataques maliciosos. El desarrollador ya no slo debe concentrarse
nicamente en los usuarios y sus requerimientos, sino tambin en los posibles atacantes.
Esto ha motivado cambios importantes en el proceso de diseo y desarrollo de software para
incorporar a la seguridad dentro de los requerimientos rticos del sistema.
Estos cambios son los primeros pasos en la concientizacin de los ingenieros de software
acerca de la importancia de obtener un software seguro. Como todo gran cambio, no se logra
de un da para otro, sino que es un proceso gradual que requiere tiempo y maduracin.
Todava la Ingeniera de Software no ha dado una respuesta eficaz, coherente y aplicable
que satisfaga plenamente a la comunidad informtica, sino que las aproximaciones actuales
estn plagadas de fallas y debilidades fruto de que todava es un proceso que se encuentra
en su infancia.









4

4.-SEGURIDAD EN INGENIERA DE SOFTWARE
La seguridad de software aplica los principios de la seguridad de informacin al
desarrollo de software. Information security (La seguridad de informacin) se refiere a la
seguridad de informacin comnmente como la proteccin de sistemas de informacin
contra el acceso desautorizado o la modificacin de informacin, si est en una fase de
almacenamiento, procesamiento o trnsito.
Tambin la protege contra la negacin de servicios a usuarios desautorizados y la
provisin de servicio a usuarios desautorizados, incluyendo las medidas necesarias para
detectar, documentar, y contrariar tales amenazas.
Muchas preguntas con respecto a la seguridad, son relacionadas al ciclo vital de software. En
particular, la seguridad del cdigo y el proceso de software; deben de ser considerados
durante la fase del diseo y desarrollo. Adems, la seguridad debe de ser preservada
durante la operacin y el mantenimiento para asegurar la integridad de una parte
(pedazo) de software.
Una gran cantidad de seguridad usada en los Sistemas de Redes de hoy, nos
pueden engaar en la creencia que nuestros trabajos como diseadores de sistema
de seguridad ya han sido realizados. Sin embargo, las cadenas y computadoras son
increblemente inseguras. La falta de seguridad se origina en dos problemas
fundamentales: Los sistemas que son tericamente seguros pueden ser inseguros en
la prctica, Adems los sistemas son cada vez ms complejos. La complejidad
proporciona ms oportunidades para los ataques. Es mucho ms fcil probar que un sistema
es inseguro que demostrar que uno es seguro probar la inseguridad, simplemente una
toma ventaja de ciertas vulnerabilidades del sistema.
4.1 SEGURIDAD DE SOFTWARE
El concepto de la seguridad en los sistemas de software es un rea de investigacin que ha
pasado a ser vital dentro de la Ingeniera de Software. Con el crecimiento de Internet, y otras
aplicaciones sobre redes, como el comercio electrnico, correo electrnico, etc., la
posibilidad de ataques se ha incrementado notablemente, como tambin lo han hecho las
consecuencias negativas de estos ataques.
5

En la actualidad prcticamente todo sistema debe incorporar cuestiones de seguridad para
defenderse de ataques maliciosos. El desarrollador ya no slo debe concentrarse
nicamente en los usuarios y sus requerimientos, sino tambin en los posibles atacantes.
Esto ha motivado cambios importantes en el proceso de diseo y desarrollo de software para
incorporar a la seguridad dentro de los requerimientos crticos del sistema.
Estos cambios son los primeros pasos en la concientizacin de los ingenieros de software
acerca de la importancia de obtener un software seguro. Como todo gran cambio, no se logra
de un da para otro, sino que es un proceso gradual que requiere tiempo y maduracin.
Todava la Ingeniera de Software no ha dado una respuesta eficaz, coherente y aplicable
que satisfaga plenamente a la comunidad informtica, sino que las aproximaciones actuales
estn plagadas de fallas y debilidades fruto de que todava es un proceso que se encuentra
en su infancia.
Siempre que utilicemos un sistema informtico, sin importar cul sea la razn, es importante
que tengamos como prioridad la instalacin de un software de seguridad, teniendo en cuenta
la cantidad de riesgos que corremos con un sistema informtico sin proteccin.
Justamente por la importancia acerca de lo que es un software de seguridad para cualquier
usuario, la mayora de los sistemas operativos con los que podemos trabajar suelen traer
incorporado en ellos un software de seguridad bsico, pero es importante que sepamos ante
todo qu es un software de seguridad y la diferencia entre ste software y uno que es
especialmente desarrollado para prevenir problemas en el funcionamiento del sistema, es
que el mismo, simplemente nos advierte cuando estamos frente a algn riesgo.
Tipos de software de seguridad
Sin duda, el tipo de software de seguridad ms conocido son los programas antivirus, que se
encargan de detectar y eliminar virus informticos. Un buen programa antivirus dispone de un
archivo de firmas de virus que se actualiza automticamente y detecta virus nuevos. Este tipo
de actualizacin se realiza peridicamente, varias veces al da.
El software de seguridad suele venderse en las denominadas suites. Son paquetes
compuestos de:

6

Programa antivirus
Cortafuegos
Filtro antispam
Software para filtrar contenidos
Software contra publicidad no deseada
Control de sitios web
Actualmente, la seguridad es un concepto que todo sistema debe incorporar. La Ingeniera
del Software todava no es capaz de brindar un mecanismo para implementar
adecuadamente la seguridad: los lenguajes tienen primitivas inseguras, el cdigo relativo a la
seguridad es siempre un cdigo confuso y complejo debido a tcnicas de abstraccin
insuficientes, etc.
4.2 SEGURIDAD EN EL CICLO DE DESARROLLO DEL
SOFTWARE
La mayor parte de las organizaciones desarrolla o contrata el desarrollo de aplicaciones
propias para su gestin de negocio. Como todo software, estas aplicaciones pueden
contener fallas de seguridad y a diferencia del software comercial, no se dispone de
actualizaciones o parches liberados en forma peridica por el fabricante. El tratamiento de las
vulnerabilidades en aplicaciones propias corre por parte de la organizacin que las
desarrolla.
Lamentablemente es una prctica habitual en muchas organizaciones la puesta en
produccin de sistemas sin la participacin del sector de Seguridad de la Informacin.
Muchas otras veces, el sector de Seguridad se entera demasiado tarde, y no tiene suficiente
margen de accin para el anlisis de seguridad de la aplicacin desarrollada.
Por lo general, en el mejor de los casos, se coordina un testeo de seguridad una vez que la
aplicacin ya est desarrollada. Aqu muchas veces se encuentran errores que requieren el
rediseo de parte de la aplicacin, lo cual implica un costo adicional en tiempo y esfuerzo.
Seguridad en el anlisis de requerimientos
7

En esta etapa, se deben identificar aquellos requerimientos funcionales que tendrn impacto
en los aspectos de seguridad de la aplicacin. Algunos de ellos son: requerimientos de
complacer con normativas locales o internacionales (ej: PCI, SOX, A 4609, etc.), tipo de
informacin que se transmitir o procesar (ej: Informacin pblica o confidencial, datos
personales, datos financieros, contraseas, datos de pago electrnico, etc.) y requerimientos
de registros de auditora (ej: Qu debe registrar la aplicacin en sus Logs).
Seguridad en el diseo
Antes de comenzar a escribir lneas de cdigo, hay numerosos aspectos de seguridad que
deben ser tenidos en cuenta durante el diseo de la aplicacin.
Algunos de ellos son: diseo de autorizacin
(ej: Definir los roles, permisos y privilegios de la aplicacin), diseo de autenticacin (aqu se
debe disear el modo en el que los usuarios se van a autenticar, contemplando aspectos
tales como los mecanismos o factores de autenticacin con contraseas, toquen,
certificados, etc. posibilidades de integrar la autenticacin con servicios externos como
LDAP, Radius o Active Directory y los mecanismos que tendr la aplicacin para evitar
ataques de diccionario o de fuerza bruta (ej: bloqueo de cuentas, implementacin de
captchas, etc.), diseo de los mensajes de error y advertencia, para evitar que los mismos
brinden demasiada informacin y que sta sea utilizada por atacantes y diseo de los
mecanismos de proteccin de datos (aqu se debe contemplar el modo en el que se
proteger la informacin sensible en trnsito o almacenada; segn el caso, se puede definir
la implementacin de encriptacin, hashes o truncamiento de la informacin).
Una vez que se cuenta con el diseo detallado de la aplicacin, una prctica interesante es la
de realizar sobre el mismo un anlisis de riesgo orientado a software. Existen tcnicas
documentadas al respecto, tales como Threat Modeling. Estas tcnicas permiten definir un
marco para identificar debilidades de seguridad en el software, antes de la etapa de
codificacin. Como valor agregado, del anlisis de riesgo orientado a software se pueden
obtener casos de prueba para ser utilizados en la etapa de Testing/QA.

Seguridad en la codificacin
8


Una vez concluido el diseo, le toca a los desarrolladores el turno de codificar los distintos
componentes de la aplicacin. Es en este punto en donde suelen incorporarse, por error u
omisin, distintos tipos de vulnerabilidades. Estas vulnerabilidades podramos dividirlas en
dos grandes grupos a saber: vulnerabilidades clsicas y vulnerabilidades funcionales. Las
primeras son bien conocidas y categorizadas.
Ejemplo de estas vulnerabilidades son las presentes en el OWASP
Top 10 (Vulnerabilidades de inyeccin, Cross Site Scripting, errores en manejo de sesiones,
etc.) como as tambin otras vulnerabilidades no ligadas directamente con las aplicaciones
WEB, como desbordamiento de buffer, denegacin de servicio, etc. Los Frameworks de
desarrollo de aplicaciones son una buena ayuda en este punto, ya que ofician de
intermediario entre el programador y el cdigo, y permiten prevenir la mayora de las
vulnerabilidades conocidas. Ejemplos de estos frameworks son Struts, Ruby on Rails y Zope.
Vulnerabilidades funcionales son aquellas ligadas especficamente a la funcionalidad de
negocio que posee la aplicacin, por lo que no estn previamente categorizadas.
Algunos ejemplos ilustrativos de este tipo de vulnerabilidad son los siguientes: una aplicacin
de banca electrnica que permite realizar transferencias con valores negativos, un sistema
de subastas que permite ver los valores de otros oferentes, un sistema de venta de entradas
para espectculos que no impone lmites adecuados a la cantidad de reservas que un
usuario puede hacer.
En la etapa de codificacin, una de las reglas de oro es verificar todos los valores de entrada
y de salida. Esto es, asumir siempre que el valor pudo haber sido manipulado o ingresado
maliciosamente antes de ser procesado.
4.3 CONFIABILIDAD DEL SOFTWARE
La confiabilidad de software significa que un programa particular debe de seguir
funcionando en la presencia de errores. Los errores pueden ser relacionados al
diseo, a la implementacin, a la programacin, o el uso de errores.
As como los sistemas llegan a ser cada vez ms complejos, aumenta la probabilidad de
errores.
9

Como mencionamos, es increblemente difcil demonstrar que un sistema sea seguro. Ross
Anderson dice que la seguridad de computacin es como programar la computadora
del Satn. Software seguro debe de funcionar abajo de un ataque.
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.
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.
Las organizaciones desarrolladoras de productos basados en software destinan grandes
cantidades de recursos para mejorar la calidad de sus productos. Una parte de dichos
recursos se utiliza para la adopcin de mejores prcticas. Sin embargo, la dificultad de la
adopcin de dichas prcticas no slo reside en el costo y el tiempo requerido para
institucionalizarlas, sino en cmo medir su impacto en la calidad del software, as como
demostrar el retorno de dicha inversin.
La calidad, las fallas y la confiabilidad de Software
La calidad es un atributo percibido por los usuarios o clientes de cualquier producto o
servicio. En el caso de productos basados en software, la percepcin de la calidad est en
funcin de las fallas que el cliente percibe del mismo durante su operacin.
La confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo
condiciones establecidas por un periodo de tiempo determinado. La confiabilidad es un
atributo cuantitativo que ha sido ampliamente analizado, estudiado y usado en otras
industrias para caracterizar la calidad de los productos o servicios.
En su concepcin ms general, la confiabilidad es un atributo que mide el grado en que un
producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo
determinado.
10

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.
Histricamente, una forma de aumentar la Confiabilidad de un Software era correrlo y
probarlo extensivamente antes de liberarlo. No es efectivo probar la Confiabilidad en el
producto sino hacerla, es decir fabricarla en el mismo. La Confiabilidad deber ser diseada
en el producto.
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 ha de ser 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,...

Tradicionalmente el tema de la seguridad en sistemas computarizados se ha asociado a la
criptografa y sus tcnicas. La inmensa complejidad que caracteriza a los sistemas modernos
hace que esta aproximacin sea insuficiente.
11

Hoy en da la seguridad est asociada a la interaccin de una multiplicidad de sistemas. La
seguridad de un sistema en particular est directamente relacionada a la seguridad de la ms
dbil de sus partes.
Un sistema puede tener mecanismos criptogrficos que sean considerados completamente
seguros pero puede adolecer de debilidades que hagan que sea innecesario atacar al
sistema criptogrfico.
Ejemplos de esto son:
Sistemas que fallan debido a problemas en el cdigo, como en la mayora de los ataques
conocidos como de buffer overflow, en los cuales el no considerar aspectos de excepcin
asociados a los sistemas pueden representar que un atacante suficientemente hbil pueda
asumir funciones del administrador. Si en un determinado sistema alguien asume las
funciones del administrador puede tener muy fcil acceso a claves y sistemas criptogrficos
haciendo intil la fortaleza del sistema criptogrfico que lo protege.
Algunos ataques aprovechan fallas de diseo en los sistemas. Si una determinada aplicacin
ejecuta sin evaluar un determinado comando, los atacantes del sistema pueden conseguir
informacin vital sin necesidad de romper las claves criptogrficas que lo protegen.
La existencia de sistemas de comunicacin mvil, basados en transmisin inalmbrica facilita
actividades de fisgoneo en la seal.
Algunas veces lo que se conoce como ataques de ingeniera social pueden resultar muy
efectivos a la hora de atacar sistema supuestamente seguros.
La poca comprensin que algunos implementadores de sistemas tienen sobre los
mecanismos de seguridad implcitos tambin ocasiona que ciertos sistemas sean ms
vulnerables. Un ejemplo clsico es la forma en que se implementan algunos sistemas de
contabilidad.
El sistema de doble registro, ancestralmente usado para proteger sistemas de seguridad se
ve violentado por sistemas que obligan al cuadre entre cuentas lo cual facilita el ataque a
sistemas de esta naturaleza.


12

CONCLUSION
Las tcnicas de ingeniera de la seguridad no estn integradas dentro del proceso de
ingeniera del software, sino que se aaden una vez que el software se ha terminado de
desarrollar, lo cual tiene unas consecuencias muy negativas para la seguridad de los
sistemas que estn en desarrollo.
Este artculo presenta algunos resultados parciales de nuestro trabajo con el objetivo de
definir e implementar un marco de trabajo capaz de integrarse en una herramienta, y la
metodologa para un desarrollo exacto de una arquitectura dirigida por el modelo de negocio
para aplicaciones y sistemas en las que la seguridad es algo fundamental. El objetivo final ha
sido la generacin automtica de sistemas ejecutables con infraestructuras de seguridad
totalmente configuradas desde el modelo de procesos del negocio. Nuestro marco de trabajo
para el desarrollo de software guiado por el proceso de negocio se basa en la notacin UML
e integra requisitos de seguridad en las etapas iniciales del desarrollo del software.
Nuestra propuesta es extender UML para poder expresar requisitos de seguridad, para hacer
un uso extensivo de las descripciones semnticas de los patrones de seguridad definidos en
notacin XML y aplicar los mtodos de especificacin y anlisis que actualmente estn bajo
desarrollo para verificar partes relevantes de las soluciones propuestas.
Cada actividad y tcnica de la IR utilizada individualmente, dar diferentes soluciones para
diferentes proyectos, incluyendo aquellos casos en los que el dominio y el rea del problema
son el mismo. Por esta razn, considero que no existe un modelo de proceso ideal para la IR;
encontrar el mtodo o la tcnica perfecta es una ilusin, pues cada mtodo y tcnica ofrece
diferentes soluciones ante un problema.
En cuanto a la investigacin realizada de la tcnica de Casos de Uso para la Ingeniera de
Requerimientos, puede decirse que los casos de uso son independientes del mtodo de
diseo que se utilice, y por lo tanto, del mtodo de programacin. Luego de documentar los
requerimientos de un sistema con casos de uso, se puede disear un sistema "estructurado"
(manteniendo una separacin entre datos y funciones), o un sistema Orientado a Objetos, sin
que la tcnica sea de mayor o menor utilidad en alguno de los dos casos. Esto da ms
flexibilidad al mtodo, y probablemente contribuya a su xito.

13

BIBLIOGRAFIA
http://www.ctic.uni.edu.pe/files/insoft01.pdf
http://www.willydev.net/insitecreation/v1.0/descargas/articulos/General/SING.PDF
http://genesis9.comxa.com/tareas/UNIDAD6.pdf
http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf

ANEXO

Вам также может понравиться