Materia: Sistemas Operativos Unidad: 6 Protección y seguridad. Tema: 6.1 Concepto y objetivos de protección. 6.2 Funciones del sistema de protección. 6.3 Implantación de matrices de acceso. 6.4 Protección basada en el lenguaje. 6.5 Concepto de seguridad. 6.6 Clasificaciones de la seguridad. 6.7 Validación y amenazas al sistema. 6.8 Cifrado. Nombre: Roman Palacios José Juan Fecha: 16 de Mayo de 2011 *********************************************************************************** PROTECCIÓN Y SEGURIDAD. 6.1 CONCEPTO Y OBJETIVOS DE PROTECCIÓN. La seguridad en los sistemas de una computadora es un elemento muy importante en diseño de los sistemas operativos ya que manejan información muy valiosa para sus propietarios. [1] La seguridad de un sistema tiene múltiples facetas, desde la protección ante posibles daños físicos de los datos (fuego, terremotos, etc.) hasta el acceso indebido a los mismos (intrusos, fallos de confidencialidad, etc.). Los ataques contra la confidencialidad, la integridad o la disponibilidad de recursos en un sistema deben prevenirse y solventarse mediante la política y los mecanismos de seguridad de un sistema. La seguridad debe tener en cuenta eventos tanto internos como externos (provenientes del entorno en que opera el sistema), de nada sirve tener mecanismos de protección interna muy buenos, si el sistema operativo no es capaz de identificar a los usuarios que acceden al sistema o si no existe una política de salvaguarda de datos antes la rotura de un disco. La protección, consiste en evitar que se haga un uso indebido de los recursos que están dentro del ámbito del sistema operativo. Es necesario comprobar que los recursos (archivos, zonas de memoria, etc.) solo se usan por aquellos usuarios que tienen derechos de acceso. El sistema operativo debe proporcionar los medios para implementar políticas de protección deseadas por el usuario.
La seguridad de un sistema operativo se basa principalmente en tres aspectos de diseño: Evitar pérdida de datos Controlar la confidencialidad Controlar el acceso a los datos y recursos La pérdida de datos puede deberse a catástrofes naturales o artificiales, a errores del hardware o del software de la computadora (rotura de un disco) o a errores humanos. Una solución para estos problemas es hacer que los administradores del sistema mantengan varias copias de los datos almacenados en distintos lugares. En el ámbito interno del sistema operativo hay operaciones que pueden violar la confidencialidad de los datos. Una simple asignación de bloque de disco libre a un usuario le proporcionará el bloque con el contenido del usuario anterior si el sistema operativo no tiene una política definida para este tipo de situaciones. En estos casos, siempre hay que limpiar los recursos de los datos anteriormente existentes. Sin embargo la confidencialidad de los datos es un problema de seguridad que sobrepasa el ámbito de los sistemas operativos. En cuanto al control del acceso a datos y recursos, es necesario asegurar que los usuarios no acceden archivos para los que no tienen permisos de acceso, a cuentas de otros usuarios o páginas de memoria o bloques de disco que contienen información de otros usuarios. Un sistema operativo puede dar soporte de ejecución a múltiples procesos de múltiples usuarios, que ejecutan de manera concurrente. Por ello, una de las funciones principales del sistema operativo es proteger los recursos de cada usuario para que pueda ejecutar en un entorno seguro. Donde los mecanismos permiten controlar el acceso a los objetos del sistema permitiéndolo o denegándolo sobre la base de información tal como la identificación del usuario, el tipo de recurso, la pertenencia del usuario a cierto grupo de personas, las operaciones que puede ,hacer el usuario o el grupo con cada recurso, etc. La existencia de los mecanismos de seguridad obliga a mantener un compromiso constante entre separación y comparación. [2]
Autenticación de usuarios. El objetivo de la identificación del usuario, también denominado autenticación, es determinar si un usuario (persona, servicio o computadora) es quien dice ser. Para lo cual existen diversas formas de establecer la identidad de un usuario, tales como: Pedir información que solo él conoce a través de contraseñas, juegos de preguntas o algoritmos de identificación. Determinar características físicas del usuario tales como la pupila, la huella dactilar, el DNA, la firma y etc. Pedir un objeto que use el usuario, como puede ser una firma electrónica, unatarjeta con banda magnética o con un chip.
Además, como criterio general de seguridad, los sistemas operativos modernos dan la posibilidad de registrar todos los accesos al sistema, lo cual permite hacer controles interactivos ya posteriori de dichos accesos.
El proceso de autenticación: Habitualmente, cuando un usuario quiere acceder al sistema, aparece una pantalla o mensaje de entrada. En el caso de Windows NT, la pantalla pide tres valores: Identificación del usuario: nombre del usuario del sistema. Palabra clave o contraseña: espacio para teclear la clave. Dominio de protección al que pertenece el usuario. Existen varios fallos posibles en el proceso de entrada al sistema, por lo que este proceso debe ser robusto y no dar información a los intrusos. Donde un ataque a la seguridad del sistema relacionado con el proceso de autenticación consiste en suplantar al proceso que pide los datos de entrada.
Palabras claves o contraseñas. El método más usado actualmente para identificar a un usuario es el de contraseñas, o palabras claves. Una contraseña es un conjunto de caracteres alfanuméricos y especiales conocido únicamente por el usuario y por el sistema operativo sobre el que se ha llegado a un acuerdo para que sea usado como clave de acceso al sistema. Normalmente, cuando se habilita un nuevo usuario en el sistema, este introduce su contraseña, que puede cambiar posteriormente tantas veces como quiera. Dicha contraseña se guarda cifrad en archivos especiales. Este sistema es sencillo de implementar y de usar, funcionando de forma similar en todos los sistemas operativos. Sin embrago es necesario tomar las siguientes cuatro decisiones básicas de diseño para un sistema como este: Asignación de claves:
La palabra clave es fijada por el usuario cuando entra en su cuenta y la puede cambiar tantas veces como quiera. Longitud y formato de claves:
La longitud y el formato de las claves han ido cambiando a través del tiempo, principalmente debido a la detección de fallos asociados a las claves usadas en cada momento. Donde para aumentar la complejidad de la clave se puede hacer que el mandato que permite cambiar la contraseña obligue al usuario a meter caracteres no alfanuméricos y que fuerce la existencia de contraseñas de una longitud mínima añadiendo números aleatorios a la palabra antes de cifrarla. Almacenamiento de claves: Las claves suelen almacenarse en archivos cifrados, con lo cual se incrementa la seguridad. Duración de las claves:
Para dificultar la detección de contraseñas válidas por parte de posibles intrusos se puede configurar el sistema operativo: los sistemas operativos permiten que las contraseñas de usuario sean válidas únicamente durante un cierto tiempo.
Dominios de protección.
Para poder implementar mecanismos de protección sobre los objetos del sistema, que pueden ser hardware (UCP, memoria, etc.) o software (procesos, archivos, semáforos, etc.), es necesario en primer lugar disponer de identificadores únicos de usuarios y objetos. La relación entre objetos y derechos de acceso se define usando dominios de protección. Un dominio de protección es un conjunto de pares (objeto, derechos), donde cada par especifica un objeto y las operaciones que puede ejecutar sobre el mismo. Un objeto puede pertenecer a varios dominios de protección simultáneamente. En cada momento, un proceso ejecuta un dominio de protección, pudiendo cambiar de un dominio a otro, si el sistema operativo lo permite. Matrices de protección.
La relación entre dominios y objetos se puede definir de forma completa mediante 6ba matriz de protección, también denominada de acceso. Los dominios de protección son las filas de la matriz y los objetos son las columnas de la misma. El elemento (i, j) expresa las operaciones que el dominio i ; puede ejecutar sobre el objeto j. Si la matriz de protección esta completamente definida, los mecanismos de protección pueden saber siempre qué hacer cuando un proceso de un dominio solicita determinada operación sobre un objeto. El modelo de matriz de protección, derivado del modelo teórico HRU punto devista conceptual, pero tiene inconvenientes para su implementación: La matriz de un sistema complejo puede ser muy grande y muy dispersa. Una matriz tiene un número fijo de filas (dominios) y columnas (objetos), lo que es muy poco flexible para sistemas cuyo número de dominios u objetos puede cambiar. Para resolver estos problemas, la mayoría de los sistemas operativos implementan la matriz mediante estructuras dinámicas de datos (listas) a las que se puede añadir o quitar elementos sin tener que redefinir ninguna estructura de datos del sistema operativo. Para la implementación de la matriz mediante elementos dinámicos, los sistemas operativos usan dos enfoques: Almacenar la matriz por columnas, con una lista por objeto que especifica qué operaciones puede hacer cada dominio sobre ese objeto. La lista resultante se denomina lista de control de acceso (ACL, Acces Control List). Almacenar la matriz por filas, con una lista por dominio que especifique qué operaciones se pueden hacer sobre un objeto cuando se pertenece a ese dominio. La lista resultante se denomina lista de capacidades (capabilities).
Lista de control de acceso.
Una forma frecuente de controlar los accesos a un objeto es usar el identificador del usuario como criterio. Con listas de control de acceso es necesario especificar para cada dominio de protección,
e incluso para 'cada usuario, qué tipos de acceso al objeto son posibles. Para implementar esta solución, a cada objeto (archivos, directorios, procesos, etc. I se le asocia una lista de pares: (Dominio, operaciones).
Cuando un usuario pide acceso a un objeto, se determina a qué dominio de protección pertenece y se recorre la lista para ver si se puede hacer la operación solicitada. La lista de control de acceso se corresponde directamente con las necesidades de los usuarios. Estas listas tienen dos problemas asociados: Construir y mantener las listas es costoso en tiempo y recursos. Es necesario disponer de estructuras de almacenamiento de tamaño variable porque las listas pueden tener longitudes distintas dependiendo del objeto. Listas de control de acceso en UNIX
En UNIX, solo existen tres dominios de protección: dueño, grupo, otros. Para cada dominio se permiten tres tipos de operaciones sobre un objeto: leer (r), escribir (w) y ejecutar (x). Todas las operaciones de interfaz Con el sistema operativo, estos permisos se indican Con números en octal. Se usa un digito para cada dominio y el valor de loS bits de cada digito se pone a 1 si la operación es posible a 0 si no lo es. Los parámetros de protección de un objeto se pueden cambiar en UNIX mediante las llamadas al sistema chmod y chown. Listas de control de acceso en Windows NT
Todos los objetos de Windows NT tienen asignados descriptores de seguridad como parte de sus fichas de acceso. La parte mas significativa de los descriptores de seguridad es la lista de control de accesos. Cada entrada de la ACL contiene los descriptores de seguridad de los distintos dominios del sistema y los derechos de la ACL para permitir o denegar al acceso alobjeto. El criterio de asignación de derechos en la ACL de un objeto nuevo en Windows NT es el siguiente: Si el creador de un objeto proporciona una ACL de forma explicita, el sistema la incluye en la ficha de acceso de dicho objeto. Si no proporciona una ACL de forma explicita, pero el objeto tiene un nombre, el sistema comprueba si el objeto debe heredar la de los objetos de su directorio. En ese caso se incluye en la fila de acceso del objeto la ACL heredada de los objetos de su directorio. Si ninguna de las dos condiciones anteriores se cumplen, el 'subsistema de seguridad aplica al objeto una ACL por defecto. Además, en los descriptores de seguridad de los objetos se puede activar un campo de auditoria que indica al subsistema de seguridad que debe espiar al objeto y generar informes de seguridad cuando algún usuario intente hacer un uso incorrecto del mismo.
Capacidades
La otra forma posible de implementar la matriz de protección es asociar a cada dominio un conjunto de descriptores que indiquen las operaciones que los componentes de ese dominio pueden efectuar sobre cada objeto del sistema. Estos descriptores se denominan capacidades (capabilities) y son una combinación de una referencia a un objeto con los permisos de acceso al mismo desde el dominio del poseedor de la capacidad. Las listas de capacidades son a su vez objetos, por 10 que pueden ser incluidas dentro de otras listas de capacidades, facilitando la comparición de los objetos en dominios y subdominios. La mayoría de los sistemas que usan capacidades se basan en el hecho de que las listas de capacidades están siempre dentro del espacio de memoria del sistema operativo, sin que exista posibilidad de migrar a espacio de memoria de los procesos de usuario. Una capacidad no pueda ser modificada. En casi todos los sistemas es necesario destruirla y crear una nueva, siguiendo un esquema de uso de una única vez. A nivel interno se han propuesto tres métodos para proteger las listas de capacidades: Arquitectura etiquetada, en
al cual la palabra de memoria tenga un bit de etiqueta adicional diciendo si contiene o no una capacidad. En caso positivo, esa posición de memoria sólo puede ser modificada por procesos que ejecuten dentro del núcleo del sistema operativo. Esta solución es cara y poco adecuada para sistemas de propósito de general. capacidades cifradas. La clave de cifrado es desconocida por los usuarios, que deben limitarse a manipular las capacidades cifradas recibidas del sistema operativo. Este sistema se ajusta bien a las necesidades de los sistemas operativos distribuidos. Listas de control de acceso asociadas a cada capacidad. Las capacidades no se corresponden directamente con las necesidades de los usuarios y son menos intuitivas que las ACL. Debido a ello, la mayoría de los sistemas operativos proporcionan ACL como mecanismo de protección. Sin embargo, las capacidades tienen varias ventajas: Son muy útiles para incluir información de protección para un proceso en particular. El mecanismo de comprobación de derecho es muy sencillo. Se adaptan muy bien a sistemas distribuidos. Su gran desventaja sigue siendo que la revocación de accesos a un objeto puede ser ineficiente si se desea hacerla con criterios de selectividad entre dominios o para revocar derechos parciales. Revocación de derechos de acceso:
El principal problema de las capacidades es que, en un sistema dinámico, pueden existir cientos de capacidades concedidas para acceder a un objeto, lo que hace muy difícil su control. Por lo cual, revocar los derechos de acceso para un objeto en particular es muy difícil, ya que el sistema debe buscar todas las capacidades existentes sobre el mismo para aplicar la revocación de derechos. Donde las capacidades se pueden implementar, para facilitar la revocación de derechos de Acceso como:
Lista de control de acceso en
la cual se puede mantener una lista desde cada objeto a todas sus capacidades. Si hay modificaciones, se recorre dicha lista y se aplican. Claves de versión donde cada objeto tiene una clave maestra que se copia en cada nueva capacidad sobre ese objeto. Indirecciones de manera que las capacidades no apunten directamente a los objetos, sino a una tabla global intermedia desde la cual se apunta al objeto.
6.2 FUNCIONES DEL SISTEMA DE PROTECCIÓN. [3] Control de acceso que hace referencia a las caracteristicas de seguridad que controlan quien puede obtener acceso a los recursos de un sistema operativo. Las aplicaciones llaman a las funciones de control de acceso para establecer quien puede obtener acceso a los recursos especificos o controlar el acceso a los recursos proporcionados por la aplicacion. Un sistema de proteccion debera tener la flexibilidad suficiente para poder imponer una diversidad de politicas y mecanismos. Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos de memoria, CPU, y otros recursos administrados por el Sistema Operativo. Por ejemplo, el direccionamiento de memoria asegura que unos procesos puedan ejecutarse solo dentro de sus propios espacios de direccion. El timer asegura que los procesos no obtengan el control de la CPU en forma indefinida. La proteccion se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computacion. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos. Hay importantes razones para proveer proteccion. La mas obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las politicas fijadas para el uso de esos recursos. Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la proteccion proveen maneras de distinguir entre uso autorizado y desautorizado. Mecanismos y Politicas El sistema de proteccion tiene la funcion de proveer un mecanismo para el fortalecimiento de las politicas que gobiernan el uso de recursos. Tales politicas se pueden establecer de varias maneras, algunas en el diseno del sistema y otras son formuladas por el administrador del sistema. Otras pueden ser definidas por los usuarios individuales para proteger sus propios archivos y programas. Las politicas son diversas, dependen de la aplicacion y pueden estar sujetas a cambios a lo largo del tiempo. Un principio importante es la separacion de politicas de los mecanismos. determinan como algo se hara. Las politicas deciden que se hara'.
‘Los mecanismos
La separacion es importante para la flexibilidad del sistema. Dentro de las funciones del sistema de proteccion del sistema operativo encontramos: Controlar el acceso a los recursos Asegurarse que todos los accesos a los recursos del sistema estan controlados
6.3 IMPLANTACIÓN DE MATRICES DE ACCESO.
[4]
Un modelo de protección puede ser visto abstractamente como una matriz, llamada matriz de derecho. Los renglones de la matriz representan dominios y las columnas representan objetos. Cada entrada en la matriz contiene un conjunto de derechos de acceso. Dado que los objetos son definidos explícitamente por la columna, se puede omitir el nombre del objeto en el derecho de acceso. La entrada "Matriz[i, j]" define el conjunto de operaciones que un proceso ejecutándose en el dominio "D j" puede realizar sobre el objeto "O j". Considérese la siguiente matriz de acceso: Dominio \ Objeto D1 D2 D3 D4
A1 Leer
A2
A3 Leer
COM1 LPT1 Leer
Leer Leer Escribir
Imprimir
Ejecutar Leer Escribir
Hay 4 dominios y 5 objetos: 3 Archivos ("A1", "A2", "A3") 1 Puerto Serial y 1 impresora. Cuando un proceso se ejecuta en O1, puede leer los archivos "A1" y "A3". Un proceso ejecutándose en el dominio "D4" tiene los mismos privilegios que en "D1", pero además puede escribir en los archivos. Nótese que en el puerto serial y la impresora solo se pueden ser ejecutados por procesos del dominio "D2".
Estructuras de protección dinamicas. Las matrices de acceso vistas hasta el momento, en las que no cambian los derechos en cada dominio durante su ejecución, son un ejemplo de Estructuras de Protección Estáticas. Con el fin de ofrecer flexibilidad y de implementar eficientemente la protección, un Sistema Operativo debe soportar cambios en los derechos de acceso. Para esto se requiere implementar alguna estructura de protección dinámica. En este caso continuaremos considerando las matrices de acceso, aunque en su versión dinámica. Básicamente se requieren cuatro nuevos derechos de acceso: Copia, Cambio, Propietario y Control.
Derecho de acceso copia. Este derecho de acceso da la facultad a un proceso de copiar derechos existentes en un dominio hacia otro dominio para el objeto en cuestión. O sea, este derecho genera copias en columnas.
Por ejemplo, considérese la siguiente matriz de acceso:
D1
Archivo 1 Escribir
D2 D3 D4
Archivo 1
COM1 Enviar+
Impresora
Leer+ Escribir Recibir Leer
Imprimir
En este caso estará indicado el derecho copia añadiendo el signo (+) al nombre de los derechos que pueden ser copiados. En la tabla se indica que un proceso ejecutándose en el dominio 1 podrá copiar hacia cualquier otro dominio, el derecho enviar sobre el objeto "COM1" y que un proceso ejecutándose en el dominio "D2" podrá copiar el derecho "Leer" hacia cualquier otro dominio sobre el objeto "Archivo2". De esta manera, en algún momento posterior, la situación de la tabla podría ser la siguiente:
D1 D2 D3 D4
Archivo 1
Archivo 2
COM 1
Escribir
Leer Leer+ Escribir
Enviar+
Leer
Recibir Enviar
Impresora
Imprimir
En la que se ha copiado el derecho "Enviar" del dominio "D1" al dominio "D4" sobre el objeto "COM1" y se ha copiado el derecho "Leer" del dominio "D2" al dominio "D1" sobre el objeto "Archivo 2". Puede observarse que los derechos "copiados" no contienen el signo (+), o sea, se ha realizado una copia limitada. En general se podría hablar de 3 variantes del derecho "copia": Copia Limitada, Copia Completa, Translación. COPIA LIMITADA. La copia no incluye el derecho "Copia", con lo que no se podrán hacer copias sucesivas del derecho. Se puede indicar con el signo (+). COPIA COMPLETA. La copia incluye el derecho "Copia", por lo que se pueden realizar copias sucesivas del derecho. Se puede indicar con el signo (*). TRANSLACIÓN. El derecho en cuestión junto con el derecho copia se eliminan del dominio original y se coloca en el nuevo dominio. Esta es una forma básica de retirar derechos de un dominio para asignarlo a otro. Se puede indicar con el signo (?).
Derecho de acceso cambio. Este derecho de acceso indica la posibilidad de un proceso para cambiarse de un dominio a otro. La operación cambio actúa sobre dominios, o sea, en este caso los dominios son los objetos. Entonces, para considerar este derecho de acceso se deberán incluir los dominios como objetos adicionales en la matriz de acceso. Considérese la siguiente matriz de acceso:
D1 D2 D3 D4
Arch1 Escribir
Leer
Arch2 COM1 Impresora D1 Leer Enviar+ Leer Escribir Recibir Enviar
Imprimir
D2
D3
D4 Cambio(a)
Cambio(b)
Cambio(c)
Esta tabla indica que un proceso ejecutándose en "D1" puede cambiarse al dominio "D4" (a); un proceso ejecutándose en "D2" puede cambiarse a "D3"(b) y un proceso ejecutándose en el dominio "D4" puede cambiarse a "D1"(c).
6.4 PROTECCIÓN BASADA EN EL LENGUAJE. Protección basada en el lenguaje. [5] La especificación de protección en un lenguaje de programación permite la descripción de alto nivel de políticas para la asignación y uso de recursos. La implementación del lenguaje puede proveer software para hacer cumplir la protección cuando no se pueda validar si el hardware está soportado. Interpretar las especificaciones de protección para generar llamadas en cualquier sistema de protección provisto por el hardware y el SO.
Protección en java 2 La protección la maneja la máquina virtual (JVM) La JVM asigna un dominio de protección a una clase cuando la carga. El dominio de protección indica qué operaciones puede (y no puede) realizar la clase. Si se invoca un método de biblioteca y éste realiza una operación privilegiada, se examina el stack para asegurar que la biblioteca pueda realizar la operación.
Inspección
del
Stack
La protección que se ofrece en los sistemas de computación existentes casi siempre se ha logrado con la ayuda del núcleo de un sistema operativo, que actúa como agente de seguridad que inspecciona y valida cada intento por acceder a un recurso protegido. Puesto que la validación de todos los accesos puede dar pie a un gasto extra considerable, debemos apoyarla con hardware para reducir el costo de cada validación o bien debemos aceptar que el diseñador del sistema podría inclinarse por sacrificar los objetivos de la protección. Es difícil satisfacer todos estos objetivos si los mecanismos de soporte con que se cuenta restringen la flexibilidad para implementar diversas políticas de protección. [6]
A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario. Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores. Aquí es donde los lenguajes de programación entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaración acerca del recurso. Este tipo de declaración se puede integrar en un lenguaje mediante una extensión de su mecanismo de tipificación. Si se declara la protección junto con la tipificación de los datos, el diseñado de cada subsistema puede especificar sus necesidades de protección así debería darse directamente durante la redacción del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes:
Las necesidades de protección se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo. Las necesidades de protección pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular. El diseñador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la protección. Una notación declarativa es natural porque los privilegios de acceso están íntimamente relacionados con el concepto lingüístico de tipo de datos. Hay diversas técnicas que una implementación de lenguaje de programación puede utilizar para hacer cumplir la protección, pero cualquiera de ellas deberá depender hasta cierto punto del grado de soporte de una máquina subyacente y su sistema operativo. ¿Qué ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un núcleo, en comparación con el cumplimiento forzado en gran medida por un compilador? Seguridad: La obligación del cumplimiento por un núcleo ofrece un mayor grado de seguridad del sistema de protección mismo, que el que ofrece la generación de código de verificación de protección por un compilador. En un esquema apoyado por compilador, la seguridad depende de lo correcto que sea el traductor, de algún mecanismo subyacente de gestión de almacenamiento que proteja los segmentos desde los cuales se ejecuta el código compilador y, en última instancia, de la seguridad de los archivos desde los que se carga el programa. Flexibilidad: Hay límites a la flexibilidad de un núcleo de protección para implementar una política definida por el usuario, aunque podría proporcionar recursos suficientes para que el sistema haga cumplir sus propias políticas. Con un lenguaje de programación, se puede declarar la política de protección y hacerse cumplir según sea necesario en una implementación. Eficiencia: Se logra la eficiencia máxima cuando hardware apoya directamente el cumplimiento de la protección. En la medida en que se requiera soporte de software, el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso estático fuera de línea en el momento de la compilación. En síntesis, la especificación de la protección en un lenguaje de programación permite describir un alto nivel de políticas de asignación y uso de recursos.
6.5 CONCEPTO DE SEGURIDAD. [7] La seguridad está definida en el diccionario como el conjunto de medidas tomadas para protegerse contra robos, ataques, crímenes y espionajes o sabotajes. La seguridad implica la cualidad o estado de estar seguro, es decir, la evitación de exposiciones a situaciones de peligro y la actuación para quedar a cubierto frente a contingencias adversas. El uso creciente y la confianza en los computadores en todo el mundo ha hecho surgir una preocupación legítima con respecto a la seguridad informática. El uso de los computadores ha extendido en ambientes comerciales, gubernamentales, militares e incluso en los hogares. Grandes cantidades de datos vitales sensibles se están confiando y almacenado cada vez más en computadores. Entre ellos se incluyen registros sobre individuos, negocios y diferentes registros públicos y secretos gubernamentales y militares. Grandes transacciones monetarias tienen lugar diariamente en
forma de transferencia electrónicas de fondos. Más recientemente, informaciones tales como notificaciones de propiedad intelectual y datos comerciales estratégicos son también almacenados, procesados y diseminados mediante computadores. Entre ellos se incluyen diseños de ventas, contratos legales y muchos otros. La seguridad, no solo requiere un sistema de protección apropiado, sino también considerar el entorno externo en el que el sistema opera. La protección interna no es útil si la consola del operador está al alcance de personal no autorizado, o si los archivos se pueden sacar simplemente del sistema de computación y llevarse a un sistema sin protección. Estos problemas de seguridad son esencialmente de administración, no problemas del sistema operativo. La información almacenada en el sistema, así como los recursos físicos del sistema de computación, tienen que protegerse contra acceso no autorizado, destrucción o alteración mal intencionado, y la introducción accidental de inconsistencia.
6.6 CLASIFICACIONES DE LA SEGURIDAD. [8] La clasificación de los sistemas de computación según sus requisitos de seguridad ha sido un tema ampliamente discutido desde los años setenta. La disparidad de criterios existentes se ha ampliado más con la conexión de las computadoras para formar redes de computación que pueden compartir recursos. Algunas de las clasificaciones existentes en la actualidad son la clasificación del Departamento de Defensa (DoD) de los Estados Unidos de América, el criterio alemán, el criterio Canadiense, el ITSEC o el criterio común. Clasificación del Departamento de Defensa (DoD) de los Estados Unidos Esta clasificación especifica cuatro niveles de seguridad: A, B, C y D. A continuación, se describen estos niveles de seguridad y las características de cada uno. NIVEl A. Sistemas de seguridad certificados. Para acceder a este nivel, la política de seguridad y los mecanismos de protección del sistema deben ser verificados y certificados por un organismo autorizado para ello. Organismos de verificación muy conocidos son el National Computer Security Center o el TEMPEST. Clase Al. Diseño verificado. Clase B 1 mas modelo formal del sistema de seguridad. La especificación formal del sistema debe ser probada y aprobada por un organismo certificador. Para ello debe existir una demostración de que la especificación se corresponde con el modelo, una implementación consistente con el mismo y un análisis formal de distintos problemas de seguridad. Clase Ax. Desarrollo controlado. A1 más diseño con instalaciones y personal controlados. Se podrían incluir requisitos de integridad de programas, alta disponibilidad y comunicaciones seguras. NIVEL B. Control de acceso obligatorio. En este nivel, los controles de acceso no son discrecionales de los usuarios o dueños de los recursos, que deben existir obligatoriamente. Esto significa que todo objeto controlado debe tener protección sea del tipo que sea. Este nivel se divide a su vez en tres subniveles:
Clase B1. Etiquetas de seguridad obligatorias. Cada objeto controlado debe tener su etiqueta de seguridad. Clase B2. Protección estructurada. Todos los objetos deben estar controlados mediante un sistema de seguridad con diseño formal y mecanismos de verificación. Estos mecanismos permiten probar que el sistema de seguridad se ajusta a los requisitos exigidos. Clase B3. Dominios de seguridad. B2 ampliado con pruebas exhaustivas para evitar canales encubiertos, trampas y penetraciones. El sistema debe ser capaz de detectar intentos de violaciones de seguridad, para ello debe permitir la creación de listas de control de acceso para usuarios o grupos que no tienen acceso a un objeto. Nivel C. Capacidad discrecional para proteger recursos. La aplicación de los mecanismos de protección depende del usuario, o usuarios, que tienen privilegios sobre los mismos. Esto significa que un objeto puede estar disponible para lectura, escritura o cualquier otra operación. Casi todos los sistemas operativos comerciales de propósito general, como Unix, Linux o Windows NT se clasifican en este nivel. Este nivel a la vez se subdivide en dos niveles: Clase CI. Control de acceso por dominios. No hay posibilidad de establecer qué elemento de un determinado dominio ha accedido a un objeto. UNIX pertenece a esta clase. Divide a los usuarios en tres dominios: dueño, grupo y mundo. Se aplican controles de acceso según los dominios, siendo todos los elementos de un determinado dominio iguales ante el sistema de seguridad. Clase C2. Control de acceso individualizado. Granularidad mucho más fina en el control de acceso a un objeto. El sistema de seguridad debe ser capaz de controlar y registrar los accesos a cada objeto a nivel de usuario. Windows NT pertenece a esta clase. Nivel D. Sistemas con protección mínima o nula No pasan las pruebas de seguridad mínima exigida en el DoD. MS-DOS y Windows 3. 1 son sistemas de nivel D. Puesto que están pensados para un sistema monoproceso y monousuario, no proporcionan ningún tipo de control de acceso ni de separación de recursos.
6.7 VALIDACIÓN Y AMENAZAS AL SISTEMA. Deitel (1987) establece que la validación de datos es una de las áreas más importantes a tener en cuenta, especialmente en el desarrollo de sistemas conectados a redes como internet. Validar datos hace referencia a verificar, controlar o filtrar cada una de las entradas de datos que provienen desde el exterior del sistema. [1] La validación tiene que ver con: La verificación y la auditoría del sistema. La autentificación de los usuarios. Los sistemas sofisticados de autentificación de usuarios resultan muy difíciles de evitar por parte de los intrusos. Un problema existente es la posibilidad de que el sistema rechace a usuarios legítimos: Un sistema de reconocimiento de voz podría rechazar a un usuario legítimo resfriado. Un sistema de huellas digitales podría rechazar a un usuario legítimo que tenga una cortadura o una quemadura.
Deitel (1987) concluye que en definitiva, se debe identificar cada uno de los flujos de entrada, verificar que el tipo de dato sea el esperado y no otro, verificar que no haya códigos ocultos, etc.
Amenazas a la seguridad de un sistema. [9] Seguridad de la información debido a: Expansión de los ordenadores. Uso de Sistemas Distribuidos y Redes. Diferenciación entre Seguridad y Protección: Seguridad (política): ¿Qué accesos son permitidos?. ¿Qué usuarios tienen que tener qué accesos a qué recursos? Protección (mecanismo): ¿Cómo controlar los accesos?. Proporcionar los medios para llevar a cavo las políticas de seguridad. Generalización del término “Seguridad”.
Mecanismo flexible para albergar políticas.
Requisitos a cumplir por el sistema: Confidencialidad: Los elementos del sistema sólo serán visibles por aquellos grupos autorizados. Integridad: Los elementos del sistema sólo serán modificados por los grupos autorizados. Disponibilidad: Los elementos del sistema sólo estarán disponibles para grupos autorizados. Elementos amenazados: Hardware. Software. Datos. Líneas de comunicación
Elementos del sistema a los que afecta la seguridad:
Aspectos en que se agrupa la seguridad: Seguridad en el uso de recursos y servicios: control de acceso. Utilizar un mecanismo de control de acceso a los recursos que tan sólo permita el acceso si existe el permiso correspondiente. Seguridad en el acceso al sistema: Asegurar que sólo entran los usuarios autorizados. Seguridad en el uso de redes: Evitar que se puedan producir escuchas y alteraciones en los datos que viajan por la red.
Seguridad en el uso de recursos y servicios. Evolución del control de acceso a recursos y servicios: Ninguna protección: ej, MS-DOS. Protección de recursos básicos: Memoria, ficheros, modo usuario/supervisor. Protección de servicios generales del sistema. Protección de servicios proporcionados por los propios usuarios: Arquitecturas cliente/ servidor. Situación actual: Heterogeneidad en la protección:
Base de computación fiable grande. “Agujeros” por interacción no prevista entre mecanismos.
Inseguridad en distribución: Falta de protección para interoperabilidad de objetos distribuidos. Pocas y malas soluciones de seguridad.
Principios de Diseño de un Sistema de Seguridad: Mínimo Privilegio: Los derechos de acceso deben adquirirse sólo por permiso explícito; por omisión el acceso no debe estar permitido. Ahorro de Mecanismos: Lo más simples y pequeños como sea posible. Aceptación: No deben interferir excesivamente en el trabajo de los usuarios. Mediación Total: Cada acceso debe ser cotejado con la información de control. Diseño abierto. Amenazas a la seguridad en el acceso al sistema. [10] Intrusos. Programas malignos.
Intrusos: Piratas o hackers: individuos que acceden al sistema sin autorización. Los sistemas presentan agujeros por donde los hackers consiguen colarse. Técnicas de intrusión: Averiguar contraseñas (más del 80% de las contraseñas son simples). Probar exhaustivamente. Descifrar archivo de contraseñas. Intervenir líneas. Usar caballos de Troya. Técnicas de prevención de intrusos: Establecer una buena estrategia de elección de contraseñas: Contraseñas generadas por ordenador (difícil memorización). Inspección activa (proceso periódico de averiguación). Inspección proactiva (decidir si es buena en su creación. Técnicas de detección de intrusos: Investigar actividades inusuales: Detección de anomalías estadísticas. Uso de registros de auditoría que recogen información del comportamiento de cada usuario. Detección basada en reglas. Conjunto de reglas empleadas para decidir si una actividad es inusual.
Tipos de amenazas: Amenazas pasivas: Revelación del contenido del mensaje. Análisis del tráfico: En caso de que los mensajes vayan encriptados. Determinar las máquinas que se comunican y la frecuencia y longitud de los mensajes. Amenazas activas: Alteración del flujo de mensajes. Privación del servicio: Impide el uso normal de los servicios de comunicaciones. Suplantación: Cuando una entidad finge ser otra diferente. Clasificación de programas malignos: Programas malignos que necesitan anfitrión: Forman parte de un programa. Trampillas: Punto de entrada secreto a un programa. Se usan para depuración y prueba. Pueden usarse para acceso no autorizado. Bomba lógica: Se ejecutan cuando se cumplen ciertas condiciones. Ej: se borra el disco duro si programador no estáen nómina. Caballo de Troya: Código dañino incrustado en programa que se ejecuta cuando se ejecuta el programa. Programas malignos que no necesitan anfitrión: Gusanos: Programas independientes. Se reproducen a través de la red. Además de propagarse pueden causar daños.
Bacterias: No dañan explícitamente. Su único objetivo es reproducirse. Se reproducen exponencialmente agotando la capacidad del procesador.
Virus: Código incrustado en un programa. Se reproducen e insertan en otros programas. Pueden causar daños.
Algoritmo de virus muy simple (tan sólo se reproduce): Encontrar 1ª instrucción de un ejecutable del disco. Sustituirla por salto a posición siguiente a la última instrucción. Insertar copia del código de virus (este algoritmo) en dicha posición. Hacer que el virus simule la instrucción sustituida por el salto. Saltar a la segunda posición. 6.8 CIFRADO. La criptografía (del griego κρύπτω krypto, «oculto», y γράφως graphos, «escribir», literalmente
«escritura oculta») es la técnica, bien sea aplicada al arte o la ciencia, que altera las representaciones lingüísticas de un mensaje. [11]
Concepto de Cifrado. [12] El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra a través de Internet, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. Use el cifrado cuando desee un alto nivel de protección de la información.
Métodos y Técnicas de Cifrado. Cifrado de sustitución El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras) de un mensaje por una o más entidades diferentes. Existen varios tipos de criptosistemas de sustitución: La sustitución monoalfabética consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto. La sustitución polialfabética consiste en utilizar una serie de cifrados monoalfabéticos que son re-utilizados periódicamente. La sustitución homófona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos. La sustitución poligráfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres.
Cifrado César Este código de cifrado es uno de los más antiguos ya que su uso se remonta a Julio César. El principio de cifrado se basa en la adición de un valor constante a todos los caracteres de un mensaje o, más precisamente, a su código ASCII.
Cifrado ROT 13 El caso específico del cifrado César donde la clave de cifrado es N (la 13º letra del alfabeto) se denomina ROT 13? (se eligió el número 13, la mitad de 26, para que sea posible cifrar y descifrar fácilmente mensajes textuales). Cifrado de Transposición El método de cifrado por transposición consiste en reordenar datos para cifrarlos a fin de hacerlos ininteligibles. Esto puede significar, por ejemplo, reordenar los datos geométricamente para hacerlos visualmente inutilizables. El Cifrado Simétrico. El cifrado simétrico (también conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado. El cifrado consiste en aplicar una operación (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. El algoritmo más simple (como un OR exclusivo) puede lograr que un sistema prácticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe).
El Cifrado Asimétrico. El cifrado asimétrico (también conocido como cifrado con clave pública). En un criptosistema asimétrico (o criptosistema de clave pública), las claves se dan en pares: Una clave pública para el cifrado. Una clave secreta para el descifrado. En un sistema de cifrado con clave pública, los usuarios eligen una clave aleatoria que sólo ellos conocen (ésta es la clave privada). A partir de esta clave, automáticamente se deduce un algoritmo (la clave pública). Los usuarios intercambian esta clave pública mediante un canal no seguro.
Criptografía [13] El uso creciente de las redes de computadoras y la importancia del trafico cursado hace necesario proteger a los datos. La Oficina Nacional de Estándares de EE. UU. (NBS) ha adoptado la norma de cifrado de datos (DES) para la transmisión de información federal delicada. La criptografía es el uso de la transformación de datos para hacerlos incomprensibles a todos, excepto a los usuarios a quienes están destinados. El problema de la intimidad trata de cómo evitar la obtención no autorizada de información de un canal de comunicaciones. El problema de la autentificación trata sobre cómo evitar que un oponente: Modifique una transmisión. Le introduzca datos falsos.
El problema de la disputa trata sobre cómo proporcionar al receptor de un mensaje pruebas legales de la identidad del remitente, que serían el equivalente electrónico de una firma escrita.
Un Sistema de Intimidad Criptográfica El remitente desea transmitir cierto mensaje no cifrado (texto simple) a un receptor legítimo: La transmisión se producirá a través de un canal inseguro: Se supone que podrá ser verificado o conectado mediante un espía. El remitente pasa el texto simple a una unidad de codificación que lo transforma en un texto cifrado o criptograma: No es comprensible para el espía. Se transmite en forma segura por un canal inseguro. El receptor pasa el texto cifrado por una unidad de descifrado para regenerar el texto simple.
Criptoanálisis Es el proceso de intentar regenerar el texto simple a partir del texto cifrado, pero desconociendo la clave de ciframiento: Es la tarea del espía o criptoanalista: Si no lo logra, el sistema criptográfico es seguro.
Sistemas de Clave Pública La distribución de claves de un sistema criptográfico debe hacerse por canales muy seguros. Los sistemas de clave pública rodean el problema de distribución de claves: Las funciones de cifrado y descifrado están separadas y utilizan distintas claves. No es computacionalmente posible (en un tiempo “razonable”) determinar la clave de desciframiento “D” a partir de la clave de c iframiento “C”. “C” puede hacerse pública sin co mprometer la seguridad de “D”, que permanece pr ivada:
Se simplifica el problema de la distribución de claves.
Firmas Digitales Para que una firma digital sea aceptada como sustituta de una firma escrita debe ser: Fácil de autentificar (reconocer) por cualquiera. Producible únicamente por su autor. En los criptosistemas de clave pública el procedimiento es: El remitente usa la clave privada para crear un mensaje firmado. El receptor: Usa la clave pública del remitente para descifrar el mensaje. Guarda el mensaje firmado para usarlo en caso de disputas.
Para mayor seguridad se podría actuar como sigue: El remitente puede codificar el mensaje ya cifrado utilizando la clave pública del receptor. La clave privada del receptor permite recuperar el mensaje cifrado firmado. La clave pública del remitente permite recuperar el texto simple original.
Aplicaciones La criptografía es especialmente útil en los sistemas multiusuario y en las redes de computadoras. Se debe utilizar para proteger a las contraseñas, almacenándolas cifradas. Se puede utilizar también para proteger todos los datos almacenados en un sistema de computación; se debe considerar el tiempo de cifrado / descifrado. También es aplicable en los protocolos de redes de capas, que ofrecen varios niveles de cifrado. En el cifrado de enlace la red asume la responsabilidad de cifrado / descifrado de cada nodo: Los datos se transmiten cifrados entre los nodos. En cada nodo se descifran, se determina a dónde transmitirlos y se los vuelve a cifrar. En el cifrado punto a punto un mensaje se cifra en su fuente y se descifra solo una vez, en su destino: Existen ciertas limitaciones tales como la legibilidad de la dirección de destino en cada nodo: Debe ser legible para el encaminamiento del mensaje. Ej.: sistemas de conmutación de paquetes de almacenamiento y reenvío con cifrado punto a punto; en este caso la dirección de destino asociada a un paquete no puede ser cifrada.
BIBLIOGRAFÍA Libros: [1] H. M. Deitel. Introducción a los Sistemas Operativos. Addison-Wesley Iberoamericana, México, 1987. Paguinas web: [1] http://profinal0.tripod.com/seguridad.htm [2] http://profinal0.tripod.com/concepto.htm [3] http://sistemasoperativos.angelfire.com/html/6.2.html [4]http://sistemas.itlp.edu.mx/tutoriales/sistemasoperativos2/unidad3.htm#IMPLANTACION%20DE% 20MATRICES%20CON%20DERECHOS%20DE%20ACCESO. [5] http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r43770.PDF [6] http://www.mitecnologico.com/Main/ProteccionBasadaEnLenguaje [7] http://www.mitecnologico.com/Main/ConceptoDeSeguridad [8] http://profinal0.tripod.com/clasifica.htm [9] http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r29417.PDF [10] http://sistemadearchivo-corral.blogspot.com/2008/11/67-validacin-y-amenazas-al-sistema.html [11] http://es.wikipedia.org/wiki/Criptograf%C3%ADa [12] http://www.mitecnologico.com/Main/Cifrado [13] http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm#Crip