La definicion de seguridad describe a seguridad como la defensa frente algunos tipos de ataques. Entre las formas basicas de defensa que podemos utilizar incluyen: Identificación y Autenticación (I&A): La identificación es una acción de un usuario o un sistema que indica su identidad. La autenticación implica alguna prueba de que el usuario o el sistema es quien dice ser. El resultado de la autenticación puede ser un conjunto de credenciales, el cual luego pueden ser utilizadas para probar la identidad y describir algunos atributos de la entidad autenticada. Autorización y Control de Acceso (A&A): La autorización define permisos de acceso a recursos dependiendo de quién los accede (usuario, proceso), del recurso accedido y de la intención de uso sobre el recurso. El con trol de acceso es una forma de reforzar la autorización. Logeo y Auditoria: Implica mantener un registro de las acciones que puedan ser relevantes para la seguridad. Estas funciones proporcionan la base para el enjuiciamiento (forense) y la mejora del sistema. Criptografía: Puede ser usada para ocultar el contenido de los datos (secreto), para la autenticación o para otros tipos de defensas. Detección de Intruso: Los sistemas de detección de intrusos (IDS) alertan al sistema cuando un intruso está tratando de atacar al sistema. Estas defensas se describen a veces como los servicios de seguridad, ya que están incorporados en algunos subsistema que proporciona las funciones correspondientes. La garantia es una medida de la confianza que ponemos en un sistema que es capaz de proporcionar el grado de seguridad requerido. Tenemos que aplicar una combinación de hardware y la seguridad para alcanzar un cierto grado de seguridad. El análisis de riesgos es el estudio de posibles ataques y su impacto en términos de tiempo y dinero. Lo necesitamos para decidir sobre la inversión en sistemas y personal para garantizar la seguridad. Hay tres aspectos a la seguridad: Seguridad Física: Control de acceso a las instalaciones de equipo, edificios y la protección de los activos físicos. Seguridad de la información: Se encarga de los aspectos de hardware y software para la protección de datos. administrativo o de gestión de seguridad. 1.3 Confidencialidad Se definió la privacidad como el derecho de las personas a decidir sobre el uso de la información sobre sí mismos. Hay una variedad de razones para enumerar de las debilidades de los sistemas actuales: Falta de diseño y modelado en el desarrollo de software: La mayoría de los actuales sistemas de código se ha construido utilizando métodos procedurales y lenguajes como C o COBOL. Los enfoques modernos, tales como programación orientada a objetos no están aún ampliamente difundidos. Sin el diseño de software apropiado, es casi imposible construir sistemas complejos fiables. Falta de modularidad: Algunos proveedores, como parte de su estrategia de comercialización, construyen sistemas que no pueden descomponerse. Estos sistemas carecen de interfaces bien definidas. Esto evita el control a través de las interfaces y una vulnerabilidad en un lugar propaga sus efectos a otros lugares. Falta de comprensión de los principios de diseño de un sistema seguro: Generalmente el enfoque utilizado para desarrollar código seguro es buscar vulnerabilidades específicas en el código que, aunque eficaz, es una tarea muy difícil debido a la cantidad de código. Basándose en la corrección de parches: Cuando se detecta una vulnerabilidad, el proveedor emite un parche para corregirla. Esto tiene los efectos secundarios de perturbar la ejecución de las aplicaciones actuales y, posiblemente, la creación de nuevas vulnerabilidades. Outsourcing. Para reducir los costos muchas empresas subcontratan a otras empresas para el desarrollo y el mantenimiento de código, por lo general de los países con salarios más bajos. Los errores pueden ser introducidos de esta manera por la necesidad de producir un código rápido y barato, por problemas de comunicación y tal vez intencionalmente. Una arquitectura distribuida se compone de unidades autónomas de cómputo que interactúan entre sí a través de mensajes y se conectan a través de algún tipo de red. La mayoría de información práctica y los sistemas de control son sistemas distribuidos. 1.7 vulnerabilidades y ataques Antes de estudiar las posibles defensas tenemos que saber los tipos de ataques que tenemos que parar y por qué ocurren. Una vulnerabilidad es un estado o condición que puede ser explotado por un ataque. Vienen de algunos defectos o errores de software. Un ataque es un intento de aprovecharse de una vulnerabilidad y que puede resultar en una violación de la seguridad. El resultado de una violacion de seguridad puede ser la pérdida de confidencialidad o integridad, el robo de servicios o de denegación de servicio. Un ataque tiene un autor, que tiene una motivación y habilidad, probablemente adecuado. El ataque tiene un método de operación (modus operandi) para cumplir una misión con respecto a un objetivo. Las vulnerabilidades pueden ser el resultado de errores de diseño o de implementacion, aunque no todos los errores de programa son una vulnerabilidad. Las vulnerabilidades de diseño son muy difíciles de corregir (hay que rediseñar y volver a implementar el sistema), mientras que las vulnerabilidades de implementación pueden ser corregidas mediante parches. 1.10 El diseño de sistemas seguros: Para comprender mejor la estructura de los sistemas complejos es común construirlos como una jerarquía de capas. Incluso se ha definido como un patrón (véase la sección 1.16). Podemos pensar en un sistema informático como un conjunto de varias capas jerárquicas que van desde las aplicaciones de usuario hasta el hardware. En la capa más alta que tenemos la estructura del programa o modelo de diseño (clases, asociaciones, módulos). Un diseño equivocado podría ser una fuente de ataques. Un atacante también puede obtener información por mirar un modelo de diseño. Algunos principios fundamentales, obtenidos a partir de la experiencia y la teoría de sistemas, para el diseño de sistemas seguros incluyen: Considerar la seguridad en todo el ciclo de desarrollo conjunto. Definir los requerimientos de seguridad en conjunto con los requerimientos funcionales. Utilice un conjunto explícito y coherente de políticas para orientar el diseño del sistema. Las políticas de seguridad son directivas de seguridad de alto nivel. A continuación, seleccione los mecanismos para aplicar esas políticas, mediante combinaciones de software y hardware. El sistema de seguridad debe ser flexible y extensible. Mirar el sistema como un conjunto de capas jerárquicas de arquitectura. Todos los niveles del sistema deben ser considerados, la seguridad es un problema de cruce de nivel, la protección de un nivel sólo invita a atacar al sistema en un nivel diferente. Minimizar las unidades del sistema que tienen que ser de confianza. Una vez que el sistema esta instalado, controlar el sistema constantemente. Una metodología de buen diseño es importante, creemos que el enfoque orientado a objetos es muy superior a otros métodos para producir sistemas de seguridad.