Vous êtes sur la page 1sur 6

La seguridad en la Ingeniera de Software

la seguridad de un sistema de software es un concepto multi-dimensional. Las mltiples dimensiones de la seguridad son: - Autenticacin: 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 cronolgico de los eventos relevantes a la seguridad de un sistema. Este registro puede luego examinarse para reconstruir un escenario en particular. - Confidencialidad: la propiedad de que cierta informacin no est disponible a ciertas entidades. - Integridad: la propiedad de que la informacin no sea modificada en el trayecto fuente-destino. - Disponibilidad: la propiedad de que el sistema sea accesible a las entidades autorizadas. - No repudio: la propiedad que ubica la confianza respecto al desenvolvimiento de una entidad en una comunicacin. La seguridad puede tener diferentes significados en distintos escenarios. En general, cuando se habla de seguridad implica referirse a ms de una de las dimensiones mencionadas anteriormente. Por ejemplo: - Seguridad en correo electrnico: involucra confidencialidad, no repudio e integridad. - Seguridad en compras online: implica autentificacin, confidencialidad, integridad y no repudio. Bajo este punto de vista, se define un ataque a la seguridad como un intento de afectar en forma negativa una o ms de las dimensiones del concepto de seguridad. Una vez definido el concepto de seguridad, se pueden establecer objetivos bsicos para un software seguro: - Independencia de la seguridad: la seguridad debe construirse y utilizarse de manera independiente de la aplicacin. - Independencia de la aplicacin: la aplicacin no debe depender del sistema de seguridad usado, debe ser desarrollada y mantenida en forma separada. - Uniformidad: la seguridad debe aplicarse de manera correcta y consistente a travs de toda la aplicacin 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 programacin no deben contener agujeros de seguridad. - Seguridad desde el comienzo: la seguridad debe ser considerada como un requerimiento desde el inicio del diseo.
Ingeniera de sistemas de Computacin 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. Por otra parte, probando un sistema seguro, requiere demostrar que todas las hazaas posibles puedan ser defendidas contra (muy desalentadora), si no imposible, la tarea Actualmente, no hay ninguna solucin singular para asegurar la ingeniera de software. Sin embargo, hay mtodos especficos que mejoran la seguridad de los sistemas. En particular, podemos mejorar la confiabilidad de software. Tambin podemos mejorar nuestra comprensin de los requisitos de un pedazo de software. Buena Prctica La seguridad requiere ms manejo y riesgo de mitigacin, de la que requiere la tecnologa. Como un desarrollador, uno primero debe de determinar los riesgos de una aplicacin particular. Por ejemplo, el Web site tpico de hoy puede ser sujeto de una variedad de riesgos; la desfiguracin o la negacin distribuida de ataques del servicio. Una vez que se identifiquen los riesgos, identificar medidas de seguridad apropiadas llega a ser manejable. En particular, al definir los requisitos, es importante considerar cmo la aplicacin ser utilizada. Con ese conocimiento uno puede decidir, s o no, utilizar caractersticas complejas como contabilidad, auditora etc. Otro asunto potencialmente importante es como soportar el nombramiento del producto. El aumento de los sistemas distribuidos ha hecho el nombramiento cada vez ms importante. Tpicamente, el nombramiento esta manejado por rendezvous: un principal exporta un nombre y lo anuncia en alguna parte, y alguien que desea utilizar el nombre lo busca en los libros y directorios de telfono. Por ejemplo, en un sistema como el sistema del descubrimiento del recurso, los recursos y los individuos que usan esos recursos deben ser nombrados. A menudo hay cosas buenas y malas con respecto al nombramiento: mientras que el nombramiento puede proporcionar a un nivel de direccin, tambin puede crear problemas adicionales si los nombres no son estables. Los nombres

pueden permitir que los directores desempeen diversos papeles en un sistema determinado que pueda tambin ser til Confiabilidad de 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. 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. Muchos de los problemas de la seguridad de hoy son relacionados con el cdigo defectuoso. Por ejemplo, el Morris Internet Worm (el gusano Internet de Morris) utiliz overflow en un programa de UNIX para ganar acceso a las computadoras que ejecutaron el programa. Los ataques de buffer overflow han sido el tipo de ataque ms comn en las ltimos diez aos e implican el sobre grabar instrucciones en el programa. Especficamente, una cantidad fija de memoria en la pila, puede ser reservado por el usuario; si la entrada de informacin del utilizador es ms grande que este espacio reservado, el usuario puede sobregrabar los instrucciones de la programa. Si esto se hace cuidadosamente, el usuario puede insertar sus propias instrucciones en el cdigo del programa, as haciendo la mquina receptora realizar operaciones arbitrarias dictados por el atacante. Mientras que tales ataques se pueden prevenir tpicamente con bounds checking (revisando el tamao de la entrada de informacin antes de copiarla), sta es una cuestin de prctica de programacin que confiamos en que el programador mismo seguir. El aspecto difcil de buffer overflows es que pueden ocurrir en una gran cantidad de lugares en cualquier programa, y es difcil de prevenir el suceso por todas partes. Este ha sido el caso en el pasado, especialmente, en los ltimos 10 aos. "Confiando en la Confianza" En particular, la lectura de Ken Thompson "Reflections on Trusting Trust" (refleciones en confiar en confianza) nos da a pensar en la integridad de una parte de software. Especficamente, nos ensea un ejemplo donde un compilador de C puede ser hacked por un Trojan horse. Para el propsito de esta demonstracin, Thompson inserta su propia versin de UNIX "login" cdigo, cuando un usuario trataba de compilar el cdigo de fuente. El valor de la lectura de Thompson es que no se puede confiar en el cdigo de fuente que no hayas creado tu mismo. Este incluye el cdigo del compilador, del ensamblador, y microcdigos de hardware. Thompson tambin nos dice que cuando el nivel de los "bugs" llega a un nivel bajo los " fallos de funcionamiento " sern ms difciles de detectar. De hecho, no tenemos que compilar software para ser vctima del mensaje de Thompson. Cada vez que bajamos un programa por internet o instalar software nuevo, confiamos en un nmero de cosas. Primero, confiamos que la mquina en la que estamos bajando el software es realmente la mquina que demanda ser. Proyectos como Self-Certifying File System han tratado de arreglar este problema. Aunque nos confiemos en que la mquina con la cual estamos hablando es la que pensamos que es, debemos de comprobar que los archivos fueron preparados apropiadamente. As como cuando bajamos un programa por internet confiamos en el proceso de desarrollo del software. Mientras que los sistemas de UNIX parece generar ms inters en las comunidades acadmicas. Otros sistemas de operacin no son inmunes. Los ataques de buffer

overflow son extensos, desde los servidores ftp (El acrnimo de FTP es protocolo de
transferencia de ficheros (File Transfer Protocol) y es un software cliente/servidor que permite a usuarios transferir ficheros entre ordenadores en una red TCP/IP.) de

Windows a los procesos ocultados que capturan cada golpe de teclado del usuario. No importa cunto nfasis ponemos en el diseo y la seguridad de la ingeniera del software, debe de ser una cierta cantidad bsica de software y de hardware que no vamos a poder confiar totalmente. SEGURIDAD POR HARDWARE Y SOFTWARE. En Tecnologa de dotacin lgica, Seguridad del sistema de software optimiza seguridad del sistema en el diseo, el desarrollo, el uso, y el mantenimiento de software sistemas y su integracin con seguridad sistemas crticos del hardware en un ambiente operacional. En el pasado, la industria en general consideraba aumentado productividad como el aspecto ms importante de Tecnologa de dotacin lgica. Poca consideracin fue dada referente confiabilidad o seguridad del producto de software. Estos ltimos aos, el papel del software y el hardware se ha convertido en el comando y el control de complejo y sistemas costosos de los cuales las vidas humanas pueden depender. Los ingenieros deben reconocer que el software es justo otro componente del sistema, y que este componente puede contener los errores o los defectos que pueden causar acontecimientos indeseados en el sistema del hardware l est controlando. Los ingenieros de seguridad del sistema deben trabajar con los tcnicos y los expertos del dominio para conseguir requisitos funcionalidad a descompuesta y seguridad-crtica puesta en ejecucin correctamente en software por las Software Engineers. Un proceso de la seguridad del software por las mejores prcticas de la industria, tales como IEEE STD 1228-1994 o equivalente, se debe desarrollar y adherir para a los mtodos y a las tcnicas para identificar las insuficiencias y los errores potenciales del diseo del software que pueden causar peligros o acontecimientos indeseados del producto. La seguridad del sistema de software, un elemento de la seguridad total y programa de desarrollo del software, no se puede permitir funcionar independientemente del esfuerzo total. Los sistemas mltiples simples y altamente integrados estn experimentando un crecimiento extraordinario en el uso de computadoras y software para supervisar y/o controlar subsistemas o funciones seguridad-crticos. A especificacin del software el error, el defecto de diseo, o la carencia de requisitos seguridad-crticos genricos pueden contribuir a o causar un fallo del sistema o una decisin humana errnea. Para alcanzar un nivel aceptable de la seguridad para el software usado en usos crticos, la ingeniera de la seguridad del sistema de software se debe dar nfasis primario temprano en la definicin de los requisitos y el proceso del diseo conceptual del sistema. El software Seguridad-crtico debe entonces recibir nfasis de la gerencia y anlisis continuos de la ingeniera a travs del desarrollo y ciclos vitales operacionales del sistema.

AMENAZAS A LAS APLICACIONES SEGURAS Es necesario definir inicialmente las condiciones que debe cumplir un sistema seguro [1]: Que sea poco vulnerable y libre de defectos tanto como sea posible. Que limite el resultado de los daos causados por cualquier ataque, asegurando que los efectos no se propaguen y que puedan ser recuperados tan rpido como sea posible. Que contine operando correctamente en la presencia de la mayora de ataques. El software que ha sido desarrollado con seguridad generalmente refleja las siguientes propiedades a travs de su desarrollo: Ejecucin Predecible. La certeza de que cuando se ejecute funcione como se haba previsto. Reducir o eliminar la posibilidad de que entradas maliciosas alteren la ejecucin o las salidas. Fiabilidad. La meta es que no haya vulnerabilidades que se puedan explotar Conformidad. Actividades planeadas, sistemticas y multidisciplinarias que aseguren que los componentes y productos de software estn conforme a los requisitos, procedimientos y estndares aplicables para su uso especfico. Algunas propiedades fundamentales que son vistas tanto como atributos de seguridad, como propiedades del software son: Confidencialidad. Debe asegurar que cualquiera de sus caractersticas incluyendo sus relaciones con ambiente de ejecucin y usuarios, sus activos y/o contenidos no sean accesibles para no autorizados. Integridad. El software y sus activos deben ser resistentes a subversin. Subversin es llevar a cabo modificaciones no autorizadas al cdigo fuente, activos, configuracin o comportamientos, o cualquier modificacin por entidades no autorizadas. Tales modificaciones incluyen sobre-escritura, corrupcin, sabotaje, destruccin, adicin de lgica no planeada inclusin maliciosa o el borrado. La integridad se debe preservar tanto en el desarrollo como durante su ejecucin. Disponibilidad. El software debe ser funcional y accesible por usuarios autorizados cada vez que sea necesario. Al mismo tiempo, esta funcionalidad y estos privilegios deben ser inaccesibles por usuarios no autorizados.

Dos propiedades adicionales, comnmente asociadas con usuarios humanos, se requieren en entidades de software que actan como usuarios, por ejemplo, agentes proxy y servicios Web. Responsabilidad. Todas las acciones relevantes de seguridad del software o de los usuarios se deben almacenar y rastrear, con atribucin de responsabilidad. Este rastreo debe ser posible en ambos casos, es decir, mientras y despus de que la accin registrada ocurra. Segn la poltica de seguridad para el sistema se debera indicar cules acciones se consideran como seguridad relevante, lo que podra hacer parte de los requisitos de auditora. No repudio. Esta propiedad le permite al software y a los usuarios refutar o denegar responsabilidades de acciones que ha ejecutado. Esto asegura que la responsabilidad no puede ser derribada o evadida. Otras propiedades influyentes en el software seguro son la exactitud, la capacidad de pronstico, la fiabilidad y la proteccin, las cuales estn tambin influenciadas por el tamao, la complejidad y la trazabilidad del software. Anlisis de riesgos. Debido a las constantes amenazas, toda organizacin es vulnerable a riesgos debido a la existencia de vulnerabilidades. De acuerdo con la Figura 3, para determinar el riesgo se puede evaluar la probabilidad asociada con los agentes de amenaza, el vector de ataque, las debilidades de seguridad, los controles de seguridad, los impactos tcnicos y el impacto al negocio cuando se materialice la amenaza

Vous aimerez peut-être aussi